aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_sli.h
diff options
context:
space:
mode:
authorJames Bottomley <jejb@titanic.(none)>2005-11-04 23:29:52 -0500
committerJames Bottomley <jejb@titanic.(none)>2005-11-04 23:29:52 -0500
commit849a8924a6740ecbf9711e015beca69425f0c429 (patch)
tree2bae44c5fb170a655696b7253eec7ee13c6fa437 /drivers/scsi/lpfc/lpfc_sli.h
parent7015faa7df829876a0f931cd18aa6d7c24a1b581 (diff)
parentee807c2d43b54183c16580857837dae8ccb2ed22 (diff)
Merge by Hand
Conflicts in dec_esp.c (Thanks Bacchus), scsi_transport_iscsi.c and scsi_transport_fc.h Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.h')
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.h22
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.h b/drivers/scsi/lpfc/lpfc_sli.h
index 6c74f3c85ff7..b7a9f970f565 100644
--- a/drivers/scsi/lpfc/lpfc_sli.h
+++ b/drivers/scsi/lpfc/lpfc_sli.h
@@ -33,13 +33,15 @@ typedef enum _lpfc_ctx_cmd {
33struct lpfc_iocbq { 33struct lpfc_iocbq {
34 /* lpfc_iocbqs are used in double linked lists */ 34 /* lpfc_iocbqs are used in double linked lists */
35 struct list_head list; 35 struct list_head list;
36 uint16_t iotag; /* pre-assigned IO tag */
37 uint16_t rsvd1;
38
36 IOCB_t iocb; /* IOCB cmd */ 39 IOCB_t iocb; /* IOCB cmd */
37 uint8_t retry; /* retry counter for IOCB cmd - if needed */ 40 uint8_t retry; /* retry counter for IOCB cmd - if needed */
38 uint8_t iocb_flag; 41 uint8_t iocb_flag;
39#define LPFC_IO_POLL 1 /* Polling mode iocb */ 42#define LPFC_IO_LIBDFC 1 /* libdfc iocb */
40#define LPFC_IO_LIBDFC 2 /* libdfc iocb */ 43#define LPFC_IO_WAKE 2 /* High Priority Queue signal flag */
41#define LPFC_IO_WAIT 4 44#define LPFC_IO_FCP 4 /* FCP command -- iocbq in scsi_buf */
42#define LPFC_IO_HIPRI 8 /* High Priority Queue signal flag */
43 45
44 uint8_t abort_count; 46 uint8_t abort_count;
45 uint8_t rsvd2; 47 uint8_t rsvd2;
@@ -48,8 +50,7 @@ struct lpfc_iocbq {
48 void *context2; /* caller context information */ 50 void *context2; /* caller context information */
49 void *context3; /* caller context information */ 51 void *context3; /* caller context information */
50 union { 52 union {
51 wait_queue_head_t *hipri_wait_queue; /* High Priority Queue wait 53 wait_queue_head_t *wait_queue;
52 queue */
53 struct lpfc_iocbq *rsp_iocb; 54 struct lpfc_iocbq *rsp_iocb;
54 struct lpfcMboxq *mbox; 55 struct lpfcMboxq *mbox;
55 } context_un; 56 } context_un;
@@ -125,10 +126,10 @@ struct lpfc_sli_ring {
125 126
126 uint32_t local_getidx; /* last available cmd index (from cmdGetInx) */ 127 uint32_t local_getidx; /* last available cmd index (from cmdGetInx) */
127 uint32_t next_cmdidx; /* next_cmd index */ 128 uint32_t next_cmdidx; /* next_cmd index */
129 uint32_t rspidx; /* current index in response ring */
130 uint32_t cmdidx; /* current index in command ring */
128 uint8_t rsvd; 131 uint8_t rsvd;
129 uint8_t ringno; /* ring number */ 132 uint8_t ringno; /* ring number */
130 uint8_t rspidx; /* current index in response ring */
131 uint8_t cmdidx; /* current index in command ring */
132 uint16_t numCiocb; /* number of command iocb's per ring */ 133 uint16_t numCiocb; /* number of command iocb's per ring */
133 uint16_t numRiocb; /* number of rsp iocb's per ring */ 134 uint16_t numRiocb; /* number of rsp iocb's per ring */
134 135
@@ -200,6 +201,11 @@ struct lpfc_sli {
200 cmd */ 201 cmd */
201 202
202 uint32_t *MBhostaddr; /* virtual address for mbox cmds */ 203 uint32_t *MBhostaddr; /* virtual address for mbox cmds */
204
205#define LPFC_IOCBQ_LOOKUP_INCREMENT 1024
206 struct lpfc_iocbq ** iocbq_lookup; /* array to lookup IOCB by IOTAG */
207 size_t iocbq_lookup_len; /* current lengs of the array */
208 uint16_t last_iotag; /* last allocated IOTAG */
203}; 209};
204 210
205/* Given a pointer to the start of the ring, and the slot number of 211/* Given a pointer to the start of the ring, and the slot number of