WIP FPC-III support
[linux/fpc-iii.git] / drivers / infiniband / sw / rxe / rxe_opcode.c
blob0cb4b01fd9101e235bdb39052e5dc17c7b1ecd83
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 */
7 #include <rdma/ib_pack.h>
8 #include "rxe_opcode.h"
9 #include "rxe_hdr.h"
11 /* useful information about work request opcodes and pkt opcodes in
12 * table form
14 struct 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,
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,
29 [IB_WR_SEND] = {
30 .name = "IB_WR_SEND",
31 .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",
41 .mask = {
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,
49 [IB_WR_RDMA_READ] = {
50 .name = "IB_WR_RDMA_READ",
51 .mask = {
52 [IB_QPT_RC] = WR_READ_MASK,
55 [IB_WR_ATOMIC_CMP_AND_SWP] = {
56 .name = "IB_WR_ATOMIC_CMP_AND_SWP",
57 .mask = {
58 [IB_QPT_RC] = WR_ATOMIC_MASK,
61 [IB_WR_ATOMIC_FETCH_AND_ADD] = {
62 .name = "IB_WR_ATOMIC_FETCH_AND_ADD",
63 .mask = {
64 [IB_QPT_RC] = WR_ATOMIC_MASK,
67 [IB_WR_LSO] = {
68 .name = "IB_WR_LSO",
69 .mask = {
70 /* not supported */
73 [IB_WR_SEND_WITH_INV] = {
74 .name = "IB_WR_SEND_WITH_INV",
75 .mask = {
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",
83 .mask = {
84 [IB_QPT_RC] = WR_READ_MASK,
87 [IB_WR_LOCAL_INV] = {
88 .name = "IB_WR_LOCAL_INV",
89 .mask = {
90 [IB_QPT_RC] = WR_REG_MASK,
93 [IB_WR_REG_MR] = {
94 .name = "IB_WR_REG_MR",
95 .mask = {
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,
107 .offset = {
108 [RXE_BTH] = 0,
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
115 | RXE_MIDDLE_MASK,
116 .length = RXE_BTH_BYTES,
117 .offset = {
118 [RXE_BTH] = 0,
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,
127 .offset = {
128 [RXE_BTH] = 0,
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,
137 .offset = {
138 [RXE_BTH] = 0,
139 [RXE_IMMDT] = RXE_BTH_BYTES,
140 [RXE_PAYLOAD] = RXE_BTH_BYTES
141 + RXE_IMMDT_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,
150 .offset = {
151 [RXE_BTH] = 0,
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,
161 .offset = {
162 [RXE_BTH] = 0,
163 [RXE_IMMDT] = RXE_BTH_BYTES,
164 [RXE_PAYLOAD] = RXE_BTH_BYTES
165 + RXE_IMMDT_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,
173 .offset = {
174 [RXE_BTH] = 0,
175 [RXE_RETH] = RXE_BTH_BYTES,
176 [RXE_PAYLOAD] = RXE_BTH_BYTES
177 + RXE_RETH_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
183 | RXE_MIDDLE_MASK,
184 .length = RXE_BTH_BYTES,
185 .offset = {
186 [RXE_BTH] = 0,
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
193 | RXE_END_MASK,
194 .length = RXE_BTH_BYTES,
195 .offset = {
196 [RXE_BTH] = 0,
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
204 | RXE_END_MASK,
205 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
206 .offset = {
207 [RXE_BTH] = 0,
208 [RXE_IMMDT] = RXE_BTH_BYTES,
209 [RXE_PAYLOAD] = RXE_BTH_BYTES
210 + RXE_IMMDT_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
217 | RXE_END_MASK,
218 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
219 .offset = {
220 [RXE_BTH] = 0,
221 [RXE_RETH] = RXE_BTH_BYTES,
222 [RXE_PAYLOAD] = RXE_BTH_BYTES
223 + RXE_RETH_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,
233 .offset = {
234 [RXE_BTH] = 0,
235 [RXE_RETH] = RXE_BTH_BYTES,
236 [RXE_IMMDT] = RXE_BTH_BYTES
237 + RXE_RETH_BYTES,
238 [RXE_PAYLOAD] = RXE_BTH_BYTES
239 + RXE_RETH_BYTES
240 + RXE_IMMDT_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,
248 .offset = {
249 [RXE_BTH] = 0,
250 [RXE_RETH] = RXE_BTH_BYTES,
251 [RXE_PAYLOAD] = RXE_BTH_BYTES
252 + RXE_RETH_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
258 | RXE_START_MASK,
259 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
260 .offset = {
261 [RXE_BTH] = 0,
262 [RXE_AETH] = RXE_BTH_BYTES,
263 [RXE_PAYLOAD] = RXE_BTH_BYTES
264 + RXE_AETH_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,
271 .offset = {
272 [RXE_BTH] = 0,
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
279 | RXE_END_MASK,
280 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
281 .offset = {
282 [RXE_BTH] = 0,
283 [RXE_AETH] = RXE_BTH_BYTES,
284 [RXE_PAYLOAD] = RXE_BTH_BYTES
285 + RXE_AETH_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,
293 .offset = {
294 [RXE_BTH] = 0,
295 [RXE_AETH] = RXE_BTH_BYTES,
296 [RXE_PAYLOAD] = RXE_BTH_BYTES
297 + RXE_AETH_BYTES,
300 [IB_OPCODE_RC_ACKNOWLEDGE] = {
301 .name = "IB_OPCODE_RC_ACKNOWLEDGE",
302 .mask = RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK
303 | RXE_END_MASK,
304 .length = RXE_BTH_BYTES + RXE_AETH_BYTES,
305 .offset = {
306 [RXE_BTH] = 0,
307 [RXE_AETH] = RXE_BTH_BYTES,
308 [RXE_PAYLOAD] = RXE_BTH_BYTES
309 + RXE_AETH_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,
317 .offset = {
318 [RXE_BTH] = 0,
319 [RXE_AETH] = RXE_BTH_BYTES,
320 [RXE_ATMACK] = RXE_BTH_BYTES
321 + RXE_AETH_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,
331 .offset = {
332 [RXE_BTH] = 0,
333 [RXE_ATMETH] = RXE_BTH_BYTES,
334 [RXE_PAYLOAD] = RXE_BTH_BYTES
335 + RXE_ATMETH_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,
343 .offset = {
344 [RXE_BTH] = 0,
345 [RXE_ATMETH] = RXE_BTH_BYTES,
346 [RXE_PAYLOAD] = RXE_BTH_BYTES
347 + RXE_ATMETH_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,
355 .offset = {
356 [RXE_BTH] = 0,
357 [RXE_IETH] = RXE_BTH_BYTES,
358 [RXE_PAYLOAD] = RXE_BTH_BYTES
359 + RXE_IETH_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,
368 .offset = {
369 [RXE_BTH] = 0,
370 [RXE_IETH] = RXE_BTH_BYTES,
371 [RXE_PAYLOAD] = RXE_BTH_BYTES
372 + RXE_IETH_BYTES,
376 /* UC */
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,
382 .offset = {
383 [RXE_BTH] = 0,
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
390 | RXE_MIDDLE_MASK,
391 .length = RXE_BTH_BYTES,
392 .offset = {
393 [RXE_BTH] = 0,
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,
402 .offset = {
403 [RXE_BTH] = 0,
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,
412 .offset = {
413 [RXE_BTH] = 0,
414 [RXE_IMMDT] = RXE_BTH_BYTES,
415 [RXE_PAYLOAD] = RXE_BTH_BYTES
416 + RXE_IMMDT_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,
425 .offset = {
426 [RXE_BTH] = 0,
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,
436 .offset = {
437 [RXE_BTH] = 0,
438 [RXE_IMMDT] = RXE_BTH_BYTES,
439 [RXE_PAYLOAD] = RXE_BTH_BYTES
440 + RXE_IMMDT_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,
448 .offset = {
449 [RXE_BTH] = 0,
450 [RXE_RETH] = RXE_BTH_BYTES,
451 [RXE_PAYLOAD] = RXE_BTH_BYTES
452 + RXE_RETH_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
458 | RXE_MIDDLE_MASK,
459 .length = RXE_BTH_BYTES,
460 .offset = {
461 [RXE_BTH] = 0,
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
468 | RXE_END_MASK,
469 .length = RXE_BTH_BYTES,
470 .offset = {
471 [RXE_BTH] = 0,
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
479 | RXE_END_MASK,
480 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
481 .offset = {
482 [RXE_BTH] = 0,
483 [RXE_IMMDT] = RXE_BTH_BYTES,
484 [RXE_PAYLOAD] = RXE_BTH_BYTES
485 + RXE_IMMDT_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
492 | RXE_END_MASK,
493 .length = RXE_BTH_BYTES + RXE_RETH_BYTES,
494 .offset = {
495 [RXE_BTH] = 0,
496 [RXE_RETH] = RXE_BTH_BYTES,
497 [RXE_PAYLOAD] = RXE_BTH_BYTES
498 + RXE_RETH_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,
508 .offset = {
509 [RXE_BTH] = 0,
510 [RXE_RETH] = RXE_BTH_BYTES,
511 [RXE_IMMDT] = RXE_BTH_BYTES
512 + RXE_RETH_BYTES,
513 [RXE_PAYLOAD] = RXE_BTH_BYTES
514 + RXE_RETH_BYTES
515 + RXE_IMMDT_BYTES,
519 /* RD */
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
524 | RXE_START_MASK,
525 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
526 .offset = {
527 [RXE_BTH] = 0,
528 [RXE_RDETH] = RXE_BTH_BYTES,
529 [RXE_DETH] = RXE_BTH_BYTES
530 + RXE_RDETH_BYTES,
531 [RXE_PAYLOAD] = RXE_BTH_BYTES
532 + RXE_RDETH_BYTES
533 + RXE_DETH_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
540 | RXE_MIDDLE_MASK,
541 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
542 .offset = {
543 [RXE_BTH] = 0,
544 [RXE_RDETH] = RXE_BTH_BYTES,
545 [RXE_DETH] = RXE_BTH_BYTES
546 + RXE_RDETH_BYTES,
547 [RXE_PAYLOAD] = RXE_BTH_BYTES
548 + RXE_RDETH_BYTES
549 + RXE_DETH_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
556 | RXE_END_MASK,
557 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
558 .offset = {
559 [RXE_BTH] = 0,
560 [RXE_RDETH] = RXE_BTH_BYTES,
561 [RXE_DETH] = RXE_BTH_BYTES
562 + RXE_RDETH_BYTES,
563 [RXE_PAYLOAD] = RXE_BTH_BYTES
564 + RXE_RDETH_BYTES
565 + RXE_DETH_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
573 | RXE_END_MASK,
574 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
575 + RXE_RDETH_BYTES,
576 .offset = {
577 [RXE_BTH] = 0,
578 [RXE_RDETH] = RXE_BTH_BYTES,
579 [RXE_DETH] = RXE_BTH_BYTES
580 + RXE_RDETH_BYTES,
581 [RXE_IMMDT] = RXE_BTH_BYTES
582 + RXE_RDETH_BYTES
583 + RXE_DETH_BYTES,
584 [RXE_PAYLOAD] = RXE_BTH_BYTES
585 + RXE_RDETH_BYTES
586 + RXE_DETH_BYTES
587 + RXE_IMMDT_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,
596 .offset = {
597 [RXE_BTH] = 0,
598 [RXE_RDETH] = RXE_BTH_BYTES,
599 [RXE_DETH] = RXE_BTH_BYTES
600 + RXE_RDETH_BYTES,
601 [RXE_PAYLOAD] = RXE_BTH_BYTES
602 + RXE_RDETH_BYTES
603 + RXE_DETH_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
613 + RXE_RDETH_BYTES,
614 .offset = {
615 [RXE_BTH] = 0,
616 [RXE_RDETH] = RXE_BTH_BYTES,
617 [RXE_DETH] = RXE_BTH_BYTES
618 + RXE_RDETH_BYTES,
619 [RXE_IMMDT] = RXE_BTH_BYTES
620 + RXE_RDETH_BYTES
621 + RXE_DETH_BYTES,
622 [RXE_PAYLOAD] = RXE_BTH_BYTES
623 + RXE_RDETH_BYTES
624 + RXE_DETH_BYTES
625 + RXE_IMMDT_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
634 + RXE_RDETH_BYTES,
635 .offset = {
636 [RXE_BTH] = 0,
637 [RXE_RDETH] = RXE_BTH_BYTES,
638 [RXE_DETH] = RXE_BTH_BYTES
639 + RXE_RDETH_BYTES,
640 [RXE_RETH] = RXE_BTH_BYTES
641 + RXE_RDETH_BYTES
642 + RXE_DETH_BYTES,
643 [RXE_PAYLOAD] = RXE_BTH_BYTES
644 + RXE_RDETH_BYTES
645 + RXE_DETH_BYTES
646 + RXE_RETH_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
653 | RXE_MIDDLE_MASK,
654 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + 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_PAYLOAD] = RXE_BTH_BYTES
661 + RXE_RDETH_BYTES
662 + RXE_DETH_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
669 | RXE_END_MASK,
670 .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
671 .offset = {
672 [RXE_BTH] = 0,
673 [RXE_RDETH] = RXE_BTH_BYTES,
674 [RXE_DETH] = RXE_BTH_BYTES
675 + RXE_RDETH_BYTES,
676 [RXE_PAYLOAD] = RXE_BTH_BYTES
677 + RXE_RDETH_BYTES
678 + RXE_DETH_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
686 | RXE_END_MASK,
687 .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
688 + RXE_RDETH_BYTES,
689 .offset = {
690 [RXE_BTH] = 0,
691 [RXE_RDETH] = RXE_BTH_BYTES,
692 [RXE_DETH] = RXE_BTH_BYTES
693 + RXE_RDETH_BYTES,
694 [RXE_IMMDT] = RXE_BTH_BYTES
695 + RXE_RDETH_BYTES
696 + RXE_DETH_BYTES,
697 [RXE_PAYLOAD] = RXE_BTH_BYTES
698 + RXE_RDETH_BYTES
699 + RXE_DETH_BYTES
700 + RXE_IMMDT_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
708 | RXE_END_MASK,
709 .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
710 + RXE_RDETH_BYTES,
711 .offset = {
712 [RXE_BTH] = 0,
713 [RXE_RDETH] = RXE_BTH_BYTES,
714 [RXE_DETH] = RXE_BTH_BYTES
715 + RXE_RDETH_BYTES,
716 [RXE_RETH] = RXE_BTH_BYTES
717 + RXE_RDETH_BYTES
718 + RXE_DETH_BYTES,
719 [RXE_PAYLOAD] = RXE_BTH_BYTES
720 + RXE_RDETH_BYTES
721 + RXE_DETH_BYTES
722 + RXE_RETH_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,
734 .offset = {
735 [RXE_BTH] = 0,
736 [RXE_RDETH] = RXE_BTH_BYTES,
737 [RXE_DETH] = RXE_BTH_BYTES
738 + RXE_RDETH_BYTES,
739 [RXE_RETH] = RXE_BTH_BYTES
740 + RXE_RDETH_BYTES
741 + RXE_DETH_BYTES,
742 [RXE_IMMDT] = RXE_BTH_BYTES
743 + RXE_RDETH_BYTES
744 + RXE_DETH_BYTES
745 + RXE_RETH_BYTES,
746 [RXE_PAYLOAD] = RXE_BTH_BYTES
747 + RXE_RDETH_BYTES
748 + RXE_DETH_BYTES
749 + RXE_RETH_BYTES
750 + RXE_IMMDT_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
759 + RXE_RDETH_BYTES,
760 .offset = {
761 [RXE_BTH] = 0,
762 [RXE_RDETH] = RXE_BTH_BYTES,
763 [RXE_DETH] = RXE_BTH_BYTES
764 + RXE_RDETH_BYTES,
765 [RXE_RETH] = RXE_BTH_BYTES
766 + RXE_RDETH_BYTES
767 + RXE_DETH_BYTES,
768 [RXE_PAYLOAD] = RXE_BTH_BYTES
769 + RXE_RETH_BYTES
770 + RXE_DETH_BYTES
771 + RXE_RDETH_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
778 | RXE_START_MASK,
779 .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
780 .offset = {
781 [RXE_BTH] = 0,
782 [RXE_RDETH] = RXE_BTH_BYTES,
783 [RXE_AETH] = RXE_BTH_BYTES
784 + RXE_RDETH_BYTES,
785 [RXE_PAYLOAD] = RXE_BTH_BYTES
786 + RXE_RDETH_BYTES
787 + RXE_AETH_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
793 | RXE_MIDDLE_MASK,
794 .length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
795 .offset = {
796 [RXE_BTH] = 0,
797 [RXE_RDETH] = RXE_BTH_BYTES,
798 [RXE_PAYLOAD] = RXE_BTH_BYTES
799 + RXE_RDETH_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,
807 .offset = {
808 [RXE_BTH] = 0,
809 [RXE_RDETH] = RXE_BTH_BYTES,
810 [RXE_AETH] = RXE_BTH_BYTES
811 + RXE_RDETH_BYTES,
812 [RXE_PAYLOAD] = RXE_BTH_BYTES
813 + RXE_RDETH_BYTES
814 + RXE_AETH_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,
822 .offset = {
823 [RXE_BTH] = 0,
824 [RXE_RDETH] = RXE_BTH_BYTES,
825 [RXE_AETH] = RXE_BTH_BYTES
826 + RXE_RDETH_BYTES,
827 [RXE_PAYLOAD] = RXE_BTH_BYTES
828 + RXE_RDETH_BYTES
829 + RXE_AETH_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,
837 .offset = {
838 [RXE_BTH] = 0,
839 [RXE_RDETH] = RXE_BTH_BYTES,
840 [RXE_AETH] = RXE_BTH_BYTES
841 + RXE_RDETH_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
849 + RXE_RDETH_BYTES,
850 .offset = {
851 [RXE_BTH] = 0,
852 [RXE_RDETH] = RXE_BTH_BYTES,
853 [RXE_AETH] = RXE_BTH_BYTES
854 + RXE_RDETH_BYTES,
855 [RXE_ATMACK] = RXE_BTH_BYTES
856 + RXE_RDETH_BYTES
857 + RXE_AETH_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
866 + RXE_RDETH_BYTES,
867 .offset = {
868 [RXE_BTH] = 0,
869 [RXE_RDETH] = RXE_BTH_BYTES,
870 [RXE_DETH] = RXE_BTH_BYTES
871 + RXE_RDETH_BYTES,
872 [RXE_ATMETH] = RXE_BTH_BYTES
873 + RXE_RDETH_BYTES
874 + RXE_DETH_BYTES,
875 [RXE_PAYLOAD] = RXE_BTH_BYTES +
876 + RXE_ATMETH_BYTES
877 + RXE_DETH_BYTES +
878 + RXE_RDETH_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
887 + RXE_RDETH_BYTES,
888 .offset = {
889 [RXE_BTH] = 0,
890 [RXE_RDETH] = RXE_BTH_BYTES,
891 [RXE_DETH] = RXE_BTH_BYTES
892 + RXE_RDETH_BYTES,
893 [RXE_ATMETH] = RXE_BTH_BYTES
894 + RXE_RDETH_BYTES
895 + RXE_DETH_BYTES,
896 [RXE_PAYLOAD] = RXE_BTH_BYTES +
897 + RXE_ATMETH_BYTES
898 + RXE_DETH_BYTES +
899 + RXE_RDETH_BYTES,
903 /* UD */
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,
910 .offset = {
911 [RXE_BTH] = 0,
912 [RXE_DETH] = RXE_BTH_BYTES,
913 [RXE_PAYLOAD] = RXE_BTH_BYTES
914 + RXE_DETH_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,
923 .offset = {
924 [RXE_BTH] = 0,
925 [RXE_DETH] = RXE_BTH_BYTES,
926 [RXE_IMMDT] = RXE_BTH_BYTES
927 + RXE_DETH_BYTES,
928 [RXE_PAYLOAD] = RXE_BTH_BYTES
929 + RXE_DETH_BYTES
930 + RXE_IMMDT_BYTES,