]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/scsi/lpfc/lpfc.h
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / scsi / lpfc / lpfc.h
index 196de40b906c487c0287b56ac3c27c5f4b66a5ee..746dd3d7a092c4b46a66620283ef04849442cf25 100644 (file)
@@ -464,12 +464,29 @@ struct unsol_rcv_ct_ctx {
 #define UNSOL_VALID    0x00000001
 };
 
+#define LPFC_USER_LINK_SPEED_AUTO      0       /* auto select (default)*/
+#define LPFC_USER_LINK_SPEED_1G                1       /* 1 Gigabaud */
+#define LPFC_USER_LINK_SPEED_2G                2       /* 2 Gigabaud */
+#define LPFC_USER_LINK_SPEED_4G                4       /* 4 Gigabaud */
+#define LPFC_USER_LINK_SPEED_8G                8       /* 8 Gigabaud */
+#define LPFC_USER_LINK_SPEED_10G       10      /* 10 Gigabaud */
+#define LPFC_USER_LINK_SPEED_16G       16      /* 16 Gigabaud */
+#define LPFC_USER_LINK_SPEED_MAX       LPFC_USER_LINK_SPEED_16G
+#define LPFC_USER_LINK_SPEED_BITMAP ((1 << LPFC_USER_LINK_SPEED_16G) | \
+                                    (1 << LPFC_USER_LINK_SPEED_10G) | \
+                                    (1 << LPFC_USER_LINK_SPEED_8G) | \
+                                    (1 << LPFC_USER_LINK_SPEED_4G) | \
+                                    (1 << LPFC_USER_LINK_SPEED_2G) | \
+                                    (1 << LPFC_USER_LINK_SPEED_1G) | \
+                                    (1 << LPFC_USER_LINK_SPEED_AUTO))
+#define LPFC_LINK_SPEED_STRING "0, 1, 2, 4, 8, 10, 16"
+
 struct lpfc_hba {
        /* SCSI interface function jump table entries */
        int (*lpfc_new_scsi_buf)
                (struct lpfc_vport *, int);
        struct lpfc_scsi_buf * (*lpfc_get_scsi_buf)
-               (struct lpfc_hba *);
+               (struct lpfc_hba *, struct lpfc_nodelist *);
        int (*lpfc_scsi_prep_dma_buf)
                (struct lpfc_hba *, struct lpfc_scsi_buf *);
        void (*lpfc_scsi_unprep_dma_buf)
@@ -545,7 +562,7 @@ struct lpfc_hba {
        uint32_t hba_flag;      /* hba generic flags */
 #define HBA_ERATT_HANDLED      0x1 /* This flag is set when eratt handled */
 #define DEFER_ERATT            0x2 /* Deferred error attention in progress */
-#define HBA_FCOE_SUPPORT       0x4 /* HBA function supports FCOE */
+#define HBA_FCOE_MODE          0x4 /* HBA function in FCoE Mode */
 #define HBA_SP_QUEUE_EVT       0x8 /* Slow-path qevt posted to worker thread*/
 #define HBA_POST_RECEIVE_BUFFER 0x10 /* Rcv buffers need to be posted */
 #define FCP_XRI_ABORT_EVENT    0x20
@@ -557,6 +574,7 @@ struct lpfc_hba {
 #define HBA_FIP_SUPPORT                0x800 /* FIP support in HBA */
 #define HBA_AER_ENABLED                0x1000 /* AER enabled with HBA */
 #define HBA_DEVLOSS_TMO         0x2000 /* HBA in devloss timeout */
+#define HBA_RRQ_ACTIVE         0x4000 /* process the rrq active list */
        uint32_t fcp_ring_in_use; /* When polling test if intr-hndlr active*/
        struct lpfc_dmabuf slim2p;
 
@@ -606,6 +624,7 @@ struct lpfc_hba {
        /* HBA Config Parameters */
        uint32_t cfg_ack0;
        uint32_t cfg_enable_npiv;
+       uint32_t cfg_enable_rrq;
        uint32_t cfg_topology;
        uint32_t cfg_link_speed;
        uint32_t cfg_cr_delay;
@@ -716,6 +735,7 @@ struct lpfc_hba {
        uint32_t total_scsi_bufs;
        struct list_head lpfc_iocb_list;
        uint32_t total_iocbq_bufs;
+       struct list_head active_rrq_list;
        spinlock_t hbalock;
 
        /* pci_mem_pools */
@@ -728,6 +748,7 @@ struct lpfc_hba {
 
        mempool_t *mbox_mem_pool;
        mempool_t *nlp_mem_pool;
+       mempool_t *rrq_pool;
 
        struct fc_host_statistics link_stats;
        enum intr_type_t intr_type;
@@ -784,6 +805,7 @@ struct lpfc_hba {
        unsigned long skipped_hb;
        struct timer_list hb_tmofunc;
        uint8_t hb_outstanding;
+       struct timer_list rrq_tmr;
        enum hba_temp_state over_temp_state;
        /* ndlp reference management */
        spinlock_t ndlp_lock;