📄 lpfc_hw.h
字号:
typedef struct {#ifdef __BIG_ENDIAN_BITFIELD uint32_t cv:1; uint32_t rr:1; uint32_t rsvd1:29; uint32_t rv:1;#else /* __LITTLE_ENDIAN_BITFIELD */ uint32_t rv:1; uint32_t rsvd1:29; uint32_t rr:1; uint32_t cv:1;#endif uint32_t biuRev; uint32_t smRev; union { uint32_t smFwRev; struct {#ifdef __BIG_ENDIAN_BITFIELD uint8_t ProgType; uint8_t ProgId; uint16_t ProgVer:4; uint16_t ProgRev:4; uint16_t ProgFixLvl:2; uint16_t ProgDistType:2; uint16_t DistCnt:4;#else /* __LITTLE_ENDIAN_BITFIELD */ uint16_t DistCnt:4; uint16_t ProgDistType:2; uint16_t ProgFixLvl:2; uint16_t ProgRev:4; uint16_t ProgVer:4; uint8_t ProgId; uint8_t ProgType;#endif } b; } un; uint32_t endecRev;#ifdef __BIG_ENDIAN_BITFIELD uint8_t feaLevelHigh; uint8_t feaLevelLow; uint8_t fcphHigh; uint8_t fcphLow;#else /* __LITTLE_ENDIAN_BITFIELD */ uint8_t fcphLow; uint8_t fcphHigh; uint8_t feaLevelLow; uint8_t feaLevelHigh;#endif uint32_t postKernRev; uint32_t opFwRev; uint8_t opFwName[16]; uint32_t sli1FwRev; uint8_t sli1FwName[16]; uint32_t sli2FwRev; uint8_t sli2FwName[16]; uint32_t rsvd2; uint32_t RandomData[7];} READ_REV_VAR;/* Structure for MB Command READ_LINK_STAT (18) */typedef struct { uint32_t rsvd1; uint32_t linkFailureCnt; uint32_t lossSyncCnt; uint32_t lossSignalCnt; uint32_t primSeqErrCnt; uint32_t invalidXmitWord; uint32_t crcCnt; uint32_t primSeqTimeout; uint32_t elasticOverrun; uint32_t arbTimeout;} READ_LNK_VAR;/* Structure for MB Command REG_LOGIN (19) *//* Structure for MB Command REG_LOGIN64 (0x93) */typedef struct {#ifdef __BIG_ENDIAN_BITFIELD uint16_t rsvd1; uint16_t rpi; uint32_t rsvd2:8; uint32_t did:24;#else /* __LITTLE_ENDIAN_BITFIELD */ uint16_t rpi; uint16_t rsvd1; uint32_t did:24; uint32_t rsvd2:8;#endif union { struct ulp_bde sp; struct ulp_bde64 sp64; } un;} REG_LOGIN_VAR;/* Word 30 contents for REG_LOGIN */typedef union { struct {#ifdef __BIG_ENDIAN_BITFIELD uint16_t rsvd1:12; uint16_t wd30_class:4; uint16_t xri;#else /* __LITTLE_ENDIAN_BITFIELD */ uint16_t xri; uint16_t wd30_class:4; uint16_t rsvd1:12;#endif } f; uint32_t word;} REG_WD30;/* Structure for MB Command UNREG_LOGIN (20) */typedef struct {#ifdef __BIG_ENDIAN_BITFIELD uint16_t rsvd1; uint16_t rpi;#else /* __LITTLE_ENDIAN_BITFIELD */ uint16_t rpi; uint16_t rsvd1;#endif} UNREG_LOGIN_VAR;/* Structure for MB Command UNREG_D_ID (0x23) */typedef struct { uint32_t did;} UNREG_D_ID_VAR;/* Structure for MB Command READ_LA (21) *//* Structure for MB Command READ_LA64 (0x95) */typedef struct { uint32_t eventTag; /* Event tag */#ifdef __BIG_ENDIAN_BITFIELD uint32_t rsvd1:22; uint32_t pb:1; uint32_t il:1; uint32_t attType:8;#else /* __LITTLE_ENDIAN_BITFIELD */ uint32_t attType:8; uint32_t il:1; uint32_t pb:1; uint32_t rsvd1:22;#endif#define AT_RESERVED 0x00 /* Reserved - attType */#define AT_LINK_UP 0x01 /* Link is up */#define AT_LINK_DOWN 0x02 /* Link is down */#ifdef __BIG_ENDIAN_BITFIELD uint8_t granted_AL_PA; uint8_t lipAlPs; uint8_t lipType; uint8_t topology;#else /* __LITTLE_ENDIAN_BITFIELD */ uint8_t topology; uint8_t lipType; uint8_t lipAlPs; uint8_t granted_AL_PA;#endif#define TOPOLOGY_PT_PT 0x01 /* Topology is pt-pt / pt-fabric */#define TOPOLOGY_LOOP 0x02 /* Topology is FC-AL */ union { struct ulp_bde lilpBde; /* This BDE points to a 128 byte buffer to */ /* store the LILP AL_PA position map into */ struct ulp_bde64 lilpBde64; } un;#ifdef __BIG_ENDIAN_BITFIELD uint32_t Dlu:1; uint32_t Dtf:1; uint32_t Drsvd2:14; uint32_t DlnkSpeed:8; uint32_t DnlPort:4; uint32_t Dtx:2; uint32_t Drx:2;#else /* __LITTLE_ENDIAN_BITFIELD */ uint32_t Drx:2; uint32_t Dtx:2; uint32_t DnlPort:4; uint32_t DlnkSpeed:8; uint32_t Drsvd2:14; uint32_t Dtf:1; uint32_t Dlu:1;#endif#ifdef __BIG_ENDIAN_BITFIELD uint32_t Ulu:1; uint32_t Utf:1; uint32_t Ursvd2:14; uint32_t UlnkSpeed:8; uint32_t UnlPort:4; uint32_t Utx:2; uint32_t Urx:2;#else /* __LITTLE_ENDIAN_BITFIELD */ uint32_t Urx:2; uint32_t Utx:2; uint32_t UnlPort:4; uint32_t UlnkSpeed:8; uint32_t Ursvd2:14; uint32_t Utf:1; uint32_t Ulu:1;#endif#define LA_UNKNW_LINK 0x0 /* lnkSpeed */#define LA_1GHZ_LINK 0x04 /* lnkSpeed */#define LA_2GHZ_LINK 0x08 /* lnkSpeed */#define LA_4GHZ_LINK 0x10 /* lnkSpeed */#define LA_8GHZ_LINK 0x20 /* lnkSpeed */#define LA_10GHZ_LINK 0x40 /* lnkSpeed */} READ_LA_VAR;/* Structure for MB Command CLEAR_LA (22) */typedef struct { uint32_t eventTag; /* Event tag */ uint32_t rsvd1;} CLEAR_LA_VAR;/* Structure for MB Command DUMP */typedef struct {#ifdef __BIG_ENDIAN_BITFIELD uint32_t rsvd:25; uint32_t ra:1; uint32_t co:1; uint32_t cv:1; uint32_t type:4; uint32_t entry_index:16; uint32_t region_id:16;#else /* __LITTLE_ENDIAN_BITFIELD */ uint32_t type:4; uint32_t cv:1; uint32_t co:1; uint32_t ra:1; uint32_t rsvd:25; uint32_t region_id:16; uint32_t entry_index:16;#endif uint32_t rsvd1; uint32_t word_cnt; uint32_t resp_offset;} DUMP_VAR;#define DMP_MEM_REG 0x1#define DMP_NV_PARAMS 0x2#define DMP_REGION_VPD 0xe#define DMP_VPD_SIZE 0x400 /* maximum amount of VPD */#define DMP_RSP_OFFSET 0x14 /* word 5 contains first word of rsp */#define DMP_RSP_SIZE 0x6C /* maximum of 27 words of rsp data *//* Structure for MB Command CONFIG_PORT (0x88) */typedef struct { uint32_t pcbLen; uint32_t pcbLow; /* bit 31:0 of memory based port config block */ uint32_t pcbHigh; /* bit 63:32 of memory based port config block */ uint32_t hbainit[5];} CONFIG_PORT_VAR;/* SLI-2 Port Control Block *//* SLIM POINTER */#define SLIMOFF 0x30 /* WORD */typedef struct _SLI2_RDSC { uint32_t cmdEntries; uint32_t cmdAddrLow; uint32_t cmdAddrHigh; uint32_t rspEntries; uint32_t rspAddrLow; uint32_t rspAddrHigh;} SLI2_RDSC;typedef struct _PCB {#ifdef __BIG_ENDIAN_BITFIELD uint32_t type:8;#define TYPE_NATIVE_SLI2 0x01; uint32_t feature:8;#define FEATURE_INITIAL_SLI2 0x01; uint32_t rsvd:12; uint32_t maxRing:4;#else /* __LITTLE_ENDIAN_BITFIELD */ uint32_t maxRing:4; uint32_t rsvd:12; uint32_t feature:8;#define FEATURE_INITIAL_SLI2 0x01; uint32_t type:8;#define TYPE_NATIVE_SLI2 0x01;#endif uint32_t mailBoxSize; uint32_t mbAddrLow; uint32_t mbAddrHigh; uint32_t hgpAddrLow; uint32_t hgpAddrHigh; uint32_t pgpAddrLow; uint32_t pgpAddrHigh; SLI2_RDSC rdsc[MAX_RINGS];} PCB_t;/* NEW_FEATURE */typedef struct {#ifdef __BIG_ENDIAN_BITFIELD uint32_t rsvd0:27; uint32_t discardFarp:1; uint32_t IPEnable:1; uint32_t nodeName:1; uint32_t portName:1; uint32_t filterEnable:1;#else /* __LITTLE_ENDIAN_BITFIELD */ uint32_t filterEnable:1; uint32_t portName:1; uint32_t nodeName:1; uint32_t IPEnable:1; uint32_t discardFarp:1; uint32_t rsvd:27;#endif uint8_t portname[8]; /* Used to be struct lpfc_name */ uint8_t nodename[8]; uint32_t rsvd1; uint32_t rsvd2; uint32_t rsvd3; uint32_t IPAddress;} CONFIG_FARP_VAR;/* Union of all Mailbox Command types */#define MAILBOX_CMD_WSIZE 32#define MAILBOX_CMD_SIZE (MAILBOX_CMD_WSIZE * sizeof(uint32_t))typedef union { uint32_t varWords[MAILBOX_CMD_WSIZE - 1]; LOAD_SM_VAR varLdSM; /* cmd = 1 (LOAD_SM) */ READ_NV_VAR varRDnvp; /* cmd = 2 (READ_NVPARMS) */ WRITE_NV_VAR varWTnvp; /* cmd = 3 (WRITE_NVPARMS) */ BIU_DIAG_VAR varBIUdiag; /* cmd = 4 (RUN_BIU_DIAG) */ INIT_LINK_VAR varInitLnk; /* cmd = 5 (INIT_LINK) */ DOWN_LINK_VAR varDwnLnk; /* cmd = 6 (DOWN_LINK) */ CONFIG_LINK varCfgLnk; /* cmd = 7 (CONFIG_LINK) */ PART_SLIM_VAR varSlim; /* cmd = 8 (PART_SLIM) */ CONFIG_RING_VAR varCfgRing; /* cmd = 9 (CONFIG_RING) */ RESET_RING_VAR varRstRing; /* cmd = 10 (RESET_RING) */ READ_CONFIG_VAR varRdConfig; /* cmd = 11 (READ_CONFIG) */ READ_RCONF_VAR varRdRConfig; /* cmd = 12 (READ_RCONFIG) */ READ_SPARM_VAR varRdSparm; /* cmd = 13 (READ_SPARM(64)) */ READ_STATUS_VAR varRdStatus; /* cmd = 14 (READ_STATUS) */ READ_RPI_VAR varRdRPI; /* cmd = 15 (READ_RPI(64)) */ READ_XRI_VAR varRdXRI; /* cmd = 16 (READ_XRI) */ READ_REV_VAR varRdRev; /* cmd = 17 (READ_REV) */ READ_LNK_VAR varRdLnk; /* cmd = 18 (READ_LNK_STAT) */ REG_LOGIN_VAR varRegLogin; /* cmd = 19 (REG_LOGIN(64)) */ UNREG_LOGIN_VAR varUnregLogin; /* cmd = 20 (UNREG_LOGIN) */ READ_LA_VAR varReadLA; /* cmd = 21 (READ_LA(64)) */ CLEAR_LA_VAR varClearLA; /* cmd = 22 (CLEAR_LA) */ DUMP_VAR varDmp; /* Warm Start DUMP mbx cmd */ UNREG_D_ID_VAR varUnregDID; /* cmd = 0x23 (UNREG_D_ID) */ CONFIG_FARP_VAR varCfgFarp; /* cmd = 0x25 (CONFIG_FARP) NEW_FEATURE */ CONFIG_PORT_VAR varCfgPort; /* cmd = 0x88 (CONFIG_PORT) */} MAILVARIANTS;/* * SLI-2 specific structures */struct lpfc_hgp { __le32 cmdPutInx; __le32 rspGetInx;};struct lpfc_pgp { __le32 cmdGetInx; __le32 rspPutInx;};typedef struct _SLI2_DESC { struct lpfc_hgp host[MAX_RINGS]; uint32_t unused1[16]; struct lpfc_pgp port[MAX_RINGS];} SLI2_DESC;typedef union { SLI2_DESC s2;} SLI_VAR;typedef struct {#ifdef __BIG_ENDIAN_BITFIELD uint16_t mbxStatus; uint8_t mbxCommand; uint8_t mbxReserved:6; uint8_t mbxHc:1; uint8_t mbxOwner:1; /* Low order bit first word */#else /* __LITTLE_ENDIAN_BITFIELD */ uint8_t mbxOwner:1; /* Low order bit first word */ uint8_t mbxHc:1; uint8_t mbxReserved:6; uint8_t mbxCommand; uint16_t mbxStatus;#endif MAILVARIANTS un; SLI_VAR us;} MAILBOX_t;/* * Begin Structure Definitions for IOCB Commands */typedef struct {#ifdef __BIG_ENDIAN_BITFIELD uint8_t statAction; uint8_t statRsn; uint8_t statBaExp; uint8_t statLocalError;#else /* __LITTLE_ENDIAN_BITFIELD */ uint8_t statLocalError; uint8_t statBaExp; uint8_t statRsn; uint8_t statAction;#endif /* statRsn P/F_RJT reason codes */#define RJT_BAD_D_ID 0x01 /* Invalid D_ID field */#define RJT_BAD_S_ID 0x02 /* Invalid S_ID field */#define RJT_UNAVAIL_TEMP 0x03 /* N_Port unavailable temp. */#define RJT_UNAVAIL_PERM 0x04 /* N_Port unavailable perm. */#define RJT_UNSUP_CLASS 0x05 /* Class not supported */#define RJT_DELIM_ERR 0x06 /* Delimiter usage error */#define RJT_UNSUP_TYPE 0x07 /* Type not supported */#define RJT_BAD_CONTROL 0x08 /* Invalid link conrtol */#define RJT_BAD_RCTL 0x09 /* R_CTL invalid */#define RJT_BAD_FCTL 0x0A /* F_CTL invalid */#define RJT_BAD_OXID 0x0B /* OX_ID invalid */#define RJT_BAD_RXID 0x0C /* RX_ID invalid */#define RJT_BAD_SEQID 0x0D /* SEQ_ID invalid */#define RJT_BAD_DFCTL 0x0E /* DF_CTL invalid */#define RJT_BAD_SEQCNT 0x0F /* SEQ_CNT invalid */#define RJT_BAD_PARM 0x10 /* Param. field invalid */#define RJT_XCHG_ERR 0x11 /* Exchange error */#define RJT_PROT_ERR 0x12 /* Protocol error */#define RJT_BAD_LENGTH 0x13 /* Invalid Length */#define RJT_UNEXPECTED_ACK 0x14 /* Unexpected ACK */#define RJT_LOGIN_REQUIRED 0x16 /* Login required */#define RJT_TOO_MANY_SEQ 0x17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -