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