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_REG_MASK
,
94 .name
= "IB_WR_REG_MR",
96 [IB_QPT_RC
] = WR_REG_MASK
,
101 struct rxe_opcode_info rxe_opcode
[RXE_NUM_OPCODE
] = {
102 [IB_OPCODE_RC_SEND_FIRST
] = {
103 .name
= "IB_OPCODE_RC_SEND_FIRST",
104 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_RWR_MASK
105 | RXE_SEND_MASK
| RXE_START_MASK
,
106 .length
= RXE_BTH_BYTES
,
109 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
112 [IB_OPCODE_RC_SEND_MIDDLE
] = {
113 .name
= "IB_OPCODE_RC_SEND_MIDDLE]",
114 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_SEND_MASK
116 .length
= RXE_BTH_BYTES
,
119 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
122 [IB_OPCODE_RC_SEND_LAST
] = {
123 .name
= "IB_OPCODE_RC_SEND_LAST",
124 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
125 | RXE_SEND_MASK
| RXE_END_MASK
,
126 .length
= RXE_BTH_BYTES
,
129 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
132 [IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE
] = {
133 .name
= "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE",
134 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
135 | RXE_COMP_MASK
| RXE_SEND_MASK
| RXE_END_MASK
,
136 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
139 [RXE_IMMDT
] = RXE_BTH_BYTES
,
140 [RXE_PAYLOAD
] = RXE_BTH_BYTES
144 [IB_OPCODE_RC_SEND_ONLY
] = {
145 .name
= "IB_OPCODE_RC_SEND_ONLY",
146 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
147 | RXE_RWR_MASK
| RXE_SEND_MASK
148 | RXE_START_MASK
| RXE_END_MASK
,
149 .length
= RXE_BTH_BYTES
,
152 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
155 [IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE
] = {
156 .name
= "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE",
157 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
158 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
159 | RXE_START_MASK
| RXE_END_MASK
,
160 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
163 [RXE_IMMDT
] = RXE_BTH_BYTES
,
164 [RXE_PAYLOAD
] = RXE_BTH_BYTES
168 [IB_OPCODE_RC_RDMA_WRITE_FIRST
] = {
169 .name
= "IB_OPCODE_RC_RDMA_WRITE_FIRST",
170 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
171 | RXE_WRITE_MASK
| RXE_START_MASK
,
172 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
175 [RXE_RETH
] = RXE_BTH_BYTES
,
176 [RXE_PAYLOAD
] = RXE_BTH_BYTES
180 [IB_OPCODE_RC_RDMA_WRITE_MIDDLE
] = {
181 .name
= "IB_OPCODE_RC_RDMA_WRITE_MIDDLE",
182 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
184 .length
= RXE_BTH_BYTES
,
187 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
190 [IB_OPCODE_RC_RDMA_WRITE_LAST
] = {
191 .name
= "IB_OPCODE_RC_RDMA_WRITE_LAST",
192 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
194 .length
= RXE_BTH_BYTES
,
197 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
200 [IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE
] = {
201 .name
= "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
202 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
203 | RXE_WRITE_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
205 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
208 [RXE_IMMDT
] = RXE_BTH_BYTES
,
209 [RXE_PAYLOAD
] = RXE_BTH_BYTES
213 [IB_OPCODE_RC_RDMA_WRITE_ONLY
] = {
214 .name
= "IB_OPCODE_RC_RDMA_WRITE_ONLY",
215 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
216 | RXE_WRITE_MASK
| RXE_START_MASK
218 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
221 [RXE_RETH
] = RXE_BTH_BYTES
,
222 [RXE_PAYLOAD
] = RXE_BTH_BYTES
226 [IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE
] = {
227 .name
= "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
228 .mask
= RXE_RETH_MASK
| RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
229 | RXE_REQ_MASK
| RXE_WRITE_MASK
230 | RXE_COMP_MASK
| RXE_RWR_MASK
231 | RXE_START_MASK
| RXE_END_MASK
,
232 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_RETH_BYTES
,
235 [RXE_RETH
] = RXE_BTH_BYTES
,
236 [RXE_IMMDT
] = RXE_BTH_BYTES
238 [RXE_PAYLOAD
] = RXE_BTH_BYTES
243 [IB_OPCODE_RC_RDMA_READ_REQUEST
] = {
244 .name
= "IB_OPCODE_RC_RDMA_READ_REQUEST",
245 .mask
= RXE_RETH_MASK
| RXE_REQ_MASK
| RXE_READ_MASK
246 | RXE_START_MASK
| RXE_END_MASK
,
247 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
250 [RXE_RETH
] = RXE_BTH_BYTES
,
251 [RXE_PAYLOAD
] = RXE_BTH_BYTES
255 [IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST
] = {
256 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST",
257 .mask
= RXE_AETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
259 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
262 [RXE_AETH
] = RXE_BTH_BYTES
,
263 [RXE_PAYLOAD
] = RXE_BTH_BYTES
267 [IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE
] = {
268 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE",
269 .mask
= RXE_PAYLOAD_MASK
| RXE_ACK_MASK
| RXE_MIDDLE_MASK
,
270 .length
= RXE_BTH_BYTES
,
273 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
276 [IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST
] = {
277 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST",
278 .mask
= RXE_AETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
280 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
283 [RXE_AETH
] = RXE_BTH_BYTES
,
284 [RXE_PAYLOAD
] = RXE_BTH_BYTES
288 [IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY
] = {
289 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY",
290 .mask
= RXE_AETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
291 | RXE_START_MASK
| RXE_END_MASK
,
292 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
295 [RXE_AETH
] = RXE_BTH_BYTES
,
296 [RXE_PAYLOAD
] = RXE_BTH_BYTES
300 [IB_OPCODE_RC_ACKNOWLEDGE
] = {
301 .name
= "IB_OPCODE_RC_ACKNOWLEDGE",
302 .mask
= RXE_AETH_MASK
| RXE_ACK_MASK
| RXE_START_MASK
304 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
307 [RXE_AETH
] = RXE_BTH_BYTES
,
308 [RXE_PAYLOAD
] = RXE_BTH_BYTES
312 [IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE
] = {
313 .name
= "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE",
314 .mask
= RXE_AETH_MASK
| RXE_ATMACK_MASK
| RXE_ACK_MASK
315 | RXE_START_MASK
| RXE_END_MASK
,
316 .length
= RXE_BTH_BYTES
+ RXE_ATMACK_BYTES
+ RXE_AETH_BYTES
,
319 [RXE_AETH
] = RXE_BTH_BYTES
,
320 [RXE_ATMACK
] = RXE_BTH_BYTES
322 [RXE_PAYLOAD
] = RXE_BTH_BYTES
323 + RXE_ATMACK_BYTES
+ RXE_AETH_BYTES
,
326 [IB_OPCODE_RC_COMPARE_SWAP
] = {
327 .name
= "IB_OPCODE_RC_COMPARE_SWAP",
328 .mask
= RXE_ATMETH_MASK
| RXE_REQ_MASK
| RXE_ATOMIC_MASK
329 | RXE_START_MASK
| RXE_END_MASK
,
330 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
,
333 [RXE_ATMETH
] = RXE_BTH_BYTES
,
334 [RXE_PAYLOAD
] = RXE_BTH_BYTES
338 [IB_OPCODE_RC_FETCH_ADD
] = {
339 .name
= "IB_OPCODE_RC_FETCH_ADD",
340 .mask
= RXE_ATMETH_MASK
| RXE_REQ_MASK
| RXE_ATOMIC_MASK
341 | RXE_START_MASK
| RXE_END_MASK
,
342 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
,
345 [RXE_ATMETH
] = RXE_BTH_BYTES
,
346 [RXE_PAYLOAD
] = RXE_BTH_BYTES
350 [IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE
] = {
351 .name
= "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE",
352 .mask
= RXE_IETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
353 | RXE_COMP_MASK
| RXE_SEND_MASK
| RXE_END_MASK
,
354 .length
= RXE_BTH_BYTES
+ RXE_IETH_BYTES
,
357 [RXE_IETH
] = RXE_BTH_BYTES
,
358 [RXE_PAYLOAD
] = RXE_BTH_BYTES
362 [IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE
] = {
363 .name
= "IB_OPCODE_RC_SEND_ONLY_INV",
364 .mask
= RXE_IETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
365 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
366 | RXE_END_MASK
| RXE_START_MASK
,
367 .length
= RXE_BTH_BYTES
+ RXE_IETH_BYTES
,
370 [RXE_IETH
] = RXE_BTH_BYTES
,
371 [RXE_PAYLOAD
] = RXE_BTH_BYTES
377 [IB_OPCODE_UC_SEND_FIRST
] = {
378 .name
= "IB_OPCODE_UC_SEND_FIRST",
379 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_RWR_MASK
380 | RXE_SEND_MASK
| RXE_START_MASK
,
381 .length
= RXE_BTH_BYTES
,
384 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
387 [IB_OPCODE_UC_SEND_MIDDLE
] = {
388 .name
= "IB_OPCODE_UC_SEND_MIDDLE",
389 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_SEND_MASK
391 .length
= RXE_BTH_BYTES
,
394 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
397 [IB_OPCODE_UC_SEND_LAST
] = {
398 .name
= "IB_OPCODE_UC_SEND_LAST",
399 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
400 | RXE_SEND_MASK
| RXE_END_MASK
,
401 .length
= RXE_BTH_BYTES
,
404 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
407 [IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE
] = {
408 .name
= "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE",
409 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
410 | RXE_COMP_MASK
| RXE_SEND_MASK
| RXE_END_MASK
,
411 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
414 [RXE_IMMDT
] = RXE_BTH_BYTES
,
415 [RXE_PAYLOAD
] = RXE_BTH_BYTES
419 [IB_OPCODE_UC_SEND_ONLY
] = {
420 .name
= "IB_OPCODE_UC_SEND_ONLY",
421 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
422 | RXE_RWR_MASK
| RXE_SEND_MASK
423 | RXE_START_MASK
| RXE_END_MASK
,
424 .length
= RXE_BTH_BYTES
,
427 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
430 [IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE
] = {
431 .name
= "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE",
432 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
433 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
434 | RXE_START_MASK
| RXE_END_MASK
,
435 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
438 [RXE_IMMDT
] = RXE_BTH_BYTES
,
439 [RXE_PAYLOAD
] = RXE_BTH_BYTES
443 [IB_OPCODE_UC_RDMA_WRITE_FIRST
] = {
444 .name
= "IB_OPCODE_UC_RDMA_WRITE_FIRST",
445 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
446 | RXE_WRITE_MASK
| RXE_START_MASK
,
447 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
450 [RXE_RETH
] = RXE_BTH_BYTES
,
451 [RXE_PAYLOAD
] = RXE_BTH_BYTES
455 [IB_OPCODE_UC_RDMA_WRITE_MIDDLE
] = {
456 .name
= "IB_OPCODE_UC_RDMA_WRITE_MIDDLE",
457 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
459 .length
= RXE_BTH_BYTES
,
462 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
465 [IB_OPCODE_UC_RDMA_WRITE_LAST
] = {
466 .name
= "IB_OPCODE_UC_RDMA_WRITE_LAST",
467 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
469 .length
= RXE_BTH_BYTES
,
472 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
475 [IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE
] = {
476 .name
= "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
477 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
478 | RXE_WRITE_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
480 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
483 [RXE_IMMDT
] = RXE_BTH_BYTES
,
484 [RXE_PAYLOAD
] = RXE_BTH_BYTES
488 [IB_OPCODE_UC_RDMA_WRITE_ONLY
] = {
489 .name
= "IB_OPCODE_UC_RDMA_WRITE_ONLY",
490 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
491 | RXE_WRITE_MASK
| RXE_START_MASK
493 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
496 [RXE_RETH
] = RXE_BTH_BYTES
,
497 [RXE_PAYLOAD
] = RXE_BTH_BYTES
501 [IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE
] = {
502 .name
= "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
503 .mask
= RXE_RETH_MASK
| RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
504 | RXE_REQ_MASK
| RXE_WRITE_MASK
505 | RXE_COMP_MASK
| RXE_RWR_MASK
506 | RXE_START_MASK
| RXE_END_MASK
,
507 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_RETH_BYTES
,
510 [RXE_RETH
] = RXE_BTH_BYTES
,
511 [RXE_IMMDT
] = RXE_BTH_BYTES
513 [RXE_PAYLOAD
] = RXE_BTH_BYTES
520 [IB_OPCODE_RD_SEND_FIRST
] = {
521 .name
= "IB_OPCODE_RD_SEND_FIRST",
522 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
523 | RXE_REQ_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
525 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
528 [RXE_RDETH
] = RXE_BTH_BYTES
,
529 [RXE_DETH
] = RXE_BTH_BYTES
531 [RXE_PAYLOAD
] = RXE_BTH_BYTES
536 [IB_OPCODE_RD_SEND_MIDDLE
] = {
537 .name
= "IB_OPCODE_RD_SEND_MIDDLE",
538 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
539 | RXE_REQ_MASK
| RXE_SEND_MASK
541 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
544 [RXE_RDETH
] = RXE_BTH_BYTES
,
545 [RXE_DETH
] = RXE_BTH_BYTES
547 [RXE_PAYLOAD
] = RXE_BTH_BYTES
552 [IB_OPCODE_RD_SEND_LAST
] = {
553 .name
= "IB_OPCODE_RD_SEND_LAST",
554 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
555 | RXE_REQ_MASK
| RXE_COMP_MASK
| RXE_SEND_MASK
557 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
560 [RXE_RDETH
] = RXE_BTH_BYTES
,
561 [RXE_DETH
] = RXE_BTH_BYTES
563 [RXE_PAYLOAD
] = RXE_BTH_BYTES
568 [IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE
] = {
569 .name
= "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE",
570 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_IMMDT_MASK
571 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
572 | RXE_COMP_MASK
| RXE_SEND_MASK
574 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
578 [RXE_RDETH
] = RXE_BTH_BYTES
,
579 [RXE_DETH
] = RXE_BTH_BYTES
581 [RXE_IMMDT
] = RXE_BTH_BYTES
584 [RXE_PAYLOAD
] = RXE_BTH_BYTES
590 [IB_OPCODE_RD_SEND_ONLY
] = {
591 .name
= "IB_OPCODE_RD_SEND_ONLY",
592 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
593 | RXE_REQ_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
594 | RXE_SEND_MASK
| RXE_START_MASK
| RXE_END_MASK
,
595 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
598 [RXE_RDETH
] = RXE_BTH_BYTES
,
599 [RXE_DETH
] = RXE_BTH_BYTES
601 [RXE_PAYLOAD
] = RXE_BTH_BYTES
606 [IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE
] = {
607 .name
= "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE",
608 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_IMMDT_MASK
609 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
610 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
611 | RXE_START_MASK
| RXE_END_MASK
,
612 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
616 [RXE_RDETH
] = RXE_BTH_BYTES
,
617 [RXE_DETH
] = RXE_BTH_BYTES
619 [RXE_IMMDT
] = RXE_BTH_BYTES
622 [RXE_PAYLOAD
] = RXE_BTH_BYTES
628 [IB_OPCODE_RD_RDMA_WRITE_FIRST
] = {
629 .name
= "IB_OPCODE_RD_RDMA_WRITE_FIRST",
630 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
631 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
632 | RXE_WRITE_MASK
| RXE_START_MASK
,
633 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
+ RXE_DETH_BYTES
637 [RXE_RDETH
] = RXE_BTH_BYTES
,
638 [RXE_DETH
] = RXE_BTH_BYTES
640 [RXE_RETH
] = RXE_BTH_BYTES
643 [RXE_PAYLOAD
] = RXE_BTH_BYTES
649 [IB_OPCODE_RD_RDMA_WRITE_MIDDLE
] = {
650 .name
= "IB_OPCODE_RD_RDMA_WRITE_MIDDLE",
651 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
652 | RXE_REQ_MASK
| RXE_WRITE_MASK
654 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
657 [RXE_RDETH
] = RXE_BTH_BYTES
,
658 [RXE_DETH
] = RXE_BTH_BYTES
660 [RXE_PAYLOAD
] = RXE_BTH_BYTES
665 [IB_OPCODE_RD_RDMA_WRITE_LAST
] = {
666 .name
= "IB_OPCODE_RD_RDMA_WRITE_LAST",
667 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
668 | RXE_REQ_MASK
| RXE_WRITE_MASK
670 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
673 [RXE_RDETH
] = RXE_BTH_BYTES
,
674 [RXE_DETH
] = RXE_BTH_BYTES
676 [RXE_PAYLOAD
] = RXE_BTH_BYTES
681 [IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE
] = {
682 .name
= "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE",
683 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_IMMDT_MASK
684 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
685 | RXE_WRITE_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
687 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
691 [RXE_RDETH
] = RXE_BTH_BYTES
,
692 [RXE_DETH
] = RXE_BTH_BYTES
694 [RXE_IMMDT
] = RXE_BTH_BYTES
697 [RXE_PAYLOAD
] = RXE_BTH_BYTES
703 [IB_OPCODE_RD_RDMA_WRITE_ONLY
] = {
704 .name
= "IB_OPCODE_RD_RDMA_WRITE_ONLY",
705 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
706 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
707 | RXE_WRITE_MASK
| RXE_START_MASK
709 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
+ RXE_DETH_BYTES
713 [RXE_RDETH
] = RXE_BTH_BYTES
,
714 [RXE_DETH
] = RXE_BTH_BYTES
716 [RXE_RETH
] = RXE_BTH_BYTES
719 [RXE_PAYLOAD
] = RXE_BTH_BYTES
725 [IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE
] = {
726 .name
= "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
727 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
728 | RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
729 | RXE_REQ_MASK
| RXE_WRITE_MASK
730 | RXE_COMP_MASK
| RXE_RWR_MASK
731 | RXE_START_MASK
| RXE_END_MASK
,
732 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_RETH_BYTES
733 + RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
736 [RXE_RDETH
] = RXE_BTH_BYTES
,
737 [RXE_DETH
] = RXE_BTH_BYTES
739 [RXE_RETH
] = RXE_BTH_BYTES
742 [RXE_IMMDT
] = RXE_BTH_BYTES
746 [RXE_PAYLOAD
] = RXE_BTH_BYTES
753 [IB_OPCODE_RD_RDMA_READ_REQUEST
] = {
754 .name
= "IB_OPCODE_RD_RDMA_READ_REQUEST",
755 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
756 | RXE_REQ_MASK
| RXE_READ_MASK
757 | RXE_START_MASK
| RXE_END_MASK
,
758 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
+ RXE_DETH_BYTES
762 [RXE_RDETH
] = RXE_BTH_BYTES
,
763 [RXE_DETH
] = RXE_BTH_BYTES
765 [RXE_RETH
] = RXE_BTH_BYTES
768 [RXE_PAYLOAD
] = RXE_BTH_BYTES
774 [IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST
] = {
775 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST",
776 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
777 | RXE_PAYLOAD_MASK
| RXE_ACK_MASK
779 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
+ RXE_RDETH_BYTES
,
782 [RXE_RDETH
] = RXE_BTH_BYTES
,
783 [RXE_AETH
] = RXE_BTH_BYTES
785 [RXE_PAYLOAD
] = RXE_BTH_BYTES
790 [IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE
] = {
791 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE",
792 .mask
= RXE_RDETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
794 .length
= RXE_BTH_BYTES
+ RXE_RDETH_BYTES
,
797 [RXE_RDETH
] = RXE_BTH_BYTES
,
798 [RXE_PAYLOAD
] = RXE_BTH_BYTES
802 [IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST
] = {
803 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST",
804 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_PAYLOAD_MASK
805 | RXE_ACK_MASK
| RXE_END_MASK
,
806 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
+ RXE_RDETH_BYTES
,
809 [RXE_RDETH
] = RXE_BTH_BYTES
,
810 [RXE_AETH
] = RXE_BTH_BYTES
812 [RXE_PAYLOAD
] = RXE_BTH_BYTES
817 [IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY
] = {
818 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY",
819 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_PAYLOAD_MASK
820 | RXE_ACK_MASK
| RXE_START_MASK
| RXE_END_MASK
,
821 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
+ RXE_RDETH_BYTES
,
824 [RXE_RDETH
] = RXE_BTH_BYTES
,
825 [RXE_AETH
] = RXE_BTH_BYTES
827 [RXE_PAYLOAD
] = RXE_BTH_BYTES
832 [IB_OPCODE_RD_ACKNOWLEDGE
] = {
833 .name
= "IB_OPCODE_RD_ACKNOWLEDGE",
834 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_ACK_MASK
835 | RXE_START_MASK
| RXE_END_MASK
,
836 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
+ RXE_RDETH_BYTES
,
839 [RXE_RDETH
] = RXE_BTH_BYTES
,
840 [RXE_AETH
] = RXE_BTH_BYTES
844 [IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE
] = {
845 .name
= "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE",
846 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_ATMACK_MASK
847 | RXE_ACK_MASK
| RXE_START_MASK
| RXE_END_MASK
,
848 .length
= RXE_BTH_BYTES
+ RXE_ATMACK_BYTES
+ RXE_AETH_BYTES
852 [RXE_RDETH
] = RXE_BTH_BYTES
,
853 [RXE_AETH
] = RXE_BTH_BYTES
855 [RXE_ATMACK
] = RXE_BTH_BYTES
860 [IB_OPCODE_RD_COMPARE_SWAP
] = {
861 .name
= "RD_COMPARE_SWAP",
862 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_ATMETH_MASK
863 | RXE_REQ_MASK
| RXE_ATOMIC_MASK
864 | RXE_START_MASK
| RXE_END_MASK
,
865 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
+ RXE_DETH_BYTES
869 [RXE_RDETH
] = RXE_BTH_BYTES
,
870 [RXE_DETH
] = RXE_BTH_BYTES
872 [RXE_ATMETH
] = RXE_BTH_BYTES
875 [RXE_PAYLOAD
] = RXE_BTH_BYTES
+
881 [IB_OPCODE_RD_FETCH_ADD
] = {
882 .name
= "IB_OPCODE_RD_FETCH_ADD",
883 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_ATMETH_MASK
884 | RXE_REQ_MASK
| RXE_ATOMIC_MASK
885 | RXE_START_MASK
| RXE_END_MASK
,
886 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
+ RXE_DETH_BYTES
890 [RXE_RDETH
] = RXE_BTH_BYTES
,
891 [RXE_DETH
] = RXE_BTH_BYTES
893 [RXE_ATMETH
] = RXE_BTH_BYTES
896 [RXE_PAYLOAD
] = RXE_BTH_BYTES
+
904 [IB_OPCODE_UD_SEND_ONLY
] = {
905 .name
= "IB_OPCODE_UD_SEND_ONLY",
906 .mask
= RXE_DETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
907 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
908 | RXE_START_MASK
| RXE_END_MASK
,
909 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
,
912 [RXE_DETH
] = RXE_BTH_BYTES
,
913 [RXE_PAYLOAD
] = RXE_BTH_BYTES
917 [IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE
] = {
918 .name
= "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE",
919 .mask
= RXE_DETH_MASK
| RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
920 | RXE_REQ_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
921 | RXE_SEND_MASK
| RXE_START_MASK
| RXE_END_MASK
,
922 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
,
925 [RXE_DETH
] = RXE_BTH_BYTES
,
926 [RXE_IMMDT
] = RXE_BTH_BYTES
928 [RXE_PAYLOAD
] = RXE_BTH_BYTES