#ifndef __RDMA_CONSTANTS_H_
#define __RDMA_CONSTANTS_H_
#include "microcode_constants.h"
#define EVEREST_SQ_WQE_OP_INTERNAL (1 << 7)
#define EVEREST_SQ_WQE_OP_INLINE (1 << 6)
#define EVEREST_SQ_WQE_OP_WRITE (0)
#define EVEREST_SQ_WQE_OP_WRITE_INLINE (EVEREST_SQ_WQE_OP_WRITE | EVEREST_SQ_WQE_OP_INLINE)
#define EVEREST_SQ_WQE_OP_READ (1)
#define EVEREST_SQ_WQE_OP_READ_INVAL_LOCAL (EVEREST_SQ_WQE_OP_READ | EVEREST_SQ_WQE_OP_INTERNAL)
#define EVEREST_SQ_WQE_OP_READ_RESP (2)
#define EVEREST_SQ_WQE_OP_SEND (3)
#define EVEREST_SQ_WQE_OP_SEND_INVAL (4)
#define EVEREST_SQ_WQE_OP_SEND_SE (5)
#define EVEREST_SQ_WQE_OP_SEND_SE_INVAL (6)
#define EVEREST_SQ_WQE_OP_SEND_INLINE (EVEREST_SQ_WQE_OP_SEND | EVEREST_SQ_WQE_OP_INLINE)
#define EVEREST_SQ_WQE_OP_SEND_INVAL_INLINE (EVEREST_SQ_WQE_OP_SEND_INVAL | EVEREST_SQ_WQE_OP_INLINE)
#define EVEREST_SQ_WQE_OP_SEND_SE_INLINE (EVEREST_SQ_WQE_OP_SEND_SE | EVEREST_SQ_WQE_OP_INLINE)
#define EVEREST_SQ_WQE_OP_SEND_SE_INVAL_INLINE (EVEREST_SQ_WQE_OP_SEND_SE_INVAL | EVEREST_SQ_WQE_OP_INLINE)
#define EVEREST_SQ_WQE_OP_TERMINATE (7)
#define EVEREST_SQ_WQE_OP_BIND_MEM_WINDOW ((8) | EVEREST_SQ_WQE_OP_INTERNAL)
#define EVEREST_SQ_WQE_OP_FAST_MEM_REGISTER ((9) | EVEREST_SQ_WQE_OP_INTERNAL)
#define EVEREST_SQ_WQE_OP_INVAL_LOCAL ((10) | EVEREST_SQ_WQE_OP_INTERNAL)
#define EVEREST_SQ_WQE_INVALID_OPCODE (0xFF)
#define RDMA_RDMAP_DDP_VERSION_RDMAC (0)
#define RDMA_RDMAP_DDP_VERSION_IETF (1)
#define RDMA_MPA_USE_MARKERS_FLAG (0x8000)
#define RDMA_CQE_TYPE_NON_AGGR (1)
#define RDMA_CQE_STATUS_OK (0)
#define RDMA_RQ_WQE_SHIFT (6)
#define RDMA_RQ_WQE_SGL_SIZE_SMALL (2)
#define RDMA_RQ_WQE_SGL_SIZE_BIG (6)
#define RDMA_RAMROD_CMD_ID_SEND_MPA (14)
#define RDMA_RAMROD_CMD_ID_UPDATE_ULP (15)
#define RDMA_RAMROD_CMD_ID_CLOSE_PHY_PORT (16)
#define RDMA_MAX_TERMINATE_MESSAGE_SIZE (52)
#define RDMA_FWD_MODE_L2 (0)
#define RDMA_FWD_MODE_RDMA (1)
#define RESERVED_EQ_ELEMENTS (MAX_RAMRODS_PER_PORT + 2)
#define RDMA_EVENT_TYPE_ASYNC (0)
#define RDMA_EVENT_TYPE_ERROR (1)
#define RDMA_EVENT_TYPE_TERMINATE_MESSAGE (2)
#define RDMA_EVENT_TYPE_SLOW_PATH_COMPLETION (3)
#define RDMA_SOURCE_TYPE_RNIC (0)
#define RDMA_SOURCE_TYPE_QP (1)
#define RDMA_SOURCE_TYPE_CQ (2)
#define RDMA_SOURCE_TYPE_SRQ (3)
#define RDMA_QUEUE_TYPE_NONE (0)
#define RDMA_QUEUE_TYPE_SQ (1)
#define RDMA_QUEUE_TYPE_RQ (2)
#define RDMA_QUEUE_TYPE_IRQ (3)
#define RDMA_QUEUE_TYPE_SRQ (4)
#define RDMA_ASYNC_EVENT_LLP_CLOSE_COMPLETE (0)
#define RDMA_ASYNC_EVENT_TERMINATE_MESSAGE_RECEIVED (1)
#define RDMA_ASYNC_EVENT_LLP_CONNECTION_RESET (2)
#define RDMA_ASYNC_EVENT_LLP_CONNECTION_LOST (3)
#define RDMA_ASYNC_EVENT_LLP_INTEGRITY_INVALID_SEGMENT_SIZE (4)
#define RDMA_ASYNC_EVENT_LLP_INTEGRITY_INVALID_CRC (5)
#define RDMA_ASYNC_EVENT_LLP_INTEGRITY_BAD_FPDU (6)
#define RDMA_ASYNC_EVENT_REMOTE_INVALID_DDP_VERSION (7)
#define RDMA_ASYNC_EVENT_REMOTE_INVALID_RDMA_VERSION (8)
#define RDMA_ASYNC_EVENT_REMOTE_UNEXPECTED_OPCODE (9)
#define RDMA_ASYNC_EVENT_REMOTE_INVALID_DDP_QUEUE_NUMBER (10)
#define RDMA_ASYNC_EVENT_REMOTE_READ_REQUEST_DISABLED (11)
#define RDMA_ASYNC_EVENT_REMOTE_WRITE_OR_READ_RESPONSE_DISABLED (12)
#define RDMA_ASYNC_EVENT_REMOTE_INVALID_READ_REQUEST (13)
#define RDMA_ASYNC_EVENT_REMOTE_NO_L_BIT (14)
#define RDMA_ASYNC_EVENT_PROTECTION_INVALID_STAG (15)
#define RDMA_ASYNC_EVENT_PROTECTION_TAGGED_BOUNDS_VIOLATION (16)
#define RDMA_ASYNC_EVENT_PROTECTION_TAGGED_ACCESS_VIOLATION (17)
#define RDMA_ASYNC_EVENT_PROTECTION_TAGGED_INVALID_PD (18)
#define RDMA_ASYNC_EVENT_PROTECTION_WRAP_ERROR (19)
#define RDMA_ASYNC_EVENT_BAD_CLOSE (20)
#define RDMA_ASYNC_EVENT_BAD_LLP_CLOSE (21)
#define RDMA_ASYNC_EVENT_RQ_PROTECTION_INVALID_MSN_RANGE (22)
#define RDMA_ASYNC_EVENT_RQ_PROTECTION_INVALID_MSN_GAP (23)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_TOO_MANY_READ_REQUEST (24)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_INVALID_MSN_GAP (25)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_INVALID_MSN_RANGE (26)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_INVALID_STAG (27)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_TAGGED_BOUNDS_VIOLATION (28)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_TAGGED_ACCESS_VIOLATION (29)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_TAGGED_INVALID_PD (30)
#define RDMA_ASYNC_EVENT_IRQ_PROTECTION_WRAP_ERROR (31)
#define RDMA_ASYNC_EVENT_SQ_COMPLETION_CQ_OVERFLOW (32)
#define RDMA_ASYNC_EVENT_RQ_COMPLETION_CQ_OPERATION_ERROR (33)
#define RDMA_ASYNC_EVENT_SRQ_ERROR_ON_QP (34)
#define RDMA_ASYNC_EVENT_LOCAL_QP_CATASTROPHIC_ERROR (35)
#define RDMA_ASYNC_EVENT_CQ_OVERFLOW (36)
#define RDMA_ASYNC_EVENT_CQ_OPERATION_ERROR (37)
#define RDMA_ASYNC_EVENT_SRQ_LIMIT_REACHED (38)
#define RDMA_ASYNC_EVENT_RQ_LIMIT_REACHED (39)
#define RDMA_ASYNC_EVENT_SRQ_CATASTROPHIC_ERROR (40)
#define RDMA_ASYNC_EVENT_RNIC_CATASTROPHIC_ERROR (41)
#define RDMA_ASYNC_EVENT_COMPLETION (42)
#define RDMA_ASYNC_EVENT_SLOW_PATH_COMPLETION_SUCCEEDED (43)
#define RDMA_ASYNC_EVENT_SLOW_PATH_COMPLETION_FAILED (44)
#define RDMA_ASYNC_EVENT_CONNECTION_LIMIT_REACHED (45)
#define RDMA_ASYNC_EVENT_ADD_NEW_CONNECTION_SUCCEEDED (46)
#define RDMA_ASYNC_EVENT_CONNECT_SUCCEEDED (47)
#define RDMA_ASYNC_EVENT_SEND_MPA_SUCCEEDED (48)
#define RDMA_ASYNC_EVENT_CONNECT_COMPLETE_SUCCEEDED (49)
#define RDMA_ASYNC_EVENT_CONNECT_COMPLETE_FAILED (50)
#define RDMA_ASYNC_EVENT_RECEIVED_MPA_SUCCEEDED (51)
#define RDMA_ASYNC_EVENT_UPDATE_ULP_SUCCEEDED (52)
#define RDMA_ASYNC_EVENT_PCS_REQUEST1 (53)
#define RDMA_ASYNC_EVENT_PCS_REQUEST2 (54)
#define RDMA_ASYNC_EVENT_PCS_REQUEST3 (55)
#define RDMA_ASYNC_EVENT_PCS_REQUEST4 (56)
#define RDMA_ASYNC_EVENT_PCS_RESPONSE1_SUCCEEDED (57)
#define RDMA_ASYNC_EVENT_PCS_RESPONSE2_SUCCEEDED (58)
#define RDMA_ASYNC_EVENT_PCS_RESPONSE3_SUCCEEDED (59)
#define RDMA_ASYNC_EVENT_PCS_RESPONSE4_SUCCEEDED (60)
#define RDMA_ASYNC_EVENT_PCS_RESPONSE_FAILED (61)
#define RDMA_ASYNC_EVENT_INIT_SEED_SUCCEEDED (62)
#define RDMA_ASYNC_EVENT_UPDATE_SEED_SUCCEEDED (63)
#define RDMA_ASYNC_EVENT_CLOSE_PHY_PORT_SUCCEEDED (64)
#define RDMA_ASYNC_EVENT_LOCAL_CATASTROPHIC_ERROR (65)
#define RDMA_COMPLETION_CODE_INVALID_REGION_STAG (66)
#define RDMA_COMPLETION_CODE_INVALID_WINDOW_STAG (67)
#define RDMA_COMPLETION_CODE_BASE_AND_BOUNDS_VIOLATION (68)
#define RDMA_COMPLETION_CODE_RIGHTS_ACCESS_VIOLATION (69)
#define RDMA_COMPLETION_CODE_STAG_NOT_IN_INVALID_STATE (70)
#define RDMA_COMPLETION_MR_NOT_IN_VALID_STATE (71)
#define RDMA_COMPLETION_CODE_INVALID_PD_ID (72)
#define RDMA_COMPLETION_CODE_QP_CATASTROPHIC_ERROR (254)
#define RDMA_COMPLETION_CODE_REMOTE_TERMINATION_ERROR (253)
#define RDMA_COMPLETION_CODE_INVALID_STAG (252)
#define RDMA_COMPLETION_CODE_ACCESS_VIOLATION (251)
#define RDMA_COMPLETION_CODE_INVALID_PD (250)
#define RDMA_COMPLETION_CODE_WRAP_ERROR (249)
#define RDMA_COMPLETION_CODE_INVALIDATE_STAG_PD_OR_ACCESS_RIGHTS_ERROR (248)
#define RDMA_COMPLETION_CODE_ZERO_ORD (247)
#define RDMA_COMPLETION_CODE_QP_NOT_IN_PRIVILEGED_MODE (246)
#define RDMA_COMPLETION_CODE_INVALID_PAGE_SIZE (245)
#define RDMA_COMPLETION_CODE_INVALID_PHYSICAL_BUFFER_SIZE (244)
#define RDMA_COMPLETION_CODE_INVALID_PHYSICAL_BUFFER_LIST_ENTRY (243)
#define RDMA_COMPLETION_CODE_INVALID_FBO (242)
#define RDMA_COMPLETION_CODE_INVALID_FR_LENGTH (241)
#define RDMA_COMPLETION_CODE_INVALID_ACCESS_RIGHTS (240)
#define RDMA_COMPLETION_CODE_PHYSICAL_BUFFER_LIST_TOO_LONG (239)
#define RDMA_COMPLETION_CODE_INVALID_VA (238)
#define RDMA_COMPLETION_CODE_INVALID_LENGTH (237)
#define RDMA_COMPLETION_CODE_TRYING_TO_BIND_AND_QP_DOESNT_SUPPORT_BIND (236)
#define RDMA_COMPLETION_MR_DOESNT_HAVE_BIND_MW_PREEMPTION (235)
#define RDMA_COMPLETION_STAG_KEY_DOESNT_MATCH (234)
#define RDMA_COMPLETION_MR_IS_ZERO_BASED (233)
#define RDMA_COMPLETION_CODE_INVALID_WQE (232)
#define RDMA_ASYNC_EVENT_RQ_EMPTY (85)
#define RDMA_ASYNC_EVENT_INVALID_EVENT (0xFF)
#define RDMA_TERM_CODE_LLP_CLOSE_COMPLETE (0)
#define RDMA_TERM_CODE_TERMINATE_MESSAGE_RECEIVED (0)
#define RDMA_TERM_CODE_LLP_CONNECTION_RESET (0)
#define RDMA_TERM_CODE_LLP_CONNECTION_LOST (0)
#define RDMA_TERM_CODE_LLP_INTEGRITY_INVALID_SEGMENT_SIZE (0x1000)
#define RDMA_TERM_CODE_LLP_INTEGRITY_INVALID_CRC (0x0202)
#define RDMA_TERM_CODE_LLP_INTEGRITY_BAD_FPDU (0x0203)
#define RDMA_TERM_CODE_REMOTE_INVALID_DDP_VERSION (0x1206)
#define RDMA_TERM_CODE_REMOTE_INVALID_RDMA_VERSION (0x0205)
#define RDMA_TERM_CODE_REMOTE_UNEXPECTED_OPCODE (0x0206)
#define RDMA_TERM_CODE_REMOTE_INVALID_DDP_QUEUE_NUMBER (0x1201)
#define RDMA_TERM_CODE_REMOTE_READ_REQUEST_DISABLED (0x1201)
#define RDMA_TERM_CODE_REMOTE_WRITE_OR_READ_RESPONSE_DISABLED (0)
#define RDMA_TERM_CODE_REMOTE_INVALID_READ_REQUEST (0)
#define RDMA_TERM_CODE_REMOTE_NO_L_BIT (0x0207)
#define RDMA_TERM_CODE_PROTECTION_INVALID_STAG (0x1100)
#define RDMA_TERM_CODE_PROTECTION_TAGGED_BOUNDS_VIOLATION (0x1101)
#define RDMA_TERM_CODE_PROTECTION_TAGGED_ACCESS_VIOLATION (0x1102)
#define RDMA_TERM_CODE_PROTECTION_TAGGED_INVALID_PD (0x1102)
#define RDMA_TERM_CODE_PROTECTION_WRAP_ERROR (0x1103)
#define RDMA_TERM_CODE_BAD_CLOSE (0)
#define RDMA_TERM_CODE_BAD_LLP_CLOSE (0x0207)
#define RDMA_TERM_CODE_RQ_PROTECTION_INVALID_MSN_RANGE (0x1202)
#define RDMA_TERM_CODE_RQ_PROTECTION_INVALID_MSN_GAP (0x1202)
#define RDMA_TERM_CODE_IRQ_PROTECTION_TOO_MANY_READ_REQUEST (0x1203)
#define RDMA_TERM_CODE_IRQ_PROTECTION_INVALID_MSN_GAP (0x1203)
#define RDMA_TERM_CODE_IRQ_PROTECTION_INVALID_MSN_RANGE (0x1203)
#define RDMA_TERM_CODE_IRQ_PROTECTION_INVALID_STAG (0x0100)
#define RDMA_TERM_CODE_IRQ_PROTECTION_TAGGED_BOUNDS_VIOLATION (0x0101)
#define RDMA_TERM_CODE_IRQ_PROTECTION_TAGGED_ACCESS_VIOLATION (0x0102)
#define RDMA_TERM_CODE_IRQ_PROTECTION_TAGGED_INVALID_PD (0x0103)
#define RDMA_TERM_CODE_IRQ_PROTECTION_WRAP_ERROR (0x0104)
#define RDMA_TERM_CODE_SQ_COMPLETION_CQ_OVERFLOW (0x0207)
#define RDMA_TERM_CODE_RQ_COMPLETION_CQ_OPERATION_ERROR (0x0207)
#define RDMA_TERM_CODE_SRQ_ERROR_ON_QP (0x0207)
#define RDMA_TERM_CODE_LOCAL_QP_CATASTROPHIC_ERROR (0x0207)
#define RDMA_TERM_CODE_LOCAL_CATASTROPHIC_ERROR (0x0)
#define RDMA_TERM_CODE_CQ_OVERFLOW (0)
#define RDMA_TERM_CODE_CQ_OPERATION_ERROR (0)
#define RDMA_TERM_CODE_SRQ_LIMIT_REACHED (0)
#define RDMA_TERM_CODE_RQ_LIMIT_REACHED (0)
#define RDMA_TERM_CODE_SRQ_CATASTROPHIC_ERROR (0)
#define RDMA_TERM_CODE_RNIC_CATASTROPHIC_ERROR (0x0208)
#define RDMA_TERM_CODE_RQ_WQE_ERROR 0
#define RDMA_TERM_CODE_RQ_INVALIDATE_STAG_INVALID (0x0100)
#define RDMA_TERM_CODE_RQ_INVALIDATE_STAG_ACCESS_RIGHTS (0x0102)
#define RDMA_TERM_CODE_RQ_INVALIDATE_STAG_INVALID_PD_ID (0x0103)
#define RDMA_TERM_CODE_RQ_INVALIDATE_STAG_NOT_BOUND_TO_QP (0x0103)
#define RDMA_TERM_CODE_RQ_INVALIDATE_MR_STAG_HAD_BOUND_MW (0x0103)
#define RDMA_TERM_LAYER_MASK(termErrCode) (((termErrCode) >> 12) & 0xf)
#define RDMA_TERM_ERR_TYPE_MASK(termErrCode) (((termErrCode) >> 8) & 0xf)
#define RDMA_TERM_ERR_CODE_MASK(termErrCode) ((termErrCode) & 0xff)
#endif