1 // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
3 * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
4 * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
7 #include <rdma/ib_pack.h>
8 #include "rxe_opcode.h"
11 /* useful information about work request opcodes and pkt opcodes in
14 struct rxe_wr_opcode_info rxe_wr_opcode_info[] = {
15 [IB_WR_RDMA_WRITE] = {
16 .name = "IB_WR_RDMA_WRITE",
18 [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK,
19 [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_MASK,
22 [IB_WR_RDMA_WRITE_WITH_IMM] = {
23 .name = "IB_WR_RDMA_WRITE_WITH_IMM",
25 [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK,
26 [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_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,
39 [IB_WR_SEND_WITH_IMM] = {
40 .name = "IB_WR_SEND_WITH_IMM",
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,
50 .name = "IB_WR_RDMA_READ",
52 [IB_QPT_RC] = WR_READ_MASK,
55 [IB_WR_ATOMIC_CMP_AND_SWP] = {
56 .name = "IB_WR_ATOMIC_CMP_AND_SWP",
58 [IB_QPT_RC] = WR_ATOMIC_MASK,
61 [IB_WR_ATOMIC_FETCH_AND_ADD] = {
62 .name = "IB_WR_ATOMIC_FETCH_AND_ADD",
64 [IB_QPT_RC] = WR_ATOMIC_MASK,
73 [IB_WR_SEND_WITH_INV] = {
74 .name = "IB_WR_SEND_WITH_INV",
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,
81 [IB_WR_RDMA_READ_WITH_INV] = {
82 .name = "IB_WR_RDMA_READ_WITH_INV",
84 [IB_QPT_RC] = WR_READ_MASK,
88 .name = "IB_WR_LOCAL_INV",
90 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
94 .name = "IB_WR_REG_MR",
96 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
100 .name = "IB_WR_BIND_MW",
102 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
103 [IB_QPT_UC] = WR_LOCAL_OP_MASK,
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,
116 [RXE_PAYLOAD] = RXE_BTH_BYTES,
119 [IB_OPCODE_RC_SEND_MIDDLE] = {
120 .name = "IB_OPCODE_RC_SEND_MIDDLE]",
121 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK
123 .length = RXE_BTH_BYTES,
126 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
136 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
146 [RXE_IMMDT] = RXE_BTH_BYTES,
147 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
159 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
170 [RXE_IMMDT] = RXE_BTH_BYTES,
171 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
182 [RXE_RETH] = RXE_BTH_BYTES,
183 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
191 .length = RXE_BTH_BYTES,
194 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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
201 .length = RXE_BTH_BYTES,
204 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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
212 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
215 [RXE_IMMDT] = RXE_BTH_BYTES,
216 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
225 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
228 [RXE_RETH] = RXE_BTH_BYTES,
229 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
242 [RXE_RETH] = RXE_BTH_BYTES,
243 [RXE_IMMDT] = RXE_BTH_BYTES
245 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
257 [RXE_RETH] = RXE_BTH_BYTES,
258 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
266 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
269 [RXE_AETH] = RXE_BTH_BYTES,
270 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
280 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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
287 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
290 [RXE_AETH] = RXE_BTH_BYTES,
291 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
302 [RXE_AETH] = RXE_BTH_BYTES,
303 [RXE_PAYLOAD] = RXE_BTH_BYTES
307 [IB_OPCODE_RC_ACKNOWLEDGE] = {
308 .name = "IB_OPCODE_RC_ACKNOWLEDGE",
309 .mask = RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK
311 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
314 [RXE_AETH] = RXE_BTH_BYTES,
315 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
326 [RXE_AETH] = RXE_BTH_BYTES,
327 [RXE_ATMACK] = RXE_BTH_BYTES
329 [RXE_PAYLOAD] = RXE_BTH_BYTES
330 + RXE_ATMACK_BYTES + RXE_AETH_BYTES,
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,
340 [RXE_ATMETH] = RXE_BTH_BYTES,
341 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
352 [RXE_ATMETH] = RXE_BTH_BYTES,
353 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
364 [RXE_IETH] = RXE_BTH_BYTES,
365 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
377 [RXE_IETH] = RXE_BTH_BYTES,
378 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
391 [RXE_PAYLOAD] = RXE_BTH_BYTES,
394 [IB_OPCODE_UC_SEND_MIDDLE] = {
395 .name = "IB_OPCODE_UC_SEND_MIDDLE",
396 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK
398 .length = RXE_BTH_BYTES,
401 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
411 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
421 [RXE_IMMDT] = RXE_BTH_BYTES,
422 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
434 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
445 [RXE_IMMDT] = RXE_BTH_BYTES,
446 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
457 [RXE_RETH] = RXE_BTH_BYTES,
458 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
466 .length = RXE_BTH_BYTES,
469 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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
476 .length = RXE_BTH_BYTES,
479 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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
487 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
490 [RXE_IMMDT] = RXE_BTH_BYTES,
491 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
500 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
503 [RXE_RETH] = RXE_BTH_BYTES,
504 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
517 [RXE_RETH] = RXE_BTH_BYTES,
518 [RXE_IMMDT] = RXE_BTH_BYTES
520 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
532 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
535 [RXE_RDETH] = RXE_BTH_BYTES,
536 [RXE_DETH] = RXE_BTH_BYTES
538 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
548 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
551 [RXE_RDETH] = RXE_BTH_BYTES,
552 [RXE_DETH] = RXE_BTH_BYTES
554 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
564 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
567 [RXE_RDETH] = RXE_BTH_BYTES,
568 [RXE_DETH] = RXE_BTH_BYTES
570 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
581 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
585 [RXE_RDETH] = RXE_BTH_BYTES,
586 [RXE_DETH] = RXE_BTH_BYTES
588 [RXE_IMMDT] = RXE_BTH_BYTES
591 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
605 [RXE_RDETH] = RXE_BTH_BYTES,
606 [RXE_DETH] = RXE_BTH_BYTES
608 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
623 [RXE_RDETH] = RXE_BTH_BYTES,
624 [RXE_DETH] = RXE_BTH_BYTES
626 [RXE_IMMDT] = RXE_BTH_BYTES
629 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
644 [RXE_RDETH] = RXE_BTH_BYTES,
645 [RXE_DETH] = RXE_BTH_BYTES
647 [RXE_RETH] = RXE_BTH_BYTES
650 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
661 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
664 [RXE_RDETH] = RXE_BTH_BYTES,
665 [RXE_DETH] = RXE_BTH_BYTES
667 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
677 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
680 [RXE_RDETH] = RXE_BTH_BYTES,
681 [RXE_DETH] = RXE_BTH_BYTES
683 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
694 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
698 [RXE_RDETH] = RXE_BTH_BYTES,
699 [RXE_DETH] = RXE_BTH_BYTES
701 [RXE_IMMDT] = RXE_BTH_BYTES
704 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
716 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
720 [RXE_RDETH] = RXE_BTH_BYTES,
721 [RXE_DETH] = RXE_BTH_BYTES
723 [RXE_RETH] = RXE_BTH_BYTES
726 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
743 [RXE_RDETH] = RXE_BTH_BYTES,
744 [RXE_DETH] = RXE_BTH_BYTES
746 [RXE_RETH] = RXE_BTH_BYTES
749 [RXE_IMMDT] = RXE_BTH_BYTES
753 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
769 [RXE_RDETH] = RXE_BTH_BYTES,
770 [RXE_DETH] = RXE_BTH_BYTES
772 [RXE_RETH] = RXE_BTH_BYTES
775 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
786 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
789 [RXE_RDETH] = RXE_BTH_BYTES,
790 [RXE_AETH] = RXE_BTH_BYTES
792 [RXE_PAYLOAD] = RXE_BTH_BYTES
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
801 .length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
804 [RXE_RDETH] = RXE_BTH_BYTES,
805 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
816 [RXE_RDETH] = RXE_BTH_BYTES,
817 [RXE_AETH] = RXE_BTH_BYTES
819 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
831 [RXE_RDETH] = RXE_BTH_BYTES,
832 [RXE_AETH] = RXE_BTH_BYTES
834 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
846 [RXE_RDETH] = RXE_BTH_BYTES,
847 [RXE_AETH] = RXE_BTH_BYTES
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
859 [RXE_RDETH] = RXE_BTH_BYTES,
860 [RXE_AETH] = RXE_BTH_BYTES
862 [RXE_ATMACK] = RXE_BTH_BYTES
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
876 [RXE_RDETH] = RXE_BTH_BYTES,
877 [RXE_DETH] = RXE_BTH_BYTES
879 [RXE_ATMETH] = RXE_BTH_BYTES
882 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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
897 [RXE_RDETH] = RXE_BTH_BYTES,
898 [RXE_DETH] = RXE_BTH_BYTES
900 [RXE_ATMETH] = RXE_BTH_BYTES
903 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
919 [RXE_DETH] = RXE_BTH_BYTES,
920 [RXE_PAYLOAD] = RXE_BTH_BYTES
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,
932 [RXE_DETH] = RXE_BTH_BYTES,
933 [RXE_IMMDT] = RXE_BTH_BYTES
935 [RXE_PAYLOAD] = RXE_BTH_BYTES