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 + 331 RXE_AETH_BYTES, 332 } 333 }, 334 [IB_OPCODE_RC_COMPARE_SWAP] = { 335 .name = "IB_OPCODE_RC_COMPARE_SWAP", 336 .mask = RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK | 337 RXE_START_MASK | RXE_END_MASK, 338 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES, 339 .offset = { 340 [RXE_BTH] = 0, 341 [RXE_ATMETH] = RXE_BTH_BYTES, 342 [RXE_PAYLOAD] = RXE_BTH_BYTES + 343 RXE_ATMETH_BYTES, 344 } 345 }, 346 [IB_OPCODE_RC_FETCH_ADD] = { 347 .name = "IB_OPCODE_RC_FETCH_ADD", 348 .mask = RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK | 349 RXE_START_MASK | RXE_END_MASK, 350 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES, 351 .offset = { 352 [RXE_BTH] = 0, 353 [RXE_ATMETH] = RXE_BTH_BYTES, 354 [RXE_PAYLOAD] = RXE_BTH_BYTES + 355 RXE_ATMETH_BYTES, 356 } 357 }, 358 [IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE] = { 359 .name = "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE", 360 .mask = RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 361 RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 362 .length = RXE_BTH_BYTES + RXE_IETH_BYTES, 363 .offset = { 364 [RXE_BTH] = 0, 365 [RXE_IETH] = RXE_BTH_BYTES, 366 [RXE_PAYLOAD] = RXE_BTH_BYTES + 367 RXE_IETH_BYTES, 368 } 369 }, 370 [IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE] = { 371 .name = "IB_OPCODE_RC_SEND_ONLY_INV", 372 .mask = RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 373 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 374 RXE_END_MASK | RXE_START_MASK, 375 .length = RXE_BTH_BYTES + RXE_IETH_BYTES, 376 .offset = { 377 [RXE_BTH] = 0, 378 [RXE_IETH] = RXE_BTH_BYTES, 379 [RXE_PAYLOAD] = RXE_BTH_BYTES + 380 RXE_IETH_BYTES, 381 } 382 }, 383 384 /* UC */ 385 [IB_OPCODE_UC_SEND_FIRST] = { 386 .name = "IB_OPCODE_UC_SEND_FIRST", 387 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK | 388 RXE_SEND_MASK | RXE_START_MASK, 389 .length = RXE_BTH_BYTES, 390 .offset = { 391 [RXE_BTH] = 0, 392 [RXE_PAYLOAD] = RXE_BTH_BYTES, 393 } 394 }, 395 [IB_OPCODE_UC_SEND_MIDDLE] = { 396 .name = "IB_OPCODE_UC_SEND_MIDDLE", 397 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK | 398 RXE_MIDDLE_MASK, 399 .length = RXE_BTH_BYTES, 400 .offset = { 401 [RXE_BTH] = 0, 402 [RXE_PAYLOAD] = RXE_BTH_BYTES, 403 } 404 }, 405 [IB_OPCODE_UC_SEND_LAST] = { 406 .name = "IB_OPCODE_UC_SEND_LAST", 407 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK | 408 RXE_SEND_MASK | RXE_END_MASK, 409 .length = RXE_BTH_BYTES, 410 .offset = { 411 [RXE_BTH] = 0, 412 [RXE_PAYLOAD] = RXE_BTH_BYTES, 413 } 414 }, 415 [IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE] = { 416 .name = "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE", 417 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 418 RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 419 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 420 .offset = { 421 [RXE_BTH] = 0, 422 [RXE_IMMDT] = RXE_BTH_BYTES, 423 [RXE_PAYLOAD] = RXE_BTH_BYTES + 424 RXE_IMMDT_BYTES, 425 } 426 }, 427 [IB_OPCODE_UC_SEND_ONLY] = { 428 .name = "IB_OPCODE_UC_SEND_ONLY", 429 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK | 430 RXE_RWR_MASK | RXE_SEND_MASK | 431 RXE_START_MASK | RXE_END_MASK, 432 .length = RXE_BTH_BYTES, 433 .offset = { 434 [RXE_BTH] = 0, 435 [RXE_PAYLOAD] = RXE_BTH_BYTES, 436 } 437 }, 438 [IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE] = { 439 .name = "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE", 440 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 441 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 442 RXE_START_MASK | RXE_END_MASK, 443 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 444 .offset = { 445 [RXE_BTH] = 0, 446 [RXE_IMMDT] = RXE_BTH_BYTES, 447 [RXE_PAYLOAD] = RXE_BTH_BYTES + 448 RXE_IMMDT_BYTES, 449 } 450 }, 451 [IB_OPCODE_UC_RDMA_WRITE_FIRST] = { 452 .name = "IB_OPCODE_UC_RDMA_WRITE_FIRST", 453 .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 454 RXE_WRITE_MASK | RXE_START_MASK, 455 .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 456 .offset = { 457 [RXE_BTH] = 0, 458 [RXE_RETH] = RXE_BTH_BYTES, 459 [RXE_PAYLOAD] = RXE_BTH_BYTES + 460 RXE_RETH_BYTES, 461 } 462 }, 463 [IB_OPCODE_UC_RDMA_WRITE_MIDDLE] = { 464 .name = "IB_OPCODE_UC_RDMA_WRITE_MIDDLE", 465 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK | 466 RXE_MIDDLE_MASK, 467 .length = RXE_BTH_BYTES, 468 .offset = { 469 [RXE_BTH] = 0, 470 [RXE_PAYLOAD] = RXE_BTH_BYTES, 471 } 472 }, 473 [IB_OPCODE_UC_RDMA_WRITE_LAST] = { 474 .name = "IB_OPCODE_UC_RDMA_WRITE_LAST", 475 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK | 476 RXE_END_MASK, 477 .length = RXE_BTH_BYTES, 478 .offset = { 479 [RXE_BTH] = 0, 480 [RXE_PAYLOAD] = RXE_BTH_BYTES, 481 } 482 }, 483 [IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 484 .name = "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE", 485 .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 486 RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 487 RXE_END_MASK, 488 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 489 .offset = { 490 [RXE_BTH] = 0, 491 [RXE_IMMDT] = RXE_BTH_BYTES, 492 [RXE_PAYLOAD] = RXE_BTH_BYTES + 493 RXE_IMMDT_BYTES, 494 } 495 }, 496 [IB_OPCODE_UC_RDMA_WRITE_ONLY] = { 497 .name = "IB_OPCODE_UC_RDMA_WRITE_ONLY", 498 .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 499 RXE_WRITE_MASK | RXE_START_MASK | 500 RXE_END_MASK, 501 .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 502 .offset = { 503 [RXE_BTH] = 0, 504 [RXE_RETH] = RXE_BTH_BYTES, 505 [RXE_PAYLOAD] = RXE_BTH_BYTES + 506 RXE_RETH_BYTES, 507 } 508 }, 509 [IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 510 .name = "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 511 .mask = RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | 512 RXE_REQ_MASK | RXE_WRITE_MASK | 513 RXE_COMP_MASK | RXE_RWR_MASK | 514 RXE_START_MASK | RXE_END_MASK, 515 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES, 516 .offset = { 517 [RXE_BTH] = 0, 518 [RXE_RETH] = RXE_BTH_BYTES, 519 [RXE_IMMDT] = RXE_BTH_BYTES + 520 RXE_RETH_BYTES, 521 [RXE_PAYLOAD] = RXE_BTH_BYTES + 522 RXE_RETH_BYTES + 523 RXE_IMMDT_BYTES, 524 } 525 }, 526 527 /* RD */ 528 [IB_OPCODE_RD_SEND_FIRST] = { 529 .name = "IB_OPCODE_RD_SEND_FIRST", 530 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 531 RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 532 RXE_START_MASK, 533 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 534 .offset = { 535 [RXE_BTH] = 0, 536 [RXE_RDETH] = RXE_BTH_BYTES, 537 [RXE_DETH] = RXE_BTH_BYTES + 538 RXE_RDETH_BYTES, 539 [RXE_PAYLOAD] = RXE_BTH_BYTES + 540 RXE_RDETH_BYTES + 541 RXE_DETH_BYTES, 542 } 543 }, 544 [IB_OPCODE_RD_SEND_MIDDLE] = { 545 .name = "IB_OPCODE_RD_SEND_MIDDLE", 546 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 547 RXE_REQ_MASK | RXE_SEND_MASK | 548 RXE_MIDDLE_MASK, 549 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 550 .offset = { 551 [RXE_BTH] = 0, 552 [RXE_RDETH] = RXE_BTH_BYTES, 553 [RXE_DETH] = RXE_BTH_BYTES + 554 RXE_RDETH_BYTES, 555 [RXE_PAYLOAD] = RXE_BTH_BYTES + 556 RXE_RDETH_BYTES + 557 RXE_DETH_BYTES, 558 } 559 }, 560 [IB_OPCODE_RD_SEND_LAST] = { 561 .name = "IB_OPCODE_RD_SEND_LAST", 562 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 563 RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK | 564 RXE_END_MASK, 565 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 566 .offset = { 567 [RXE_BTH] = 0, 568 [RXE_RDETH] = RXE_BTH_BYTES, 569 [RXE_DETH] = RXE_BTH_BYTES + 570 RXE_RDETH_BYTES, 571 [RXE_PAYLOAD] = RXE_BTH_BYTES + 572 RXE_RDETH_BYTES + 573 RXE_DETH_BYTES, 574 } 575 }, 576 [IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE] = { 577 .name = "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE", 578 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK | 579 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 580 RXE_COMP_MASK | RXE_SEND_MASK | 581 RXE_END_MASK, 582 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES + 583 RXE_RDETH_BYTES, 584 .offset = { 585 [RXE_BTH] = 0, 586 [RXE_RDETH] = RXE_BTH_BYTES, 587 [RXE_DETH] = RXE_BTH_BYTES + 588 RXE_RDETH_BYTES, 589 [RXE_IMMDT] = RXE_BTH_BYTES + 590 RXE_RDETH_BYTES + 591 RXE_DETH_BYTES, 592 [RXE_PAYLOAD] = RXE_BTH_BYTES + 593 RXE_RDETH_BYTES + 594 RXE_DETH_BYTES + 595 RXE_IMMDT_BYTES, 596 } 597 }, 598 [IB_OPCODE_RD_SEND_ONLY] = { 599 .name = "IB_OPCODE_RD_SEND_ONLY", 600 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 601 RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 602 RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK, 603 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 604 .offset = { 605 [RXE_BTH] = 0, 606 [RXE_RDETH] = RXE_BTH_BYTES, 607 [RXE_DETH] = RXE_BTH_BYTES + 608 RXE_RDETH_BYTES, 609 [RXE_PAYLOAD] = RXE_BTH_BYTES + 610 RXE_RDETH_BYTES + 611 RXE_DETH_BYTES, 612 } 613 }, 614 [IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE] = { 615 .name = "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE", 616 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK | 617 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 618 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 619 RXE_START_MASK | RXE_END_MASK, 620 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES + 621 RXE_RDETH_BYTES, 622 .offset = { 623 [RXE_BTH] = 0, 624 [RXE_RDETH] = RXE_BTH_BYTES, 625 [RXE_DETH] = RXE_BTH_BYTES + 626 RXE_RDETH_BYTES, 627 [RXE_IMMDT] = RXE_BTH_BYTES + 628 RXE_RDETH_BYTES + 629 RXE_DETH_BYTES, 630 [RXE_PAYLOAD] = RXE_BTH_BYTES + 631 RXE_RDETH_BYTES + 632 RXE_DETH_BYTES + 633 RXE_IMMDT_BYTES, 634 } 635 }, 636 [IB_OPCODE_RD_RDMA_WRITE_FIRST] = { 637 .name = "IB_OPCODE_RD_RDMA_WRITE_FIRST", 638 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 639 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 640 RXE_WRITE_MASK | RXE_START_MASK, 641 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES + 642 RXE_RDETH_BYTES, 643 .offset = { 644 [RXE_BTH] = 0, 645 [RXE_RDETH] = RXE_BTH_BYTES, 646 [RXE_DETH] = RXE_BTH_BYTES + 647 RXE_RDETH_BYTES, 648 [RXE_RETH] = RXE_BTH_BYTES + 649 RXE_RDETH_BYTES + 650 RXE_DETH_BYTES, 651 [RXE_PAYLOAD] = RXE_BTH_BYTES + 652 RXE_RDETH_BYTES + 653 RXE_DETH_BYTES + 654 RXE_RETH_BYTES, 655 } 656 }, 657 [IB_OPCODE_RD_RDMA_WRITE_MIDDLE] = { 658 .name = "IB_OPCODE_RD_RDMA_WRITE_MIDDLE", 659 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 660 RXE_REQ_MASK | RXE_WRITE_MASK | 661 RXE_MIDDLE_MASK, 662 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 663 .offset = { 664 [RXE_BTH] = 0, 665 [RXE_RDETH] = RXE_BTH_BYTES, 666 [RXE_DETH] = RXE_BTH_BYTES + 667 RXE_RDETH_BYTES, 668 [RXE_PAYLOAD] = RXE_BTH_BYTES + 669 RXE_RDETH_BYTES + 670 RXE_DETH_BYTES, 671 } 672 }, 673 [IB_OPCODE_RD_RDMA_WRITE_LAST] = { 674 .name = "IB_OPCODE_RD_RDMA_WRITE_LAST", 675 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK | 676 RXE_REQ_MASK | RXE_WRITE_MASK | 677 RXE_END_MASK, 678 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 679 .offset = { 680 [RXE_BTH] = 0, 681 [RXE_RDETH] = RXE_BTH_BYTES, 682 [RXE_DETH] = RXE_BTH_BYTES + 683 RXE_RDETH_BYTES, 684 [RXE_PAYLOAD] = RXE_BTH_BYTES + 685 RXE_RDETH_BYTES + 686 RXE_DETH_BYTES, 687 } 688 }, 689 [IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 690 .name = "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE", 691 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK | 692 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 693 RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 694 RXE_END_MASK, 695 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES + 696 RXE_RDETH_BYTES, 697 .offset = { 698 [RXE_BTH] = 0, 699 [RXE_RDETH] = RXE_BTH_BYTES, 700 [RXE_DETH] = RXE_BTH_BYTES + 701 RXE_RDETH_BYTES, 702 [RXE_IMMDT] = RXE_BTH_BYTES + 703 RXE_RDETH_BYTES + 704 RXE_DETH_BYTES, 705 [RXE_PAYLOAD] = RXE_BTH_BYTES + 706 RXE_RDETH_BYTES + 707 RXE_DETH_BYTES + 708 RXE_IMMDT_BYTES, 709 } 710 }, 711 [IB_OPCODE_RD_RDMA_WRITE_ONLY] = { 712 .name = "IB_OPCODE_RD_RDMA_WRITE_ONLY", 713 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 714 RXE_PAYLOAD_MASK | RXE_REQ_MASK | 715 RXE_WRITE_MASK | RXE_START_MASK | 716 RXE_END_MASK, 717 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES + 718 RXE_RDETH_BYTES, 719 .offset = { 720 [RXE_BTH] = 0, 721 [RXE_RDETH] = RXE_BTH_BYTES, 722 [RXE_DETH] = RXE_BTH_BYTES + 723 RXE_RDETH_BYTES, 724 [RXE_RETH] = RXE_BTH_BYTES + 725 RXE_RDETH_BYTES + 726 RXE_DETH_BYTES, 727 [RXE_PAYLOAD] = RXE_BTH_BYTES + 728 RXE_RDETH_BYTES + 729 RXE_DETH_BYTES + 730 RXE_RETH_BYTES, 731 } 732 }, 733 [IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 734 .name = "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 735 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 736 RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | 737 RXE_REQ_MASK | RXE_WRITE_MASK | 738 RXE_COMP_MASK | RXE_RWR_MASK | 739 RXE_START_MASK | RXE_END_MASK, 740 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES + 741 RXE_DETH_BYTES + RXE_RDETH_BYTES, 742 .offset = { 743 [RXE_BTH] = 0, 744 [RXE_RDETH] = RXE_BTH_BYTES, 745 [RXE_DETH] = RXE_BTH_BYTES + 746 RXE_RDETH_BYTES, 747 [RXE_RETH] = RXE_BTH_BYTES + 748 RXE_RDETH_BYTES + 749 RXE_DETH_BYTES, 750 [RXE_IMMDT] = RXE_BTH_BYTES + 751 RXE_RDETH_BYTES + 752 RXE_DETH_BYTES + 753 RXE_RETH_BYTES, 754 [RXE_PAYLOAD] = RXE_BTH_BYTES + 755 RXE_RDETH_BYTES + 756 RXE_DETH_BYTES + 757 RXE_RETH_BYTES + 758 RXE_IMMDT_BYTES, 759 } 760 }, 761 [IB_OPCODE_RD_RDMA_READ_REQUEST] = { 762 .name = "IB_OPCODE_RD_RDMA_READ_REQUEST", 763 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK | 764 RXE_REQ_MASK | RXE_READ_MASK | 765 RXE_START_MASK | RXE_END_MASK, 766 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES + 767 RXE_RDETH_BYTES, 768 .offset = { 769 [RXE_BTH] = 0, 770 [RXE_RDETH] = RXE_BTH_BYTES, 771 [RXE_DETH] = RXE_BTH_BYTES + 772 RXE_RDETH_BYTES, 773 [RXE_RETH] = RXE_BTH_BYTES + 774 RXE_RDETH_BYTES + 775 RXE_DETH_BYTES, 776 [RXE_PAYLOAD] = RXE_BTH_BYTES + 777 RXE_RETH_BYTES + 778 RXE_DETH_BYTES + 779 RXE_RDETH_BYTES, 780 } 781 }, 782 [IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST] = { 783 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST", 784 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | 785 RXE_PAYLOAD_MASK | RXE_ACK_MASK | 786 RXE_START_MASK, 787 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 788 .offset = { 789 [RXE_BTH] = 0, 790 [RXE_RDETH] = RXE_BTH_BYTES, 791 [RXE_AETH] = RXE_BTH_BYTES + 792 RXE_RDETH_BYTES, 793 [RXE_PAYLOAD] = RXE_BTH_BYTES + 794 RXE_RDETH_BYTES + 795 RXE_AETH_BYTES, 796 } 797 }, 798 [IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE] = { 799 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE", 800 .mask = RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK | 801 RXE_MIDDLE_MASK, 802 .length = RXE_BTH_BYTES + RXE_RDETH_BYTES, 803 .offset = { 804 [RXE_BTH] = 0, 805 [RXE_RDETH] = RXE_BTH_BYTES, 806 [RXE_PAYLOAD] = RXE_BTH_BYTES + 807 RXE_RDETH_BYTES, 808 } 809 }, 810 [IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST] = { 811 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST", 812 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK | 813 RXE_ACK_MASK | RXE_END_MASK, 814 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 815 .offset = { 816 [RXE_BTH] = 0, 817 [RXE_RDETH] = RXE_BTH_BYTES, 818 [RXE_AETH] = RXE_BTH_BYTES + 819 RXE_RDETH_BYTES, 820 [RXE_PAYLOAD] = RXE_BTH_BYTES + 821 RXE_RDETH_BYTES + 822 RXE_AETH_BYTES, 823 } 824 }, 825 [IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY] = { 826 .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY", 827 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK | 828 RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK, 829 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 830 .offset = { 831 [RXE_BTH] = 0, 832 [RXE_RDETH] = RXE_BTH_BYTES, 833 [RXE_AETH] = RXE_BTH_BYTES + 834 RXE_RDETH_BYTES, 835 [RXE_PAYLOAD] = RXE_BTH_BYTES + 836 RXE_RDETH_BYTES + 837 RXE_AETH_BYTES, 838 } 839 }, 840 [IB_OPCODE_RD_ACKNOWLEDGE] = { 841 .name = "IB_OPCODE_RD_ACKNOWLEDGE", 842 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK | 843 RXE_START_MASK | RXE_END_MASK, 844 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 845 .offset = { 846 [RXE_BTH] = 0, 847 [RXE_RDETH] = RXE_BTH_BYTES, 848 [RXE_AETH] = RXE_BTH_BYTES + 849 RXE_RDETH_BYTES, 850 } 851 }, 852 [IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE] = { 853 .name = "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE", 854 .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK | 855 RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK, 856 .length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES + 857 RXE_RDETH_BYTES, 858 .offset = { 859 [RXE_BTH] = 0, 860 [RXE_RDETH] = RXE_BTH_BYTES, 861 [RXE_AETH] = RXE_BTH_BYTES + 862 RXE_RDETH_BYTES, 863 [RXE_ATMACK] = RXE_BTH_BYTES + 864 RXE_RDETH_BYTES + 865 RXE_AETH_BYTES, 866 } 867 }, 868 [IB_OPCODE_RD_COMPARE_SWAP] = { 869 .name = "RD_COMPARE_SWAP", 870 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK | 871 RXE_REQ_MASK | RXE_ATOMIC_MASK | 872 RXE_START_MASK | RXE_END_MASK, 873 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES + 874 RXE_RDETH_BYTES, 875 .offset = { 876 [RXE_BTH] = 0, 877 [RXE_RDETH] = RXE_BTH_BYTES, 878 [RXE_DETH] = RXE_BTH_BYTES + 879 RXE_RDETH_BYTES, 880 [RXE_ATMETH] = RXE_BTH_BYTES + 881 RXE_RDETH_BYTES + 882 RXE_DETH_BYTES, 883 [RXE_PAYLOAD] = RXE_BTH_BYTES + 884 RXE_ATMETH_BYTES + 885 RXE_DETH_BYTES + 886 RXE_RDETH_BYTES, 887 } 888 }, 889 [IB_OPCODE_RD_FETCH_ADD] = { 890 .name = "IB_OPCODE_RD_FETCH_ADD", 891 .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK | 892 RXE_REQ_MASK | RXE_ATOMIC_MASK | 893 RXE_START_MASK | RXE_END_MASK, 894 .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES + 895 RXE_RDETH_BYTES, 896 .offset = { 897 [RXE_BTH] = 0, 898 [RXE_RDETH] = RXE_BTH_BYTES, 899 [RXE_DETH] = RXE_BTH_BYTES + 900 RXE_RDETH_BYTES, 901 [RXE_ATMETH] = RXE_BTH_BYTES + 902 RXE_RDETH_BYTES + 903 RXE_DETH_BYTES, 904 [RXE_PAYLOAD] = RXE_BTH_BYTES + 905 RXE_ATMETH_BYTES + 906 RXE_DETH_BYTES + 907 RXE_RDETH_BYTES, 908 } 909 }, 910 911 /* UD */ 912 [IB_OPCODE_UD_SEND_ONLY] = { 913 .name = "IB_OPCODE_UD_SEND_ONLY", 914 .mask = RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK | 915 RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK | 916 RXE_START_MASK | RXE_END_MASK, 917 .length = RXE_BTH_BYTES + RXE_DETH_BYTES, 918 .offset = { 919 [RXE_BTH] = 0, 920 [RXE_DETH] = RXE_BTH_BYTES, 921 [RXE_PAYLOAD] = RXE_BTH_BYTES + 922 RXE_DETH_BYTES, 923 } 924 }, 925 [IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE] = { 926 .name = "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE", 927 .mask = RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | 928 RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK | 929 RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK, 930 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES, 931 .offset = { 932 [RXE_BTH] = 0, 933 [RXE_DETH] = RXE_BTH_BYTES, 934 [RXE_IMMDT] = RXE_BTH_BYTES + 935 RXE_DETH_BYTES, 936 [RXE_PAYLOAD] = RXE_BTH_BYTES + 937 RXE_DETH_BYTES + 938 RXE_IMMDT_BYTES, 939 } 940 }, 941 942 }; 943