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 | */ |
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, |
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 | |
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, |
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 | |