2 * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
3 * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
5 * This software is available to you under a choice of one of two
6 * licenses. You may choose to be licensed under the terms of the GNU
7 * General Public License (GPL) Version 2, available from the file
8 * COPYING in the main directory of this source tree, or the
9 * OpenIB.org BSD license below:
11 * Redistribution and use in source and binary forms, with or
12 * without modification, are permitted provided that the following
15 * - Redistributions of source code must retain the above
16 * copyright notice, this list of conditions and the following
19 * - Redistributions in binary form must reproduce the above
20 * copyright notice, this list of conditions and the following
21 * disclaimer in the documentation and/or other materials
22 * provided with the distribution.
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34 #include <rdma/ib_pack.h>
35 #include "rxe_opcode.h"
38 /* useful information about work request opcodes and pkt opcodes in
41 struct rxe_wr_opcode_info rxe_wr_opcode_info
[] = {
42 [IB_WR_RDMA_WRITE
] = {
43 .name
= "IB_WR_RDMA_WRITE",
45 [IB_QPT_RC
] = WR_INLINE_MASK
| WR_WRITE_MASK
,
46 [IB_QPT_UC
] = WR_INLINE_MASK
| WR_WRITE_MASK
,
49 [IB_WR_RDMA_WRITE_WITH_IMM
] = {
50 .name
= "IB_WR_RDMA_WRITE_WITH_IMM",
52 [IB_QPT_RC
] = WR_INLINE_MASK
| WR_WRITE_MASK
,
53 [IB_QPT_UC
] = WR_INLINE_MASK
| WR_WRITE_MASK
,
59 [IB_QPT_SMI
] = WR_INLINE_MASK
| WR_SEND_MASK
,
60 [IB_QPT_GSI
] = WR_INLINE_MASK
| WR_SEND_MASK
,
61 [IB_QPT_RC
] = WR_INLINE_MASK
| WR_SEND_MASK
,
62 [IB_QPT_UC
] = WR_INLINE_MASK
| WR_SEND_MASK
,
63 [IB_QPT_UD
] = WR_INLINE_MASK
| WR_SEND_MASK
,
66 [IB_WR_SEND_WITH_IMM
] = {
67 .name
= "IB_WR_SEND_WITH_IMM",
69 [IB_QPT_SMI
] = WR_INLINE_MASK
| WR_SEND_MASK
,
70 [IB_QPT_GSI
] = WR_INLINE_MASK
| WR_SEND_MASK
,
71 [IB_QPT_RC
] = WR_INLINE_MASK
| WR_SEND_MASK
,
72 [IB_QPT_UC
] = WR_INLINE_MASK
| WR_SEND_MASK
,
73 [IB_QPT_UD
] = WR_INLINE_MASK
| WR_SEND_MASK
,
77 .name
= "IB_WR_RDMA_READ",
79 [IB_QPT_RC
] = WR_READ_MASK
,
82 [IB_WR_ATOMIC_CMP_AND_SWP
] = {
83 .name
= "IB_WR_ATOMIC_CMP_AND_SWP",
85 [IB_QPT_RC
] = WR_ATOMIC_MASK
,
88 [IB_WR_ATOMIC_FETCH_AND_ADD
] = {
89 .name
= "IB_WR_ATOMIC_FETCH_AND_ADD",
91 [IB_QPT_RC
] = WR_ATOMIC_MASK
,
100 [IB_WR_SEND_WITH_INV
] = {
101 .name
= "IB_WR_SEND_WITH_INV",
103 [IB_QPT_RC
] = WR_INLINE_MASK
| WR_SEND_MASK
,
104 [IB_QPT_UC
] = WR_INLINE_MASK
| WR_SEND_MASK
,
105 [IB_QPT_UD
] = WR_INLINE_MASK
| WR_SEND_MASK
,
108 [IB_WR_RDMA_READ_WITH_INV
] = {
109 .name
= "IB_WR_RDMA_READ_WITH_INV",
111 [IB_QPT_RC
] = WR_READ_MASK
,
114 [IB_WR_LOCAL_INV
] = {
115 .name
= "IB_WR_LOCAL_INV",
117 [IB_QPT_RC
] = WR_REG_MASK
,
121 .name
= "IB_WR_REG_MR",
123 [IB_QPT_RC
] = WR_REG_MASK
,
128 struct rxe_opcode_info rxe_opcode
[RXE_NUM_OPCODE
] = {
129 [IB_OPCODE_RC_SEND_FIRST
] = {
130 .name
= "IB_OPCODE_RC_SEND_FIRST",
131 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_RWR_MASK
132 | RXE_SEND_MASK
| RXE_START_MASK
,
133 .length
= RXE_BTH_BYTES
,
136 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
139 [IB_OPCODE_RC_SEND_MIDDLE
] = {
140 .name
= "IB_OPCODE_RC_SEND_MIDDLE]",
141 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_SEND_MASK
143 .length
= RXE_BTH_BYTES
,
146 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
149 [IB_OPCODE_RC_SEND_LAST
] = {
150 .name
= "IB_OPCODE_RC_SEND_LAST",
151 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
152 | RXE_SEND_MASK
| RXE_END_MASK
,
153 .length
= RXE_BTH_BYTES
,
156 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
159 [IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE
] = {
160 .name
= "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE",
161 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
162 | RXE_COMP_MASK
| RXE_SEND_MASK
| RXE_END_MASK
,
163 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
166 [RXE_IMMDT
] = RXE_BTH_BYTES
,
167 [RXE_PAYLOAD
] = RXE_BTH_BYTES
171 [IB_OPCODE_RC_SEND_ONLY
] = {
172 .name
= "IB_OPCODE_RC_SEND_ONLY",
173 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
174 | RXE_RWR_MASK
| RXE_SEND_MASK
175 | RXE_START_MASK
| RXE_END_MASK
,
176 .length
= RXE_BTH_BYTES
,
179 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
182 [IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE
] = {
183 .name
= "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE",
184 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
185 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
186 | RXE_START_MASK
| RXE_END_MASK
,
187 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
190 [RXE_IMMDT
] = RXE_BTH_BYTES
,
191 [RXE_PAYLOAD
] = RXE_BTH_BYTES
195 [IB_OPCODE_RC_RDMA_WRITE_FIRST
] = {
196 .name
= "IB_OPCODE_RC_RDMA_WRITE_FIRST",
197 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
198 | RXE_WRITE_MASK
| RXE_START_MASK
,
199 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
202 [RXE_RETH
] = RXE_BTH_BYTES
,
203 [RXE_PAYLOAD
] = RXE_BTH_BYTES
207 [IB_OPCODE_RC_RDMA_WRITE_MIDDLE
] = {
208 .name
= "IB_OPCODE_RC_RDMA_WRITE_MIDDLE",
209 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
211 .length
= RXE_BTH_BYTES
,
214 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
217 [IB_OPCODE_RC_RDMA_WRITE_LAST
] = {
218 .name
= "IB_OPCODE_RC_RDMA_WRITE_LAST",
219 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
221 .length
= RXE_BTH_BYTES
,
224 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
227 [IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE
] = {
228 .name
= "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
229 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
230 | RXE_WRITE_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
232 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
235 [RXE_IMMDT
] = RXE_BTH_BYTES
,
236 [RXE_PAYLOAD
] = RXE_BTH_BYTES
240 [IB_OPCODE_RC_RDMA_WRITE_ONLY
] = {
241 .name
= "IB_OPCODE_RC_RDMA_WRITE_ONLY",
242 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
243 | RXE_WRITE_MASK
| RXE_START_MASK
245 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
248 [RXE_RETH
] = RXE_BTH_BYTES
,
249 [RXE_PAYLOAD
] = RXE_BTH_BYTES
253 [IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE
] = {
254 .name
= "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
255 .mask
= RXE_RETH_MASK
| RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
256 | RXE_REQ_MASK
| RXE_WRITE_MASK
257 | RXE_COMP_MASK
| RXE_RWR_MASK
258 | RXE_START_MASK
| RXE_END_MASK
,
259 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_RETH_BYTES
,
262 [RXE_RETH
] = RXE_BTH_BYTES
,
263 [RXE_IMMDT
] = RXE_BTH_BYTES
265 [RXE_PAYLOAD
] = RXE_BTH_BYTES
270 [IB_OPCODE_RC_RDMA_READ_REQUEST
] = {
271 .name
= "IB_OPCODE_RC_RDMA_READ_REQUEST",
272 .mask
= RXE_RETH_MASK
| RXE_REQ_MASK
| RXE_READ_MASK
273 | RXE_START_MASK
| RXE_END_MASK
,
274 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
277 [RXE_RETH
] = RXE_BTH_BYTES
,
278 [RXE_PAYLOAD
] = RXE_BTH_BYTES
282 [IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST
] = {
283 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST",
284 .mask
= RXE_AETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
286 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
289 [RXE_AETH
] = RXE_BTH_BYTES
,
290 [RXE_PAYLOAD
] = RXE_BTH_BYTES
294 [IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE
] = {
295 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE",
296 .mask
= RXE_PAYLOAD_MASK
| RXE_ACK_MASK
| RXE_MIDDLE_MASK
,
297 .length
= RXE_BTH_BYTES
,
300 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
303 [IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST
] = {
304 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST",
305 .mask
= RXE_AETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
307 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
310 [RXE_AETH
] = RXE_BTH_BYTES
,
311 [RXE_PAYLOAD
] = RXE_BTH_BYTES
315 [IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY
] = {
316 .name
= "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY",
317 .mask
= RXE_AETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
318 | RXE_START_MASK
| RXE_END_MASK
,
319 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
322 [RXE_AETH
] = RXE_BTH_BYTES
,
323 [RXE_PAYLOAD
] = RXE_BTH_BYTES
327 [IB_OPCODE_RC_ACKNOWLEDGE
] = {
328 .name
= "IB_OPCODE_RC_ACKNOWLEDGE",
329 .mask
= RXE_AETH_MASK
| RXE_ACK_MASK
| RXE_START_MASK
331 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
,
334 [RXE_AETH
] = RXE_BTH_BYTES
,
335 [RXE_PAYLOAD
] = RXE_BTH_BYTES
339 [IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE
] = {
340 .name
= "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE",
341 .mask
= RXE_AETH_MASK
| RXE_ATMACK_MASK
| RXE_ACK_MASK
342 | RXE_START_MASK
| RXE_END_MASK
,
343 .length
= RXE_BTH_BYTES
+ RXE_ATMACK_BYTES
+ RXE_AETH_BYTES
,
346 [RXE_AETH
] = RXE_BTH_BYTES
,
347 [RXE_ATMACK
] = RXE_BTH_BYTES
349 [RXE_PAYLOAD
] = RXE_BTH_BYTES
350 + RXE_ATMACK_BYTES
+ RXE_AETH_BYTES
,
353 [IB_OPCODE_RC_COMPARE_SWAP
] = {
354 .name
= "IB_OPCODE_RC_COMPARE_SWAP",
355 .mask
= RXE_ATMETH_MASK
| RXE_REQ_MASK
| RXE_ATOMIC_MASK
356 | RXE_START_MASK
| RXE_END_MASK
,
357 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
,
360 [RXE_ATMETH
] = RXE_BTH_BYTES
,
361 [RXE_PAYLOAD
] = RXE_BTH_BYTES
365 [IB_OPCODE_RC_FETCH_ADD
] = {
366 .name
= "IB_OPCODE_RC_FETCH_ADD",
367 .mask
= RXE_ATMETH_MASK
| RXE_REQ_MASK
| RXE_ATOMIC_MASK
368 | RXE_START_MASK
| RXE_END_MASK
,
369 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
,
372 [RXE_ATMETH
] = RXE_BTH_BYTES
,
373 [RXE_PAYLOAD
] = RXE_BTH_BYTES
377 [IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE
] = {
378 .name
= "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE",
379 .mask
= RXE_IETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
380 | RXE_COMP_MASK
| RXE_SEND_MASK
| RXE_END_MASK
,
381 .length
= RXE_BTH_BYTES
+ RXE_IETH_BYTES
,
384 [RXE_IETH
] = RXE_BTH_BYTES
,
385 [RXE_PAYLOAD
] = RXE_BTH_BYTES
389 [IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE
] = {
390 .name
= "IB_OPCODE_RC_SEND_ONLY_INV",
391 .mask
= RXE_IETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
392 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
393 | RXE_END_MASK
| RXE_START_MASK
,
394 .length
= RXE_BTH_BYTES
+ RXE_IETH_BYTES
,
397 [RXE_IETH
] = RXE_BTH_BYTES
,
398 [RXE_PAYLOAD
] = RXE_BTH_BYTES
404 [IB_OPCODE_UC_SEND_FIRST
] = {
405 .name
= "IB_OPCODE_UC_SEND_FIRST",
406 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_RWR_MASK
407 | RXE_SEND_MASK
| RXE_START_MASK
,
408 .length
= RXE_BTH_BYTES
,
411 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
414 [IB_OPCODE_UC_SEND_MIDDLE
] = {
415 .name
= "IB_OPCODE_UC_SEND_MIDDLE",
416 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_SEND_MASK
418 .length
= RXE_BTH_BYTES
,
421 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
424 [IB_OPCODE_UC_SEND_LAST
] = {
425 .name
= "IB_OPCODE_UC_SEND_LAST",
426 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
427 | RXE_SEND_MASK
| RXE_END_MASK
,
428 .length
= RXE_BTH_BYTES
,
431 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
434 [IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE
] = {
435 .name
= "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE",
436 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
437 | RXE_COMP_MASK
| RXE_SEND_MASK
| RXE_END_MASK
,
438 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
441 [RXE_IMMDT
] = RXE_BTH_BYTES
,
442 [RXE_PAYLOAD
] = RXE_BTH_BYTES
446 [IB_OPCODE_UC_SEND_ONLY
] = {
447 .name
= "IB_OPCODE_UC_SEND_ONLY",
448 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_COMP_MASK
449 | RXE_RWR_MASK
| RXE_SEND_MASK
450 | RXE_START_MASK
| RXE_END_MASK
,
451 .length
= RXE_BTH_BYTES
,
454 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
457 [IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE
] = {
458 .name
= "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE",
459 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
460 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
461 | RXE_START_MASK
| RXE_END_MASK
,
462 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
465 [RXE_IMMDT
] = RXE_BTH_BYTES
,
466 [RXE_PAYLOAD
] = RXE_BTH_BYTES
470 [IB_OPCODE_UC_RDMA_WRITE_FIRST
] = {
471 .name
= "IB_OPCODE_UC_RDMA_WRITE_FIRST",
472 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
473 | RXE_WRITE_MASK
| RXE_START_MASK
,
474 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
477 [RXE_RETH
] = RXE_BTH_BYTES
,
478 [RXE_PAYLOAD
] = RXE_BTH_BYTES
482 [IB_OPCODE_UC_RDMA_WRITE_MIDDLE
] = {
483 .name
= "IB_OPCODE_UC_RDMA_WRITE_MIDDLE",
484 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
486 .length
= RXE_BTH_BYTES
,
489 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
492 [IB_OPCODE_UC_RDMA_WRITE_LAST
] = {
493 .name
= "IB_OPCODE_UC_RDMA_WRITE_LAST",
494 .mask
= RXE_PAYLOAD_MASK
| RXE_REQ_MASK
| RXE_WRITE_MASK
496 .length
= RXE_BTH_BYTES
,
499 [RXE_PAYLOAD
] = RXE_BTH_BYTES
,
502 [IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE
] = {
503 .name
= "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
504 .mask
= RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
505 | RXE_WRITE_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
507 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
,
510 [RXE_IMMDT
] = RXE_BTH_BYTES
,
511 [RXE_PAYLOAD
] = RXE_BTH_BYTES
515 [IB_OPCODE_UC_RDMA_WRITE_ONLY
] = {
516 .name
= "IB_OPCODE_UC_RDMA_WRITE_ONLY",
517 .mask
= RXE_RETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
518 | RXE_WRITE_MASK
| RXE_START_MASK
520 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
,
523 [RXE_RETH
] = RXE_BTH_BYTES
,
524 [RXE_PAYLOAD
] = RXE_BTH_BYTES
528 [IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE
] = {
529 .name
= "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
530 .mask
= RXE_RETH_MASK
| RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
531 | RXE_REQ_MASK
| RXE_WRITE_MASK
532 | RXE_COMP_MASK
| RXE_RWR_MASK
533 | RXE_START_MASK
| RXE_END_MASK
,
534 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_RETH_BYTES
,
537 [RXE_RETH
] = RXE_BTH_BYTES
,
538 [RXE_IMMDT
] = RXE_BTH_BYTES
540 [RXE_PAYLOAD
] = RXE_BTH_BYTES
547 [IB_OPCODE_RD_SEND_FIRST
] = {
548 .name
= "IB_OPCODE_RD_SEND_FIRST",
549 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
550 | RXE_REQ_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
552 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
555 [RXE_RDETH
] = RXE_BTH_BYTES
,
556 [RXE_DETH
] = RXE_BTH_BYTES
558 [RXE_PAYLOAD
] = RXE_BTH_BYTES
563 [IB_OPCODE_RD_SEND_MIDDLE
] = {
564 .name
= "IB_OPCODE_RD_SEND_MIDDLE",
565 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
566 | RXE_REQ_MASK
| RXE_SEND_MASK
568 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
571 [RXE_RDETH
] = RXE_BTH_BYTES
,
572 [RXE_DETH
] = RXE_BTH_BYTES
574 [RXE_PAYLOAD
] = RXE_BTH_BYTES
579 [IB_OPCODE_RD_SEND_LAST
] = {
580 .name
= "IB_OPCODE_RD_SEND_LAST",
581 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
582 | RXE_REQ_MASK
| RXE_COMP_MASK
| RXE_SEND_MASK
584 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
587 [RXE_RDETH
] = RXE_BTH_BYTES
,
588 [RXE_DETH
] = RXE_BTH_BYTES
590 [RXE_PAYLOAD
] = RXE_BTH_BYTES
595 [IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE
] = {
596 .name
= "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE",
597 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_IMMDT_MASK
598 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
599 | RXE_COMP_MASK
| RXE_SEND_MASK
601 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
605 [RXE_RDETH
] = RXE_BTH_BYTES
,
606 [RXE_DETH
] = RXE_BTH_BYTES
608 [RXE_IMMDT
] = RXE_BTH_BYTES
611 [RXE_PAYLOAD
] = RXE_BTH_BYTES
617 [IB_OPCODE_RD_SEND_ONLY
] = {
618 .name
= "IB_OPCODE_RD_SEND_ONLY",
619 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
620 | RXE_REQ_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
621 | RXE_SEND_MASK
| RXE_START_MASK
| RXE_END_MASK
,
622 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
625 [RXE_RDETH
] = RXE_BTH_BYTES
,
626 [RXE_DETH
] = RXE_BTH_BYTES
628 [RXE_PAYLOAD
] = RXE_BTH_BYTES
633 [IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE
] = {
634 .name
= "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE",
635 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_IMMDT_MASK
636 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
637 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
638 | RXE_START_MASK
| RXE_END_MASK
,
639 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
643 [RXE_RDETH
] = RXE_BTH_BYTES
,
644 [RXE_DETH
] = RXE_BTH_BYTES
646 [RXE_IMMDT
] = RXE_BTH_BYTES
649 [RXE_PAYLOAD
] = RXE_BTH_BYTES
655 [IB_OPCODE_RD_RDMA_WRITE_FIRST
] = {
656 .name
= "IB_OPCODE_RD_RDMA_WRITE_FIRST",
657 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
658 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
659 | RXE_WRITE_MASK
| RXE_START_MASK
,
660 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
+ RXE_DETH_BYTES
664 [RXE_RDETH
] = RXE_BTH_BYTES
,
665 [RXE_DETH
] = RXE_BTH_BYTES
667 [RXE_RETH
] = RXE_BTH_BYTES
670 [RXE_PAYLOAD
] = RXE_BTH_BYTES
676 [IB_OPCODE_RD_RDMA_WRITE_MIDDLE
] = {
677 .name
= "IB_OPCODE_RD_RDMA_WRITE_MIDDLE",
678 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
679 | RXE_REQ_MASK
| RXE_WRITE_MASK
681 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
684 [RXE_RDETH
] = RXE_BTH_BYTES
,
685 [RXE_DETH
] = RXE_BTH_BYTES
687 [RXE_PAYLOAD
] = RXE_BTH_BYTES
692 [IB_OPCODE_RD_RDMA_WRITE_LAST
] = {
693 .name
= "IB_OPCODE_RD_RDMA_WRITE_LAST",
694 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_PAYLOAD_MASK
695 | RXE_REQ_MASK
| RXE_WRITE_MASK
697 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
700 [RXE_RDETH
] = RXE_BTH_BYTES
,
701 [RXE_DETH
] = RXE_BTH_BYTES
703 [RXE_PAYLOAD
] = RXE_BTH_BYTES
708 [IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE
] = {
709 .name
= "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE",
710 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_IMMDT_MASK
711 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
712 | RXE_WRITE_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
714 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
718 [RXE_RDETH
] = RXE_BTH_BYTES
,
719 [RXE_DETH
] = RXE_BTH_BYTES
721 [RXE_IMMDT
] = RXE_BTH_BYTES
724 [RXE_PAYLOAD
] = RXE_BTH_BYTES
730 [IB_OPCODE_RD_RDMA_WRITE_ONLY
] = {
731 .name
= "IB_OPCODE_RD_RDMA_WRITE_ONLY",
732 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
733 | RXE_PAYLOAD_MASK
| RXE_REQ_MASK
734 | RXE_WRITE_MASK
| RXE_START_MASK
736 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
+ RXE_DETH_BYTES
740 [RXE_RDETH
] = RXE_BTH_BYTES
,
741 [RXE_DETH
] = RXE_BTH_BYTES
743 [RXE_RETH
] = RXE_BTH_BYTES
746 [RXE_PAYLOAD
] = RXE_BTH_BYTES
752 [IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE
] = {
753 .name
= "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
754 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
755 | RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
756 | RXE_REQ_MASK
| RXE_WRITE_MASK
757 | RXE_COMP_MASK
| RXE_RWR_MASK
758 | RXE_START_MASK
| RXE_END_MASK
,
759 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_RETH_BYTES
760 + RXE_DETH_BYTES
+ RXE_RDETH_BYTES
,
763 [RXE_RDETH
] = RXE_BTH_BYTES
,
764 [RXE_DETH
] = RXE_BTH_BYTES
766 [RXE_RETH
] = RXE_BTH_BYTES
769 [RXE_IMMDT
] = RXE_BTH_BYTES
773 [RXE_PAYLOAD
] = RXE_BTH_BYTES
780 [IB_OPCODE_RD_RDMA_READ_REQUEST
] = {
781 .name
= "IB_OPCODE_RD_RDMA_READ_REQUEST",
782 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_RETH_MASK
783 | RXE_REQ_MASK
| RXE_READ_MASK
784 | RXE_START_MASK
| RXE_END_MASK
,
785 .length
= RXE_BTH_BYTES
+ RXE_RETH_BYTES
+ RXE_DETH_BYTES
789 [RXE_RDETH
] = RXE_BTH_BYTES
,
790 [RXE_DETH
] = RXE_BTH_BYTES
792 [RXE_RETH
] = RXE_BTH_BYTES
795 [RXE_PAYLOAD
] = RXE_BTH_BYTES
801 [IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST
] = {
802 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST",
803 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
804 | RXE_PAYLOAD_MASK
| RXE_ACK_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_MIDDLE
] = {
818 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE",
819 .mask
= RXE_RDETH_MASK
| RXE_PAYLOAD_MASK
| RXE_ACK_MASK
821 .length
= RXE_BTH_BYTES
+ RXE_RDETH_BYTES
,
824 [RXE_RDETH
] = RXE_BTH_BYTES
,
825 [RXE_PAYLOAD
] = RXE_BTH_BYTES
829 [IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST
] = {
830 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST",
831 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_PAYLOAD_MASK
832 | RXE_ACK_MASK
| RXE_END_MASK
,
833 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
+ RXE_RDETH_BYTES
,
836 [RXE_RDETH
] = RXE_BTH_BYTES
,
837 [RXE_AETH
] = RXE_BTH_BYTES
839 [RXE_PAYLOAD
] = RXE_BTH_BYTES
844 [IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY
] = {
845 .name
= "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY",
846 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_PAYLOAD_MASK
847 | RXE_ACK_MASK
| RXE_START_MASK
| RXE_END_MASK
,
848 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
+ RXE_RDETH_BYTES
,
851 [RXE_RDETH
] = RXE_BTH_BYTES
,
852 [RXE_AETH
] = RXE_BTH_BYTES
854 [RXE_PAYLOAD
] = RXE_BTH_BYTES
859 [IB_OPCODE_RD_ACKNOWLEDGE
] = {
860 .name
= "IB_OPCODE_RD_ACKNOWLEDGE",
861 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_ACK_MASK
862 | RXE_START_MASK
| RXE_END_MASK
,
863 .length
= RXE_BTH_BYTES
+ RXE_AETH_BYTES
+ RXE_RDETH_BYTES
,
866 [RXE_RDETH
] = RXE_BTH_BYTES
,
867 [RXE_AETH
] = RXE_BTH_BYTES
871 [IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE
] = {
872 .name
= "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE",
873 .mask
= RXE_RDETH_MASK
| RXE_AETH_MASK
| RXE_ATMACK_MASK
874 | RXE_ACK_MASK
| RXE_START_MASK
| RXE_END_MASK
,
875 .length
= RXE_BTH_BYTES
+ RXE_ATMACK_BYTES
+ RXE_AETH_BYTES
879 [RXE_RDETH
] = RXE_BTH_BYTES
,
880 [RXE_AETH
] = RXE_BTH_BYTES
882 [RXE_ATMACK
] = RXE_BTH_BYTES
887 [IB_OPCODE_RD_COMPARE_SWAP
] = {
888 .name
= "RD_COMPARE_SWAP",
889 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_ATMETH_MASK
890 | RXE_REQ_MASK
| RXE_ATOMIC_MASK
891 | RXE_START_MASK
| RXE_END_MASK
,
892 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
+ RXE_DETH_BYTES
896 [RXE_RDETH
] = RXE_BTH_BYTES
,
897 [RXE_DETH
] = RXE_BTH_BYTES
899 [RXE_ATMETH
] = RXE_BTH_BYTES
902 [RXE_PAYLOAD
] = RXE_BTH_BYTES
+
908 [IB_OPCODE_RD_FETCH_ADD
] = {
909 .name
= "IB_OPCODE_RD_FETCH_ADD",
910 .mask
= RXE_RDETH_MASK
| RXE_DETH_MASK
| RXE_ATMETH_MASK
911 | RXE_REQ_MASK
| RXE_ATOMIC_MASK
912 | RXE_START_MASK
| RXE_END_MASK
,
913 .length
= RXE_BTH_BYTES
+ RXE_ATMETH_BYTES
+ RXE_DETH_BYTES
917 [RXE_RDETH
] = RXE_BTH_BYTES
,
918 [RXE_DETH
] = RXE_BTH_BYTES
920 [RXE_ATMETH
] = RXE_BTH_BYTES
923 [RXE_PAYLOAD
] = RXE_BTH_BYTES
+
931 [IB_OPCODE_UD_SEND_ONLY
] = {
932 .name
= "IB_OPCODE_UD_SEND_ONLY",
933 .mask
= RXE_DETH_MASK
| RXE_PAYLOAD_MASK
| RXE_REQ_MASK
934 | RXE_COMP_MASK
| RXE_RWR_MASK
| RXE_SEND_MASK
935 | RXE_START_MASK
| RXE_END_MASK
,
936 .length
= RXE_BTH_BYTES
+ RXE_DETH_BYTES
,
939 [RXE_DETH
] = RXE_BTH_BYTES
,
940 [RXE_PAYLOAD
] = RXE_BTH_BYTES
944 [IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE
] = {
945 .name
= "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE",
946 .mask
= RXE_DETH_MASK
| RXE_IMMDT_MASK
| RXE_PAYLOAD_MASK
947 | RXE_REQ_MASK
| RXE_COMP_MASK
| RXE_RWR_MASK
948 | RXE_SEND_MASK
| RXE_START_MASK
| RXE_END_MASK
,
949 .length
= RXE_BTH_BYTES
+ RXE_IMMDT_BYTES
+ RXE_DETH_BYTES
,
952 [RXE_DETH
] = RXE_BTH_BYTES
,
953 [RXE_IMMDT
] = RXE_BTH_BYTES
955 [RXE_PAYLOAD
] = RXE_BTH_BYTES