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