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