GNU Linux-libre 6.8.7-gnu
[releases.git] / drivers / infiniband / sw / rxe / rxe_opcode.c
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 };