1 // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB 2 /* 3 * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved. 4 * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved. 5 */ 6 7 #include <rdma/ib_pack.h> 8 #include "rxe_opcode.h" 9 #include "rxe_hdr.h" 10 11 /* useful information about work request opcodes and pkt opcodes in 12 * table form 13 */ 14 struct rxe_wr_opcode_info rxe_wr_opcode_info[] = { 15 [IB_WR_RDMA_WRITE] = { 16 .name = "IB_WR_RDMA_WRITE", 17 .mask = { 18 [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK, 19 [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_MASK, 20 }, 21 }, 22 [IB_WR_RDMA_WRITE_WITH_IMM] = { 23 .name = "IB_WR_RDMA_WRITE_WITH_IMM", 24 .mask = { 25 [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK, 26 [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_MASK, 27 }, 28 }, 29 [IB_WR_SEND] = { 30 .name = "IB_WR_SEND", 31 .mask = { 32 [IB_QPT_GSI] = WR_INLINE_MASK | WR_SEND_MASK, 33 [IB_QPT_RC] = WR_INLINE_MASK | WR_SEND_MASK, 34 [IB_QPT_UC] = WR_INLINE_MASK | WR_SEND_MASK, 35 [IB_QPT_UD] = WR_INLINE_MASK | WR_SEND_MASK, 36 }, 37 }, 38 [IB_WR_SEND_WITH_IMM] = { 39 .name = "IB_WR_SEND_WITH_IMM", 40 .mask = { 41 [IB_QPT_GSI] = WR_INLINE_MASK | WR_SEND_MASK, 42 [IB_QPT_RC] = WR_INLINE_MASK | WR_SEND_MASK, 43 [IB_QPT_UC] = WR_INLINE_MASK | WR_SEND_MASK, 44 [IB_QPT_UD] = WR_INLINE_MASK | WR_SEND_MASK, 45 }, 46 }, 47 [IB_WR_RDMA_READ] = { 48 .name = "IB_WR_RDMA_READ", 49 .mask = { 50 [IB_QPT_RC] = WR_READ_MASK, 51 }, 52 }, 53 [IB_WR_ATOMIC_CMP_AND_SWP] = { 54 .name = "IB_WR_ATOMIC_CMP_AND_SWP", 55 .mask = { 56 [IB_QPT_RC] = WR_ATOMIC_MASK, 57 }, 58 }, 59 [IB_WR_ATOMIC_FETCH_AND_ADD] = { 60 .name = "IB_WR_ATOMIC_FETCH_AND_ADD", 61 .mask = { 62 [IB_QPT_RC] = WR_ATOMIC_MASK, 63 }, 64 }, 65 [IB_WR_LSO] = { 66 .name = "IB_WR_LSO", 67 .mask = { 68 /* not supported */ 69 }, 70 }, 71 [IB_WR_SEND_WITH_INV] = { 72 .name = "IB_WR_SEND_WITH_INV", 73 .mask = { 74 [IB_QPT_RC] = WR_INLINE_MASK | WR_SEND_MASK, 75 [IB_QPT_UC] = WR_INLINE_MASK | WR_SEND_MASK, 76 [IB_QPT_UD] = WR_INLINE_MASK | WR_SEND_MASK, 77 }, 78 }, 79 [IB_WR_RDMA_READ_WITH_INV] = { 80 .name = "IB_WR_RDMA_READ_WITH_INV", 81 .mask = { 82 [IB_QPT_RC] = WR_READ_MASK, 83 }, 84 }, 85 [IB_WR_LOCAL_INV] = { 86 .name = "IB_WR_LOCAL_INV", 87 .mask = { 88 [IB_QPT_RC] = WR_LOCAL_OP_MASK, 89 }, 90 }, 91 [IB_WR_REG_MR] = { 92 .name = "IB_WR_REG_MR", 93 .mask = { 94 [IB_QPT_RC] = WR_LOCAL_OP_MASK, 95 }, 96 }, 97 [IB_WR_BIND_MW] = { 98 .name = "IB_WR_BIND_MW", 99 .mask = { 100 [IB_QPT_RC] = WR_LOCAL_OP_MASK, 101 [IB_QPT_UC] = WR_LOCAL_OP_MASK, 102 }, 103 }, 104 }; 105 106 struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = { 107 [IB_OPCODE_RC_SEND_FIRST] = { 108 .name = "IB_OPCODE_RC_SEND_FIRST", 109 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK | 110 RXE_SEND_MASK | RXE_START_MASK, 111 .length = RXE_BTH_BYTES, 112 .offset = { 113 [RXE_BTH] = 0, 114 [RXE_PAYLOAD] = RXE_BTH_BYTES, 115 } 116 }, 117 [IB_OPCODE_RC_SEND_MIDDLE] = { 118 .name = "IB_OPCODE_RC_SEND_MIDDLE", 119 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK | 120 RXE_MIDDLE_MASK, 121 .length = RXE_BTH_BYTES, 122 .offset = { 123 [RXE_BTH] = 0, 124 [RXE_PAYLOAD] = RXE_BTH_BYTES, 125 } 126 }, 127 [IB_OPCODE_RC_SEND_LAST] = { 128 .name = "IB_OPCODE_RC_SEND_LAST", 129 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK | 130 RXE_SEND_MASK | RXE_END_MASK, 131 .length = RXE_BTH_BYTES, 132 .offset = { 133 [RXE_BTH] = 0, 134 [RXE_PAYLOAD] = RXE_BTH_BYTES, 135 } 136 }, 137 [IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE] = { 138 .name = "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE", 139 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 140 RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 141 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 142 .offset = { 143 [RXE_BTH] = 0, 144 [RXE_IMMDT] = RXE_BTH_BYTES, 145 [RXE_PAYLOAD] = RXE_BTH_BYTES + 146 RXE_IMMDT_BYTES, 147 } 148 }, 149 [IB_OPCODE_RC_SEND_ONLY] = { 150 .name = "IB_OPCODE_RC_SEND_ONLY", 151 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK | 152 RXE_RWR_MASK | RXE_SEND_MASK | 153 RXE_START_MASK | RXE_END_MASK, 154 .length = RXE_BTH_BYTES, 155 .offset = { 156 [RXE_BTH] = 0, 157 [RXE_PAYLOAD] = RXE_BTH_BYTES, 158 } 159 }, 160 [IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE] = { 161 .name = "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE", 162 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 163 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 164 RXE_START_MASK | RXE_END_MASK, 165 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 166 .offset = { 167 [RXE_BTH] = 0, 168 [RXE_IMMDT] = RXE_BTH_BYTES, 169 [RXE_PAYLOAD] = RXE_BTH_BYTES + 170 RXE_IMMDT_BYTES, 171 } 172 }, 173 [IB_OPCODE_RC_RDMA_WRITE_FIRST] = { 174 .name = "IB_OPCODE_RC_RDMA_WRITE_FIRST", 175 .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 176 RXE_WRITE_MASK | RXE_START_MASK, 177 .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 178 .offset = { 179 [RXE_BTH] = 0, 180 [RXE_RETH] = RXE_BTH_BYTES, 181 [RXE_PAYLOAD] = RXE_BTH_BYTES + 182 RXE_RETH_BYTES, 183 } 184 }, 185 [IB_OPCODE_RC_RDMA_WRITE_MIDDLE] = { 186 .name = "IB_OPCODE_RC_RDMA_WRITE_MIDDLE", 187 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK | 188 RXE_MIDDLE_MASK, 189 .length = RXE_BTH_BYTES, 190 .offset = { 191 [RXE_BTH] = 0, 192 [RXE_PAYLOAD] = RXE_BTH_BYTES, 193 } 194 }, 195 [IB_OPCODE_RC_RDMA_WRITE_LAST] = { 196 .name = "IB_OPCODE_RC_RDMA_WRITE_LAST", 197 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK | 198 RXE_END_MASK, 199 .length = RXE_BTH_BYTES, 200 .offset = { 201 [RXE_BTH] = 0, 202 [RXE_PAYLOAD] = RXE_BTH_BYTES, 203 } 204 }, 205 [IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 206 .name = "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE", 207 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 208 RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 209 RXE_END_MASK, 210 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 211 .offset = { 212 [RXE_BTH] = 0, 213 [RXE_IMMDT] = RXE_BTH_BYTES, 214 [RXE_PAYLOAD] = RXE_BTH_BYTES + 215 RXE_IMMDT_BYTES, 216 } 217 }, 218 [IB_OPCODE_RC_RDMA_WRITE_ONLY] = { 219 .name = "IB_OPCODE_RC_RDMA_WRITE_ONLY", 220 .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 221 RXE_WRITE_MASK | RXE_START_MASK | 222 RXE_END_MASK, 223 .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 224 .offset = { 225 [RXE_BTH] = 0, 226 [RXE_RETH] = RXE_BTH_BYTES, 227 [RXE_PAYLOAD] = RXE_BTH_BYTES + 228 RXE_RETH_BYTES, 229 } 230 }, 231 [IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 232 .name = "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 233 .mask = RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | 234 RXE_REQ_MASK | RXE_WRITE_MASK | 235 RXE_COMP_MASK | RXE_RWR_MASK | 236 RXE_START_MASK | RXE_END_MASK, 237 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES, 238 .offset = { 239 [RXE_BTH] = 0, 240 [RXE_RETH] = RXE_BTH_BYTES, 241 [RXE_IMMDT] = RXE_BTH_BYTES + 242 RXE_RETH_BYTES, 243 [RXE_PAYLOAD] = RXE_BTH_BYTES + 244 RXE_RETH_BYTES + 245 RXE_IMMDT_BYTES, 246 } 247 }, 248 [IB_OPCODE_RC_RDMA_READ_REQUEST] = { 249 .name = "IB_OPCODE_RC_RDMA_READ_REQUEST", 250 .mask = RXE_RETH_MASK | RXE_REQ_MASK | RXE_READ_MASK | 251 RXE_START_MASK | RXE_END_MASK, 252 .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 253 .offset = { 254 [RXE_BTH] = 0, 255 [RXE_RETH] = RXE_BTH_BYTES, 256 [RXE_PAYLOAD] = RXE_BTH_BYTES + 257 RXE_RETH_BYTES, 258 } 259 }, 260 [IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST] = { 261 .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST", 262 .mask = RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK | 263 RXE_START_MASK, 264 .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 265 .offset = { 266 [RXE_BTH] = 0, 267 [RXE_AETH] = RXE_BTH_BYTES, 268 [RXE_PAYLOAD] = RXE_BTH_BYTES + 269 RXE_AETH_BYTES, 270 } 271 }, 272 [IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE] = { 273 .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE", 274 .mask = RXE_PAYLOAD_MASK | RXE_ACK_MASK | RXE_MIDDLE_MASK, 275 .length = RXE_BTH_BYTES, 276 .offset = { 277 [RXE_BTH] = 0, 278 [RXE_PAYLOAD] = RXE_BTH_BYTES, 279 } 280 }, 281 [IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST] = { 282 .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST", 283 .mask = RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK | 284 RXE_END_MASK, 285 .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 286 .offset = { 287 [RXE_BTH] = 0, 288 [RXE_AETH] = RXE_BTH_BYTES, 289 [RXE_PAYLOAD] = RXE_BTH_BYTES + 290 RXE_AETH_BYTES, 291 } 292 }, 293 [IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY] = { 294 .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY", 295 .mask = RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK | 296 RXE_START_MASK | RXE_END_MASK, 297 .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 298 .offset = { 299 [RXE_BTH] = 0, 300 [RXE_AETH] = RXE_BTH_BYTES, 301 [RXE_PAYLOAD] = RXE_BTH_BYTES + 302 RXE_AETH_BYTES, 303 } 304 }, 305 [IB_OPCODE_RC_ACKNOWLEDGE] = { 306 .name = "IB_OPCODE_RC_ACKNOWLEDGE", 307 .mask = RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK | 308 RXE_END_MASK, 309 .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 310 .offset = { 311 [RXE_BTH] = 0, 312 [RXE_AETH] = RXE_BTH_BYTES, 313 [RXE_PAYLOAD] = RXE_BTH_BYTES + 314 RXE_AETH_BYTES, 315 } 316 }, 317 [IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE] = { 318 .name = "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE", 319 .mask = RXE_AETH_MASK | RXE_ATMACK_MASK | RXE_ACK_MASK | 320 RXE_START_MASK | RXE_END_MASK, 321 .length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES, 322 .offset = { 323 [RXE_BTH] = 0, 324 [RXE_AETH] = RXE_BTH_BYTES, 325 [RXE_ATMACK] = RXE_BTH_BYTES + 326 RXE_AETH_BYTES, 327 [RXE_PAYLOAD] = RXE_BTH_BYTES + 328 RXE_ATMACK_BYTES + 329 RXE_AETH_BYTES, 330 } 331 }, 332 [IB_OPCODE_RC_COMPARE_SWAP] = { 333 .name = "IB_OPCODE_RC_COMPARE_SWAP", 334 .mask = RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK | 335 RXE_START_MASK | RXE_END_MASK, 336 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES, 337 .offset = { 338 [RXE_BTH] = 0, 339 [RXE_ATMETH] = RXE_BTH_BYTES, 340 [RXE_PAYLOAD] = RXE_BTH_BYTES + 341 RXE_ATMETH_BYTES, 342 } 343 }, 344 [IB_OPCODE_RC_FETCH_ADD] = { 345 .name = "IB_OPCODE_RC_FETCH_ADD", 346 .mask = RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK | 347 RXE_START_MASK | RXE_END_MASK, 348 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES, 349 .offset = { 350 [RXE_BTH] = 0, 351 [RXE_ATMETH] = RXE_BTH_BYTES, 352 [RXE_PAYLOAD] = RXE_BTH_BYTES + 353 RXE_ATMETH_BYTES, 354 } 355 }, 356 [IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE] = { 357 .name = "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE", 358 .mask = RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 359 RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 360 .length = RXE_BTH_BYTES + RXE_IETH_BYTES, 361 .offset = { 362 [RXE_BTH] = 0, 363 [RXE_IETH] = RXE_BTH_BYTES, 364 [RXE_PAYLOAD] = RXE_BTH_BYTES + 365 RXE_IETH_BYTES, 366 } 367 }, 368 [IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE] = { 369 .name = "IB_OPCODE_RC_SEND_ONLY_INV", 370 .mask = RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 371 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 372 RXE_END_MASK | RXE_START_MASK, 373 .length = RXE_BTH_BYTES + RXE_IETH_BYTES, 374 .offset = { 375 [RXE_BTH] = 0, 376 [RXE_IETH] = RXE_BTH_BYTES, 377 [RXE_PAYLOAD] = RXE_BTH_BYTES + 378 RXE_IETH_BYTES, 379 } 380 }, 381 382 /* UC */ 383 [IB_OPCODE_UC_SEND_FIRST] = { 384 .name = "IB_OPCODE_UC_SEND_FIRST", 385 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK | 386 RXE_SEND_MASK | RXE_START_MASK, 387 .length = RXE_BTH_BYTES, 388 .offset = { 389 [RXE_BTH] = 0, 390 [RXE_PAYLOAD] = RXE_BTH_BYTES, 391 } 392 }, 393 [IB_OPCODE_UC_SEND_MIDDLE] = { 394 .name = "IB_OPCODE_UC_SEND_MIDDLE", 395 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK | 396 RXE_MIDDLE_MASK, 397 .length = RXE_BTH_BYTES, 398 .offset = { 399 [RXE_BTH] = 0, 400 [RXE_PAYLOAD] = RXE_BTH_BYTES, 401 } 402 }, 403 [IB_OPCODE_UC_SEND_LAST] = { 404 .name = "IB_OPCODE_UC_SEND_LAST", 405 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK | 406 RXE_SEND_MASK | RXE_END_MASK, 407 .length = RXE_BTH_BYTES, 408 .offset = { 409 [RXE_BTH] = 0, 410 [RXE_PAYLOAD] = RXE_BTH_BYTES, 411 } 412 }, 413 [IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE] = { 414 .name = "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE", 415 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 416 RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 417 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 418 .offset = { 419 [RXE_BTH] = 0, 420 [RXE_IMMDT] = RXE_BTH_BYTES, 421 [RXE_PAYLOAD] = RXE_BTH_BYTES + 422 RXE_IMMDT_BYTES, 423 } 424 }, 425 [IB_OPCODE_UC_SEND_ONLY] = { 426 .name = "IB_OPCODE_UC_SEND_ONLY", 427 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK | 428 RXE_RWR_MASK | RXE_SEND_MASK | 429 RXE_START_MASK | RXE_END_MASK, 430 .length = RXE_BTH_BYTES, 431 .offset = { 432 [RXE_BTH] = 0, 433 [RXE_PAYLOAD] = RXE_BTH_BYTES, 434 } 435 }, 436 [IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE] = { 437 .name = "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE", 438 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 439 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 440 RXE_START_MASK | RXE_END_MASK, 441 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 442 .offset = { 443 [RXE_BTH] = 0, 444 [RXE_IMMDT] = RXE_BTH_BYTES, 445 [RXE_PAYLOAD] = RXE_BTH_BYTES + 446 RXE_IMMDT_BYTES, 447 } 448 }, 449 [IB_OPCODE_UC_RDMA_WRITE_FIRST] = { 450 .name = "IB_OPCODE_UC_RDMA_WRITE_FIRST", 451 .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 452 RXE_WRITE_MASK | RXE_START_MASK, 453 .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 454 .offset = { 455 [RXE_BTH] = 0, 456 [RXE_RETH] = RXE_BTH_BYTES, 457 [RXE_PAYLOAD] = RXE_BTH_BYTES + 458 RXE_RETH_BYTES, 459 } 460 }, 461 [IB_OPCODE_UC_RDMA_WRITE_MIDDLE] = { 462 .name = "IB_OPCODE_UC_RDMA_WRITE_MIDDLE", 463 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK | 464 RXE_MIDDLE_MASK, 465 .length = RXE_BTH_BYTES, 466 .offset = { 467 [RXE_BTH] = 0, 468 [RXE_PAYLOAD] = RXE_BTH_BYTES, 469 } 470 }, 471 [IB_OPCODE_UC_RDMA_WRITE_LAST] = { 472 .name = "IB_OPCODE_UC_RDMA_WRITE_LAST", 473 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK | 474 RXE_END_MASK, 475 .length = RXE_BTH_BYTES, 476 .offset = { 477 [RXE_BTH] = 0, 478 [RXE_PAYLOAD] = RXE_BTH_BYTES, 479 } 480 }, 481 [IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 482 .name = "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE", 483 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 484 RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 485 RXE_END_MASK, 486 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 487 .offset = { 488 [RXE_BTH] = 0, 489 [RXE_IMMDT] = RXE_BTH_BYTES, 490 [RXE_PAYLOAD] = RXE_BTH_BYTES + 491 RXE_IMMDT_BYTES, 492 } 493 }, 494 [IB_OPCODE_UC_RDMA_WRITE_ONLY] = { 495 .name = "IB_OPCODE_UC_RDMA_WRITE_ONLY", 496 .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 497 RXE_WRITE_MASK | RXE_START_MASK | 498 RXE_END_MASK, 499 .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 500 .offset = { 501 [RXE_BTH] = 0, 502 [RXE_RETH] = RXE_BTH_BYTES, 503 [RXE_PAYLOAD] = RXE_BTH_BYTES + 504 RXE_RETH_BYTES, 505 } 506 }, 507 [IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 508 .name = "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 509 .mask = RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | 510 RXE_REQ_MASK | RXE_WRITE_MASK | 511 RXE_COMP_MASK | RXE_RWR_MASK | 512 RXE_START_MASK | RXE_END_MASK, 513 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES, 514 .offset = { 515 [RXE_BTH] = 0, 516 [RXE_RETH] = RXE_BTH_BYTES, 517 [RXE_IMMDT] = RXE_BTH_BYTES + 518 RXE_RETH_BYTES, 519 [RXE_PAYLOAD] = RXE_BTH_BYTES + 520 RXE_RETH_BYTES + 521 RXE_IMMDT_BYTES, 522 } 523 }, 524 525 /* RD */ 526 [IB_OPCODE_RD_SEND_FIRST] = { 527 .name = "IB_OPCODE_RD_SEND_FIRST", 528 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 529 RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 530 RXE_START_MASK, 531 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 532 .offset = { 533 [RXE_BTH] = 0, 534 [RXE_RDETH] = RXE_BTH_BYTES, 535 [RXE_DETH] = RXE_BTH_BYTES + 536 RXE_RDETH_BYTES, 537 [RXE_PAYLOAD] = RXE_BTH_BYTES + 538 RXE_RDETH_BYTES + 539 RXE_DETH_BYTES, 540 } 541 }, 542 [IB_OPCODE_RD_SEND_MIDDLE] = { 543 .name = "IB_OPCODE_RD_SEND_MIDDLE", 544 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 545 RXE_REQ_MASK | RXE_SEND_MASK | 546 RXE_MIDDLE_MASK, 547 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 548 .offset = { 549 [RXE_BTH] = 0, 550 [RXE_RDETH] = RXE_BTH_BYTES, 551 [RXE_DETH] = RXE_BTH_BYTES + 552 RXE_RDETH_BYTES, 553 [RXE_PAYLOAD] = RXE_BTH_BYTES + 554 RXE_RDETH_BYTES + 555 RXE_DETH_BYTES, 556 } 557 }, 558 [IB_OPCODE_RD_SEND_LAST] = { 559 .name = "IB_OPCODE_RD_SEND_LAST", 560 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 561 RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK | 562 RXE_END_MASK, 563 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 564 .offset = { 565 [RXE_BTH] = 0, 566 [RXE_RDETH] = RXE_BTH_BYTES, 567 [RXE_DETH] = RXE_BTH_BYTES + 568 RXE_RDETH_BYTES, 569 [RXE_PAYLOAD] = RXE_BTH_BYTES + 570 RXE_RDETH_BYTES + 571 RXE_DETH_BYTES, 572 } 573 }, 574 [IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE] = { 575 .name = "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE", 576 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK | 577 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 578 RXE_COMP_MASK | RXE_SEND_MASK | 579 RXE_END_MASK, 580 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES + 581 RXE_RDETH_BYTES, 582 .offset = { 583 [RXE_BTH] = 0, 584 [RXE_RDETH] = RXE_BTH_BYTES, 585 [RXE_DETH] = RXE_BTH_BYTES + 586 RXE_RDETH_BYTES, 587 [RXE_IMMDT] = RXE_BTH_BYTES + 588 RXE_RDETH_BYTES + 589 RXE_DETH_BYTES, 590 [RXE_PAYLOAD] = RXE_BTH_BYTES + 591 RXE_RDETH_BYTES + 592 RXE_DETH_BYTES + 593 RXE_IMMDT_BYTES, 594 } 595 }, 596 [IB_OPCODE_RD_SEND_ONLY] = { 597 .name = "IB_OPCODE_RD_SEND_ONLY", 598 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 599 RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 600 RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK, 601 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 602 .offset = { 603 [RXE_BTH] = 0, 604 [RXE_RDETH] = RXE_BTH_BYTES, 605 [RXE_DETH] = RXE_BTH_BYTES + 606 RXE_RDETH_BYTES, 607 [RXE_PAYLOAD] = RXE_BTH_BYTES + 608 RXE_RDETH_BYTES + 609 RXE_DETH_BYTES, 610 } 611 }, 612 [IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE] = { 613 .name = "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE", 614 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK | 615 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 616 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 617 RXE_START_MASK | RXE_END_MASK, 618 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES + 619 RXE_RDETH_BYTES, 620 .offset = { 621 [RXE_BTH] = 0, 622 [RXE_RDETH] = RXE_BTH_BYTES, 623 [RXE_DETH] = RXE_BTH_BYTES + 624 RXE_RDETH_BYTES, 625 [RXE_IMMDT] = RXE_BTH_BYTES + 626 RXE_RDETH_BYTES + 627 RXE_DETH_BYTES, 628 [RXE_PAYLOAD] = RXE_BTH_BYTES + 629 RXE_RDETH_BYTES + 630 RXE_DETH_BYTES + 631 RXE_IMMDT_BYTES, 632 } 633 }, 634 [IB_OPCODE_RD_RDMA_WRITE_FIRST] = { 635 .name = "IB_OPCODE_RD_RDMA_WRITE_FIRST", 636 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 637 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 638 RXE_WRITE_MASK | RXE_START_MASK, 639 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES + 640 RXE_RDETH_BYTES, 641 .offset = { 642 [RXE_BTH] = 0, 643 [RXE_RDETH] = RXE_BTH_BYTES, 644 [RXE_DETH] = RXE_BTH_BYTES + 645 RXE_RDETH_BYTES, 646 [RXE_RETH] = RXE_BTH_BYTES + 647 RXE_RDETH_BYTES + 648 RXE_DETH_BYTES, 649 [RXE_PAYLOAD] = RXE_BTH_BYTES + 650 RXE_RDETH_BYTES + 651 RXE_DETH_BYTES + 652 RXE_RETH_BYTES, 653 } 654 }, 655 [IB_OPCODE_RD_RDMA_WRITE_MIDDLE] = { 656 .name = "IB_OPCODE_RD_RDMA_WRITE_MIDDLE", 657 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 658 RXE_REQ_MASK | RXE_WRITE_MASK | 659 RXE_MIDDLE_MASK, 660 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 661 .offset = { 662 [RXE_BTH] = 0, 663 [RXE_RDETH] = RXE_BTH_BYTES, 664 [RXE_DETH] = RXE_BTH_BYTES + 665 RXE_RDETH_BYTES, 666 [RXE_PAYLOAD] = RXE_BTH_BYTES + 667 RXE_RDETH_BYTES + 668 RXE_DETH_BYTES, 669 } 670 }, 671 [IB_OPCODE_RD_RDMA_WRITE_LAST] = { 672 .name = "IB_OPCODE_RD_RDMA_WRITE_LAST", 673 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 674 RXE_REQ_MASK | RXE_WRITE_MASK | 675 RXE_END_MASK, 676 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 677 .offset = { 678 [RXE_BTH] = 0, 679 [RXE_RDETH] = RXE_BTH_BYTES, 680 [RXE_DETH] = RXE_BTH_BYTES + 681 RXE_RDETH_BYTES, 682 [RXE_PAYLOAD] = RXE_BTH_BYTES + 683 RXE_RDETH_BYTES + 684 RXE_DETH_BYTES, 685 } 686 }, 687 [IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 688 .name = "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE", 689 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK | 690 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 691 RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 692 RXE_END_MASK, 693 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES + 694 RXE_RDETH_BYTES, 695 .offset = { 696 [RXE_BTH] = 0, 697 [RXE_RDETH] = RXE_BTH_BYTES, 698 [RXE_DETH] = RXE_BTH_BYTES + 699 RXE_RDETH_BYTES, 700 [RXE_IMMDT] = RXE_BTH_BYTES + 701 RXE_RDETH_BYTES + 702 RXE_DETH_BYTES, 703 [RXE_PAYLOAD] = RXE_BTH_BYTES + 704 RXE_RDETH_BYTES + 705 RXE_DETH_BYTES + 706 RXE_IMMDT_BYTES, 707 } 708 }, 709 [IB_OPCODE_RD_RDMA_WRITE_ONLY] = { 710 .name = "IB_OPCODE_RD_RDMA_WRITE_ONLY", 711 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 712 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 713 RXE_WRITE_MASK | RXE_START_MASK | 714 RXE_END_MASK, 715 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES + 716 RXE_RDETH_BYTES, 717 .offset = { 718 [RXE_BTH] = 0, 719 [RXE_RDETH] = RXE_BTH_BYTES, 720 [RXE_DETH] = RXE_BTH_BYTES + 721 RXE_RDETH_BYTES, 722 [RXE_RETH] = RXE_BTH_BYTES + 723 RXE_RDETH_BYTES + 724 RXE_DETH_BYTES, 725 [RXE_PAYLOAD] = RXE_BTH_BYTES + 726 RXE_RDETH_BYTES + 727 RXE_DETH_BYTES + 728 RXE_RETH_BYTES, 729 } 730 }, 731 [IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 732 .name = "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 733 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 734 RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | 735 RXE_REQ_MASK | RXE_WRITE_MASK | 736 RXE_COMP_MASK | RXE_RWR_MASK | 737 RXE_START_MASK | RXE_END_MASK, 738 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES + 739 RXE_DETH_BYTES + RXE_RDETH_BYTES, 740 .offset = { 741 [RXE_BTH] = 0, 742 [RXE_RDETH] = RXE_BTH_BYTES, 743 [RXE_DETH] = RXE_BTH_BYTES + 744 RXE_RDETH_BYTES, 745 [RXE_RETH] = RXE_BTH_BYTES + 746 RXE_RDETH_BYTES + 747 RXE_DETH_BYTES, 748 [RXE_IMMDT] = RXE_BTH_BYTES + 749 RXE_RDETH_BYTES + 750 RXE_DETH_BYTES + 751 RXE_RETH_BYTES, 752 [RXE_PAYLOAD] = RXE_BTH_BYTES + 753 RXE_RDETH_BYTES + 754 RXE_DETH_BYTES + 755 RXE_RETH_BYTES + 756 RXE_IMMDT_BYTES, 757 } 758 }, 759 [IB_OPCODE_RD_RDMA_READ_REQUEST] = { 760 .name = "IB_OPCODE_RD_RDMA_READ_REQUEST", 761 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 762 RXE_REQ_MASK | RXE_READ_MASK | 763 RXE_START_MASK | RXE_END_MASK, 764 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES + 765 RXE_RDETH_BYTES, 766 .offset = { 767 [RXE_BTH] = 0, 768 [RXE_RDETH] = RXE_BTH_BYTES, 769 [RXE_DETH] = RXE_BTH_BYTES + 770 RXE_RDETH_BYTES, 771 [RXE_RETH] = RXE_BTH_BYTES + 772 RXE_RDETH_BYTES + 773 RXE_DETH_BYTES, 774 [RXE_PAYLOAD] = RXE_BTH_BYTES + 775 RXE_RETH_BYTES + 776 RXE_DETH_BYTES + 777 RXE_RDETH_BYTES, 778 } 779 }, 780 [IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST] = { 781 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST", 782 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | 783 RXE_PAYLOAD_MASK | RXE_ACK_MASK | 784 RXE_START_MASK, 785 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 786 .offset = { 787 [RXE_BTH] = 0, 788 [RXE_RDETH] = RXE_BTH_BYTES, 789 [RXE_AETH] = RXE_BTH_BYTES + 790 RXE_RDETH_BYTES, 791 [RXE_PAYLOAD] = RXE_BTH_BYTES + 792 RXE_RDETH_BYTES + 793 RXE_AETH_BYTES, 794 } 795 }, 796 [IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE] = { 797 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE", 798 .mask = RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK | 799 RXE_MIDDLE_MASK, 800 .length = RXE_BTH_BYTES + RXE_RDETH_BYTES, 801 .offset = { 802 [RXE_BTH] = 0, 803 [RXE_RDETH] = RXE_BTH_BYTES, 804 [RXE_PAYLOAD] = RXE_BTH_BYTES + 805 RXE_RDETH_BYTES, 806 } 807 }, 808 [IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST] = { 809 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST", 810 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK | 811 RXE_ACK_MASK | RXE_END_MASK, 812 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 813 .offset = { 814 [RXE_BTH] = 0, 815 [RXE_RDETH] = RXE_BTH_BYTES, 816 [RXE_AETH] = RXE_BTH_BYTES + 817 RXE_RDETH_BYTES, 818 [RXE_PAYLOAD] = RXE_BTH_BYTES + 819 RXE_RDETH_BYTES + 820 RXE_AETH_BYTES, 821 } 822 }, 823 [IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY] = { 824 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY", 825 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK | 826 RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK, 827 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 828 .offset = { 829 [RXE_BTH] = 0, 830 [RXE_RDETH] = RXE_BTH_BYTES, 831 [RXE_AETH] = RXE_BTH_BYTES + 832 RXE_RDETH_BYTES, 833 [RXE_PAYLOAD] = RXE_BTH_BYTES + 834 RXE_RDETH_BYTES + 835 RXE_AETH_BYTES, 836 } 837 }, 838 [IB_OPCODE_RD_ACKNOWLEDGE] = { 839 .name = "IB_OPCODE_RD_ACKNOWLEDGE", 840 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK | 841 RXE_START_MASK | RXE_END_MASK, 842 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 843 .offset = { 844 [RXE_BTH] = 0, 845 [RXE_RDETH] = RXE_BTH_BYTES, 846 [RXE_AETH] = RXE_BTH_BYTES + 847 RXE_RDETH_BYTES, 848 } 849 }, 850 [IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE] = { 851 .name = "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE", 852 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK | 853 RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK, 854 .length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES + 855 RXE_RDETH_BYTES, 856 .offset = { 857 [RXE_BTH] = 0, 858 [RXE_RDETH] = RXE_BTH_BYTES, 859 [RXE_AETH] = RXE_BTH_BYTES + 860 RXE_RDETH_BYTES, 861 [RXE_ATMACK] = RXE_BTH_BYTES + 862 RXE_RDETH_BYTES + 863 RXE_AETH_BYTES, 864 } 865 }, 866 [IB_OPCODE_RD_COMPARE_SWAP] = { 867 .name = "RD_COMPARE_SWAP", 868 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK | 869 RXE_REQ_MASK | RXE_ATOMIC_MASK | 870 RXE_START_MASK | RXE_END_MASK, 871 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES + 872 RXE_RDETH_BYTES, 873 .offset = { 874 [RXE_BTH] = 0, 875 [RXE_RDETH] = RXE_BTH_BYTES, 876 [RXE_DETH] = RXE_BTH_BYTES + 877 RXE_RDETH_BYTES, 878 [RXE_ATMETH] = RXE_BTH_BYTES + 879 RXE_RDETH_BYTES + 880 RXE_DETH_BYTES, 881 [RXE_PAYLOAD] = RXE_BTH_BYTES + 882 RXE_ATMETH_BYTES + 883 RXE_DETH_BYTES + 884 RXE_RDETH_BYTES, 885 } 886 }, 887 [IB_OPCODE_RD_FETCH_ADD] = { 888 .name = "IB_OPCODE_RD_FETCH_ADD", 889 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK | 890 RXE_REQ_MASK | RXE_ATOMIC_MASK | 891 RXE_START_MASK | RXE_END_MASK, 892 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES + 893 RXE_RDETH_BYTES, 894 .offset = { 895 [RXE_BTH] = 0, 896 [RXE_RDETH] = RXE_BTH_BYTES, 897 [RXE_DETH] = RXE_BTH_BYTES + 898 RXE_RDETH_BYTES, 899 [RXE_ATMETH] = RXE_BTH_BYTES + 900 RXE_RDETH_BYTES + 901 RXE_DETH_BYTES, 902 [RXE_PAYLOAD] = RXE_BTH_BYTES + 903 RXE_ATMETH_BYTES + 904 RXE_DETH_BYTES + 905 RXE_RDETH_BYTES, 906 } 907 }, 908 909 /* UD */ 910 [IB_OPCODE_UD_SEND_ONLY] = { 911 .name = "IB_OPCODE_UD_SEND_ONLY", 912 .mask = RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 913 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 914 RXE_START_MASK | RXE_END_MASK, 915 .length = RXE_BTH_BYTES + RXE_DETH_BYTES, 916 .offset = { 917 [RXE_BTH] = 0, 918 [RXE_DETH] = RXE_BTH_BYTES, 919 [RXE_PAYLOAD] = RXE_BTH_BYTES + 920 RXE_DETH_BYTES, 921 } 922 }, 923 [IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE] = { 924 .name = "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE", 925 .mask = RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | 926 RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 927 RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK, 928 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES, 929 .offset = { 930 [RXE_BTH] = 0, 931 [RXE_DETH] = RXE_BTH_BYTES, 932 [RXE_IMMDT] = RXE_BTH_BYTES + 933 RXE_DETH_BYTES, 934 [RXE_PAYLOAD] = RXE_BTH_BYTES + 935 RXE_DETH_BYTES + 936 RXE_IMMDT_BYTES, 937 } 938 }, 939 940 }; 941