xref: /openbmc/linux/drivers/infiniband/sw/rxe/rxe_opcode.c (revision 8700e3e7c4857d28ebaa824509934556da0b3e76)
1*8700e3e7SMoni Shoua /*
2*8700e3e7SMoni Shoua  * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
3*8700e3e7SMoni Shoua  * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
4*8700e3e7SMoni Shoua  *
5*8700e3e7SMoni Shoua  * This software is available to you under a choice of one of two
6*8700e3e7SMoni Shoua  * licenses.  You may choose to be licensed under the terms of the GNU
7*8700e3e7SMoni Shoua  * General Public License (GPL) Version 2, available from the file
8*8700e3e7SMoni Shoua  * COPYING in the main directory of this source tree, or the
9*8700e3e7SMoni Shoua  * OpenIB.org BSD license below:
10*8700e3e7SMoni Shoua  *
11*8700e3e7SMoni Shoua  *     Redistribution and use in source and binary forms, with or
12*8700e3e7SMoni Shoua  *     without modification, are permitted provided that the following
13*8700e3e7SMoni Shoua  *     conditions are met:
14*8700e3e7SMoni Shoua  *
15*8700e3e7SMoni Shoua  *	- Redistributions of source code must retain the above
16*8700e3e7SMoni Shoua  *	  copyright notice, this list of conditions and the following
17*8700e3e7SMoni Shoua  *	  disclaimer.
18*8700e3e7SMoni Shoua  *
19*8700e3e7SMoni Shoua  *	- Redistributions in binary form must reproduce the above
20*8700e3e7SMoni Shoua  *	  copyright notice, this list of conditions and the following
21*8700e3e7SMoni Shoua  *	  disclaimer in the documentation and/or other materials
22*8700e3e7SMoni Shoua  *	  provided with the distribution.
23*8700e3e7SMoni Shoua  *
24*8700e3e7SMoni Shoua  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25*8700e3e7SMoni Shoua  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26*8700e3e7SMoni Shoua  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27*8700e3e7SMoni Shoua  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
28*8700e3e7SMoni Shoua  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
29*8700e3e7SMoni Shoua  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
30*8700e3e7SMoni Shoua  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31*8700e3e7SMoni Shoua  * SOFTWARE.
32*8700e3e7SMoni Shoua  */
33*8700e3e7SMoni Shoua 
34*8700e3e7SMoni Shoua #include <rdma/ib_pack.h>
35*8700e3e7SMoni Shoua #include "rxe_opcode.h"
36*8700e3e7SMoni Shoua #include "rxe_hdr.h"
37*8700e3e7SMoni Shoua 
38*8700e3e7SMoni Shoua /* useful information about work request opcodes and pkt opcodes in
39*8700e3e7SMoni Shoua  * table form
40*8700e3e7SMoni Shoua  */
41*8700e3e7SMoni Shoua struct rxe_wr_opcode_info rxe_wr_opcode_info[] = {
42*8700e3e7SMoni Shoua 	[IB_WR_RDMA_WRITE]				= {
43*8700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_WRITE",
44*8700e3e7SMoni Shoua 		.mask	= {
45*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_WRITE_MASK,
46*8700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_WRITE_MASK,
47*8700e3e7SMoni Shoua 		},
48*8700e3e7SMoni Shoua 	},
49*8700e3e7SMoni Shoua 	[IB_WR_RDMA_WRITE_WITH_IMM]			= {
50*8700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_WRITE_WITH_IMM",
51*8700e3e7SMoni Shoua 		.mask	= {
52*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_WRITE_MASK,
53*8700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_WRITE_MASK,
54*8700e3e7SMoni Shoua 		},
55*8700e3e7SMoni Shoua 	},
56*8700e3e7SMoni Shoua 	[IB_WR_SEND]					= {
57*8700e3e7SMoni Shoua 		.name	= "IB_WR_SEND",
58*8700e3e7SMoni Shoua 		.mask	= {
59*8700e3e7SMoni Shoua 			[IB_QPT_SMI]	= WR_INLINE_MASK | WR_SEND_MASK,
60*8700e3e7SMoni Shoua 			[IB_QPT_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
61*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
62*8700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
63*8700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
64*8700e3e7SMoni Shoua 		},
65*8700e3e7SMoni Shoua 	},
66*8700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_IMM]				= {
67*8700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_IMM",
68*8700e3e7SMoni Shoua 		.mask	= {
69*8700e3e7SMoni Shoua 			[IB_QPT_SMI]	= WR_INLINE_MASK | WR_SEND_MASK,
70*8700e3e7SMoni Shoua 			[IB_QPT_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
71*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
72*8700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
73*8700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
74*8700e3e7SMoni Shoua 		},
75*8700e3e7SMoni Shoua 	},
76*8700e3e7SMoni Shoua 	[IB_WR_RDMA_READ]				= {
77*8700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ",
78*8700e3e7SMoni Shoua 		.mask	= {
79*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
80*8700e3e7SMoni Shoua 		},
81*8700e3e7SMoni Shoua 	},
82*8700e3e7SMoni Shoua 	[IB_WR_ATOMIC_CMP_AND_SWP]			= {
83*8700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_CMP_AND_SWP",
84*8700e3e7SMoni Shoua 		.mask	= {
85*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
86*8700e3e7SMoni Shoua 		},
87*8700e3e7SMoni Shoua 	},
88*8700e3e7SMoni Shoua 	[IB_WR_ATOMIC_FETCH_AND_ADD]			= {
89*8700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_FETCH_AND_ADD",
90*8700e3e7SMoni Shoua 		.mask	= {
91*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
92*8700e3e7SMoni Shoua 		},
93*8700e3e7SMoni Shoua 	},
94*8700e3e7SMoni Shoua 	[IB_WR_LSO]					= {
95*8700e3e7SMoni Shoua 		.name	= "IB_WR_LSO",
96*8700e3e7SMoni Shoua 		.mask	= {
97*8700e3e7SMoni Shoua 			/* not supported */
98*8700e3e7SMoni Shoua 		},
99*8700e3e7SMoni Shoua 	},
100*8700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_INV]				= {
101*8700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_INV",
102*8700e3e7SMoni Shoua 		.mask	= {
103*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
104*8700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
105*8700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
106*8700e3e7SMoni Shoua 		},
107*8700e3e7SMoni Shoua 	},
108*8700e3e7SMoni Shoua 	[IB_WR_RDMA_READ_WITH_INV]			= {
109*8700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ_WITH_INV",
110*8700e3e7SMoni Shoua 		.mask	= {
111*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
112*8700e3e7SMoni Shoua 		},
113*8700e3e7SMoni Shoua 	},
114*8700e3e7SMoni Shoua 	[IB_WR_LOCAL_INV]				= {
115*8700e3e7SMoni Shoua 		.name	= "IB_WR_LOCAL_INV",
116*8700e3e7SMoni Shoua 		.mask	= {
117*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_REG_MASK,
118*8700e3e7SMoni Shoua 		},
119*8700e3e7SMoni Shoua 	},
120*8700e3e7SMoni Shoua 	[IB_WR_REG_MR]					= {
121*8700e3e7SMoni Shoua 		.name	= "IB_WR_REG_MR",
122*8700e3e7SMoni Shoua 		.mask	= {
123*8700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_REG_MASK,
124*8700e3e7SMoni Shoua 		},
125*8700e3e7SMoni Shoua 	},
126*8700e3e7SMoni Shoua };
127*8700e3e7SMoni Shoua 
128*8700e3e7SMoni Shoua struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = {
129*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_FIRST]			= {
130*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_FIRST",
131*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK
132*8700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK,
133*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
134*8700e3e7SMoni Shoua 		.offset = {
135*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
136*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
137*8700e3e7SMoni Shoua 		}
138*8700e3e7SMoni Shoua 	},
139*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_MIDDLE]		= {
140*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_MIDDLE]",
141*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK
142*8700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
143*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
144*8700e3e7SMoni Shoua 		.offset = {
145*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
146*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
147*8700e3e7SMoni Shoua 		}
148*8700e3e7SMoni Shoua 	},
149*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST]			= {
150*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST",
151*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
152*8700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_END_MASK,
153*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
154*8700e3e7SMoni Shoua 		.offset = {
155*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
156*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
157*8700e3e7SMoni Shoua 		}
158*8700e3e7SMoni Shoua 	},
159*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE]		= {
160*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE",
161*8700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
162*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
163*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
164*8700e3e7SMoni Shoua 		.offset = {
165*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
166*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
167*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
168*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
169*8700e3e7SMoni Shoua 		}
170*8700e3e7SMoni Shoua 	},
171*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY]			= {
172*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY",
173*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
174*8700e3e7SMoni Shoua 				| RXE_RWR_MASK | RXE_SEND_MASK
175*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
176*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
177*8700e3e7SMoni Shoua 		.offset = {
178*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
179*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
180*8700e3e7SMoni Shoua 		}
181*8700e3e7SMoni Shoua 	},
182*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE]		= {
183*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE",
184*8700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
185*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
186*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
187*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
188*8700e3e7SMoni Shoua 		.offset = {
189*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
190*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
191*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
192*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
193*8700e3e7SMoni Shoua 		}
194*8700e3e7SMoni Shoua 	},
195*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_FIRST]		= {
196*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_FIRST",
197*8700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
198*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK,
199*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
200*8700e3e7SMoni Shoua 		.offset = {
201*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
202*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
203*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
204*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
205*8700e3e7SMoni Shoua 		}
206*8700e3e7SMoni Shoua 	},
207*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_MIDDLE]		= {
208*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_MIDDLE",
209*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
210*8700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
211*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
212*8700e3e7SMoni Shoua 		.offset = {
213*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
214*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
215*8700e3e7SMoni Shoua 		}
216*8700e3e7SMoni Shoua 	},
217*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST]			= {
218*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST",
219*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
220*8700e3e7SMoni Shoua 				| RXE_END_MASK,
221*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
222*8700e3e7SMoni Shoua 		.offset = {
223*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
224*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
225*8700e3e7SMoni Shoua 		}
226*8700e3e7SMoni Shoua 	},
227*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
228*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
229*8700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
230*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK
231*8700e3e7SMoni Shoua 				| RXE_END_MASK,
232*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
233*8700e3e7SMoni Shoua 		.offset = {
234*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
235*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
236*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
237*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
238*8700e3e7SMoni Shoua 		}
239*8700e3e7SMoni Shoua 	},
240*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY]			= {
241*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY",
242*8700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
243*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK
244*8700e3e7SMoni Shoua 				| RXE_END_MASK,
245*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
246*8700e3e7SMoni Shoua 		.offset = {
247*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
248*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
249*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
250*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
251*8700e3e7SMoni Shoua 		}
252*8700e3e7SMoni Shoua 	},
253*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
254*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
255*8700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
256*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
257*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK
258*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
259*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
260*8700e3e7SMoni Shoua 		.offset = {
261*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
262*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
263*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
264*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
265*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
266*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
267*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
268*8700e3e7SMoni Shoua 		}
269*8700e3e7SMoni Shoua 	},
270*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_REQUEST]			= {
271*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_REQUEST",
272*8700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_REQ_MASK | RXE_READ_MASK
273*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
274*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
275*8700e3e7SMoni Shoua 		.offset = {
276*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
277*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
278*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
279*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
280*8700e3e7SMoni Shoua 		}
281*8700e3e7SMoni Shoua 	},
282*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST]		= {
283*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST",
284*8700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
285*8700e3e7SMoni Shoua 				| RXE_START_MASK,
286*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
287*8700e3e7SMoni Shoua 		.offset = {
288*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
289*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
290*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
291*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
292*8700e3e7SMoni Shoua 		}
293*8700e3e7SMoni Shoua 	},
294*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE]		= {
295*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE",
296*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_ACK_MASK | RXE_MIDDLE_MASK,
297*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
298*8700e3e7SMoni Shoua 		.offset = {
299*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
300*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
301*8700e3e7SMoni Shoua 		}
302*8700e3e7SMoni Shoua 	},
303*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST]		= {
304*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST",
305*8700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
306*8700e3e7SMoni Shoua 				| RXE_END_MASK,
307*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
308*8700e3e7SMoni Shoua 		.offset = {
309*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
310*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
311*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
312*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
313*8700e3e7SMoni Shoua 		}
314*8700e3e7SMoni Shoua 	},
315*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY]		= {
316*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY",
317*8700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
318*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
319*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
320*8700e3e7SMoni Shoua 		.offset = {
321*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
322*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
323*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
324*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
325*8700e3e7SMoni Shoua 		}
326*8700e3e7SMoni Shoua 	},
327*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_ACKNOWLEDGE]			= {
328*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ACKNOWLEDGE",
329*8700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK
330*8700e3e7SMoni Shoua 				| RXE_END_MASK,
331*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
332*8700e3e7SMoni Shoua 		.offset = {
333*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
334*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
335*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
336*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
337*8700e3e7SMoni Shoua 		}
338*8700e3e7SMoni Shoua 	},
339*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE]			= {
340*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE",
341*8700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_ATMACK_MASK | RXE_ACK_MASK
342*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
343*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES,
344*8700e3e7SMoni Shoua 		.offset = {
345*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
346*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
347*8700e3e7SMoni Shoua 			[RXE_ATMACK]	= RXE_BTH_BYTES
348*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
349*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
350*8700e3e7SMoni Shoua 					+ RXE_ATMACK_BYTES + RXE_AETH_BYTES,
351*8700e3e7SMoni Shoua 		}
352*8700e3e7SMoni Shoua 	},
353*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_COMPARE_SWAP]			= {
354*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_COMPARE_SWAP",
355*8700e3e7SMoni Shoua 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK
356*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
357*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
358*8700e3e7SMoni Shoua 		.offset = {
359*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
360*8700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
361*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
362*8700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES,
363*8700e3e7SMoni Shoua 		}
364*8700e3e7SMoni Shoua 	},
365*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_FETCH_ADD]			= {
366*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_FETCH_ADD",
367*8700e3e7SMoni Shoua 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK
368*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
369*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
370*8700e3e7SMoni Shoua 		.offset = {
371*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
372*8700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
373*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
374*8700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES,
375*8700e3e7SMoni Shoua 		}
376*8700e3e7SMoni Shoua 	},
377*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE]		= {
378*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE",
379*8700e3e7SMoni Shoua 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
380*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
381*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
382*8700e3e7SMoni Shoua 		.offset = {
383*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
384*8700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
385*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
386*8700e3e7SMoni Shoua 						+ RXE_IETH_BYTES,
387*8700e3e7SMoni Shoua 		}
388*8700e3e7SMoni Shoua 	},
389*8700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE]		= {
390*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_INV",
391*8700e3e7SMoni Shoua 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
392*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
393*8700e3e7SMoni Shoua 				| RXE_END_MASK,
394*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
395*8700e3e7SMoni Shoua 		.offset = {
396*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
397*8700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
398*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
399*8700e3e7SMoni Shoua 						+ RXE_IETH_BYTES,
400*8700e3e7SMoni Shoua 		}
401*8700e3e7SMoni Shoua 	},
402*8700e3e7SMoni Shoua 
403*8700e3e7SMoni Shoua 	/* UC */
404*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_FIRST]			= {
405*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_FIRST",
406*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK
407*8700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK,
408*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
409*8700e3e7SMoni Shoua 		.offset = {
410*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
411*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
412*8700e3e7SMoni Shoua 		}
413*8700e3e7SMoni Shoua 	},
414*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_MIDDLE]		= {
415*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_MIDDLE",
416*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK
417*8700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
418*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
419*8700e3e7SMoni Shoua 		.offset = {
420*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
421*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
422*8700e3e7SMoni Shoua 		}
423*8700e3e7SMoni Shoua 	},
424*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST]			= {
425*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST",
426*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
427*8700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_END_MASK,
428*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
429*8700e3e7SMoni Shoua 		.offset = {
430*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
431*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
432*8700e3e7SMoni Shoua 		}
433*8700e3e7SMoni Shoua 	},
434*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE]		= {
435*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE",
436*8700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
437*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
438*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
439*8700e3e7SMoni Shoua 		.offset = {
440*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
441*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
442*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
443*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
444*8700e3e7SMoni Shoua 		}
445*8700e3e7SMoni Shoua 	},
446*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY]			= {
447*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY",
448*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
449*8700e3e7SMoni Shoua 				| RXE_RWR_MASK | RXE_SEND_MASK
450*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
451*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
452*8700e3e7SMoni Shoua 		.offset = {
453*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
454*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
455*8700e3e7SMoni Shoua 		}
456*8700e3e7SMoni Shoua 	},
457*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE]		= {
458*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE",
459*8700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
460*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
461*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
462*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
463*8700e3e7SMoni Shoua 		.offset = {
464*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
465*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
466*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
467*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
468*8700e3e7SMoni Shoua 		}
469*8700e3e7SMoni Shoua 	},
470*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_FIRST]		= {
471*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_FIRST",
472*8700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
473*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK,
474*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
475*8700e3e7SMoni Shoua 		.offset = {
476*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
477*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
478*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
479*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
480*8700e3e7SMoni Shoua 		}
481*8700e3e7SMoni Shoua 	},
482*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_MIDDLE]		= {
483*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_MIDDLE",
484*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
485*8700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
486*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
487*8700e3e7SMoni Shoua 		.offset = {
488*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
489*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
490*8700e3e7SMoni Shoua 		}
491*8700e3e7SMoni Shoua 	},
492*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST]			= {
493*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST",
494*8700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
495*8700e3e7SMoni Shoua 				| RXE_END_MASK,
496*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
497*8700e3e7SMoni Shoua 		.offset = {
498*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
499*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
500*8700e3e7SMoni Shoua 		}
501*8700e3e7SMoni Shoua 	},
502*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
503*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
504*8700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
505*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK
506*8700e3e7SMoni Shoua 				| RXE_END_MASK,
507*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
508*8700e3e7SMoni Shoua 		.offset = {
509*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
510*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
511*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
512*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
513*8700e3e7SMoni Shoua 		}
514*8700e3e7SMoni Shoua 	},
515*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY]			= {
516*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY",
517*8700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
518*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK
519*8700e3e7SMoni Shoua 				| RXE_END_MASK,
520*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
521*8700e3e7SMoni Shoua 		.offset = {
522*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
523*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
524*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
525*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
526*8700e3e7SMoni Shoua 		}
527*8700e3e7SMoni Shoua 	},
528*8700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
529*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
530*8700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
531*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
532*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK
533*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
534*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
535*8700e3e7SMoni Shoua 		.offset = {
536*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
537*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
538*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
539*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
540*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
541*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
542*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
543*8700e3e7SMoni Shoua 		}
544*8700e3e7SMoni Shoua 	},
545*8700e3e7SMoni Shoua 
546*8700e3e7SMoni Shoua 	/* RD */
547*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_FIRST]			= {
548*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_FIRST",
549*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
550*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK
551*8700e3e7SMoni Shoua 				| RXE_START_MASK,
552*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
553*8700e3e7SMoni Shoua 		.offset = {
554*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
555*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
556*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
557*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
558*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
559*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
560*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
561*8700e3e7SMoni Shoua 		}
562*8700e3e7SMoni Shoua 	},
563*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_MIDDLE]		= {
564*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_MIDDLE",
565*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
566*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_SEND_MASK
567*8700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
568*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
569*8700e3e7SMoni Shoua 		.offset = {
570*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
571*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
572*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
573*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
574*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
575*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
576*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
577*8700e3e7SMoni Shoua 		}
578*8700e3e7SMoni Shoua 	},
579*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST]			= {
580*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST",
581*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
582*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK
583*8700e3e7SMoni Shoua 				| RXE_END_MASK,
584*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
585*8700e3e7SMoni Shoua 		.offset = {
586*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
587*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
588*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
589*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
590*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
591*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
592*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
593*8700e3e7SMoni Shoua 		}
594*8700e3e7SMoni Shoua 	},
595*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE]		= {
596*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE",
597*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK
598*8700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
599*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK
600*8700e3e7SMoni Shoua 				| RXE_END_MASK,
601*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
602*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
603*8700e3e7SMoni Shoua 		.offset = {
604*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
605*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
606*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
607*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
608*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
609*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
610*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
611*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
612*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
613*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
614*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
615*8700e3e7SMoni Shoua 		}
616*8700e3e7SMoni Shoua 	},
617*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY]			= {
618*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY",
619*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
620*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK
621*8700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
622*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
623*8700e3e7SMoni Shoua 		.offset = {
624*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
625*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
626*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
627*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
628*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
629*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
630*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
631*8700e3e7SMoni Shoua 		}
632*8700e3e7SMoni Shoua 	},
633*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE]		= {
634*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE",
635*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK
636*8700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
637*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
638*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
639*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
640*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
641*8700e3e7SMoni Shoua 		.offset = {
642*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
643*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
644*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
645*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
646*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
647*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
648*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
649*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
650*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
651*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
652*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
653*8700e3e7SMoni Shoua 		}
654*8700e3e7SMoni Shoua 	},
655*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_FIRST]		= {
656*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_FIRST",
657*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
658*8700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
659*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK,
660*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
661*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
662*8700e3e7SMoni Shoua 		.offset = {
663*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
664*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
665*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
666*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
667*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
668*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
669*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
670*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
671*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
672*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
673*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
674*8700e3e7SMoni Shoua 		}
675*8700e3e7SMoni Shoua 	},
676*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_MIDDLE]		= {
677*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_MIDDLE",
678*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
679*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
680*8700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
681*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
682*8700e3e7SMoni Shoua 		.offset = {
683*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
684*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
685*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
686*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
687*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
688*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
689*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
690*8700e3e7SMoni Shoua 		}
691*8700e3e7SMoni Shoua 	},
692*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST]			= {
693*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST",
694*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
695*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
696*8700e3e7SMoni Shoua 				| RXE_END_MASK,
697*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
698*8700e3e7SMoni Shoua 		.offset = {
699*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
700*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
701*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
702*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
703*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
704*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
705*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
706*8700e3e7SMoni Shoua 		}
707*8700e3e7SMoni Shoua 	},
708*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
709*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE",
710*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK
711*8700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
712*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK
713*8700e3e7SMoni Shoua 				| RXE_END_MASK,
714*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
715*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
716*8700e3e7SMoni Shoua 		.offset = {
717*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
718*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
719*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
720*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
721*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
722*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
723*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
724*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
725*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
726*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
727*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
728*8700e3e7SMoni Shoua 		}
729*8700e3e7SMoni Shoua 	},
730*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY]			= {
731*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY",
732*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
733*8700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
734*8700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK
735*8700e3e7SMoni Shoua 				| RXE_END_MASK,
736*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
737*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
738*8700e3e7SMoni Shoua 		.offset = {
739*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
740*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
741*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
742*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
743*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
744*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
745*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
746*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
747*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
748*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
749*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
750*8700e3e7SMoni Shoua 		}
751*8700e3e7SMoni Shoua 	},
752*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
753*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
754*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
755*8700e3e7SMoni Shoua 				| RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
756*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
757*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK
758*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
759*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES
760*8700e3e7SMoni Shoua 				+ RXE_DETH_BYTES + RXE_RDETH_BYTES,
761*8700e3e7SMoni Shoua 		.offset = {
762*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
763*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
764*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
765*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
766*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
767*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
768*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
769*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
770*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
771*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
772*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
773*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
774*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
775*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
776*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
777*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
778*8700e3e7SMoni Shoua 		}
779*8700e3e7SMoni Shoua 	},
780*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_REQUEST]			= {
781*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_REQUEST",
782*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
783*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_READ_MASK
784*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
785*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
786*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
787*8700e3e7SMoni Shoua 		.offset = {
788*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
789*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
790*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
791*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
792*8700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
793*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
794*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
795*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
796*8700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
797*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
798*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
799*8700e3e7SMoni Shoua 		}
800*8700e3e7SMoni Shoua 	},
801*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST]		= {
802*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST",
803*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK
804*8700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_ACK_MASK
805*8700e3e7SMoni Shoua 				| RXE_START_MASK,
806*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
807*8700e3e7SMoni Shoua 		.offset = {
808*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
809*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
810*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
811*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
812*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
813*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
814*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
815*8700e3e7SMoni Shoua 		}
816*8700e3e7SMoni Shoua 	},
817*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE]		= {
818*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE",
819*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
820*8700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
821*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
822*8700e3e7SMoni Shoua 		.offset = {
823*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
824*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
825*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
826*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
827*8700e3e7SMoni Shoua 		}
828*8700e3e7SMoni Shoua 	},
829*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST]		= {
830*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST",
831*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK
832*8700e3e7SMoni Shoua 				| RXE_ACK_MASK | RXE_END_MASK,
833*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
834*8700e3e7SMoni Shoua 		.offset = {
835*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
836*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
837*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
838*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
839*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
840*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
841*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
842*8700e3e7SMoni Shoua 		}
843*8700e3e7SMoni Shoua 	},
844*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY]		= {
845*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY",
846*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK
847*8700e3e7SMoni Shoua 				| RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
848*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
849*8700e3e7SMoni Shoua 		.offset = {
850*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
851*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
852*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
853*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
854*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
855*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
856*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
857*8700e3e7SMoni Shoua 		}
858*8700e3e7SMoni Shoua 	},
859*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_ACKNOWLEDGE]			= {
860*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ACKNOWLEDGE",
861*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK
862*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
863*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
864*8700e3e7SMoni Shoua 		.offset = {
865*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
866*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
867*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
868*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
869*8700e3e7SMoni Shoua 		}
870*8700e3e7SMoni Shoua 	},
871*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE]			= {
872*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE",
873*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK
874*8700e3e7SMoni Shoua 				| RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
875*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES
876*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
877*8700e3e7SMoni Shoua 		.offset = {
878*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
879*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
880*8700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
881*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
882*8700e3e7SMoni Shoua 			[RXE_ATMACK]	= RXE_BTH_BYTES
883*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
884*8700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
885*8700e3e7SMoni Shoua 		}
886*8700e3e7SMoni Shoua 	},
887*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_COMPARE_SWAP]			= {
888*8700e3e7SMoni Shoua 		.name	= "RD_COMPARE_SWAP",
889*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK
890*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_ATOMIC_MASK
891*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
892*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES
893*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
894*8700e3e7SMoni Shoua 		.offset = {
895*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
896*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
897*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
898*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
899*8700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES
900*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
901*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
902*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
903*8700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES
904*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES +
905*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
906*8700e3e7SMoni Shoua 		}
907*8700e3e7SMoni Shoua 	},
908*8700e3e7SMoni Shoua 	[IB_OPCODE_RD_FETCH_ADD]			= {
909*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_FETCH_ADD",
910*8700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK
911*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_ATOMIC_MASK
912*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
913*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES
914*8700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
915*8700e3e7SMoni Shoua 		.offset = {
916*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
917*8700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
918*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
919*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
920*8700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES
921*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
922*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
923*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
924*8700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES
925*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES +
926*8700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
927*8700e3e7SMoni Shoua 		}
928*8700e3e7SMoni Shoua 	},
929*8700e3e7SMoni Shoua 
930*8700e3e7SMoni Shoua 	/* UD */
931*8700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY]			= {
932*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY",
933*8700e3e7SMoni Shoua 		.mask	= RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
934*8700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
935*8700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
936*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES,
937*8700e3e7SMoni Shoua 		.offset = {
938*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
939*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
940*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
941*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
942*8700e3e7SMoni Shoua 		}
943*8700e3e7SMoni Shoua 	},
944*8700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE]		= {
945*8700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE",
946*8700e3e7SMoni Shoua 		.mask	= RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
947*8700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK
948*8700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
949*8700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES,
950*8700e3e7SMoni Shoua 		.offset = {
951*8700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
952*8700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
953*8700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
954*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
955*8700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
956*8700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
957*8700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
958*8700e3e7SMoni Shoua 		}
959*8700e3e7SMoni Shoua 	},
960*8700e3e7SMoni Shoua 
961*8700e3e7SMoni Shoua };
962