aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_hw.h
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2008-08-24 21:49:55 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-10-13 09:28:53 -0400
commit34b02dcdcf1865405f4762b991965c0c3b8a3ae0 (patch)
tree00829334c2813d30e574a5f1290fbf7dd210d1cb /drivers/scsi/lpfc/lpfc_hw.h
parent90160e010b6f3a91a9bb044bbe6723731e6f366c (diff)
[SCSI] lpfc 8.2.8 : Update driver for new SLI-3 features
Update driver for new SLI-3 features: - interrupt enhancements - lose adapter doorbell writes - inlining support for FCP_Ixx cmds 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.h63
1 files changed, 43 insertions, 20 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h
index 7773b949aa7c..a986332fecf6 100644
--- a/drivers/scsi/lpfc/lpfc_hw.h
+++ b/drivers/scsi/lpfc/lpfc_hw.h
@@ -1474,24 +1474,18 @@ struct ulp_bde64 { /* SLI-2 */
1474 uint32_t bdeFlags:8; /* BDE Flags 0 IS A SUPPORTED 1474 uint32_t bdeFlags:8; /* BDE Flags 0 IS A SUPPORTED
1475 VALUE !! */ 1475 VALUE !! */
1476#endif 1476#endif
1477 1477#define BUFF_TYPE_BDE_64 0x00 /* BDE (Host_resident) */
1478#define BUFF_USE_RSVD 0x01 /* bdeFlags */ 1478#define BUFF_TYPE_BDE_IMMED 0x01 /* Immediate Data BDE */
1479#define BUFF_USE_INTRPT 0x02 /* Not Implemented with LP6000 */ 1479#define BUFF_TYPE_BDE_64P 0x02 /* BDE (Port-resident) */
1480#define BUFF_USE_CMND 0x04 /* Optional, 1=cmd/rsp 0=data buffer */ 1480#define BUFF_TYPE_BDE_64I 0x08 /* Input BDE (Host-resident) */
1481#define BUFF_USE_RCV 0x08 /* "" "", 1=rcv buffer, 0=xmit 1481#define BUFF_TYPE_BDE_64IP 0x0A /* Input BDE (Port-resident) */
1482 buffer */ 1482#define BUFF_TYPE_BLP_64 0x40 /* BLP (Host-resident) */
1483#define BUFF_TYPE_32BIT 0x10 /* "" "", 1=32 bit addr 0=64 bit 1483#define BUFF_TYPE_BLP_64P 0x42 /* BLP (Port-resident) */
1484 addr */
1485#define BUFF_TYPE_SPECIAL 0x20 /* Not Implemented with LP6000 */
1486#define BUFF_TYPE_BDL 0x40 /* Optional, may be set in BDL */
1487#define BUFF_TYPE_INVALID 0x80 /* "" "" */
1488 } f; 1484 } f;
1489 } tus; 1485 } tus;
1490 uint32_t addrLow; 1486 uint32_t addrLow;
1491 uint32_t addrHigh; 1487 uint32_t addrHigh;
1492}; 1488};
1493#define BDE64_SIZE_WORD 0
1494#define BPL64_SIZE_WORD 0x40
1495 1489
1496typedef struct ULP_BDL { /* SLI-2 */ 1490typedef struct ULP_BDL { /* SLI-2 */
1497#ifdef __BIG_ENDIAN_BITFIELD 1491#ifdef __BIG_ENDIAN_BITFIELD
@@ -2715,11 +2709,19 @@ struct sli3_pgp {
2715 uint32_t hbq_get[16]; 2709 uint32_t hbq_get[16];
2716}; 2710};
2717 2711
2718typedef union { 2712struct sli3_inb_pgp {
2719 struct sli2_desc s2; 2713 uint32_t ha_copy;
2720 struct sli3_desc s3; 2714 uint32_t counter;
2721 struct sli3_pgp s3_pgp; 2715 struct lpfc_pgp port[MAX_RINGS];
2722} SLI_VAR; 2716 uint32_t hbq_get[16];
2717};
2718
2719union sli_var {
2720 struct sli2_desc s2;
2721 struct sli3_desc s3;
2722 struct sli3_pgp s3_pgp;
2723 struct sli3_inb_pgp s3_inb_pgp;
2724};
2723 2725
2724typedef struct { 2726typedef struct {
2725#ifdef __BIG_ENDIAN_BITFIELD 2727#ifdef __BIG_ENDIAN_BITFIELD
@@ -2737,7 +2739,7 @@ typedef struct {
2737#endif 2739#endif
2738 2740
2739 MAILVARIANTS un; 2741 MAILVARIANTS un;
2740 SLI_VAR us; 2742 union sli_var us;
2741} MAILBOX_t; 2743} MAILBOX_t;
2742 2744
2743/* 2745/*
@@ -3105,6 +3107,27 @@ struct que_xri64cx_ext_fields {
3105 struct lpfc_hbq_entry buff[5]; 3107 struct lpfc_hbq_entry buff[5];
3106}; 3108};
3107 3109
3110#define LPFC_EXT_DATA_BDE_COUNT 3
3111struct fcp_irw_ext {
3112 uint32_t io_tag64_low;
3113 uint32_t io_tag64_high;
3114#ifdef __BIG_ENDIAN_BITFIELD
3115 uint8_t reserved1;
3116 uint8_t reserved2;
3117 uint8_t reserved3;
3118 uint8_t ebde_count;
3119#else /* __LITTLE_ENDIAN */
3120 uint8_t ebde_count;
3121 uint8_t reserved3;
3122 uint8_t reserved2;
3123 uint8_t reserved1;
3124#endif
3125 uint32_t reserved4;
3126 struct ulp_bde64 rbde; /* response bde */
3127 struct ulp_bde64 dbde[LPFC_EXT_DATA_BDE_COUNT]; /* data BDE or BPL */
3128 uint8_t icd[32]; /* immediate command data (32 bytes) */
3129};
3130
3108typedef struct _IOCB { /* IOCB structure */ 3131typedef struct _IOCB { /* IOCB structure */
3109 union { 3132 union {
3110 GENERIC_RSP grsp; /* Generic response */ 3133 GENERIC_RSP grsp; /* Generic response */
@@ -3190,7 +3213,7 @@ typedef struct _IOCB { /* IOCB structure */
3190 3213
3191 /* words 8-31 used for que_xri_cx iocb */ 3214 /* words 8-31 used for que_xri_cx iocb */
3192 struct que_xri64cx_ext_fields que_xri64cx_ext_words; 3215 struct que_xri64cx_ext_fields que_xri64cx_ext_words;
3193 3216 struct fcp_irw_ext fcp_ext;
3194 uint32_t sli3Words[24]; /* 96 extra bytes for SLI-3 */ 3217 uint32_t sli3Words[24]; /* 96 extra bytes for SLI-3 */
3195 } unsli3; 3218 } unsli3;
3196 3219