diff options
author | James Smart <James.Smart@Emulex.Com> | 2009-05-22 14:51:39 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-06-08 12:21:29 -0400 |
commit | da0436e915a5c17ee79e72c1bf978a4ebb1cbf4d (patch) | |
tree | 7784646b7627117fa7849a901c85294fae905505 /drivers/scsi/lpfc/lpfc_sli.h | |
parent | 3772a99175f5378b5001e8da364341a8b8226a4a (diff) |
[SCSI] lpfc 8.3.2 : Addition of SLI4 Interface - Base Support
Adds new hardware and interface definitions.
Adds new interface routines - utilizing the reorganized layout of the
driver. Adds SLI-4 specific functions for attachment, initialization,
teardown, etc.
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.h')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.h | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.h b/drivers/scsi/lpfc/lpfc_sli.h index 883938652a6a..e6c88ee8ee96 100644 --- a/drivers/scsi/lpfc/lpfc_sli.h +++ b/drivers/scsi/lpfc/lpfc_sli.h | |||
@@ -29,13 +29,23 @@ typedef enum _lpfc_ctx_cmd { | |||
29 | LPFC_CTX_HOST | 29 | LPFC_CTX_HOST |
30 | } lpfc_ctx_cmd; | 30 | } lpfc_ctx_cmd; |
31 | 31 | ||
32 | /* This structure is used to carry the needed response IOCB states */ | ||
33 | struct lpfc_sli4_rspiocb_info { | ||
34 | uint8_t hw_status; | ||
35 | uint8_t bfield; | ||
36 | #define LPFC_XB 0x1 | ||
37 | #define LPFC_PV 0x2 | ||
38 | uint8_t priority; | ||
39 | uint8_t reserved; | ||
40 | }; | ||
41 | |||
32 | /* This structure is used to handle IOCB requests / responses */ | 42 | /* This structure is used to handle IOCB requests / responses */ |
33 | struct lpfc_iocbq { | 43 | struct lpfc_iocbq { |
34 | /* lpfc_iocbqs are used in double linked lists */ | 44 | /* lpfc_iocbqs are used in double linked lists */ |
35 | struct list_head list; | 45 | struct list_head list; |
36 | struct list_head clist; | 46 | struct list_head clist; |
37 | uint16_t iotag; /* pre-assigned IO tag */ | 47 | uint16_t iotag; /* pre-assigned IO tag */ |
38 | uint16_t rsvd1; | 48 | uint16_t sli4_xritag; /* pre-assigned XRI, (OXID) tag. */ |
39 | 49 | ||
40 | IOCB_t iocb; /* IOCB cmd */ | 50 | IOCB_t iocb; /* IOCB cmd */ |
41 | uint8_t retry; /* retry counter for IOCB cmd - if needed */ | 51 | uint8_t retry; /* retry counter for IOCB cmd - if needed */ |
@@ -65,7 +75,7 @@ struct lpfc_iocbq { | |||
65 | struct lpfc_iocbq *); | 75 | struct lpfc_iocbq *); |
66 | void (*iocb_cmpl) (struct lpfc_hba *, struct lpfc_iocbq *, | 76 | void (*iocb_cmpl) (struct lpfc_hba *, struct lpfc_iocbq *, |
67 | struct lpfc_iocbq *); | 77 | struct lpfc_iocbq *); |
68 | 78 | struct lpfc_sli4_rspiocb_info sli4_info; | |
69 | }; | 79 | }; |
70 | 80 | ||
71 | #define SLI_IOCB_RET_IOCB 1 /* Return IOCB if cmd ring full */ | 81 | #define SLI_IOCB_RET_IOCB 1 /* Return IOCB if cmd ring full */ |
@@ -81,14 +91,18 @@ struct lpfc_iocbq { | |||
81 | typedef struct lpfcMboxq { | 91 | typedef struct lpfcMboxq { |
82 | /* MBOXQs are used in single linked lists */ | 92 | /* MBOXQs are used in single linked lists */ |
83 | struct list_head list; /* ptr to next mailbox command */ | 93 | struct list_head list; /* ptr to next mailbox command */ |
84 | MAILBOX_t mb; /* Mailbox cmd */ | 94 | union { |
85 | struct lpfc_vport *vport;/* virutal port pointer */ | 95 | MAILBOX_t mb; /* Mailbox cmd */ |
96 | struct lpfc_mqe mqe; | ||
97 | } u; | ||
98 | struct lpfc_vport *vport;/* virtual port pointer */ | ||
86 | void *context1; /* caller context information */ | 99 | void *context1; /* caller context information */ |
87 | void *context2; /* caller context information */ | 100 | void *context2; /* caller context information */ |
88 | 101 | ||
89 | void (*mbox_cmpl) (struct lpfc_hba *, struct lpfcMboxq *); | 102 | void (*mbox_cmpl) (struct lpfc_hba *, struct lpfcMboxq *); |
90 | uint8_t mbox_flag; | 103 | uint8_t mbox_flag; |
91 | 104 | struct lpfc_mcqe mcqe; | |
105 | struct lpfc_mbx_nembed_sge_virt *sge_array; | ||
92 | } LPFC_MBOXQ_t; | 106 | } LPFC_MBOXQ_t; |
93 | 107 | ||
94 | #define MBX_POLL 1 /* poll mailbox till command done, then | 108 | #define MBX_POLL 1 /* poll mailbox till command done, then |
@@ -234,6 +248,7 @@ struct lpfc_sli { | |||
234 | #define LPFC_PROCESS_LA 0x400 /* Able to process link attention */ | 248 | #define LPFC_PROCESS_LA 0x400 /* Able to process link attention */ |
235 | #define LPFC_BLOCK_MGMT_IO 0x800 /* Don't allow mgmt mbx or iocb cmds */ | 249 | #define LPFC_BLOCK_MGMT_IO 0x800 /* Don't allow mgmt mbx or iocb cmds */ |
236 | #define LPFC_MENLO_MAINT 0x1000 /* need for menl fw download */ | 250 | #define LPFC_MENLO_MAINT 0x1000 /* need for menl fw download */ |
251 | #define LPFC_SLI_ASYNC_MBX_BLK 0x2000 /* Async mailbox is blocked */ | ||
237 | 252 | ||
238 | struct lpfc_sli_ring ring[LPFC_MAX_RING]; | 253 | struct lpfc_sli_ring ring[LPFC_MAX_RING]; |
239 | int fcp_ring; /* ring used for FCP initiator commands */ | 254 | int fcp_ring; /* ring used for FCP initiator commands */ |
@@ -261,6 +276,8 @@ struct lpfc_sli { | |||
261 | 276 | ||
262 | #define LPFC_MBOX_TMO 30 /* Sec tmo for outstanding mbox | 277 | #define LPFC_MBOX_TMO 30 /* Sec tmo for outstanding mbox |
263 | command */ | 278 | command */ |
279 | #define LPFC_MBOX_SLI4_CONFIG_TMO 60 /* Sec tmo for outstanding mbox | ||
280 | command */ | ||
264 | #define LPFC_MBOX_TMO_FLASH_CMD 300 /* Sec tmo for outstanding FLASH write | 281 | #define LPFC_MBOX_TMO_FLASH_CMD 300 /* Sec tmo for outstanding FLASH write |
265 | * or erase cmds. This is especially | 282 | * or erase cmds. This is especially |
266 | * long because of the potential of | 283 | * long because of the potential of |