1// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
2/*
3 * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
4 * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
5 */
6
7#include <rdma/ib_pack.h>
8#include "rxe_opcode.h"
9#include "rxe_hdr.h"
10
11/* useful information about work request opcodes and pkt opcodes in
12 * table form
13 */
14struct rxe_wr_opcode_info rxe_wr_opcode_info[] = {
15 [IB_WR_RDMA_WRITE] = {
16 .name = "IB_WR_RDMA_WRITE",
17 .mask = {
18 [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK,
19 [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_MASK,
20 },
21 },
22 [IB_WR_RDMA_WRITE_WITH_IMM] = {
23 .name = "IB_WR_RDMA_WRITE_WITH_IMM",
24 .mask = {
25 [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK,
26 [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_MASK,
27 },
28 },
29 [IB_WR_SEND] = {
30 .name = "IB_WR_SEND",
31 .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,
36 },
37 },
38 [IB_WR_SEND_WITH_IMM] = {
39 .name = "IB_WR_SEND_WITH_IMM",
40 .mask = {
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,
45 },
46 },
47 [IB_WR_RDMA_READ] = {
48 .name = "IB_WR_RDMA_READ",
49 .mask = {
50 [IB_QPT_RC] = WR_READ_MASK,
51 },
52 },
53 [IB_WR_ATOMIC_CMP_AND_SWP] = {
54 .name = "IB_WR_ATOMIC_CMP_AND_SWP",
55 .mask = {
56 [IB_QPT_RC] = WR_ATOMIC_MASK,
57 },
58 },
59 [IB_WR_ATOMIC_FETCH_AND_ADD] = {
60 .name = "IB_WR_ATOMIC_FETCH_AND_ADD",
61 .mask = {
62 [IB_QPT_RC] = WR_ATOMIC_MASK,
63 },
64 },
65 [IB_WR_LSO] = {
66 .name = "IB_WR_LSO",
67 .mask = {
68 /* not supported */
69 },
70 },
71 [IB_WR_SEND_WITH_INV] = {
72 .name = "IB_WR_SEND_WITH_INV",
73 .mask = {
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,
77 },
78 },
79 [IB_WR_RDMA_READ_WITH_INV] = {
80 .name = "IB_WR_RDMA_READ_WITH_INV",
81 .mask = {
82 [IB_QPT_RC] = WR_READ_MASK,
83 },
84 },
85 [IB_WR_LOCAL_INV] = {
86 .name = "IB_WR_LOCAL_INV",
87 .mask = {
88 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
89 },
90 },
91 [IB_WR_REG_MR] = {
92 .name = "IB_WR_REG_MR",
93 .mask = {
94 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
95 },
96 },
97 [IB_WR_BIND_MW] = {
98 .name = "IB_WR_BIND_MW",
99 .mask = {
100 [IB_QPT_RC] = WR_LOCAL_OP_MASK,
101 [IB_QPT_UC] = WR_LOCAL_OP_MASK,
102 },
103 },
104 [IB_WR_FLUSH] = {
105 .name = "IB_WR_FLUSH",
106 .mask = {
107 [IB_QPT_RC] = WR_FLUSH_MASK,
108 },
109 },
110 [IB_WR_ATOMIC_WRITE] = {
111 .name = "IB_WR_ATOMIC_WRITE",
112 .mask = {
113 [IB_QPT_RC] = WR_ATOMIC_WRITE_MASK,
114 },
115 },
116};
117
118struct 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,
124 .offset = {
125 [RXE_BTH] = 0,
126 [RXE_PAYLOAD] = RXE_BTH_BYTES,
127 }
128 },
129 [IB_OPCODE_RC_SEND_MIDDLE] = {
130 .name = "IB_OPCODE_RC_SEND_MIDDLE",
131 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
132 RXE_MIDDLE_MASK,
133 .length = RXE_BTH_BYTES,
134 .offset = {
135 [RXE_BTH] = 0,
136 [RXE_PAYLOAD] = RXE_BTH_BYTES,
137 }
138 },
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,
144 .offset = {
145 [RXE_BTH] = 0,
146 [RXE_PAYLOAD] = RXE_BTH_BYTES,
147 }
148 },
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,
154 .offset = {
155 [RXE_BTH] = 0,
156 [RXE_IMMDT] = RXE_BTH_BYTES,
157 [RXE_PAYLOAD] = RXE_BTH_BYTES +
158 RXE_IMMDT_BYTES,
159 }
160 },
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,
167 .offset = {
168 [RXE_BTH] = 0,
169 [RXE_PAYLOAD] = RXE_BTH_BYTES,
170 }
171 },
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,
178 .offset = {
179 [RXE_BTH] = 0,
180 [RXE_IMMDT] = RXE_BTH_BYTES,
181 [RXE_PAYLOAD] = RXE_BTH_BYTES +
182 RXE_IMMDT_BYTES,
183 }
184 },
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,
190 .offset = {
191 [RXE_BTH] = 0,
192 [RXE_RETH] = RXE_BTH_BYTES,
193 [RXE_PAYLOAD] = RXE_BTH_BYTES +
194 RXE_RETH_BYTES,
195 }
196 },
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 |
200 RXE_MIDDLE_MASK,
201 .length = RXE_BTH_BYTES,
202 .offset = {
203 [RXE_BTH] = 0,
204 [RXE_PAYLOAD] = RXE_BTH_BYTES,
205 }
206 },
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 |
210 RXE_END_MASK,
211 .length = RXE_BTH_BYTES,
212 .offset = {
213 [RXE_BTH] = 0,
214 [RXE_PAYLOAD] = RXE_BTH_BYTES,
215 }
216 },
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 |
221 RXE_END_MASK,
222 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
223 .offset = {
224 [RXE_BTH] = 0,
225 [RXE_IMMDT] = RXE_BTH_BYTES,
226 [RXE_PAYLOAD] = RXE_BTH_BYTES +
227 RXE_IMMDT_BYTES,
228 }
229 },
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 |
234 RXE_END_MASK,
235 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
236 .offset = {
237 [RXE_BTH] = 0,
238 [RXE_RETH] = RXE_BTH_BYTES,
239 [RXE_PAYLOAD] = RXE_BTH_BYTES +
240 RXE_RETH_BYTES,
241 }
242 },
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,
250 .offset = {
251 [RXE_BTH] = 0,
252 [RXE_RETH] = RXE_BTH_BYTES,
253 [RXE_IMMDT] = RXE_BTH_BYTES +
254 RXE_RETH_BYTES,
255 [RXE_PAYLOAD] = RXE_BTH_BYTES +
256 RXE_RETH_BYTES +
257 RXE_IMMDT_BYTES,
258 }
259 },
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,
265 .offset = {
266 [RXE_BTH] = 0,
267 [RXE_RETH] = RXE_BTH_BYTES,
268 [RXE_PAYLOAD] = RXE_BTH_BYTES +
269 RXE_RETH_BYTES,
270 }
271 },
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 |
275 RXE_START_MASK,
276 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
277 .offset = {
278 [RXE_BTH] = 0,
279 [RXE_AETH] = RXE_BTH_BYTES,
280 [RXE_PAYLOAD] = RXE_BTH_BYTES +
281 RXE_AETH_BYTES,
282 }
283 },
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,
288 .offset = {
289 [RXE_BTH] = 0,
290 [RXE_PAYLOAD] = RXE_BTH_BYTES,
291 }
292 },
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 |
296 RXE_END_MASK,
297 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
298 .offset = {
299 [RXE_BTH] = 0,
300 [RXE_AETH] = RXE_BTH_BYTES,
301 [RXE_PAYLOAD] = RXE_BTH_BYTES +
302 RXE_AETH_BYTES,
303 }
304 },
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,
310 .offset = {
311 [RXE_BTH] = 0,
312 [RXE_AETH] = RXE_BTH_BYTES,
313 [RXE_PAYLOAD] = RXE_BTH_BYTES +
314 RXE_AETH_BYTES,
315 }
316 },
317 [IB_OPCODE_RC_ACKNOWLEDGE] = {
318 .name = "IB_OPCODE_RC_ACKNOWLEDGE",
319 .mask = RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK |
320 RXE_END_MASK,
321 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
322 .offset = {
323 [RXE_BTH] = 0,
324 [RXE_AETH] = RXE_BTH_BYTES,
325 [RXE_PAYLOAD] = RXE_BTH_BYTES +
326 RXE_AETH_BYTES,
327 }
328 },
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,
334 .offset = {
335 [RXE_BTH] = 0,
336 [RXE_AETH] = RXE_BTH_BYTES,
337 [RXE_ATMACK] = RXE_BTH_BYTES +
338 RXE_AETH_BYTES,
339 [RXE_PAYLOAD] = RXE_BTH_BYTES +
340 RXE_ATMACK_BYTES +
341 RXE_AETH_BYTES,
342 }
343 },
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,
349 .offset = {
350 [RXE_BTH] = 0,
351 [RXE_ATMETH] = RXE_BTH_BYTES,
352 [RXE_PAYLOAD] = RXE_BTH_BYTES +
353 RXE_ATMETH_BYTES,
354 }
355 },
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,
361 .offset = {
362 [RXE_BTH] = 0,
363 [RXE_ATMETH] = RXE_BTH_BYTES,
364 [RXE_PAYLOAD] = RXE_BTH_BYTES +
365 RXE_ATMETH_BYTES,
366 }
367 },
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,
373 .offset = {
374 [RXE_BTH] = 0,
375 [RXE_IETH] = RXE_BTH_BYTES,
376 [RXE_PAYLOAD] = RXE_BTH_BYTES +
377 RXE_IETH_BYTES,
378 }
379 },
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,
386 .offset = {
387 [RXE_BTH] = 0,
388 [RXE_IETH] = RXE_BTH_BYTES,
389 [RXE_PAYLOAD] = RXE_BTH_BYTES +
390 RXE_IETH_BYTES,
391 }
392 },
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,
398 .offset = {
399 [RXE_BTH] = 0,
400 [RXE_FETH] = RXE_BTH_BYTES,
401 [RXE_RETH] = RXE_BTH_BYTES + RXE_FETH_BYTES,
402 }
403 },
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 |
408 RXE_END_MASK,
409 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
410 .offset = {
411 [RXE_BTH] = 0,
412 [RXE_RETH] = RXE_BTH_BYTES,
413 [RXE_PAYLOAD] = RXE_BTH_BYTES + RXE_RETH_BYTES,
414 }
415 },
416
417 /* UC */
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,
423 .offset = {
424 [RXE_BTH] = 0,
425 [RXE_PAYLOAD] = RXE_BTH_BYTES,
426 }
427 },
428 [IB_OPCODE_UC_SEND_MIDDLE] = {
429 .name = "IB_OPCODE_UC_SEND_MIDDLE",
430 .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
431 RXE_MIDDLE_MASK,
432 .length = RXE_BTH_BYTES,
433 .offset = {
434 [RXE_BTH] = 0,
435 [RXE_PAYLOAD] = RXE_BTH_BYTES,
436 }
437 },
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,
443 .offset = {
444 [RXE_BTH] = 0,
445 [RXE_PAYLOAD] = RXE_BTH_BYTES,
446 }
447 },
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,
453 .offset = {
454 [RXE_BTH] = 0,
455 [RXE_IMMDT] = RXE_BTH_BYTES,
456 [RXE_PAYLOAD] = RXE_BTH_BYTES +
457 RXE_IMMDT_BYTES,
458 }
459 },
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,
466 .offset = {
467 [RXE_BTH] = 0,
468 [RXE_PAYLOAD] = RXE_BTH_BYTES,
469 }
470 },
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,
477 .offset = {
478 [RXE_BTH] = 0,
479 [RXE_IMMDT] = RXE_BTH_BYTES,
480 [RXE_PAYLOAD] = RXE_BTH_BYTES +
481 RXE_IMMDT_BYTES,
482 }
483 },
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,
489 .offset = {
490 [RXE_BTH] = 0,
491 [RXE_RETH] = RXE_BTH_BYTES,
492 [RXE_PAYLOAD] = RXE_BTH_BYTES +
493 RXE_RETH_BYTES,
494 }
495 },
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 |
499 RXE_MIDDLE_MASK,
500 .length = RXE_BTH_BYTES,
501 .offset = {
502 [RXE_BTH] = 0,
503 [RXE_PAYLOAD] = RXE_BTH_BYTES,
504 }
505 },
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 |
509 RXE_END_MASK,
510 .length = RXE_BTH_BYTES,
511 .offset = {
512 [RXE_BTH] = 0,
513 [RXE_PAYLOAD] = RXE_BTH_BYTES,
514 }
515 },
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 |
520 RXE_END_MASK,
521 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
522 .offset = {
523 [RXE_BTH] = 0,
524 [RXE_IMMDT] = RXE_BTH_BYTES,
525 [RXE_PAYLOAD] = RXE_BTH_BYTES +
526 RXE_IMMDT_BYTES,
527 }
528 },
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 |
533 RXE_END_MASK,
534 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
535 .offset = {
536 [RXE_BTH] = 0,
537 [RXE_RETH] = RXE_BTH_BYTES,
538 [RXE_PAYLOAD] = RXE_BTH_BYTES +
539 RXE_RETH_BYTES,
540 }
541 },
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,
549 .offset = {
550 [RXE_BTH] = 0,
551 [RXE_RETH] = RXE_BTH_BYTES,
552 [RXE_IMMDT] = RXE_BTH_BYTES +
553 RXE_RETH_BYTES,
554 [RXE_PAYLOAD] = RXE_BTH_BYTES +
555 RXE_RETH_BYTES +
556 RXE_IMMDT_BYTES,
557 }
558 },
559
560 /* RD */
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 |
565 RXE_START_MASK,
566 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
567 .offset = {
568 [RXE_BTH] = 0,
569 [RXE_RDETH] = RXE_BTH_BYTES,
570 [RXE_DETH] = RXE_BTH_BYTES +
571 RXE_RDETH_BYTES,
572 [RXE_PAYLOAD] = RXE_BTH_BYTES +
573 RXE_RDETH_BYTES +
574 RXE_DETH_BYTES,
575 }
576 },
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 |
581 RXE_MIDDLE_MASK,
582 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
583 .offset = {
584 [RXE_BTH] = 0,
585 [RXE_RDETH] = RXE_BTH_BYTES,
586 [RXE_DETH] = RXE_BTH_BYTES +
587 RXE_RDETH_BYTES,
588 [RXE_PAYLOAD] = RXE_BTH_BYTES +
589 RXE_RDETH_BYTES +
590 RXE_DETH_BYTES,
591 }
592 },
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 |
597 RXE_END_MASK,
598 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
599 .offset = {
600 [RXE_BTH] = 0,
601 [RXE_RDETH] = RXE_BTH_BYTES,
602 [RXE_DETH] = RXE_BTH_BYTES +
603 RXE_RDETH_BYTES,
604 [RXE_PAYLOAD] = RXE_BTH_BYTES +
605 RXE_RDETH_BYTES +
606 RXE_DETH_BYTES,
607 }
608 },
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 |
614 RXE_END_MASK,
615 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
616 RXE_RDETH_BYTES,
617 .offset = {
618 [RXE_BTH] = 0,
619 [RXE_RDETH] = RXE_BTH_BYTES,
620 [RXE_DETH] = RXE_BTH_BYTES +
621 RXE_RDETH_BYTES,
622 [RXE_IMMDT] = RXE_BTH_BYTES +
623 RXE_RDETH_BYTES +
624 RXE_DETH_BYTES,
625 [RXE_PAYLOAD] = RXE_BTH_BYTES +
626 RXE_RDETH_BYTES +
627 RXE_DETH_BYTES +
628 RXE_IMMDT_BYTES,
629 }
630 },
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,
637 .offset = {
638 [RXE_BTH] = 0,
639 [RXE_RDETH] = RXE_BTH_BYTES,
640 [RXE_DETH] = RXE_BTH_BYTES +
641 RXE_RDETH_BYTES,
642 [RXE_PAYLOAD] = RXE_BTH_BYTES +
643 RXE_RDETH_BYTES +
644 RXE_DETH_BYTES,
645 }
646 },
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 +
654 RXE_RDETH_BYTES,
655 .offset = {
656 [RXE_BTH] = 0,
657 [RXE_RDETH] = RXE_BTH_BYTES,
658 [RXE_DETH] = RXE_BTH_BYTES +
659 RXE_RDETH_BYTES,
660 [RXE_IMMDT] = RXE_BTH_BYTES +
661 RXE_RDETH_BYTES +
662 RXE_DETH_BYTES,
663 [RXE_PAYLOAD] = RXE_BTH_BYTES +
664 RXE_RDETH_BYTES +
665 RXE_DETH_BYTES +
666 RXE_IMMDT_BYTES,
667 }
668 },
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 +
675 RXE_RDETH_BYTES,
676 .offset = {
677 [RXE_BTH] = 0,
678 [RXE_RDETH] = RXE_BTH_BYTES,
679 [RXE_DETH] = RXE_BTH_BYTES +
680 RXE_RDETH_BYTES,
681 [RXE_RETH] = RXE_BTH_BYTES +
682 RXE_RDETH_BYTES +
683 RXE_DETH_BYTES,
684 [RXE_PAYLOAD] = RXE_BTH_BYTES +
685 RXE_RDETH_BYTES +
686 RXE_DETH_BYTES +
687 RXE_RETH_BYTES,
688 }
689 },
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 |
694 RXE_MIDDLE_MASK,
695 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
696 .offset = {
697 [RXE_BTH] = 0,
698 [RXE_RDETH] = RXE_BTH_BYTES,
699 [RXE_DETH] = RXE_BTH_BYTES +
700 RXE_RDETH_BYTES,
701 [RXE_PAYLOAD] = RXE_BTH_BYTES +
702 RXE_RDETH_BYTES +
703 RXE_DETH_BYTES,
704 }
705 },
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 |
710 RXE_END_MASK,
711 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
712 .offset = {
713 [RXE_BTH] = 0,
714 [RXE_RDETH] = RXE_BTH_BYTES,
715 [RXE_DETH] = RXE_BTH_BYTES +
716 RXE_RDETH_BYTES,
717 [RXE_PAYLOAD] = RXE_BTH_BYTES +
718 RXE_RDETH_BYTES +
719 RXE_DETH_BYTES,
720 }
721 },
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 |
727 RXE_END_MASK,
728 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
729 RXE_RDETH_BYTES,
730 .offset = {
731 [RXE_BTH] = 0,
732 [RXE_RDETH] = RXE_BTH_BYTES,
733 [RXE_DETH] = RXE_BTH_BYTES +
734 RXE_RDETH_BYTES,
735 [RXE_IMMDT] = RXE_BTH_BYTES +
736 RXE_RDETH_BYTES +
737 RXE_DETH_BYTES,
738 [RXE_PAYLOAD] = RXE_BTH_BYTES +
739 RXE_RDETH_BYTES +
740 RXE_DETH_BYTES +
741 RXE_IMMDT_BYTES,
742 }
743 },
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 |
749 RXE_END_MASK,
750 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
751 RXE_RDETH_BYTES,
752 .offset = {
753 [RXE_BTH] = 0,
754 [RXE_RDETH] = RXE_BTH_BYTES,
755 [RXE_DETH] = RXE_BTH_BYTES +
756 RXE_RDETH_BYTES,
757 [RXE_RETH] = RXE_BTH_BYTES +
758 RXE_RDETH_BYTES +
759 RXE_DETH_BYTES,
760 [RXE_PAYLOAD] = RXE_BTH_BYTES +
761 RXE_RDETH_BYTES +
762 RXE_DETH_BYTES +
763 RXE_RETH_BYTES,
764 }
765 },
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,
775 .offset = {
776 [RXE_BTH] = 0,
777 [RXE_RDETH] = RXE_BTH_BYTES,
778 [RXE_DETH] = RXE_BTH_BYTES +
779 RXE_RDETH_BYTES,
780 [RXE_RETH] = RXE_BTH_BYTES +
781 RXE_RDETH_BYTES +
782 RXE_DETH_BYTES,
783 [RXE_IMMDT] = RXE_BTH_BYTES +
784 RXE_RDETH_BYTES +
785 RXE_DETH_BYTES +
786 RXE_RETH_BYTES,
787 [RXE_PAYLOAD] = RXE_BTH_BYTES +
788 RXE_RDETH_BYTES +
789 RXE_DETH_BYTES +
790 RXE_RETH_BYTES +
791 RXE_IMMDT_BYTES,
792 }
793 },
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 +
800 RXE_RDETH_BYTES,
801 .offset = {
802 [RXE_BTH] = 0,
803 [RXE_RDETH] = RXE_BTH_BYTES,
804 [RXE_DETH] = RXE_BTH_BYTES +
805 RXE_RDETH_BYTES,
806 [RXE_RETH] = RXE_BTH_BYTES +
807 RXE_RDETH_BYTES +
808 RXE_DETH_BYTES,
809 [RXE_PAYLOAD] = RXE_BTH_BYTES +
810 RXE_RETH_BYTES +
811 RXE_DETH_BYTES +
812 RXE_RDETH_BYTES,
813 }
814 },
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 |
819 RXE_START_MASK,
820 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
821 .offset = {
822 [RXE_BTH] = 0,
823 [RXE_RDETH] = RXE_BTH_BYTES,
824 [RXE_AETH] = RXE_BTH_BYTES +
825 RXE_RDETH_BYTES,
826 [RXE_PAYLOAD] = RXE_BTH_BYTES +
827 RXE_RDETH_BYTES +
828 RXE_AETH_BYTES,
829 }
830 },
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 |
834 RXE_MIDDLE_MASK,
835 .length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
836 .offset = {
837 [RXE_BTH] = 0,
838 [RXE_RDETH] = RXE_BTH_BYTES,
839 [RXE_PAYLOAD] = RXE_BTH_BYTES +
840 RXE_RDETH_BYTES,
841 }
842 },
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,
848 .offset = {
849 [RXE_BTH] = 0,
850 [RXE_RDETH] = RXE_BTH_BYTES,
851 [RXE_AETH] = RXE_BTH_BYTES +
852 RXE_RDETH_BYTES,
853 [RXE_PAYLOAD] = RXE_BTH_BYTES +
854 RXE_RDETH_BYTES +
855 RXE_AETH_BYTES,
856 }
857 },
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,
863 .offset = {
864 [RXE_BTH] = 0,
865 [RXE_RDETH] = RXE_BTH_BYTES,
866 [RXE_AETH] = RXE_BTH_BYTES +
867 RXE_RDETH_BYTES,
868 [RXE_PAYLOAD] = RXE_BTH_BYTES +
869 RXE_RDETH_BYTES +
870 RXE_AETH_BYTES,
871 }
872 },
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,
878 .offset = {
879 [RXE_BTH] = 0,
880 [RXE_RDETH] = RXE_BTH_BYTES,
881 [RXE_AETH] = RXE_BTH_BYTES +
882 RXE_RDETH_BYTES,
883 }
884 },
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 +
890 RXE_RDETH_BYTES,
891 .offset = {
892 [RXE_BTH] = 0,
893 [RXE_RDETH] = RXE_BTH_BYTES,
894 [RXE_AETH] = RXE_BTH_BYTES +
895 RXE_RDETH_BYTES,
896 [RXE_ATMACK] = RXE_BTH_BYTES +
897 RXE_RDETH_BYTES +
898 RXE_AETH_BYTES,
899 }
900 },
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 +
907 RXE_RDETH_BYTES,
908 .offset = {
909 [RXE_BTH] = 0,
910 [RXE_RDETH] = RXE_BTH_BYTES,
911 [RXE_DETH] = RXE_BTH_BYTES +
912 RXE_RDETH_BYTES,
913 [RXE_ATMETH] = RXE_BTH_BYTES +
914 RXE_RDETH_BYTES +
915 RXE_DETH_BYTES,
916 [RXE_PAYLOAD] = RXE_BTH_BYTES +
917 RXE_ATMETH_BYTES +
918 RXE_DETH_BYTES +
919 RXE_RDETH_BYTES,
920 }
921 },
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 +
928 RXE_RDETH_BYTES,
929 .offset = {
930 [RXE_BTH] = 0,
931 [RXE_RDETH] = RXE_BTH_BYTES,
932 [RXE_DETH] = RXE_BTH_BYTES +
933 RXE_RDETH_BYTES,
934 [RXE_ATMETH] = RXE_BTH_BYTES +
935 RXE_RDETH_BYTES +
936 RXE_DETH_BYTES,
937 [RXE_PAYLOAD] = RXE_BTH_BYTES +
938 RXE_ATMETH_BYTES +
939 RXE_DETH_BYTES +
940 RXE_RDETH_BYTES,
941 }
942 },
943
944 /* UD */
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,
951 .offset = {
952 [RXE_BTH] = 0,
953 [RXE_DETH] = RXE_BTH_BYTES,
954 [RXE_PAYLOAD] = RXE_BTH_BYTES +
955 RXE_DETH_BYTES,
956 }
957 },
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,
964 .offset = {
965 [RXE_BTH] = 0,
966 [RXE_DETH] = RXE_BTH_BYTES,
967 [RXE_IMMDT] = RXE_BTH_BYTES +
968 RXE_DETH_BYTES,
969 [RXE_PAYLOAD] = RXE_BTH_BYTES +
970 RXE_DETH_BYTES +
971 RXE_IMMDT_BYTES,
972 }
973 },
974
975};
976

source code of linux/drivers/infiniband/sw/rxe/rxe_opcode.c