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