diff options
author | James Smart <James.Smart@Emulex.Com> | 2008-08-24 21:49:55 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-10-13 09:28:53 -0400 |
commit | 34b02dcdcf1865405f4762b991965c0c3b8a3ae0 (patch) | |
tree | 00829334c2813d30e574a5f1290fbf7dd210d1cb /drivers/scsi/lpfc/lpfc_hw.h | |
parent | 90160e010b6f3a91a9bb044bbe6723731e6f366c (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.h | 63 |
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 | ||
1496 | typedef struct ULP_BDL { /* SLI-2 */ | 1490 | typedef 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 | ||
2718 | typedef union { | 2712 | struct 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 | |||
2719 | union 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 | ||
2724 | typedef struct { | 2726 | typedef 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 | ||
3111 | struct 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 | |||
3108 | typedef struct _IOCB { /* IOCB structure */ | 3131 | typedef 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 | ||