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_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,
38 [IB_WR_SEND_WITH_IMM] = {
39 .name = "IB_WR_SEND_WITH_IMM",
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,
48 .name = "IB_WR_RDMA_READ",
50 [IB_QPT_RC] = WR_READ_MASK,
53 [IB_WR_ATOMIC_CMP_AND_SWP] = {
54 .name = "IB_WR_ATOMIC_CMP_AND_SWP",
56 [IB_QPT_RC] = WR_ATOMIC_MASK,
59 [IB_WR_ATOMIC_FETCH_AND_ADD] = {
60 .name = "IB_WR_ATOMIC_FETCH_AND_ADD",
62 [IB_QPT_RC] = WR_ATOMIC_MASK,
71 [IB_WR_SEND_WITH_INV] = {
72 .name = "IB_WR_SEND_WITH_INV",
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,
79 [IB_WR_RDMA_READ_WITH_INV] = {
80 .name = "IB_WR_RDMA_READ_WITH_INV",
82 [IB_QPT_RC] = WR_READ_MASK,
86 .name = "IB_WR_LOCAL_INV",
88 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
92 .name = "IB_WR_REG_MR",
94 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
98 .name = "IB_WR_BIND_MW",
100 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
101 [IB_QPT_UC] = WR_LOCAL_OP_MASK,
105 .name = "IB_WR_FLUSH",
107 [IB_QPT_RC] = WR_FLUSH_MASK,
110 [IB_WR_ATOMIC_WRITE] = {
111 .name = "IB_WR_ATOMIC_WRITE",
113 [IB_QPT_RC] = WR_ATOMIC_WRITE_MASK,
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,
126 [RXE_PAYLOAD] = RXE_BTH_BYTES,
129 [IB_OPCODE_RC_SEND_MIDDLE] = {
130 .name = "IB_OPCODE_RC_SEND_MIDDLE",
131 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
133 .length = RXE_BTH_BYTES,
136 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
146 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
156 [RXE_IMMDT] = RXE_BTH_BYTES,
157 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
169 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
180 [RXE_IMMDT] = RXE_BTH_BYTES,
181 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
192 [RXE_RETH] = RXE_BTH_BYTES,
193 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
201 .length = RXE_BTH_BYTES,
204 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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 |
211 .length = RXE_BTH_BYTES,
214 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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 |
222 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
225 [RXE_IMMDT] = RXE_BTH_BYTES,
226 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
235 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
238 [RXE_RETH] = RXE_BTH_BYTES,
239 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
252 [RXE_RETH] = RXE_BTH_BYTES,
253 [RXE_IMMDT] = RXE_BTH_BYTES +
255 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
267 [RXE_RETH] = RXE_BTH_BYTES,
268 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
276 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
279 [RXE_AETH] = RXE_BTH_BYTES,
280 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
290 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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 |
297 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
300 [RXE_AETH] = RXE_BTH_BYTES,
301 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
312 [RXE_AETH] = RXE_BTH_BYTES,
313 [RXE_PAYLOAD] = RXE_BTH_BYTES +
317 [IB_OPCODE_RC_ACKNOWLEDGE] = {
318 .name = "IB_OPCODE_RC_ACKNOWLEDGE",
319 .mask = RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK |
321 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
324 [RXE_AETH] = RXE_BTH_BYTES,
325 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
336 [RXE_AETH] = RXE_BTH_BYTES,
337 [RXE_ATMACK] = RXE_BTH_BYTES +
339 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
351 [RXE_ATMETH] = RXE_BTH_BYTES,
352 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
363 [RXE_ATMETH] = RXE_BTH_BYTES,
364 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
375 [RXE_IETH] = RXE_BTH_BYTES,
376 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
388 [RXE_IETH] = RXE_BTH_BYTES,
389 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
400 [RXE_FETH] = RXE_BTH_BYTES,
401 [RXE_RETH] = RXE_BTH_BYTES + RXE_FETH_BYTES,
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 |
409 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
412 [RXE_RETH] = RXE_BTH_BYTES,
413 [RXE_PAYLOAD] = RXE_BTH_BYTES + RXE_RETH_BYTES,
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,
425 [RXE_PAYLOAD] = RXE_BTH_BYTES,
428 [IB_OPCODE_UC_SEND_MIDDLE] = {
429 .name = "IB_OPCODE_UC_SEND_MIDDLE",
430 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
432 .length = RXE_BTH_BYTES,
435 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
445 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
455 [RXE_IMMDT] = RXE_BTH_BYTES,
456 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
468 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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,
479 [RXE_IMMDT] = RXE_BTH_BYTES,
480 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
491 [RXE_RETH] = RXE_BTH_BYTES,
492 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
500 .length = RXE_BTH_BYTES,
503 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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 |
510 .length = RXE_BTH_BYTES,
513 [RXE_PAYLOAD] = RXE_BTH_BYTES,
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 |
521 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
524 [RXE_IMMDT] = RXE_BTH_BYTES,
525 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
534 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
537 [RXE_RETH] = RXE_BTH_BYTES,
538 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
551 [RXE_RETH] = RXE_BTH_BYTES,
552 [RXE_IMMDT] = RXE_BTH_BYTES +
554 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
566 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
569 [RXE_RDETH] = RXE_BTH_BYTES,
570 [RXE_DETH] = RXE_BTH_BYTES +
572 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
582 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
585 [RXE_RDETH] = RXE_BTH_BYTES,
586 [RXE_DETH] = RXE_BTH_BYTES +
588 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
598 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
601 [RXE_RDETH] = RXE_BTH_BYTES,
602 [RXE_DETH] = RXE_BTH_BYTES +
604 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
615 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
619 [RXE_RDETH] = RXE_BTH_BYTES,
620 [RXE_DETH] = RXE_BTH_BYTES +
622 [RXE_IMMDT] = RXE_BTH_BYTES +
625 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
639 [RXE_RDETH] = RXE_BTH_BYTES,
640 [RXE_DETH] = RXE_BTH_BYTES +
642 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 +
657 [RXE_RDETH] = RXE_BTH_BYTES,
658 [RXE_DETH] = RXE_BTH_BYTES +
660 [RXE_IMMDT] = RXE_BTH_BYTES +
663 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 +
678 [RXE_RDETH] = RXE_BTH_BYTES,
679 [RXE_DETH] = RXE_BTH_BYTES +
681 [RXE_RETH] = RXE_BTH_BYTES +
684 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
695 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
698 [RXE_RDETH] = RXE_BTH_BYTES,
699 [RXE_DETH] = RXE_BTH_BYTES +
701 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
711 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
714 [RXE_RDETH] = RXE_BTH_BYTES,
715 [RXE_DETH] = RXE_BTH_BYTES +
717 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
728 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
732 [RXE_RDETH] = RXE_BTH_BYTES,
733 [RXE_DETH] = RXE_BTH_BYTES +
735 [RXE_IMMDT] = RXE_BTH_BYTES +
738 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
750 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
754 [RXE_RDETH] = RXE_BTH_BYTES,
755 [RXE_DETH] = RXE_BTH_BYTES +
757 [RXE_RETH] = RXE_BTH_BYTES +
760 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
777 [RXE_RDETH] = RXE_BTH_BYTES,
778 [RXE_DETH] = RXE_BTH_BYTES +
780 [RXE_RETH] = RXE_BTH_BYTES +
783 [RXE_IMMDT] = RXE_BTH_BYTES +
787 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 +
803 [RXE_RDETH] = RXE_BTH_BYTES,
804 [RXE_DETH] = RXE_BTH_BYTES +
806 [RXE_RETH] = RXE_BTH_BYTES +
809 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
820 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
823 [RXE_RDETH] = RXE_BTH_BYTES,
824 [RXE_AETH] = RXE_BTH_BYTES +
826 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 |
835 .length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
838 [RXE_RDETH] = RXE_BTH_BYTES,
839 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
850 [RXE_RDETH] = RXE_BTH_BYTES,
851 [RXE_AETH] = RXE_BTH_BYTES +
853 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
865 [RXE_RDETH] = RXE_BTH_BYTES,
866 [RXE_AETH] = RXE_BTH_BYTES +
868 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
880 [RXE_RDETH] = RXE_BTH_BYTES,
881 [RXE_AETH] = RXE_BTH_BYTES +
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 +
893 [RXE_RDETH] = RXE_BTH_BYTES,
894 [RXE_AETH] = RXE_BTH_BYTES +
896 [RXE_ATMACK] = RXE_BTH_BYTES +
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 +
910 [RXE_RDETH] = RXE_BTH_BYTES,
911 [RXE_DETH] = RXE_BTH_BYTES +
913 [RXE_ATMETH] = RXE_BTH_BYTES +
916 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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 +
931 [RXE_RDETH] = RXE_BTH_BYTES,
932 [RXE_DETH] = RXE_BTH_BYTES +
934 [RXE_ATMETH] = RXE_BTH_BYTES +
937 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
953 [RXE_DETH] = RXE_BTH_BYTES,
954 [RXE_PAYLOAD] = RXE_BTH_BYTES +
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,
966 [RXE_DETH] = RXE_BTH_BYTES,
967 [RXE_IMMDT] = RXE_BTH_BYTES +
969 [RXE_PAYLOAD] = RXE_BTH_BYTES +