xref: /openbmc/linux/drivers/infiniband/sw/rxe/rxe_opcode.c (revision d8b0afd29c1d6d61890f259360388bde57f5dc90)
163fa15dbSBob Pearson // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
28700e3e7SMoni Shoua /*
38700e3e7SMoni Shoua  * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
48700e3e7SMoni Shoua  * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
58700e3e7SMoni Shoua  */
68700e3e7SMoni Shoua 
78700e3e7SMoni Shoua #include <rdma/ib_pack.h>
88700e3e7SMoni Shoua #include "rxe_opcode.h"
98700e3e7SMoni Shoua #include "rxe_hdr.h"
108700e3e7SMoni Shoua 
118700e3e7SMoni Shoua /* useful information about work request opcodes and pkt opcodes in
128700e3e7SMoni Shoua  * table form
138700e3e7SMoni Shoua  */
148700e3e7SMoni Shoua struct rxe_wr_opcode_info rxe_wr_opcode_info[] = {
158700e3e7SMoni Shoua 	[IB_WR_RDMA_WRITE]				= {
168700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_WRITE",
178700e3e7SMoni Shoua 		.mask	= {
188700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_WRITE_MASK,
198700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_WRITE_MASK,
208700e3e7SMoni Shoua 		},
218700e3e7SMoni Shoua 	},
228700e3e7SMoni Shoua 	[IB_WR_RDMA_WRITE_WITH_IMM]			= {
238700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_WRITE_WITH_IMM",
248700e3e7SMoni Shoua 		.mask	= {
258700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_WRITE_MASK,
268700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_WRITE_MASK,
278700e3e7SMoni Shoua 		},
288700e3e7SMoni Shoua 	},
298700e3e7SMoni Shoua 	[IB_WR_SEND]					= {
308700e3e7SMoni Shoua 		.name	= "IB_WR_SEND",
318700e3e7SMoni Shoua 		.mask	= {
328700e3e7SMoni Shoua 			[IB_QPT_SMI]	= WR_INLINE_MASK | WR_SEND_MASK,
338700e3e7SMoni Shoua 			[IB_QPT_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
348700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
358700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
368700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
378700e3e7SMoni Shoua 		},
388700e3e7SMoni Shoua 	},
398700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_IMM]				= {
408700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_IMM",
418700e3e7SMoni Shoua 		.mask	= {
428700e3e7SMoni Shoua 			[IB_QPT_SMI]	= WR_INLINE_MASK | WR_SEND_MASK,
438700e3e7SMoni Shoua 			[IB_QPT_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
448700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
458700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
468700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
478700e3e7SMoni Shoua 		},
488700e3e7SMoni Shoua 	},
498700e3e7SMoni Shoua 	[IB_WR_RDMA_READ]				= {
508700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ",
518700e3e7SMoni Shoua 		.mask	= {
528700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
538700e3e7SMoni Shoua 		},
548700e3e7SMoni Shoua 	},
558700e3e7SMoni Shoua 	[IB_WR_ATOMIC_CMP_AND_SWP]			= {
568700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_CMP_AND_SWP",
578700e3e7SMoni Shoua 		.mask	= {
588700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
598700e3e7SMoni Shoua 		},
608700e3e7SMoni Shoua 	},
618700e3e7SMoni Shoua 	[IB_WR_ATOMIC_FETCH_AND_ADD]			= {
628700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_FETCH_AND_ADD",
638700e3e7SMoni Shoua 		.mask	= {
648700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
658700e3e7SMoni Shoua 		},
668700e3e7SMoni Shoua 	},
678700e3e7SMoni Shoua 	[IB_WR_LSO]					= {
688700e3e7SMoni Shoua 		.name	= "IB_WR_LSO",
698700e3e7SMoni Shoua 		.mask	= {
708700e3e7SMoni Shoua 			/* not supported */
718700e3e7SMoni Shoua 		},
728700e3e7SMoni Shoua 	},
738700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_INV]				= {
748700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_INV",
758700e3e7SMoni Shoua 		.mask	= {
768700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
778700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
788700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
798700e3e7SMoni Shoua 		},
808700e3e7SMoni Shoua 	},
818700e3e7SMoni Shoua 	[IB_WR_RDMA_READ_WITH_INV]			= {
828700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ_WITH_INV",
838700e3e7SMoni Shoua 		.mask	= {
848700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
858700e3e7SMoni Shoua 		},
868700e3e7SMoni Shoua 	},
878700e3e7SMoni Shoua 	[IB_WR_LOCAL_INV]				= {
888700e3e7SMoni Shoua 		.name	= "IB_WR_LOCAL_INV",
898700e3e7SMoni Shoua 		.mask	= {
90886441fbSBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
918700e3e7SMoni Shoua 		},
928700e3e7SMoni Shoua 	},
938700e3e7SMoni Shoua 	[IB_WR_REG_MR]					= {
948700e3e7SMoni Shoua 		.name	= "IB_WR_REG_MR",
958700e3e7SMoni Shoua 		.mask	= {
96886441fbSBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
978700e3e7SMoni Shoua 		},
988700e3e7SMoni Shoua 	},
9932a577b4SBob Pearson 	[IB_WR_BIND_MW]					= {
10032a577b4SBob Pearson 		.name	= "IB_WR_BIND_MW",
10132a577b4SBob Pearson 		.mask	= {
10232a577b4SBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
10332a577b4SBob Pearson 			[IB_QPT_UC]	= WR_LOCAL_OP_MASK,
10432a577b4SBob Pearson 		},
10532a577b4SBob Pearson 	},
1068700e3e7SMoni Shoua };
1078700e3e7SMoni Shoua 
1088700e3e7SMoni Shoua struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = {
1098700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_FIRST]			= {
1108700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_FIRST",
111*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK |
112*d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK,
1138700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1148700e3e7SMoni Shoua 		.offset = {
1158700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1168700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1178700e3e7SMoni Shoua 		}
1188700e3e7SMoni Shoua 	},
1198700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_MIDDLE]		= {
1208d1cfb88SChengguang Xu 		.name	= "IB_OPCODE_RC_SEND_MIDDLE",
121*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
122*d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
1238700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1248700e3e7SMoni Shoua 		.offset = {
1258700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1268700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1278700e3e7SMoni Shoua 		}
1288700e3e7SMoni Shoua 	},
1298700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST]			= {
1308700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST",
131*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
132*d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_END_MASK,
1338700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1348700e3e7SMoni Shoua 		.offset = {
1358700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1368700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1378700e3e7SMoni Shoua 		}
1388700e3e7SMoni Shoua 	},
1398700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE]		= {
1408700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE",
141*d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
142*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
1438700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1448700e3e7SMoni Shoua 		.offset = {
1458700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1468700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
147*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
148*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
1498700e3e7SMoni Shoua 		}
1508700e3e7SMoni Shoua 	},
1518700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY]			= {
1528700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY",
153*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
154*d8b0afd2SLi Zhijian 			  RXE_RWR_MASK | RXE_SEND_MASK |
155*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
1568700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1578700e3e7SMoni Shoua 		.offset = {
1588700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1598700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1608700e3e7SMoni Shoua 		}
1618700e3e7SMoni Shoua 	},
1628700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE]		= {
1638700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE",
164*d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
165*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
166*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
1678700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1688700e3e7SMoni Shoua 		.offset = {
1698700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1708700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
171*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
172*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
1738700e3e7SMoni Shoua 		}
1748700e3e7SMoni Shoua 	},
1758700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_FIRST]		= {
1768700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_FIRST",
177*d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
178*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
1798700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
1808700e3e7SMoni Shoua 		.offset = {
1818700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1828700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
183*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
184*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
1858700e3e7SMoni Shoua 		}
1868700e3e7SMoni Shoua 	},
1878700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_MIDDLE]		= {
1888700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_MIDDLE",
189*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
190*d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
1918700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1928700e3e7SMoni Shoua 		.offset = {
1938700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1948700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1958700e3e7SMoni Shoua 		}
1968700e3e7SMoni Shoua 	},
1978700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST]			= {
1988700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST",
199*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
200*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2018700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
2028700e3e7SMoni Shoua 		.offset = {
2038700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2048700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
2058700e3e7SMoni Shoua 		}
2068700e3e7SMoni Shoua 	},
2078700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
2088700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
209*d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
210*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
211*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2128700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
2138700e3e7SMoni Shoua 		.offset = {
2148700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2158700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
216*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
217*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
2188700e3e7SMoni Shoua 		}
2198700e3e7SMoni Shoua 	},
2208700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY]			= {
2218700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY",
222*d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
223*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK |
224*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2258700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2268700e3e7SMoni Shoua 		.offset = {
2278700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2288700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
229*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
230*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
2318700e3e7SMoni Shoua 		}
2328700e3e7SMoni Shoua 	},
2338700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
2348700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
235*d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
236*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
237*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
238*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
2398700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
2408700e3e7SMoni Shoua 		.offset = {
2418700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2428700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
243*d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
244*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
245*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
246*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
247*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
2488700e3e7SMoni Shoua 		}
2498700e3e7SMoni Shoua 	},
2508700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_REQUEST]			= {
2518700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_REQUEST",
252*d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_REQ_MASK | RXE_READ_MASK |
253*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
2548700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2558700e3e7SMoni Shoua 		.offset = {
2568700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2578700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
258*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
259*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
2608700e3e7SMoni Shoua 		}
2618700e3e7SMoni Shoua 	},
2628700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST]		= {
2638700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST",
264*d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
265*d8b0afd2SLi Zhijian 			  RXE_START_MASK,
2668700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2678700e3e7SMoni Shoua 		.offset = {
2688700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2698700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
270*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
271*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
2728700e3e7SMoni Shoua 		}
2738700e3e7SMoni Shoua 	},
2748700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE]		= {
2758700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE",
2768700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_ACK_MASK | RXE_MIDDLE_MASK,
2778700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
2788700e3e7SMoni Shoua 		.offset = {
2798700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2808700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
2818700e3e7SMoni Shoua 		}
2828700e3e7SMoni Shoua 	},
2838700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST]		= {
2848700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST",
285*d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
286*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2878700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2888700e3e7SMoni Shoua 		.offset = {
2898700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2908700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
291*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
292*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
2938700e3e7SMoni Shoua 		}
2948700e3e7SMoni Shoua 	},
2958700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY]		= {
2968700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY",
297*d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
298*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
2998700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
3008700e3e7SMoni Shoua 		.offset = {
3018700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3028700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
303*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
304*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3058700e3e7SMoni Shoua 		}
3068700e3e7SMoni Shoua 	},
3078700e3e7SMoni Shoua 	[IB_OPCODE_RC_ACKNOWLEDGE]			= {
3088700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ACKNOWLEDGE",
309*d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK |
310*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
3118700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
3128700e3e7SMoni Shoua 		.offset = {
3138700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3148700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
315*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
316*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3178700e3e7SMoni Shoua 		}
3188700e3e7SMoni Shoua 	},
3198700e3e7SMoni Shoua 	[IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE]			= {
3208700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE",
321*d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_ATMACK_MASK | RXE_ACK_MASK |
322*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3238700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES,
3248700e3e7SMoni Shoua 		.offset = {
3258700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3268700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
327*d8b0afd2SLi Zhijian 			[RXE_ATMACK]	= RXE_BTH_BYTES +
328*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
329*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
330*d8b0afd2SLi Zhijian 					  RXE_ATMACK_BYTES +
331*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3328700e3e7SMoni Shoua 		}
3338700e3e7SMoni Shoua 	},
3348700e3e7SMoni Shoua 	[IB_OPCODE_RC_COMPARE_SWAP]			= {
3358700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_COMPARE_SWAP",
336*d8b0afd2SLi Zhijian 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK |
337*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3388700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
3398700e3e7SMoni Shoua 		.offset = {
3408700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3418700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
342*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
343*d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES,
3448700e3e7SMoni Shoua 		}
3458700e3e7SMoni Shoua 	},
3468700e3e7SMoni Shoua 	[IB_OPCODE_RC_FETCH_ADD]			= {
3478700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_FETCH_ADD",
348*d8b0afd2SLi Zhijian 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK |
349*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3508700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
3518700e3e7SMoni Shoua 		.offset = {
3528700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3538700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
354*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
355*d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES,
3568700e3e7SMoni Shoua 		}
3578700e3e7SMoni Shoua 	},
3588700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE]		= {
3598700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE",
360*d8b0afd2SLi Zhijian 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
361*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
3628700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3638700e3e7SMoni Shoua 		.offset = {
3648700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3658700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
366*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
367*d8b0afd2SLi Zhijian 					  RXE_IETH_BYTES,
3688700e3e7SMoni Shoua 		}
3698700e3e7SMoni Shoua 	},
3708700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE]		= {
3718700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_INV",
372*d8b0afd2SLi Zhijian 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
373*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
374*d8b0afd2SLi Zhijian 			  RXE_END_MASK  | RXE_START_MASK,
3758700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3768700e3e7SMoni Shoua 		.offset = {
3778700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3788700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
379*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
380*d8b0afd2SLi Zhijian 					  RXE_IETH_BYTES,
3818700e3e7SMoni Shoua 		}
3828700e3e7SMoni Shoua 	},
3838700e3e7SMoni Shoua 
3848700e3e7SMoni Shoua 	/* UC */
3858700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_FIRST]			= {
3868700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_FIRST",
387*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK |
388*d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK,
3898700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
3908700e3e7SMoni Shoua 		.offset = {
3918700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3928700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
3938700e3e7SMoni Shoua 		}
3948700e3e7SMoni Shoua 	},
3958700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_MIDDLE]		= {
3968700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_MIDDLE",
397*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
398*d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
3998700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4008700e3e7SMoni Shoua 		.offset = {
4018700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4028700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4038700e3e7SMoni Shoua 		}
4048700e3e7SMoni Shoua 	},
4058700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST]			= {
4068700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST",
407*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
408*d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_END_MASK,
4098700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4108700e3e7SMoni Shoua 		.offset = {
4118700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4128700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4138700e3e7SMoni Shoua 		}
4148700e3e7SMoni Shoua 	},
4158700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE]		= {
4168700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE",
417*d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
418*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
4198700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4208700e3e7SMoni Shoua 		.offset = {
4218700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4228700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
423*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
424*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
4258700e3e7SMoni Shoua 		}
4268700e3e7SMoni Shoua 	},
4278700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY]			= {
4288700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY",
429*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
430*d8b0afd2SLi Zhijian 			  RXE_RWR_MASK | RXE_SEND_MASK |
431*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
4328700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4338700e3e7SMoni Shoua 		.offset = {
4348700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4358700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4368700e3e7SMoni Shoua 		}
4378700e3e7SMoni Shoua 	},
4388700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE]		= {
4398700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE",
440*d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
441*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
442*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
4438700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4448700e3e7SMoni Shoua 		.offset = {
4458700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4468700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
447*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
448*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
4498700e3e7SMoni Shoua 		}
4508700e3e7SMoni Shoua 	},
4518700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_FIRST]		= {
4528700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_FIRST",
453*d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
454*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
4558700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
4568700e3e7SMoni Shoua 		.offset = {
4578700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4588700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
459*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
460*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
4618700e3e7SMoni Shoua 		}
4628700e3e7SMoni Shoua 	},
4638700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_MIDDLE]		= {
4648700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_MIDDLE",
465*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
466*d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
4678700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4688700e3e7SMoni Shoua 		.offset = {
4698700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4708700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4718700e3e7SMoni Shoua 		}
4728700e3e7SMoni Shoua 	},
4738700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST]			= {
4748700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST",
475*d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
476*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
4778700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4788700e3e7SMoni Shoua 		.offset = {
4798700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4808700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4818700e3e7SMoni Shoua 		}
4828700e3e7SMoni Shoua 	},
4838700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
4848700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
485*d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
486*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
487*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
4888700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4898700e3e7SMoni Shoua 		.offset = {
4908700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4918700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
492*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
493*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
4948700e3e7SMoni Shoua 		}
4958700e3e7SMoni Shoua 	},
4968700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY]			= {
4978700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY",
498*d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
499*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK |
500*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5018700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
5028700e3e7SMoni Shoua 		.offset = {
5038700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5048700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
505*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
506*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
5078700e3e7SMoni Shoua 		}
5088700e3e7SMoni Shoua 	},
5098700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
5108700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
511*d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
512*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
513*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
514*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
5158700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
5168700e3e7SMoni Shoua 		.offset = {
5178700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5188700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
519*d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
520*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
521*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
522*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
523*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
5248700e3e7SMoni Shoua 		}
5258700e3e7SMoni Shoua 	},
5268700e3e7SMoni Shoua 
5278700e3e7SMoni Shoua 	/* RD */
5288700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_FIRST]			= {
5298700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_FIRST",
530*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
531*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
532*d8b0afd2SLi Zhijian 			  RXE_START_MASK,
5338700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5348700e3e7SMoni Shoua 		.offset = {
5358700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5368700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
537*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
538*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
539*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
540*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
541*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5428700e3e7SMoni Shoua 		}
5438700e3e7SMoni Shoua 	},
5448700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_MIDDLE]		= {
5458700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_MIDDLE",
546*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
547*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_SEND_MASK |
548*d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
5498700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5508700e3e7SMoni Shoua 		.offset = {
5518700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5528700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
553*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
554*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
555*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
556*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
557*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5588700e3e7SMoni Shoua 		}
5598700e3e7SMoni Shoua 	},
5608700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST]			= {
5618700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST",
562*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
563*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK |
564*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5658700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5668700e3e7SMoni Shoua 		.offset = {
5678700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5688700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
569*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
570*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
571*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
572*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
573*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5748700e3e7SMoni Shoua 		}
5758700e3e7SMoni Shoua 	},
5768700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE]		= {
5778700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE",
578*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
579*d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
580*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK |
581*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
582*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
583*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
5848700e3e7SMoni Shoua 		.offset = {
5858700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5868700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
587*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
588*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
589*d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
590*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
591*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
592*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
593*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
594*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
595*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
5968700e3e7SMoni Shoua 		}
5978700e3e7SMoni Shoua 	},
5988700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY]			= {
5998700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY",
600*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
601*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
602*d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
6038700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6048700e3e7SMoni Shoua 		.offset = {
6058700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6068700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
607*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
608*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
609*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
610*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
611*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
6128700e3e7SMoni Shoua 		}
6138700e3e7SMoni Shoua 	},
6148700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE]		= {
6158700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE",
616*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
617*d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
618*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
619*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
620*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
621*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6228700e3e7SMoni Shoua 		.offset = {
6238700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6248700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
625*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
626*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
627*d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
628*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
629*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
630*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
631*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
632*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
633*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
6348700e3e7SMoni Shoua 		}
6358700e3e7SMoni Shoua 	},
6368700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_FIRST]		= {
6378700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_FIRST",
638*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
639*d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
640*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
641*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
642*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6438700e3e7SMoni Shoua 		.offset = {
6448700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6458700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
646*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
647*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
648*d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
649*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
650*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
651*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
652*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
653*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
654*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
6558700e3e7SMoni Shoua 		}
6568700e3e7SMoni Shoua 	},
6578700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_MIDDLE]		= {
6588700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_MIDDLE",
659*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
660*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
661*d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
6628700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6638700e3e7SMoni Shoua 		.offset = {
6648700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6658700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
666*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
667*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
668*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
669*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
670*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
6718700e3e7SMoni Shoua 		}
6728700e3e7SMoni Shoua 	},
6738700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST]			= {
6748700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST",
675*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
676*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
677*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
6788700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6798700e3e7SMoni Shoua 		.offset = {
6808700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6818700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
682*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
683*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
684*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
685*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
686*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
6878700e3e7SMoni Shoua 		}
6888700e3e7SMoni Shoua 	},
6898700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
6908700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE",
691*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
692*d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
693*d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
694*d8b0afd2SLi Zhijian 			  RXE_END_MASK,
695*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
696*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6978700e3e7SMoni Shoua 		.offset = {
6988700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6998700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
700*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
701*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
702*d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
703*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
704*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
705*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
706*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
707*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
708*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
7098700e3e7SMoni Shoua 		}
7108700e3e7SMoni Shoua 	},
7118700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY]			= {
7128700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY",
713*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
714*d8b0afd2SLi Zhijian 				RXE_PAYLOAD_MASK | RXE_REQ_MASK |
715*d8b0afd2SLi Zhijian 				RXE_WRITE_MASK | RXE_START_MASK |
716*d8b0afd2SLi Zhijian 				RXE_END_MASK,
717*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
718*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
7198700e3e7SMoni Shoua 		.offset = {
7208700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7218700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
722*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
723*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
724*d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
725*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
726*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
727*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
728*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
729*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
730*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
7318700e3e7SMoni Shoua 		}
7328700e3e7SMoni Shoua 	},
7338700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
7348700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
735*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
736*d8b0afd2SLi Zhijian 			  RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
737*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
738*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
739*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
740*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES +
741*d8b0afd2SLi Zhijian 			  RXE_DETH_BYTES + RXE_RDETH_BYTES,
7428700e3e7SMoni Shoua 		.offset = {
7438700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7448700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
745*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
746*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
747*d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
748*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
749*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
750*d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
751*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
752*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
753*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
754*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
755*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
756*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
757*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
758*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
7598700e3e7SMoni Shoua 		}
7608700e3e7SMoni Shoua 	},
7618700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_REQUEST]			= {
7628700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_REQUEST",
763*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
764*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_READ_MASK |
765*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
766*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
767*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
7688700e3e7SMoni Shoua 		.offset = {
7698700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7708700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
771*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
772*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
773*d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
774*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
775*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
776*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
777*d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
778*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
779*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
7808700e3e7SMoni Shoua 		}
7818700e3e7SMoni Shoua 	},
7828700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST]		= {
7838700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST",
784*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK |
785*d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_ACK_MASK |
786*d8b0afd2SLi Zhijian 			  RXE_START_MASK,
7878700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
7888700e3e7SMoni Shoua 		.offset = {
7898700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7908700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
791*d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
792*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
793*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
794*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
795*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
7968700e3e7SMoni Shoua 		}
7978700e3e7SMoni Shoua 	},
7988700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE]		= {
7998700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE",
800*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
801*d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
8028700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
8038700e3e7SMoni Shoua 		.offset = {
8048700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8058700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
806*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
807*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8088700e3e7SMoni Shoua 		}
8098700e3e7SMoni Shoua 	},
8108700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST]		= {
8118700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST",
812*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK |
813*d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_END_MASK,
8148700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8158700e3e7SMoni Shoua 		.offset = {
8168700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8178700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
818*d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
819*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
820*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
821*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
822*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8238700e3e7SMoni Shoua 		}
8248700e3e7SMoni Shoua 	},
8258700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY]		= {
8268700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY",
827*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK |
828*d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
8298700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8308700e3e7SMoni Shoua 		.offset = {
8318700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8328700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
833*d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
834*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
835*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
836*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
837*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8388700e3e7SMoni Shoua 		}
8398700e3e7SMoni Shoua 	},
8408700e3e7SMoni Shoua 	[IB_OPCODE_RD_ACKNOWLEDGE]			= {
8418700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ACKNOWLEDGE",
842*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK |
843*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
8448700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8458700e3e7SMoni Shoua 		.offset = {
8468700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8478700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
848*d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
849*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8508700e3e7SMoni Shoua 		}
8518700e3e7SMoni Shoua 	},
8528700e3e7SMoni Shoua 	[IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE]			= {
8538700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE",
854*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK |
855*d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
856*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES +
857*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
8588700e3e7SMoni Shoua 		.offset = {
8598700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8608700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
861*d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
862*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
863*d8b0afd2SLi Zhijian 			[RXE_ATMACK]	= RXE_BTH_BYTES +
864*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
865*d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8668700e3e7SMoni Shoua 		}
8678700e3e7SMoni Shoua 	},
8688700e3e7SMoni Shoua 	[IB_OPCODE_RD_COMPARE_SWAP]			= {
8698700e3e7SMoni Shoua 		.name	= "RD_COMPARE_SWAP",
870*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK |
871*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_ATOMIC_MASK |
872*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
873*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES +
874*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
8758700e3e7SMoni Shoua 		.offset = {
8768700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8778700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
878*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
879*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
880*d8b0afd2SLi Zhijian 			[RXE_ATMETH]	= RXE_BTH_BYTES +
881*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
882*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
8838700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
884*d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES +
885*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
886*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8878700e3e7SMoni Shoua 		}
8888700e3e7SMoni Shoua 	},
8898700e3e7SMoni Shoua 	[IB_OPCODE_RD_FETCH_ADD]			= {
8908700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_FETCH_ADD",
891*d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK |
892*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_ATOMIC_MASK |
893*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
894*d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES +
895*d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
8968700e3e7SMoni Shoua 		.offset = {
8978700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8988700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
899*d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
900*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
901*d8b0afd2SLi Zhijian 			[RXE_ATMETH]	= RXE_BTH_BYTES +
902*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
903*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
9048700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
905*d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES +
906*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
907*d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
9088700e3e7SMoni Shoua 		}
9098700e3e7SMoni Shoua 	},
9108700e3e7SMoni Shoua 
9118700e3e7SMoni Shoua 	/* UD */
9128700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY]			= {
9138700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY",
914*d8b0afd2SLi Zhijian 		.mask	= RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
915*d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
916*d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
9178700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES,
9188700e3e7SMoni Shoua 		.offset = {
9198700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9208700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
921*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
922*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
9238700e3e7SMoni Shoua 		}
9248700e3e7SMoni Shoua 	},
9258700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE]		= {
9268700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE",
927*d8b0afd2SLi Zhijian 		.mask	= RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
928*d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
929*d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
9308700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES,
9318700e3e7SMoni Shoua 		.offset = {
9328700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9338700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
934*d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
935*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
936*d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
937*d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
938*d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
9398700e3e7SMoni Shoua 		}
9408700e3e7SMoni Shoua 	},
9418700e3e7SMoni Shoua 
9428700e3e7SMoni Shoua };
943