#ifndef _EMLXS_QUEUE_H
#define _EMLXS_QUEUE_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct EQE
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t CQId: 16;
uint32_t MinorCode: 12;
uint32_t MajorCode: 3;
uint32_t Valid: 1;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Valid: 1;
uint32_t MajorCode: 3;
uint32_t MinorCode: 12;
uint32_t CQId: 16;
#endif
} EQE_t;
typedef union
{
uint32_t word;
EQE_t entry;
} EQE_u;
#define EQE_VALID 0x00000001
#define EQE_CQID 0xFFFF0000
typedef struct CQE_CmplWQ
{
#ifdef EMLXS_BIG_ENDIAN
uint16_t RequestTag;
uint8_t Status;
uint8_t hw_status;
uint32_t CmdSpecific;
uint32_t Parameter;
uint32_t Valid: 1;
uint32_t Rsvd1: 2;
uint32_t XB: 1;
uint32_t PV: 1;
uint32_t Priority: 3;
uint32_t Code: 8;
uint32_t Rsvd2: 16;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t hw_status;
uint8_t Status;
uint16_t RequestTag;
uint32_t CmdSpecific;
uint32_t Parameter;
uint32_t Rsvd2: 16;
uint32_t Code: 8;
uint32_t Priority: 3;
uint32_t PV: 1;
uint32_t XB: 1;
uint32_t Rsvd1: 2;
uint32_t Valid: 1;
#endif
} CQE_CmplWQ_t;
typedef struct CQE_RelWQ
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t Reserved1;
uint32_t Reserved2;
uint16_t WQid;
uint16_t WQindex;
uint32_t Valid: 1;
uint32_t Rsvd1: 7;
uint32_t Code: 8;
uint32_t Rsvd2: 16;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Reserved1;
uint32_t Reserved2;
uint16_t WQindex;
uint16_t WQid;
uint32_t Rsvd2: 16;
uint32_t Code: 8;
uint32_t Rsvd1: 7;
uint32_t Valid: 1;
#endif
} CQE_RelWQ_t;
typedef struct CQE_UnsolRcv
{
#ifdef EMLXS_BIG_ENDIAN
uint16_t RQindex;
uint8_t Status;
uint8_t Rsvd1;
uint32_t Rsvd2;
uint32_t data_size: 16;
uint32_t RQid: 10;
uint32_t FCFId: 6;
uint32_t Valid: 1;
uint32_t Rsvd3: 1;
uint32_t hdr_size: 6;
uint32_t Code: 8;
uint32_t eof: 8;
uint32_t sof: 8;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t Rsvd1;
uint8_t Status;
uint16_t RQindex;
uint32_t Rsvd2;
uint32_t FCFId: 6;
uint32_t RQid: 10;
uint32_t data_size: 16;
uint32_t sof: 8;
uint32_t eof: 8;
uint32_t Code: 8;
uint32_t hdr_size: 6;
uint32_t Rsvd3: 1;
uint32_t Valid: 1;
#endif
} CQE_UnsolRcv_t;
typedef struct CQE_UnsolRcvV1
{
#ifdef EMLXS_BIG_ENDIAN
uint16_t RQindex;
uint8_t Status;
uint8_t Rsvd1;
uint32_t Rsvd2: 26;
uint32_t FCFId: 6;
uint16_t data_size;
uint16_t RQid;
uint32_t Valid: 1;
uint32_t Rsvd3: 1;
uint32_t hdr_size: 6;
uint32_t Code: 8;
uint32_t eof: 8;
uint32_t sof: 8;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t Rsvd1;
uint8_t Status;
uint16_t RQindex;
uint32_t FCFId: 6;
uint32_t Rsvd2: 26;
uint16_t RQid;
uint16_t data_size;
uint32_t sof: 8;
uint32_t eof: 8;
uint32_t Code: 8;
uint32_t hdr_size: 6;
uint32_t Rsvd3: 1;
uint32_t Valid: 1;
#endif
} CQE_UnsolRcvV1_t;
#define RQ_STATUS_SUCCESS 0x10
#define RQ_STATUS_BUFLEN_EXCEEDED 0x11
#define RQ_STATUS_NEED_BUFFER 0x12
#define RQ_STATUS_FRAME_DISCARDED 0x13
typedef struct CQE_XRI_Abort
{
#ifdef EMLXS_BIG_ENDIAN
uint16_t Rsvd1;
uint8_t Status;
uint8_t Rsvd2;
uint32_t rjtStatus;
uint16_t RemoteXID;
uint16_t XRI;
uint32_t Valid: 1;
uint32_t IA: 1;
uint32_t BR: 1;
uint32_t EO: 1;
uint32_t Rsvd3: 4;
uint32_t Code: 8;
uint32_t Rsvd4: 16;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t Rsvd2;
uint8_t Status;
uint16_t Rsvd1;
uint32_t rjtStatus;
uint16_t XRI;
uint16_t RemoteXID;
uint32_t Rsvd4: 16;
uint32_t Code: 8;
uint32_t Rsvd3: 4;
uint32_t EO: 1;
uint32_t BR: 1;
uint32_t IA: 1;
uint32_t Valid: 1;
#endif
} CQE_XRI_Abort_t;
#define CQE_VALID 0x80000000
#define CQE_TYPE_WQ_COMPLETION 1
#define CQE_TYPE_RELEASE_WQE 2
#define CQE_TYPE_UNSOL_RCV 4
#define CQE_TYPE_XRI_ABORTED 5
#define CQE_TYPE_UNSOL_RCV_V1 9
typedef struct CQE_ASYNC_FCOE
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t ref_index;
uint16_t evt_type;
uint16_t fcf_count;
uint32_t event_tag;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t ref_index;
uint16_t fcf_count;
uint16_t evt_type;
uint32_t event_tag;
#endif
} CQE_ASYNC_FCOE_t;
typedef struct CQE_ASYNC_LINK_STATE
{
#ifdef EMLXS_BIG_ENDIAN
uint8_t port_speed;
uint8_t port_duplex;
uint8_t link_status;
uint8_t phys_port;
uint16_t qos_link_speed;
uint8_t Rsvd1;
uint8_t port_fault;
uint32_t event_tag;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t phys_port;
uint8_t link_status;
uint8_t port_duplex;
uint8_t port_speed;
uint8_t port_fault;
uint8_t Rsvd1;
uint16_t qos_link_speed;
uint32_t event_tag;
#endif
} CQE_ASYNC_LINK_STATE_t;
typedef struct CQE_ASYNC_GRP_5_QOS
{
#ifdef EMLXS_BIG_ENDIAN
uint8_t Rsvd2;
uint8_t Rsvd1;
uint8_t Rsvd0;
uint8_t phys_port;
uint16_t qos_link_speed;
uint8_t Rsvd4;
uint8_t Rsvd3;
uint32_t event_tag;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t phys_port;
uint8_t Rsvd0;
uint8_t Rsvd1;
uint8_t Rsvd2;
uint8_t Rsvd3;
uint8_t Rsvd4;
uint16_t qos_link_speed;
uint32_t event_tag;
#endif
} CQE_ASYNC_GRP_5_QOS_t;
typedef struct CQE_ASYNC_FC_LINK_ATT
{
#ifdef EMLXS_BIG_ENDIAN
uint8_t port_speed;
uint8_t topology;
uint8_t att_type;
uint8_t link_number;
uint16_t link_speed;
uint8_t shared_link_status;
uint8_t port_fault;
uint32_t event_tag;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t link_number;
uint8_t att_type;
uint8_t topology;
uint8_t port_speed;
uint8_t port_fault;
uint8_t shared_link_status;
uint16_t link_speed;
uint32_t event_tag;
#endif
} CQE_ASYNC_FC_LINK_ATT_t;
typedef struct CQE_ASYNC_PORT
{
uint8_t link_status[4];
uint32_t data_word2;
uint32_t Rsvd;
} CQE_ASYNC_PORT_t;
#define TOPOLOGY_UNKNOWN 0
#define TOPOLOGY_NPORT 1
#define TOPOLOGY_LPORT 2
#define TOPOLOGY_INTERNAL_LB 3
#define TOPOLOGY_SERDES_LB 4
#define ATT_TYPE_LINK_UP 1
#define ATT_TYPE_LINK_DOWN 2
#define ATT_TYPE_NO_HARD_ALPA 3
#define SHARED_STATUS_NONE 0
#define SHARED_STATUS_LD_UNUSABLE 1
#define SHARED_STATUS_LD_TRAN_FAULT 2
#define SHARED_STATUS_LD_NO_SIGNAL 3
#define SHARED_STATUS_LD_MGMT_DISABLED 4
#define SHARED_STATUS_LU_FAILED_P2P 5
#define SHARED_STATUS_LU_FAILED_FLOGI_TMO 6
#define SHARED_STATUS_LU_FAILED_NO_FPORT 7
#define SHARED_STATUS_LU_FAILED_NO_NPIV 8
#define SHARED_STATUS_LU_FAILED_FLOGO 9
#define SHARED_STATUS_LU_LOOPBACK 20
#define SHARED_STATUS_LU_NORMAL 40
#define PORT_FAULT_NONE 0
#define PORT_FAULT_LOCAL 1
#define PORT_FAULT_REMOTE 2
typedef struct CQE_ASYNC
{
union
{
CQE_ASYNC_LINK_STATE_t link;
CQE_ASYNC_FCOE_t fcoe;
CQE_ASYNC_GRP_5_QOS_t qos;
CQE_ASYNC_FC_LINK_ATT_t fc;
CQE_ASYNC_PORT_t port;
} un;
#ifdef EMLXS_BIG_ENDIAN
uint32_t valid: 1;
uint32_t async_evt: 1;
uint32_t Rsvd2: 6;
uint32_t event_type: 8;
uint32_t event_code: 8;
uint32_t Rsvd3: 8;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Rsvd3: 8;
uint32_t event_code: 8;
uint32_t event_type: 8;
uint32_t Rsvd2: 6;
uint32_t async_evt: 1;
uint32_t valid: 1;
#endif
} CQE_ASYNC_t;
#define PHY_1GHZ_LINK 3
#define PHY_10GHZ_LINK 4
#define ASYNC_EVENT_CODE_FCOE_LINK_STATE 0x01
#define ASYNC_EVENT_CODE_FCOE_FIP 0x02
#define ASYNC_EVENT_CODE_DCBX 0x03
#define ASYNC_EVENT_CODE_ISCSI 0x04
#define ASYNC_EVENT_CODE_GRP_5 0x05
#define ASYNC_EVENT_CODE_FC_EVENT 0x10
#define ASYNC_EVENT_CODE_PORT 0x11
#define ASYNC_EVENT_CODE_VF 0x12
#define ASYNC_EVENT_CODE_MR 0x13
#define ASYNC_EVENT_FC_LINK_ATT 1
#define ASYNC_EVENT_FC_SHARED_LINK_ATT 2
#define ASYNC_EVENT_PHYS_LINK_DOWN 0
#define ASYNC_EVENT_PHYS_LINK_UP 1
#define ASYNC_EVENT_LOGICAL_LINK_DOWN 2
#define ASYNC_EVENT_LOGICAL_LINK_UP 3
#define ASYNC_EVENT_NEW_FCF_DISC 1
#define ASYNC_EVENT_FCF_TABLE_FULL 2
#define ASYNC_EVENT_FCF_DEAD 3
#define ASYNC_EVENT_VIRT_LINK_CLEAR 4
#define ASYNC_EVENT_FCF_MODIFIED 5
#define ASYNC_EVENT_QOS_SPEED 1
#define ASYNC_EVENT_PORT_OTEMP 2
#define ASYNC_EVENT_PORT_NTEMP 3
#define ASYNC_EVENT_MISCONFIG_PORT 9
typedef struct CQE_MBOX
{
#ifdef EMLXS_BIG_ENDIAN
uint16_t extend_status;
uint16_t cmpl_status;
uint32_t tag_low;
uint32_t tag_high;
uint32_t valid: 1;
uint32_t async_evt: 1;
uint32_t hpi: 1;
uint32_t completed: 1;
uint32_t consumed: 1;
uint32_t Rsvd1: 27;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint16_t cmpl_status;
uint16_t extend_status;
uint32_t tag_low;
uint32_t tag_high;
uint32_t Rsvd1: 27;
uint32_t consumed: 1;
uint32_t completed: 1;
uint32_t hpi: 1;
uint32_t async_evt: 1;
uint32_t valid: 1;
#endif
} CQE_MBOX_t;
typedef union
{
uint32_t word[4];
CQE_ASYNC_t cqAsyncEntry;
CQE_ASYNC_FCOE_t cqAsyncFCOEEntry;
CQE_MBOX_t cqMboxEntry;
CQE_CmplWQ_t cqCmplEntry;
CQE_RelWQ_t cqRelEntry;
CQE_UnsolRcv_t cqUnsolRcvEntry;
CQE_UnsolRcvV1_t cqUnsolRcvEntryV1;
CQE_XRI_Abort_t cqXRIEntry;
} CQE_u;
typedef struct RQE
{
uint32_t AddrHi;
uint32_t AddrLo;
} RQE_t;
typedef struct
{
ULP_BDE64 Payload;
uint32_t PayloadLength;
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rsvd1: 6;
uint32_t VF: 1;
uint32_t SP: 1;
uint32_t LocalId: 24;
uint32_t Rsvd2: 8;
uint32_t RemoteId: 24;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t LocalId: 24;
uint32_t SP: 1;
uint32_t VF: 1;
uint32_t Rsvd1: 6;
uint32_t RemoteId: 24;
uint32_t Rsvd2: 8;
#endif
} ELS_REQ_WQE;
typedef struct
{
ULP_BDE64 Payload;
uint32_t PayloadLength;
uint32_t Rsvd1;
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rsvd2: 8;
uint32_t RemoteId: 24;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t RemoteId: 24;
uint32_t Rsvd2: 8;
#endif
} ELS_RSP_WQE;
typedef struct
{
ULP_BDE64 Payload;
uint32_t PayloadLength;
uint32_t Parameter;
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rctl: 8;
uint32_t Type: 8;
uint32_t DFctl: 8;
uint32_t Rsvd1: 4;
uint32_t la: 1;
uint32_t Rsvd2: 3;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Rsvd2: 3;
uint32_t la: 1;
uint32_t Rsvd1: 4;
uint32_t DFctl: 8;
uint32_t Type: 8;
uint32_t Rctl: 8;
#endif
} GEN_REQ_WQE;
typedef struct
{
ULP_BDE64 Payload;
uint32_t Rsvd0;
uint32_t Parameter;
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rctl: 8;
uint32_t Type: 8;
uint32_t DFctl: 8;
uint32_t ls: 1;
uint32_t xo: 1;
uint32_t Rsvd1: 2;
uint32_t ft: 1;
uint32_t si: 1;
uint32_t Rsvd2: 2;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Rsvd2: 2;
uint32_t si: 1;
uint32_t ft: 1;
uint32_t Rsvd1: 2;
uint32_t xo: 1;
uint32_t ls: 1;
uint32_t DFctl: 8;
uint32_t Type: 8;
uint32_t Rctl: 8;
#endif
} XMIT_SEQ_WQE;
typedef struct
{
ULP_BDE64 Payload;
uint32_t PayloadLength;
uint32_t TotalTransferCount;
uint32_t Rsvd1;
} FCP_WQE;
typedef struct
{
uint32_t Rsvd1[3];
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rsvd2: 16;
uint32_t Criteria: 8;
uint32_t Rsvd3: 7;
uint32_t IA: 1;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t IA: 1;
uint32_t Rsvd3: 7;
uint32_t Criteria: 8;
uint32_t Rsvd2: 16;
#endif
uint32_t Rsvd4[2];
} ABORT_WQE;
#define ABORT_XRI_TAG 1
#define ABORT_ABT_TAG 2
#define ABORT_REQ_TAG 3
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
uint8_t Payload0;
uint8_t Payload1;
uint8_t Payload2;
uint8_t Payload3;
uint32_t OXId: 16;
uint32_t RXId: 16;
uint32_t SeqCntLow: 16;
uint32_t SeqCntHigh: 16;
uint32_t Rsvd1;
uint32_t Rsvd2: 8;
uint32_t LocalId: 24;
uint32_t XO: 1;
uint32_t AR: 1;
uint32_t Rsvd3: 6;
uint32_t RemoteId: 24;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint8_t Payload3;
uint8_t Payload2;
uint8_t Payload1;
uint8_t Payload0;
uint32_t RXId: 16;
uint32_t OXId: 16;
uint32_t SeqCntHigh: 16;
uint32_t SeqCntLow: 16;
uint32_t Rsvd1;
uint32_t LocalId: 24;
uint32_t Rsvd2: 8;
uint32_t RemoteId: 24;
uint32_t Rsvd3: 6;
uint32_t AR: 1;
uint32_t XO: 1;
#endif
} BLS_WQE;
typedef struct
{
uint32_t Rsvd1[5];
#ifdef EMLXS_BIG_ENDIAN
uint32_t XO: 1;
uint32_t Rsvd2: 31;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Rsvd2: 31;
uint32_t XO: 1;
#endif
} CREATE_XRI_WQE;
typedef struct emlxs_wqe
{
union
{
uint32_t word[6];
ELS_REQ_WQE ElsCmd;
GEN_REQ_WQE GenReq;
FCP_WQE FcpCmd;
ELS_RSP_WQE ElsRsp;
ABORT_WQE Abort;
BLS_WQE BlsRsp;
CREATE_XRI_WQE CreateXri;
XMIT_SEQ_WQE XmitSeq;
} un;
#ifdef EMLXS_BIG_ENDIAN
uint16_t ContextTag;
uint16_t XRITag;
uint32_t Timer: 8;
uint32_t Rsvd1: 1;
uint32_t ERP: 1;
uint32_t PU: 2;
uint32_t AR: 1;
uint32_t Class: 3;
uint32_t Command: 8;
uint32_t Rsvd0: 1;
uint32_t BsType: 3;
uint32_t ContextType: 2;
uint32_t DIF: 2;
uint32_t AbortTag;
uint16_t OXId;
uint16_t RequestTag;
uint32_t CCP: 8;
uint32_t CCPE: 1;
uint32_t CMD: 1;
uint32_t XC: 1;
uint32_t Rsvd5: 1;
uint32_t PV: 1;
uint32_t PRI: 3;
uint32_t WQES: 1;
uint32_t DBDE: 1;
uint32_t IOd: 1;
uint32_t Rsvd4: 1;
uint32_t XBL: 1;
uint32_t Rsvd3: 1;
uint32_t QOSd: 1;
uint32_t LenLoc: 2;
uint32_t Rsvd2: 3;
uint32_t EBDEcnt: 4;
uint32_t CQId: 16;
uint32_t Rsvd8: 8;
uint32_t WQEC: 1;
uint32_t ELSId: 3;
uint32_t CmdType: 4;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint16_t XRITag;
uint16_t ContextTag;
uint32_t DIF: 2;
uint32_t ContextType: 2;
uint32_t BsType: 3;
uint32_t Rsvd0: 1;
uint32_t Command: 8;
uint32_t Class: 3;
uint32_t AR: 1;
uint32_t PU: 2;
uint32_t ERP: 1;
uint32_t Rsvd1: 1;
uint32_t Timer: 8;
uint32_t AbortTag;
uint16_t RequestTag;
uint16_t OXId;
uint32_t EBDEcnt: 4;
uint32_t Rsvd2: 3;
uint32_t LenLoc: 2;
uint32_t QOSd: 1;
uint32_t Rsvd3: 1;
uint32_t XBL: 1;
uint32_t Rsvd4: 1;
uint32_t IOd: 1;
uint32_t DBDE: 1;
uint32_t WQES: 1;
uint32_t PRI: 3;
uint32_t PV: 1;
uint32_t Rsvd5: 1;
uint32_t XC: 1;
uint32_t CMD: 1;
uint32_t CCPE: 1;
uint32_t CCP: 8;
uint32_t CmdType: 4;
uint32_t ELSId: 3;
uint32_t WQEC: 1;
uint32_t Rsvd8: 8;
uint32_t CQId: 16;
#endif
uint32_t CmdSpecific;
ULP_BDE64 FirstData;
} emlxs_wqe_t;
#ifdef EMLXS_BIG_ENDIAN
#define WQE_PHWQ_WQID(wqe, qid) *(((uint16_t *)(wqe)) + 21) = \
((qid << 1) & 0xfffe);
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#define WQE_PHWQ_WQID(wqe, qid) *(((uint16_t *)(wqe)) + 20) = \
((qid << 1) & 0xfffe);
#endif
#define WQE_RPI_CONTEXT 0
#define WQE_VPI_CONTEXT 1
#define WQE_VFI_CONTEXT 2
#define WQE_FCFI_CONTEXT 3
#define WQE_TYPE_FCP_DATA_IN 0x00
#define WQE_TYPE_FCP_DATA_OUT 0x01
#define WQE_TYPE_TRECEIVE 0x02
#define WQE_TYPE_TRSP 0x03
#define WQE_TYPE_SRR_RSP 0x06
#define WQE_TYPE_TSEND 0x07
#define WQE_TYPE_GEN 0x08
#define WQE_TYPE_ABORT 0x08
#define WQE_TYPE_ELS 0x0C
#define WQE_TYPE_MASK_FIP 0x01
#define WQE_ELSID_PLOGI 0x04
#define WQE_ELSID_FLOGI 0x03
#define WQE_ELSID_FDISC 0x02
#define WQE_ELSID_LOGO 0x01
#define WQE_ELSID_CMD 0x00
#define RQB_HEADER_SIZE 32
#define RQB_DATA_SIZE 2048
#define RQB_COUNT 256
#define EMLXS_NUM_WQ_PAGES 4
#define WQE_SIZE 64
#define EMLXS_NUM_CQ_PAGES_V2 4
#define CQE_SIZE 16
#define EQ_DEPTH 1024
#define CQ_DEPTH 256
#define CQ_DEPTH_V2 ((4096/CQE_SIZE) * EMLXS_NUM_CQ_PAGES_V2)
#define WQ_DEPTH ((4096/WQE_SIZE) * EMLXS_NUM_WQ_PAGES)
#define MQ_DEPTH 16
#define RQ_DEPTH 512
#define RQ_DEPTH_EXPONENT 9
#define EMLXS_MAX_WQS_PER_EQ 4
typedef struct emlxs_rqdb
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rsvd2:2;
uint32_t NumPosted:14;
uint32_t Rsvd1:6;
uint32_t Qid:10;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Qid:10;
uint32_t Rsvd1:6;
uint32_t NumPosted:14;
uint32_t Rsvd2:2;
#endif
} emlxs_rqdb_t;
typedef union emlxs_rqdbu
{
uint32_t word;
emlxs_rqdb_t db;
} emlxs_rqdbu_t;
typedef struct emlxs_wqdb
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t NumPosted:8;
uint32_t Index:8;
uint32_t Rsvd1:6;
uint32_t Qid:10;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Qid:10;
uint32_t Rsvd1:6;
uint32_t Index:8;
uint32_t NumPosted:8;
#endif
} emlxs_wqdb_t;
typedef union emlxs_wqdbu
{
uint32_t word;
emlxs_wqdb_t db;
} emlxs_wqdbu_t;
typedef struct emlxs_cqdb
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t NumPosted:2;
uint32_t Rearm:1;
uint32_t NumPopped:13;
uint32_t Qid_hi:5;
uint32_t Event:1;
uint32_t Qid:10;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Qid:10;
uint32_t Event:1;
uint32_t Qid_hi:5;
uint32_t NumPopped:13;
uint32_t Rearm:1;
uint32_t NumPosted:2;
#endif
} emlxs_cqdb_t;
typedef struct emlxs_cqdb6
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t NumPosted:2;
uint32_t Rearm:1;
uint32_t NumPopped:13;
uint32_t Qid:16;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Qid:16;
uint32_t NumPopped:13;
uint32_t Rearm:1;
uint32_t NumPosted:2;
#endif
} emlxs_cqdb6_t;
typedef union
{
uint32_t word;
emlxs_cqdb_t db2;
emlxs_cqdb6_t db6;
} emlxs_cqdb_u;
typedef struct emlxs_eqdb
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rsvd2:2;
uint32_t Rearm:1;
uint32_t NumPopped:13;
uint32_t Qid_hi:5;
uint32_t Event:1;
uint32_t Clear:1;
uint32_t Qid:9;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Qid:9;
uint32_t Clear:1;
uint32_t Event:1;
uint32_t Qid_hi:5;
uint32_t NumPopped:13;
uint32_t Rearm:1;
uint32_t Rsvd2:2;
#endif
} emlxs_eqdb_t;
typedef struct emlxs_eqdb6
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t NumPosted:2;
uint32_t Rearm:1;
uint32_t NumPopped:13;
uint32_t Rsvd1:4;
uint32_t Qid:12;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Qid:12;
uint32_t Rsvd1:4;
uint32_t NumPopped:13;
uint32_t Rearm:1;
uint32_t NumPosted:2;
#endif
} emlxs_eqdb6_t;
typedef union
{
uint32_t word;
emlxs_eqdb_t db2;
emlxs_eqdb6_t db6;
} emlxs_eqdb_u;
typedef struct emlxs_mqdb
{
#ifdef EMLXS_BIG_ENDIAN
uint32_t Rsvd2:2;
uint32_t NumPosted:14;
uint32_t Rsvd1:5;
uint32_t Qid:11;
#endif
#ifdef EMLXS_LITTLE_ENDIAN
uint32_t Qid:11;
uint32_t Rsvd1:5;
uint32_t NumPosted:14;
uint32_t Rsvd2:2;
#endif
} emlxs_mqdb_t;
typedef union emlxs_mqdbu
{
uint32_t word;
emlxs_mqdb_t db;
} emlxs_mqdbu_t;
#ifdef __cplusplus
}
#endif
#endif