diff options
author | James Smart <James.Smart@Emulex.Com> | 2007-10-27 13:38:00 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-01-11 19:22:33 -0500 |
commit | 76bb24efdc5de8eead0ccc07ec7e3b59a4ca0f15 (patch) | |
tree | 989311bb1be4a8331407bb6d3d67e5bd95e8a7a6 /drivers/scsi/lpfc/lpfc_hw.h | |
parent | a8adb83208020c913f010cb4e26d09e25300db8e (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.h | 31 |
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 */ | ||
3044 | struct 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 */ | ||
3050 | typedef struct { | ||
3051 | struct lpfc_hbq_entry buff; | ||
3052 | uint32_t rsvd; | ||
3053 | uint32_t rsvd1; | ||
3054 | } QUE_XRI64_CX_FIELDS; | ||
3055 | |||
3056 | struct 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 | ||
3044 | typedef struct _IOCB { /* IOCB structure */ | 3064 | typedef 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 */ | ||
3164 | struct 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 | ||