1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2 3 /* Authors: Cheng Xu <chengyou@linux.alibaba.com> */ 4 /* Kai Shen <kaishen@linux.alibaba.com> */ 5 /* Copyright (c) 2020-2022, Alibaba Group. */ 6 7 #ifndef __ERDMA_HW_H__ 8 #define __ERDMA_HW_H__ 9 10 #include <linux/kernel.h> 11 #include <linux/types.h> 12 13 /* PCIe device related definition. */ 14 #define PCI_VENDOR_ID_ALIBABA 0x1ded 15 16 #define ERDMA_PCI_WIDTH 64 17 #define ERDMA_FUNC_BAR 0 18 #define ERDMA_MISX_BAR 2 19 20 #define ERDMA_BAR_MASK (BIT(ERDMA_FUNC_BAR) | BIT(ERDMA_MISX_BAR)) 21 22 /* MSI-X related. */ 23 #define ERDMA_NUM_MSIX_VEC 32U 24 #define ERDMA_MSIX_VECTOR_CMDQ 0 25 26 /* PCIe Bar0 Registers. */ 27 #define ERDMA_REGS_VERSION_REG 0x0 28 #define ERDMA_REGS_DEV_CTRL_REG 0x10 29 #define ERDMA_REGS_DEV_ST_REG 0x14 30 #define ERDMA_REGS_NETDEV_MAC_L_REG 0x18 31 #define ERDMA_REGS_NETDEV_MAC_H_REG 0x1C 32 #define ERDMA_REGS_CMDQ_SQ_ADDR_L_REG 0x20 33 #define ERDMA_REGS_CMDQ_SQ_ADDR_H_REG 0x24 34 #define ERDMA_REGS_CMDQ_CQ_ADDR_L_REG 0x28 35 #define ERDMA_REGS_CMDQ_CQ_ADDR_H_REG 0x2C 36 #define ERDMA_REGS_CMDQ_DEPTH_REG 0x30 37 #define ERDMA_REGS_CMDQ_EQ_DEPTH_REG 0x34 38 #define ERDMA_REGS_CMDQ_EQ_ADDR_L_REG 0x38 39 #define ERDMA_REGS_CMDQ_EQ_ADDR_H_REG 0x3C 40 #define ERDMA_REGS_AEQ_ADDR_L_REG 0x40 41 #define ERDMA_REGS_AEQ_ADDR_H_REG 0x44 42 #define ERDMA_REGS_AEQ_DEPTH_REG 0x48 43 #define ERDMA_REGS_GRP_NUM_REG 0x4c 44 #define ERDMA_REGS_AEQ_DB_REG 0x50 45 #define ERDMA_CMDQ_SQ_DB_HOST_ADDR_REG 0x60 46 #define ERDMA_CMDQ_CQ_DB_HOST_ADDR_REG 0x68 47 #define ERDMA_CMDQ_EQ_DB_HOST_ADDR_REG 0x70 48 #define ERDMA_AEQ_DB_HOST_ADDR_REG 0x78 49 #define ERDMA_REGS_STATS_TSO_IN_PKTS_REG 0x80 50 #define ERDMA_REGS_STATS_TSO_OUT_PKTS_REG 0x88 51 #define ERDMA_REGS_STATS_TSO_OUT_BYTES_REG 0x90 52 #define ERDMA_REGS_STATS_TX_DROP_PKTS_REG 0x98 53 #define ERDMA_REGS_STATS_TX_BPS_METER_DROP_PKTS_REG 0xa0 54 #define ERDMA_REGS_STATS_TX_PPS_METER_DROP_PKTS_REG 0xa8 55 #define ERDMA_REGS_STATS_RX_PKTS_REG 0xc0 56 #define ERDMA_REGS_STATS_RX_BYTES_REG 0xc8 57 #define ERDMA_REGS_STATS_RX_DROP_PKTS_REG 0xd0 58 #define ERDMA_REGS_STATS_RX_BPS_METER_DROP_PKTS_REG 0xd8 59 #define ERDMA_REGS_STATS_RX_PPS_METER_DROP_PKTS_REG 0xe0 60 #define ERDMA_REGS_CEQ_DB_BASE_REG 0x100 61 #define ERDMA_CMDQ_SQDB_REG 0x200 62 #define ERDMA_CMDQ_CQDB_REG 0x300 63 64 /* DEV_CTRL_REG details. */ 65 #define ERDMA_REG_DEV_CTRL_RESET_MASK 0x00000001 66 #define ERDMA_REG_DEV_CTRL_INIT_MASK 0x00000002 67 68 /* DEV_ST_REG details. */ 69 #define ERDMA_REG_DEV_ST_RESET_DONE_MASK 0x00000001U 70 #define ERDMA_REG_DEV_ST_INIT_DONE_MASK 0x00000002U 71 72 /* eRDMA PCIe DBs definition. */ 73 #define ERDMA_BAR_DB_SPACE_BASE 4096 74 75 #define ERDMA_BAR_SQDB_SPACE_OFFSET ERDMA_BAR_DB_SPACE_BASE 76 #define ERDMA_BAR_SQDB_SPACE_SIZE (384 * 1024) 77 78 #define ERDMA_BAR_RQDB_SPACE_OFFSET \ 79 (ERDMA_BAR_SQDB_SPACE_OFFSET + ERDMA_BAR_SQDB_SPACE_SIZE) 80 #define ERDMA_BAR_RQDB_SPACE_SIZE (96 * 1024) 81 82 #define ERDMA_BAR_CQDB_SPACE_OFFSET \ 83 (ERDMA_BAR_RQDB_SPACE_OFFSET + ERDMA_BAR_RQDB_SPACE_SIZE) 84 85 /* Doorbell page resources related. */ 86 /* 87 * Max # of parallelly issued directSQE is 3072 per device, 88 * hardware organizes this into 24 group, per group has 128 credits. 89 */ 90 #define ERDMA_DWQE_MAX_GRP_CNT 24 91 #define ERDMA_DWQE_NUM_PER_GRP 128 92 93 #define ERDMA_DWQE_TYPE0_CNT 64 94 #define ERDMA_DWQE_TYPE1_CNT 496 95 /* type1 DB contains 2 DBs, takes 256Byte. */ 96 #define ERDMA_DWQE_TYPE1_CNT_PER_PAGE 16 97 98 #define ERDMA_SDB_SHARED_PAGE_INDEX 95 99 100 /* Doorbell related. */ 101 #define ERDMA_DB_SIZE 8 102 103 #define ERDMA_CQDB_IDX_MASK GENMASK_ULL(63, 56) 104 #define ERDMA_CQDB_CQN_MASK GENMASK_ULL(55, 32) 105 #define ERDMA_CQDB_ARM_MASK BIT_ULL(31) 106 #define ERDMA_CQDB_SOL_MASK BIT_ULL(30) 107 #define ERDMA_CQDB_CMDSN_MASK GENMASK_ULL(29, 28) 108 #define ERDMA_CQDB_CI_MASK GENMASK_ULL(23, 0) 109 110 #define ERDMA_EQDB_ARM_MASK BIT(31) 111 #define ERDMA_EQDB_CI_MASK GENMASK_ULL(23, 0) 112 113 #define ERDMA_PAGE_SIZE_SUPPORT 0x7FFFF000 114 115 /* WQE related. */ 116 #define EQE_SIZE 16 117 #define EQE_SHIFT 4 118 #define RQE_SIZE 32 119 #define RQE_SHIFT 5 120 #define CQE_SIZE 32 121 #define CQE_SHIFT 5 122 #define SQEBB_SIZE 32 123 #define SQEBB_SHIFT 5 124 #define SQEBB_MASK (~(SQEBB_SIZE - 1)) 125 #define SQEBB_ALIGN(size) ((size + SQEBB_SIZE - 1) & SQEBB_MASK) 126 #define SQEBB_COUNT(size) (SQEBB_ALIGN(size) >> SQEBB_SHIFT) 127 128 #define ERDMA_MAX_SQE_SIZE 128 129 #define ERDMA_MAX_WQEBB_PER_SQE 4 130 131 /* CMDQ related. */ 132 #define ERDMA_CMDQ_MAX_OUTSTANDING 128 133 #define ERDMA_CMDQ_SQE_SIZE 64 134 135 /* cmdq sub module definition. */ 136 enum CMDQ_WQE_SUB_MOD { 137 CMDQ_SUBMOD_RDMA = 0, 138 CMDQ_SUBMOD_COMMON = 1 139 }; 140 141 enum CMDQ_RDMA_OPCODE { 142 CMDQ_OPCODE_QUERY_DEVICE = 0, 143 CMDQ_OPCODE_CREATE_QP = 1, 144 CMDQ_OPCODE_DESTROY_QP = 2, 145 CMDQ_OPCODE_MODIFY_QP = 3, 146 CMDQ_OPCODE_CREATE_CQ = 4, 147 CMDQ_OPCODE_DESTROY_CQ = 5, 148 CMDQ_OPCODE_REG_MR = 8, 149 CMDQ_OPCODE_DEREG_MR = 9 150 }; 151 152 enum CMDQ_COMMON_OPCODE { 153 CMDQ_OPCODE_CREATE_EQ = 0, 154 CMDQ_OPCODE_DESTROY_EQ = 1, 155 CMDQ_OPCODE_QUERY_FW_INFO = 2, 156 }; 157 158 /* cmdq-SQE HDR */ 159 #define ERDMA_CMD_HDR_WQEBB_CNT_MASK GENMASK_ULL(54, 52) 160 #define ERDMA_CMD_HDR_CONTEXT_COOKIE_MASK GENMASK_ULL(47, 32) 161 #define ERDMA_CMD_HDR_SUB_MOD_MASK GENMASK_ULL(25, 24) 162 #define ERDMA_CMD_HDR_OPCODE_MASK GENMASK_ULL(23, 16) 163 #define ERDMA_CMD_HDR_WQEBB_INDEX_MASK GENMASK_ULL(15, 0) 164 165 struct erdma_cmdq_destroy_cq_req { 166 u64 hdr; 167 u32 cqn; 168 }; 169 170 #define ERDMA_EQ_TYPE_AEQ 0 171 #define ERDMA_EQ_TYPE_CEQ 1 172 173 struct erdma_cmdq_create_eq_req { 174 u64 hdr; 175 u64 qbuf_addr; 176 u8 vector_idx; 177 u8 eqn; 178 u8 depth; 179 u8 qtype; 180 u32 db_dma_addr_l; 181 u32 db_dma_addr_h; 182 }; 183 184 struct erdma_cmdq_destroy_eq_req { 185 u64 hdr; 186 u64 rsvd0; 187 u8 vector_idx; 188 u8 eqn; 189 u8 rsvd1; 190 u8 qtype; 191 }; 192 193 /* create_cq cfg0 */ 194 #define ERDMA_CMD_CREATE_CQ_DEPTH_MASK GENMASK(31, 24) 195 #define ERDMA_CMD_CREATE_CQ_PAGESIZE_MASK GENMASK(23, 20) 196 #define ERDMA_CMD_CREATE_CQ_CQN_MASK GENMASK(19, 0) 197 198 /* create_cq cfg1 */ 199 #define ERDMA_CMD_CREATE_CQ_MTT_CNT_MASK GENMASK(31, 16) 200 #define ERDMA_CMD_CREATE_CQ_MTT_TYPE_MASK BIT(15) 201 #define ERDMA_CMD_CREATE_CQ_EQN_MASK GENMASK(9, 0) 202 203 struct erdma_cmdq_create_cq_req { 204 u64 hdr; 205 u32 cfg0; 206 u32 qbuf_addr_l; 207 u32 qbuf_addr_h; 208 u32 cfg1; 209 u64 cq_db_info_addr; 210 u32 first_page_offset; 211 }; 212 213 /* regmr/deregmr cfg0 */ 214 #define ERDMA_CMD_MR_VALID_MASK BIT(31) 215 #define ERDMA_CMD_MR_KEY_MASK GENMASK(27, 20) 216 #define ERDMA_CMD_MR_MPT_IDX_MASK GENMASK(19, 0) 217 218 /* regmr cfg1 */ 219 #define ERDMA_CMD_REGMR_PD_MASK GENMASK(31, 12) 220 #define ERDMA_CMD_REGMR_TYPE_MASK GENMASK(7, 6) 221 #define ERDMA_CMD_REGMR_RIGHT_MASK GENMASK(5, 2) 222 #define ERDMA_CMD_REGMR_ACC_MODE_MASK GENMASK(1, 0) 223 224 /* regmr cfg2 */ 225 #define ERDMA_CMD_REGMR_PAGESIZE_MASK GENMASK(31, 27) 226 #define ERDMA_CMD_REGMR_MTT_TYPE_MASK GENMASK(21, 20) 227 #define ERDMA_CMD_REGMR_MTT_CNT_MASK GENMASK(19, 0) 228 229 struct erdma_cmdq_reg_mr_req { 230 u64 hdr; 231 u32 cfg0; 232 u32 cfg1; 233 u64 start_va; 234 u32 size; 235 u32 cfg2; 236 u64 phy_addr[4]; 237 }; 238 239 struct erdma_cmdq_dereg_mr_req { 240 u64 hdr; 241 u32 cfg; 242 }; 243 244 /* modify qp cfg */ 245 #define ERDMA_CMD_MODIFY_QP_STATE_MASK GENMASK(31, 24) 246 #define ERDMA_CMD_MODIFY_QP_CC_MASK GENMASK(23, 20) 247 #define ERDMA_CMD_MODIFY_QP_QPN_MASK GENMASK(19, 0) 248 249 struct erdma_cmdq_modify_qp_req { 250 u64 hdr; 251 u32 cfg; 252 u32 cookie; 253 __be32 dip; 254 __be32 sip; 255 __be16 sport; 256 __be16 dport; 257 u32 send_nxt; 258 u32 recv_nxt; 259 }; 260 261 /* create qp cfg0 */ 262 #define ERDMA_CMD_CREATE_QP_SQ_DEPTH_MASK GENMASK(31, 20) 263 #define ERDMA_CMD_CREATE_QP_QPN_MASK GENMASK(19, 0) 264 265 /* create qp cfg1 */ 266 #define ERDMA_CMD_CREATE_QP_RQ_DEPTH_MASK GENMASK(31, 20) 267 #define ERDMA_CMD_CREATE_QP_PD_MASK GENMASK(19, 0) 268 269 /* create qp cqn_mtt_cfg */ 270 #define ERDMA_CMD_CREATE_QP_PAGE_SIZE_MASK GENMASK(31, 28) 271 #define ERDMA_CMD_CREATE_QP_CQN_MASK GENMASK(23, 0) 272 273 /* create qp mtt_cfg */ 274 #define ERDMA_CMD_CREATE_QP_PAGE_OFFSET_MASK GENMASK(31, 12) 275 #define ERDMA_CMD_CREATE_QP_MTT_CNT_MASK GENMASK(11, 1) 276 #define ERDMA_CMD_CREATE_QP_MTT_TYPE_MASK BIT(0) 277 278 #define ERDMA_CMDQ_CREATE_QP_RESP_COOKIE_MASK GENMASK_ULL(31, 0) 279 280 struct erdma_cmdq_create_qp_req { 281 u64 hdr; 282 u32 cfg0; 283 u32 cfg1; 284 u32 sq_cqn_mtt_cfg; 285 u32 rq_cqn_mtt_cfg; 286 u64 sq_buf_addr; 287 u64 rq_buf_addr; 288 u32 sq_mtt_cfg; 289 u32 rq_mtt_cfg; 290 u64 sq_db_info_dma_addr; 291 u64 rq_db_info_dma_addr; 292 }; 293 294 struct erdma_cmdq_destroy_qp_req { 295 u64 hdr; 296 u32 qpn; 297 }; 298 299 /* cap qword 0 definition */ 300 #define ERDMA_CMD_DEV_CAP_MAX_CQE_MASK GENMASK_ULL(47, 40) 301 #define ERDMA_CMD_DEV_CAP_MAX_RECV_WR_MASK GENMASK_ULL(23, 16) 302 #define ERDMA_CMD_DEV_CAP_MAX_MR_SIZE_MASK GENMASK_ULL(7, 0) 303 304 /* cap qword 1 definition */ 305 #define ERDMA_CMD_DEV_CAP_DMA_LOCAL_KEY_MASK GENMASK_ULL(63, 32) 306 #define ERDMA_CMD_DEV_CAP_DEFAULT_CC_MASK GENMASK_ULL(31, 28) 307 #define ERDMA_CMD_DEV_CAP_QBLOCK_MASK GENMASK_ULL(27, 16) 308 #define ERDMA_CMD_DEV_CAP_MAX_MW_MASK GENMASK_ULL(7, 0) 309 310 #define ERDMA_NQP_PER_QBLOCK 1024 311 312 #define ERDMA_CMD_INFO0_FW_VER_MASK GENMASK_ULL(31, 0) 313 314 /* CQE hdr */ 315 #define ERDMA_CQE_HDR_OWNER_MASK BIT(31) 316 #define ERDMA_CQE_HDR_OPCODE_MASK GENMASK(23, 16) 317 #define ERDMA_CQE_HDR_QTYPE_MASK GENMASK(15, 8) 318 #define ERDMA_CQE_HDR_SYNDROME_MASK GENMASK(7, 0) 319 320 #define ERDMA_CQE_QTYPE_SQ 0 321 #define ERDMA_CQE_QTYPE_RQ 1 322 #define ERDMA_CQE_QTYPE_CMDQ 2 323 324 struct erdma_cqe { 325 __be32 hdr; 326 __be32 qe_idx; 327 __be32 qpn; 328 union { 329 __le32 imm_data; 330 __be32 inv_rkey; 331 }; 332 __be32 size; 333 __be32 rsvd[3]; 334 }; 335 336 struct erdma_sge { 337 __aligned_le64 laddr; 338 __le32 length; 339 __le32 lkey; 340 }; 341 342 /* Receive Queue Element */ 343 struct erdma_rqe { 344 __le16 qe_idx; 345 __le16 rsvd0; 346 __le32 qpn; 347 __le32 rsvd1; 348 __le32 rsvd2; 349 __le64 to; 350 __le32 length; 351 __le32 stag; 352 }; 353 354 /* SQE */ 355 #define ERDMA_SQE_HDR_SGL_LEN_MASK GENMASK_ULL(63, 56) 356 #define ERDMA_SQE_HDR_WQEBB_CNT_MASK GENMASK_ULL(54, 52) 357 #define ERDMA_SQE_HDR_QPN_MASK GENMASK_ULL(51, 32) 358 #define ERDMA_SQE_HDR_OPCODE_MASK GENMASK_ULL(31, 27) 359 #define ERDMA_SQE_HDR_DWQE_MASK BIT_ULL(26) 360 #define ERDMA_SQE_HDR_INLINE_MASK BIT_ULL(25) 361 #define ERDMA_SQE_HDR_FENCE_MASK BIT_ULL(24) 362 #define ERDMA_SQE_HDR_SE_MASK BIT_ULL(23) 363 #define ERDMA_SQE_HDR_CE_MASK BIT_ULL(22) 364 #define ERDMA_SQE_HDR_WQEBB_INDEX_MASK GENMASK_ULL(15, 0) 365 366 /* REG MR attrs */ 367 #define ERDMA_SQE_MR_MODE_MASK GENMASK(1, 0) 368 #define ERDMA_SQE_MR_ACCESS_MASK GENMASK(5, 2) 369 #define ERDMA_SQE_MR_MTT_TYPE_MASK GENMASK(7, 6) 370 #define ERDMA_SQE_MR_MTT_CNT_MASK GENMASK(31, 12) 371 372 struct erdma_write_sqe { 373 __le64 hdr; 374 __be32 imm_data; 375 __le32 length; 376 377 __le32 sink_stag; 378 __le32 sink_to_l; 379 __le32 sink_to_h; 380 381 __le32 rsvd; 382 383 struct erdma_sge sgl[0]; 384 }; 385 386 struct erdma_send_sqe { 387 __le64 hdr; 388 union { 389 __be32 imm_data; 390 __le32 invalid_stag; 391 }; 392 393 __le32 length; 394 struct erdma_sge sgl[0]; 395 }; 396 397 struct erdma_readreq_sqe { 398 __le64 hdr; 399 __le32 invalid_stag; 400 __le32 length; 401 __le32 sink_stag; 402 __le32 sink_to_l; 403 __le32 sink_to_h; 404 __le32 rsvd; 405 }; 406 407 struct erdma_reg_mr_sqe { 408 __le64 hdr; 409 __le64 addr; 410 __le32 length; 411 __le32 stag; 412 __le32 attrs; 413 __le32 rsvd; 414 }; 415 416 /* EQ related. */ 417 #define ERDMA_DEFAULT_EQ_DEPTH 256 418 419 /* ceqe */ 420 #define ERDMA_CEQE_HDR_DB_MASK BIT_ULL(63) 421 #define ERDMA_CEQE_HDR_PI_MASK GENMASK_ULL(55, 32) 422 #define ERDMA_CEQE_HDR_O_MASK BIT_ULL(31) 423 #define ERDMA_CEQE_HDR_CQN_MASK GENMASK_ULL(19, 0) 424 425 /* aeqe */ 426 #define ERDMA_AEQE_HDR_O_MASK BIT(31) 427 #define ERDMA_AEQE_HDR_TYPE_MASK GENMASK(23, 16) 428 #define ERDMA_AEQE_HDR_SUBTYPE_MASK GENMASK(7, 0) 429 430 #define ERDMA_AE_TYPE_QP_FATAL_EVENT 0 431 #define ERDMA_AE_TYPE_QP_ERQ_ERR_EVENT 1 432 #define ERDMA_AE_TYPE_ACC_ERR_EVENT 2 433 #define ERDMA_AE_TYPE_CQ_ERR 3 434 #define ERDMA_AE_TYPE_OTHER_ERROR 4 435 436 struct erdma_aeqe { 437 __le32 hdr; 438 __le32 event_data0; 439 __le32 event_data1; 440 __le32 rsvd; 441 }; 442 443 enum erdma_opcode { 444 ERDMA_OP_WRITE = 0, 445 ERDMA_OP_READ = 1, 446 ERDMA_OP_SEND = 2, 447 ERDMA_OP_SEND_WITH_IMM = 3, 448 449 ERDMA_OP_RECEIVE = 4, 450 ERDMA_OP_RECV_IMM = 5, 451 ERDMA_OP_RECV_INV = 6, 452 453 ERDMA_OP_REQ_ERR = 7, 454 ERDMA_OP_READ_RESPONSE = 8, 455 ERDMA_OP_WRITE_WITH_IMM = 9, 456 457 ERDMA_OP_RECV_ERR = 10, 458 459 ERDMA_OP_INVALIDATE = 11, 460 ERDMA_OP_RSP_SEND_IMM = 12, 461 ERDMA_OP_SEND_WITH_INV = 13, 462 463 ERDMA_OP_REG_MR = 14, 464 ERDMA_OP_LOCAL_INV = 15, 465 ERDMA_OP_READ_WITH_INV = 16, 466 ERDMA_NUM_OPCODES = 17, 467 ERDMA_OP_INVALID = ERDMA_NUM_OPCODES + 1 468 }; 469 470 enum erdma_wc_status { 471 ERDMA_WC_SUCCESS = 0, 472 ERDMA_WC_GENERAL_ERR = 1, 473 ERDMA_WC_RECV_WQE_FORMAT_ERR = 2, 474 ERDMA_WC_RECV_STAG_INVALID_ERR = 3, 475 ERDMA_WC_RECV_ADDR_VIOLATION_ERR = 4, 476 ERDMA_WC_RECV_RIGHT_VIOLATION_ERR = 5, 477 ERDMA_WC_RECV_PDID_ERR = 6, 478 ERDMA_WC_RECV_WARRPING_ERR = 7, 479 ERDMA_WC_SEND_WQE_FORMAT_ERR = 8, 480 ERDMA_WC_SEND_WQE_ORD_EXCEED = 9, 481 ERDMA_WC_SEND_STAG_INVALID_ERR = 10, 482 ERDMA_WC_SEND_ADDR_VIOLATION_ERR = 11, 483 ERDMA_WC_SEND_RIGHT_VIOLATION_ERR = 12, 484 ERDMA_WC_SEND_PDID_ERR = 13, 485 ERDMA_WC_SEND_WARRPING_ERR = 14, 486 ERDMA_WC_FLUSH_ERR = 15, 487 ERDMA_WC_RETRY_EXC_ERR = 16, 488 ERDMA_NUM_WC_STATUS 489 }; 490 491 enum erdma_vendor_err { 492 ERDMA_WC_VENDOR_NO_ERR = 0, 493 ERDMA_WC_VENDOR_INVALID_RQE = 1, 494 ERDMA_WC_VENDOR_RQE_INVALID_STAG = 2, 495 ERDMA_WC_VENDOR_RQE_ADDR_VIOLATION = 3, 496 ERDMA_WC_VENDOR_RQE_ACCESS_RIGHT_ERR = 4, 497 ERDMA_WC_VENDOR_RQE_INVALID_PD = 5, 498 ERDMA_WC_VENDOR_RQE_WRAP_ERR = 6, 499 ERDMA_WC_VENDOR_INVALID_SQE = 0x20, 500 ERDMA_WC_VENDOR_ZERO_ORD = 0x21, 501 ERDMA_WC_VENDOR_SQE_INVALID_STAG = 0x30, 502 ERDMA_WC_VENDOR_SQE_ADDR_VIOLATION = 0x31, 503 ERDMA_WC_VENDOR_SQE_ACCESS_ERR = 0x32, 504 ERDMA_WC_VENDOR_SQE_INVALID_PD = 0x33, 505 ERDMA_WC_VENDOR_SQE_WARP_ERR = 0x34 506 }; 507 508 #endif 509