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