diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.h')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.h | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.h b/drivers/scsi/lpfc/lpfc_sli.h index 3c53316cf6d0..b4a639c47616 100644 --- a/drivers/scsi/lpfc/lpfc_sli.h +++ b/drivers/scsi/lpfc/lpfc_sli.h | |||
@@ -29,14 +29,17 @@ 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 */ | 32 | struct lpfc_cq_event { |
33 | struct lpfc_sli4_rspiocb_info { | 33 | struct list_head list; |
34 | uint8_t hw_status; | 34 | union { |
35 | uint8_t bfield; | 35 | struct lpfc_mcqe mcqe_cmpl; |
36 | #define LPFC_XB 0x1 | 36 | struct lpfc_acqe_link acqe_link; |
37 | #define LPFC_PV 0x2 | 37 | struct lpfc_acqe_fcoe acqe_fcoe; |
38 | uint8_t priority; | 38 | struct lpfc_acqe_dcbx acqe_dcbx; |
39 | uint8_t reserved; | 39 | struct lpfc_rcqe rcqe_cmpl; |
40 | struct sli4_wcqe_xri_aborted wcqe_axri; | ||
41 | struct lpfc_wcqe_complete wcqe_cmpl; | ||
42 | } cqe; | ||
40 | }; | 43 | }; |
41 | 44 | ||
42 | /* This structure is used to handle IOCB requests / responses */ | 45 | /* This structure is used to handle IOCB requests / responses */ |
@@ -46,21 +49,27 @@ struct lpfc_iocbq { | |||
46 | struct list_head clist; | 49 | struct list_head clist; |
47 | uint16_t iotag; /* pre-assigned IO tag */ | 50 | uint16_t iotag; /* pre-assigned IO tag */ |
48 | uint16_t sli4_xritag; /* pre-assigned XRI, (OXID) tag. */ | 51 | uint16_t sli4_xritag; /* pre-assigned XRI, (OXID) tag. */ |
52 | struct lpfc_cq_event cq_event; | ||
49 | 53 | ||
50 | IOCB_t iocb; /* IOCB cmd */ | 54 | IOCB_t iocb; /* IOCB cmd */ |
51 | uint8_t retry; /* retry counter for IOCB cmd - if needed */ | 55 | uint8_t retry; /* retry counter for IOCB cmd - if needed */ |
52 | uint8_t iocb_flag; | 56 | uint16_t iocb_flag; |
53 | #define LPFC_IO_LIBDFC 1 /* libdfc iocb */ | 57 | #define LPFC_IO_LIBDFC 1 /* libdfc iocb */ |
54 | #define LPFC_IO_WAKE 2 /* High Priority Queue signal flag */ | 58 | #define LPFC_IO_WAKE 2 /* High Priority Queue signal flag */ |
55 | #define LPFC_IO_FCP 4 /* FCP command -- iocbq in scsi_buf */ | 59 | #define LPFC_IO_FCP 4 /* FCP command -- iocbq in scsi_buf */ |
56 | #define LPFC_DRIVER_ABORTED 8 /* driver aborted this request */ | 60 | #define LPFC_DRIVER_ABORTED 8 /* driver aborted this request */ |
57 | #define LPFC_IO_FABRIC 0x10 /* Iocb send using fabric scheduler */ | 61 | #define LPFC_IO_FABRIC 0x10 /* Iocb send using fabric scheduler */ |
58 | #define LPFC_DELAY_MEM_FREE 0x20 /* Defer free'ing of FC data */ | 62 | #define LPFC_DELAY_MEM_FREE 0x20 /* Defer free'ing of FC data */ |
59 | #define LPFC_FIP_ELS 0x40 | 63 | #define LPFC_EXCHANGE_BUSY 0x40 /* SLI4 hba reported XB in response */ |
64 | #define LPFC_USE_FCPWQIDX 0x80 /* Submit to specified FCPWQ index */ | ||
65 | #define DSS_SECURITY_OP 0x100 /* security IO */ | ||
66 | |||
67 | #define LPFC_FIP_ELS_ID_MASK 0xc000 /* ELS_ID range 0-3, non-shifted mask */ | ||
68 | #define LPFC_FIP_ELS_ID_SHIFT 14 | ||
60 | 69 | ||
61 | uint8_t abort_count; | ||
62 | uint8_t rsvd2; | 70 | uint8_t rsvd2; |
63 | uint32_t drvrTimeout; /* driver timeout in seconds */ | 71 | uint32_t drvrTimeout; /* driver timeout in seconds */ |
72 | uint32_t fcp_wqidx; /* index to FCP work queue */ | ||
64 | struct lpfc_vport *vport;/* virtual port pointer */ | 73 | struct lpfc_vport *vport;/* virtual port pointer */ |
65 | void *context1; /* caller context information */ | 74 | void *context1; /* caller context information */ |
66 | void *context2; /* caller context information */ | 75 | void *context2; /* caller context information */ |
@@ -76,7 +85,6 @@ struct lpfc_iocbq { | |||
76 | struct lpfc_iocbq *); | 85 | struct lpfc_iocbq *); |
77 | void (*iocb_cmpl) (struct lpfc_hba *, struct lpfc_iocbq *, | 86 | void (*iocb_cmpl) (struct lpfc_hba *, struct lpfc_iocbq *, |
78 | struct lpfc_iocbq *); | 87 | struct lpfc_iocbq *); |
79 | struct lpfc_sli4_rspiocb_info sli4_info; | ||
80 | }; | 88 | }; |
81 | 89 | ||
82 | #define SLI_IOCB_RET_IOCB 1 /* Return IOCB if cmd ring full */ | 90 | #define SLI_IOCB_RET_IOCB 1 /* Return IOCB if cmd ring full */ |
@@ -110,7 +118,7 @@ typedef struct lpfcMboxq { | |||
110 | return */ | 118 | return */ |
111 | #define MBX_NOWAIT 2 /* issue command then return immediately */ | 119 | #define MBX_NOWAIT 2 /* issue command then return immediately */ |
112 | 120 | ||
113 | #define LPFC_MAX_RING_MASK 4 /* max num of rctl/type masks allowed per | 121 | #define LPFC_MAX_RING_MASK 5 /* max num of rctl/type masks allowed per |
114 | ring */ | 122 | ring */ |
115 | #define LPFC_MAX_RING 4 /* max num of SLI rings used by driver */ | 123 | #define LPFC_MAX_RING 4 /* max num of SLI rings used by driver */ |
116 | 124 | ||