aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_hw.h
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2007-10-27 13:38:00 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-11 19:22:33 -0500
commit76bb24efdc5de8eead0ccc07ec7e3b59a4ca0f15 (patch)
tree989311bb1be4a8331407bb6d3d67e5bd95e8a7a6 /drivers/scsi/lpfc/lpfc_hw.h
parenta8adb83208020c913f010cb4e26d09e25300db8e (diff)
[SCSI] lpfc 8.2.3 : Internal loopback fixes
Internal loopback fixes: - Use HBQs rather than Q_RING_BUFF - Correct HBQs continuation entries - Update CT handler to SLI3 iocbs 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_hw.h')
-rw-r--r--drivers/scsi/lpfc/lpfc_hw.h31
1 files changed, 25 insertions, 6 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h
index 8635b9294640..b61e45a1310d 100644
--- a/drivers/scsi/lpfc/lpfc_hw.h
+++ b/drivers/scsi/lpfc/lpfc_hw.h
@@ -1373,6 +1373,7 @@ typedef struct { /* FireFly BIU registers */
1373#define CMD_FCP_TRECEIVE64_CX 0xA1 1373#define CMD_FCP_TRECEIVE64_CX 0xA1
1374#define CMD_FCP_TRSP64_CX 0xA3 1374#define CMD_FCP_TRSP64_CX 0xA3
1375 1375
1376#define CMD_QUE_XRI64_CX 0xB3
1376#define CMD_IOCB_RCV_SEQ64_CX 0xB5 1377#define CMD_IOCB_RCV_SEQ64_CX 0xB5
1377#define CMD_IOCB_RCV_ELS64_CX 0xB7 1378#define CMD_IOCB_RCV_ELS64_CX 0xB7
1378#define CMD_IOCB_RCV_CONT64_CX 0xBB 1379#define CMD_IOCB_RCV_CONT64_CX 0xBB
@@ -3039,7 +3040,26 @@ struct rcv_sli3 {
3039 struct ulp_bde64 bde2; 3040 struct ulp_bde64 bde2;
3040}; 3041};
3041 3042
3043/* Structure used for a single HBQ entry */
3044struct lpfc_hbq_entry {
3045 struct ulp_bde64 bde;
3046 uint32_t buffer_tag;
3047};
3042 3048
3049/* IOCB Command template for QUE_XRI64_CX (0xB3) command */
3050typedef struct {
3051 struct lpfc_hbq_entry buff;
3052 uint32_t rsvd;
3053 uint32_t rsvd1;
3054} QUE_XRI64_CX_FIELDS;
3055
3056struct que_xri64cx_ext_fields {
3057 uint32_t iotag64_low;
3058 uint32_t iotag64_high;
3059 uint32_t ebde_count;
3060 uint32_t rsvd;
3061 struct lpfc_hbq_entry buff[5];
3062};
3043 3063
3044typedef struct _IOCB { /* IOCB structure */ 3064typedef struct _IOCB { /* IOCB structure */
3045 union { 3065 union {
@@ -3064,6 +3084,7 @@ typedef struct _IOCB { /* IOCB structure */
3064 FCPI_FIELDS64 fcpi64; /* FCP 64 bit Initiator template */ 3084 FCPI_FIELDS64 fcpi64; /* FCP 64 bit Initiator template */
3065 FCPT_FIELDS64 fcpt64; /* FCP 64 bit target template */ 3085 FCPT_FIELDS64 fcpt64; /* FCP 64 bit target template */
3066 ASYNCSTAT_FIELDS asyncstat; /* async_status iocb */ 3086 ASYNCSTAT_FIELDS asyncstat; /* async_status iocb */
3087 QUE_XRI64_CX_FIELDS quexri64cx; /* que_xri64_cx fields */
3067 3088
3068 uint32_t ulpWord[IOCB_WORD_SZ - 2]; /* generic 6 'words' */ 3089 uint32_t ulpWord[IOCB_WORD_SZ - 2]; /* generic 6 'words' */
3069 } un; 3090 } un;
@@ -3121,6 +3142,10 @@ typedef struct _IOCB { /* IOCB structure */
3121 3142
3122 union { 3143 union {
3123 struct rcv_sli3 rcvsli3; /* words 8 - 15 */ 3144 struct rcv_sli3 rcvsli3; /* words 8 - 15 */
3145
3146 /* words 8-31 used for que_xri_cx iocb */
3147 struct que_xri64cx_ext_fields que_xri64cx_ext_words;
3148
3124 uint32_t sli3Words[24]; /* 96 extra bytes for SLI-3 */ 3149 uint32_t sli3Words[24]; /* 96 extra bytes for SLI-3 */
3125 } unsli3; 3150 } unsli3;
3126 3151
@@ -3160,12 +3185,6 @@ typedef struct _IOCB { /* IOCB structure */
3160 3185
3161} IOCB_t; 3186} IOCB_t;
3162 3187
3163/* Structure used for a single HBQ entry */
3164struct lpfc_hbq_entry {
3165 struct ulp_bde64 bde;
3166 uint32_t buffer_tag;
3167};
3168
3169 3188
3170#define SLI1_SLIM_SIZE (4 * 1024) 3189#define SLI1_SLIM_SIZE (4 * 1024)
3171 3190