xref: /openbmc/linux/drivers/infiniband/sw/rxe/rxe_opcode.c (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
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_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
338700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
348700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
358700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
368700e3e7SMoni Shoua 		},
378700e3e7SMoni Shoua 	},
388700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_IMM]				= {
398700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_IMM",
408700e3e7SMoni Shoua 		.mask	= {
418700e3e7SMoni Shoua 			[IB_QPT_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
428700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
438700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
448700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
458700e3e7SMoni Shoua 		},
468700e3e7SMoni Shoua 	},
478700e3e7SMoni Shoua 	[IB_WR_RDMA_READ]				= {
488700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ",
498700e3e7SMoni Shoua 		.mask	= {
508700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
518700e3e7SMoni Shoua 		},
528700e3e7SMoni Shoua 	},
538700e3e7SMoni Shoua 	[IB_WR_ATOMIC_CMP_AND_SWP]			= {
548700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_CMP_AND_SWP",
558700e3e7SMoni Shoua 		.mask	= {
568700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
578700e3e7SMoni Shoua 		},
588700e3e7SMoni Shoua 	},
598700e3e7SMoni Shoua 	[IB_WR_ATOMIC_FETCH_AND_ADD]			= {
608700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_FETCH_AND_ADD",
618700e3e7SMoni Shoua 		.mask	= {
628700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
638700e3e7SMoni Shoua 		},
648700e3e7SMoni Shoua 	},
658700e3e7SMoni Shoua 	[IB_WR_LSO]					= {
668700e3e7SMoni Shoua 		.name	= "IB_WR_LSO",
678700e3e7SMoni Shoua 		.mask	= {
688700e3e7SMoni Shoua 			/* not supported */
698700e3e7SMoni Shoua 		},
708700e3e7SMoni Shoua 	},
718700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_INV]				= {
728700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_INV",
738700e3e7SMoni Shoua 		.mask	= {
748700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
758700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
768700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
778700e3e7SMoni Shoua 		},
788700e3e7SMoni Shoua 	},
798700e3e7SMoni Shoua 	[IB_WR_RDMA_READ_WITH_INV]			= {
808700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ_WITH_INV",
818700e3e7SMoni Shoua 		.mask	= {
828700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
838700e3e7SMoni Shoua 		},
848700e3e7SMoni Shoua 	},
858700e3e7SMoni Shoua 	[IB_WR_LOCAL_INV]				= {
868700e3e7SMoni Shoua 		.name	= "IB_WR_LOCAL_INV",
878700e3e7SMoni Shoua 		.mask	= {
88886441fbSBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
898700e3e7SMoni Shoua 		},
908700e3e7SMoni Shoua 	},
918700e3e7SMoni Shoua 	[IB_WR_REG_MR]					= {
928700e3e7SMoni Shoua 		.name	= "IB_WR_REG_MR",
938700e3e7SMoni Shoua 		.mask	= {
94886441fbSBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
958700e3e7SMoni Shoua 		},
968700e3e7SMoni Shoua 	},
9732a577b4SBob Pearson 	[IB_WR_BIND_MW]					= {
9832a577b4SBob Pearson 		.name	= "IB_WR_BIND_MW",
9932a577b4SBob Pearson 		.mask	= {
10032a577b4SBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
10132a577b4SBob Pearson 			[IB_QPT_UC]	= WR_LOCAL_OP_MASK,
10232a577b4SBob Pearson 		},
10332a577b4SBob Pearson 	},
104*02e9a31cSLi Zhijian 	[IB_WR_FLUSH]					= {
105*02e9a31cSLi Zhijian 		.name   = "IB_WR_FLUSH",
106*02e9a31cSLi Zhijian 		.mask   = {
107*02e9a31cSLi Zhijian 			[IB_QPT_RC]	= WR_FLUSH_MASK,
108*02e9a31cSLi Zhijian 		},
109*02e9a31cSLi Zhijian 	},
1105c7af6c7SXiao Yang 	[IB_WR_ATOMIC_WRITE]                       = {
1115c7af6c7SXiao Yang 		.name   = "IB_WR_ATOMIC_WRITE",
1125c7af6c7SXiao Yang 		.mask   = {
1135c7af6c7SXiao Yang 			[IB_QPT_RC]     = WR_ATOMIC_WRITE_MASK,
1145c7af6c7SXiao Yang 		},
1155c7af6c7SXiao Yang 	},
1168700e3e7SMoni Shoua };
1178700e3e7SMoni Shoua 
1188700e3e7SMoni Shoua struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = {
1198700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_FIRST]			= {
1208700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_FIRST",
121d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK |
122d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_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_MIDDLE]		= {
1308d1cfb88SChengguang Xu 		.name	= "IB_OPCODE_RC_SEND_MIDDLE",
131d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
132d8b0afd2SLi Zhijian 			  RXE_MIDDLE_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]			= {
1408700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST",
141d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
142d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_END_MASK,
1438700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1448700e3e7SMoni Shoua 		.offset = {
1458700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1468700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1478700e3e7SMoni Shoua 		}
1488700e3e7SMoni Shoua 	},
1498700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE]		= {
1508700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE",
151d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
152d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
1538700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1548700e3e7SMoni Shoua 		.offset = {
1558700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1568700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
157d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
158d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
1598700e3e7SMoni Shoua 		}
1608700e3e7SMoni Shoua 	},
1618700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY]			= {
1628700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY",
163d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
164d8b0afd2SLi Zhijian 			  RXE_RWR_MASK | RXE_SEND_MASK |
165d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
1668700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1678700e3e7SMoni Shoua 		.offset = {
1688700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1698700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1708700e3e7SMoni Shoua 		}
1718700e3e7SMoni Shoua 	},
1728700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE]		= {
1738700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE",
174d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
175d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
176d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
1778700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1788700e3e7SMoni Shoua 		.offset = {
1798700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1808700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
181d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
182d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
1838700e3e7SMoni Shoua 		}
1848700e3e7SMoni Shoua 	},
1858700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_FIRST]		= {
1868700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_FIRST",
187d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
188d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
1898700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
1908700e3e7SMoni Shoua 		.offset = {
1918700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1928700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
193d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
194d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
1958700e3e7SMoni Shoua 		}
1968700e3e7SMoni Shoua 	},
1978700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_MIDDLE]		= {
1988700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_MIDDLE",
199d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
200d8b0afd2SLi Zhijian 			  RXE_MIDDLE_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]			= {
2088700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST",
209d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
210d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2118700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
2128700e3e7SMoni Shoua 		.offset = {
2138700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2148700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
2158700e3e7SMoni Shoua 		}
2168700e3e7SMoni Shoua 	},
2178700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
2188700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
219d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
220d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
221d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2228700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
2238700e3e7SMoni Shoua 		.offset = {
2248700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2258700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
226d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
227d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
2288700e3e7SMoni Shoua 		}
2298700e3e7SMoni Shoua 	},
2308700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY]			= {
2318700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY",
232d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
233d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK |
234d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2358700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2368700e3e7SMoni Shoua 		.offset = {
2378700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2388700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
239d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
240d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
2418700e3e7SMoni Shoua 		}
2428700e3e7SMoni Shoua 	},
2438700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
2448700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
245d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
246d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
247d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
248d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
2498700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
2508700e3e7SMoni Shoua 		.offset = {
2518700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2528700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
253d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
254d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
255d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
256d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
257d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
2588700e3e7SMoni Shoua 		}
2598700e3e7SMoni Shoua 	},
2608700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_REQUEST]			= {
2618700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_REQUEST",
262d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_REQ_MASK | RXE_READ_MASK |
263d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
2648700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2658700e3e7SMoni Shoua 		.offset = {
2668700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2678700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
268d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
269d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
2708700e3e7SMoni Shoua 		}
2718700e3e7SMoni Shoua 	},
2728700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST]		= {
2738700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST",
274d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
275d8b0afd2SLi Zhijian 			  RXE_START_MASK,
2768700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2778700e3e7SMoni Shoua 		.offset = {
2788700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2798700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
280d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
281d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
2828700e3e7SMoni Shoua 		}
2838700e3e7SMoni Shoua 	},
2848700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE]		= {
2858700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE",
2868700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_ACK_MASK | RXE_MIDDLE_MASK,
2878700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
2888700e3e7SMoni Shoua 		.offset = {
2898700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2908700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
2918700e3e7SMoni Shoua 		}
2928700e3e7SMoni Shoua 	},
2938700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST]		= {
2948700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST",
295d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
296d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2978700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2988700e3e7SMoni Shoua 		.offset = {
2998700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3008700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
301d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
302d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3038700e3e7SMoni Shoua 		}
3048700e3e7SMoni Shoua 	},
3058700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY]		= {
3068700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY",
307d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
308d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3098700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
3108700e3e7SMoni Shoua 		.offset = {
3118700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3128700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
313d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
314d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3158700e3e7SMoni Shoua 		}
3168700e3e7SMoni Shoua 	},
3178700e3e7SMoni Shoua 	[IB_OPCODE_RC_ACKNOWLEDGE]			= {
3188700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ACKNOWLEDGE",
319d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK |
320d8b0afd2SLi Zhijian 			  RXE_END_MASK,
3218700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
3228700e3e7SMoni Shoua 		.offset = {
3238700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3248700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
325d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
326d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3278700e3e7SMoni Shoua 		}
3288700e3e7SMoni Shoua 	},
3298700e3e7SMoni Shoua 	[IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE]			= {
3308700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE",
331d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_ATMACK_MASK | RXE_ACK_MASK |
332d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3338700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES,
3348700e3e7SMoni Shoua 		.offset = {
3358700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3368700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
337d8b0afd2SLi Zhijian 			[RXE_ATMACK]	= RXE_BTH_BYTES +
338d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
339d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
340d8b0afd2SLi Zhijian 					  RXE_ATMACK_BYTES +
341d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3428700e3e7SMoni Shoua 		}
3438700e3e7SMoni Shoua 	},
3448700e3e7SMoni Shoua 	[IB_OPCODE_RC_COMPARE_SWAP]			= {
3458700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_COMPARE_SWAP",
346d8b0afd2SLi Zhijian 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK |
347d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3488700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
3498700e3e7SMoni Shoua 		.offset = {
3508700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3518700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
352d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
353d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES,
3548700e3e7SMoni Shoua 		}
3558700e3e7SMoni Shoua 	},
3568700e3e7SMoni Shoua 	[IB_OPCODE_RC_FETCH_ADD]			= {
3578700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_FETCH_ADD",
358d8b0afd2SLi Zhijian 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK |
359d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3608700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
3618700e3e7SMoni Shoua 		.offset = {
3628700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3638700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
364d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
365d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES,
3668700e3e7SMoni Shoua 		}
3678700e3e7SMoni Shoua 	},
3688700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE]		= {
3698700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE",
370d8b0afd2SLi Zhijian 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
371d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
3728700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3738700e3e7SMoni Shoua 		.offset = {
3748700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3758700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
376d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
377d8b0afd2SLi Zhijian 					  RXE_IETH_BYTES,
3788700e3e7SMoni Shoua 		}
3798700e3e7SMoni Shoua 	},
3808700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE]		= {
3818700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_INV",
382d8b0afd2SLi Zhijian 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
383d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
384d8b0afd2SLi Zhijian 			  RXE_END_MASK  | RXE_START_MASK,
3858700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3868700e3e7SMoni Shoua 		.offset = {
3878700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3888700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
389d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
390d8b0afd2SLi Zhijian 					  RXE_IETH_BYTES,
3918700e3e7SMoni Shoua 		}
3928700e3e7SMoni Shoua 	},
393*02e9a31cSLi Zhijian 	[IB_OPCODE_RC_FLUSH]					= {
394*02e9a31cSLi Zhijian 		.name	= "IB_OPCODE_RC_FLUSH",
395*02e9a31cSLi Zhijian 		.mask	= RXE_FETH_MASK | RXE_RETH_MASK | RXE_FLUSH_MASK |
396*02e9a31cSLi Zhijian 			  RXE_START_MASK | RXE_END_MASK | RXE_REQ_MASK,
397*02e9a31cSLi Zhijian 		.length = RXE_BTH_BYTES + RXE_FETH_BYTES + RXE_RETH_BYTES,
398*02e9a31cSLi Zhijian 		.offset = {
399*02e9a31cSLi Zhijian 			[RXE_BTH]	= 0,
400*02e9a31cSLi Zhijian 			[RXE_FETH]	= RXE_BTH_BYTES,
401*02e9a31cSLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES + RXE_FETH_BYTES,
402*02e9a31cSLi Zhijian 		}
403*02e9a31cSLi Zhijian 	},
4045c7af6c7SXiao Yang 	[IB_OPCODE_RC_ATOMIC_WRITE]                        = {
4055c7af6c7SXiao Yang 		.name   = "IB_OPCODE_RC_ATOMIC_WRITE",
4065c7af6c7SXiao Yang 		.mask   = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
4075c7af6c7SXiao Yang 			  RXE_ATOMIC_WRITE_MASK | RXE_START_MASK |
4085c7af6c7SXiao Yang 			  RXE_END_MASK,
4095c7af6c7SXiao Yang 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
4105c7af6c7SXiao Yang 		.offset = {
4115c7af6c7SXiao Yang 			[RXE_BTH]       = 0,
4125c7af6c7SXiao Yang 			[RXE_RETH]      = RXE_BTH_BYTES,
4135c7af6c7SXiao Yang 			[RXE_PAYLOAD]   = RXE_BTH_BYTES + RXE_RETH_BYTES,
4145c7af6c7SXiao Yang 		}
4155c7af6c7SXiao Yang 	},
4168700e3e7SMoni Shoua 
4178700e3e7SMoni Shoua 	/* UC */
4188700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_FIRST]			= {
4198700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_FIRST",
420d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK |
421d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK,
4228700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4238700e3e7SMoni Shoua 		.offset = {
4248700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4258700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4268700e3e7SMoni Shoua 		}
4278700e3e7SMoni Shoua 	},
4288700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_MIDDLE]		= {
4298700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_MIDDLE",
430d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
431d8b0afd2SLi Zhijian 			  RXE_MIDDLE_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_LAST]			= {
4398700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST",
440d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
441d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_END_MASK,
4428700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4438700e3e7SMoni Shoua 		.offset = {
4448700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4458700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4468700e3e7SMoni Shoua 		}
4478700e3e7SMoni Shoua 	},
4488700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE]		= {
4498700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE",
450d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
451d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
4528700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4538700e3e7SMoni Shoua 		.offset = {
4548700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4558700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
456d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
457d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
4588700e3e7SMoni Shoua 		}
4598700e3e7SMoni Shoua 	},
4608700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY]			= {
4618700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY",
462d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
463d8b0afd2SLi Zhijian 			  RXE_RWR_MASK | RXE_SEND_MASK |
464d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
4658700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4668700e3e7SMoni Shoua 		.offset = {
4678700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4688700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4698700e3e7SMoni Shoua 		}
4708700e3e7SMoni Shoua 	},
4718700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE]		= {
4728700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE",
473d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
474d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
475d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
4768700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4778700e3e7SMoni Shoua 		.offset = {
4788700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4798700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
480d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
481d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
4828700e3e7SMoni Shoua 		}
4838700e3e7SMoni Shoua 	},
4848700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_FIRST]		= {
4858700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_FIRST",
486d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
487d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
4888700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
4898700e3e7SMoni Shoua 		.offset = {
4908700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4918700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
492d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
493d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
4948700e3e7SMoni Shoua 		}
4958700e3e7SMoni Shoua 	},
4968700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_MIDDLE]		= {
4978700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_MIDDLE",
498d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
499d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
5008700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
5018700e3e7SMoni Shoua 		.offset = {
5028700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5038700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
5048700e3e7SMoni Shoua 		}
5058700e3e7SMoni Shoua 	},
5068700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST]			= {
5078700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST",
508d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
509d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5108700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
5118700e3e7SMoni Shoua 		.offset = {
5128700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5138700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
5148700e3e7SMoni Shoua 		}
5158700e3e7SMoni Shoua 	},
5168700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
5178700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
518d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
519d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
520d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5218700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
5228700e3e7SMoni Shoua 		.offset = {
5238700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5248700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
525d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
526d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
5278700e3e7SMoni Shoua 		}
5288700e3e7SMoni Shoua 	},
5298700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY]			= {
5308700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY",
531d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
532d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK |
533d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5348700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
5358700e3e7SMoni Shoua 		.offset = {
5368700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5378700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
538d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
539d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
5408700e3e7SMoni Shoua 		}
5418700e3e7SMoni Shoua 	},
5428700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
5438700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
544d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
545d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
546d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
547d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
5488700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
5498700e3e7SMoni Shoua 		.offset = {
5508700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5518700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
552d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
553d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
554d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
555d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
556d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
5578700e3e7SMoni Shoua 		}
5588700e3e7SMoni Shoua 	},
5598700e3e7SMoni Shoua 
5608700e3e7SMoni Shoua 	/* RD */
5618700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_FIRST]			= {
5628700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_FIRST",
563d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
564d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
565d8b0afd2SLi Zhijian 			  RXE_START_MASK,
5668700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5678700e3e7SMoni Shoua 		.offset = {
5688700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5698700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
570d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
571d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
572d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
573d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
574d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5758700e3e7SMoni Shoua 		}
5768700e3e7SMoni Shoua 	},
5778700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_MIDDLE]		= {
5788700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_MIDDLE",
579d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
580d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_SEND_MASK |
581d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
5828700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5838700e3e7SMoni Shoua 		.offset = {
5848700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5858700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
586d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
587d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
588d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
589d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
590d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5918700e3e7SMoni Shoua 		}
5928700e3e7SMoni Shoua 	},
5938700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST]			= {
5948700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST",
595d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
596d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK |
597d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5988700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5998700e3e7SMoni Shoua 		.offset = {
6008700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6018700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
602d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
603d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
604d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
605d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
606d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
6078700e3e7SMoni Shoua 		}
6088700e3e7SMoni Shoua 	},
6098700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE]		= {
6108700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE",
611d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
612d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
613d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK |
614d8b0afd2SLi Zhijian 			  RXE_END_MASK,
615d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
616d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6178700e3e7SMoni Shoua 		.offset = {
6188700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6198700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
620d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
621d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
622d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
623d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
624d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
625d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
626d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
627d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
628d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
6298700e3e7SMoni Shoua 		}
6308700e3e7SMoni Shoua 	},
6318700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY]			= {
6328700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY",
633d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
634d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
635d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
6368700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6378700e3e7SMoni Shoua 		.offset = {
6388700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6398700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
640d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
641d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
642d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
643d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
644d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
6458700e3e7SMoni Shoua 		}
6468700e3e7SMoni Shoua 	},
6478700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE]		= {
6488700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE",
649d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
650d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
651d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
652d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
653d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
654d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6558700e3e7SMoni Shoua 		.offset = {
6568700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6578700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
658d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
659d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
660d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
661d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
662d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
663d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
664d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
665d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
666d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
6678700e3e7SMoni Shoua 		}
6688700e3e7SMoni Shoua 	},
6698700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_FIRST]		= {
6708700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_FIRST",
671d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
672d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
673d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
674d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
675d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6768700e3e7SMoni Shoua 		.offset = {
6778700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6788700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
679d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
680d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
681d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
682d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
683d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
684d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
685d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
686d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
687d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
6888700e3e7SMoni Shoua 		}
6898700e3e7SMoni Shoua 	},
6908700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_MIDDLE]		= {
6918700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_MIDDLE",
692d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
693d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
694d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
6958700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6968700e3e7SMoni Shoua 		.offset = {
6978700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6988700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
699d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
700d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
701d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
702d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
703d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
7048700e3e7SMoni Shoua 		}
7058700e3e7SMoni Shoua 	},
7068700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST]			= {
7078700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST",
708d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
709d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
710d8b0afd2SLi Zhijian 			  RXE_END_MASK,
7118700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
7128700e3e7SMoni Shoua 		.offset = {
7138700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7148700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
715d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
716d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
717d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
718d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
719d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
7208700e3e7SMoni Shoua 		}
7218700e3e7SMoni Shoua 	},
7228700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
7238700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE",
724d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
725d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
726d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
727d8b0afd2SLi Zhijian 			  RXE_END_MASK,
728d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
729d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
7308700e3e7SMoni Shoua 		.offset = {
7318700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7328700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
733d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
734d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
735d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
736d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
737d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
738d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
739d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
740d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
741d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
7428700e3e7SMoni Shoua 		}
7438700e3e7SMoni Shoua 	},
7448700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY]			= {
7458700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY",
746d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
747d8b0afd2SLi Zhijian 				RXE_PAYLOAD_MASK | RXE_REQ_MASK |
748d8b0afd2SLi Zhijian 				RXE_WRITE_MASK | RXE_START_MASK |
749d8b0afd2SLi Zhijian 				RXE_END_MASK,
750d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
751d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
7528700e3e7SMoni Shoua 		.offset = {
7538700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7548700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
755d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
756d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
757d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
758d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
759d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
760d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
761d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
762d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
763d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
7648700e3e7SMoni Shoua 		}
7658700e3e7SMoni Shoua 	},
7668700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
7678700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
768d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
769d8b0afd2SLi Zhijian 			  RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
770d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
771d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
772d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
773d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES +
774d8b0afd2SLi Zhijian 			  RXE_DETH_BYTES + RXE_RDETH_BYTES,
7758700e3e7SMoni Shoua 		.offset = {
7768700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7778700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
778d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
779d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
780d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
781d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
782d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
783d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
784d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
785d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
786d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
787d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
788d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
789d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
790d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
791d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
7928700e3e7SMoni Shoua 		}
7938700e3e7SMoni Shoua 	},
7948700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_REQUEST]			= {
7958700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_REQUEST",
796d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
797d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_READ_MASK |
798d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
799d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
800d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
8018700e3e7SMoni Shoua 		.offset = {
8028700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8038700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
804d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
805d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
806d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
807d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
808d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
809d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
810d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
811d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
812d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8138700e3e7SMoni Shoua 		}
8148700e3e7SMoni Shoua 	},
8158700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST]		= {
8168700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST",
817d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK |
818d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_ACK_MASK |
819d8b0afd2SLi Zhijian 			  RXE_START_MASK,
8208700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8218700e3e7SMoni Shoua 		.offset = {
8228700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8238700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
824d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
825d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
826d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
827d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
828d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8298700e3e7SMoni Shoua 		}
8308700e3e7SMoni Shoua 	},
8318700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE]		= {
8328700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE",
833d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
834d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
8358700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
8368700e3e7SMoni Shoua 		.offset = {
8378700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8388700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
839d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
840d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8418700e3e7SMoni Shoua 		}
8428700e3e7SMoni Shoua 	},
8438700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST]		= {
8448700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST",
845d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK |
846d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_END_MASK,
8478700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8488700e3e7SMoni Shoua 		.offset = {
8498700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8508700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
851d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
852d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
853d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
854d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
855d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8568700e3e7SMoni Shoua 		}
8578700e3e7SMoni Shoua 	},
8588700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY]		= {
8598700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY",
860d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK |
861d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
8628700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8638700e3e7SMoni Shoua 		.offset = {
8648700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8658700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
866d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
867d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
868d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
869d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
870d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8718700e3e7SMoni Shoua 		}
8728700e3e7SMoni Shoua 	},
8738700e3e7SMoni Shoua 	[IB_OPCODE_RD_ACKNOWLEDGE]			= {
8748700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ACKNOWLEDGE",
875d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK |
876d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
8778700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8788700e3e7SMoni Shoua 		.offset = {
8798700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8808700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
881d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
882d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8838700e3e7SMoni Shoua 		}
8848700e3e7SMoni Shoua 	},
8858700e3e7SMoni Shoua 	[IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE]			= {
8868700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE",
887d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK |
888d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
889d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES +
890d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
8918700e3e7SMoni Shoua 		.offset = {
8928700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8938700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
894d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
895d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
896d8b0afd2SLi Zhijian 			[RXE_ATMACK]	= RXE_BTH_BYTES +
897d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
898d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8998700e3e7SMoni Shoua 		}
9008700e3e7SMoni Shoua 	},
9018700e3e7SMoni Shoua 	[IB_OPCODE_RD_COMPARE_SWAP]			= {
9028700e3e7SMoni Shoua 		.name	= "RD_COMPARE_SWAP",
903d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK |
904d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_ATOMIC_MASK |
905d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
906d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES +
907d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
9088700e3e7SMoni Shoua 		.offset = {
9098700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9108700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
911d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
912d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
913d8b0afd2SLi Zhijian 			[RXE_ATMETH]	= RXE_BTH_BYTES +
914d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
915d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
9168700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
917d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES +
918d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
919d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
9208700e3e7SMoni Shoua 		}
9218700e3e7SMoni Shoua 	},
9228700e3e7SMoni Shoua 	[IB_OPCODE_RD_FETCH_ADD]			= {
9238700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_FETCH_ADD",
924d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK |
925d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_ATOMIC_MASK |
926d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
927d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES +
928d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
9298700e3e7SMoni Shoua 		.offset = {
9308700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9318700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
932d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
933d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
934d8b0afd2SLi Zhijian 			[RXE_ATMETH]	= RXE_BTH_BYTES +
935d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
936d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
9378700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
938d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES +
939d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
940d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
9418700e3e7SMoni Shoua 		}
9428700e3e7SMoni Shoua 	},
9438700e3e7SMoni Shoua 
9448700e3e7SMoni Shoua 	/* UD */
9458700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY]			= {
9468700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY",
947d8b0afd2SLi Zhijian 		.mask	= RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
948d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
949d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
9508700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES,
9518700e3e7SMoni Shoua 		.offset = {
9528700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9538700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
954d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
955d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
9568700e3e7SMoni Shoua 		}
9578700e3e7SMoni Shoua 	},
9588700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE]		= {
9598700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE",
960d8b0afd2SLi Zhijian 		.mask	= RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
961d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
962d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
9638700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES,
9648700e3e7SMoni Shoua 		.offset = {
9658700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9668700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
967d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
968d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
969d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
970d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
971d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
9728700e3e7SMoni Shoua 		}
9738700e3e7SMoni Shoua 	},
9748700e3e7SMoni Shoua 
9758700e3e7SMoni Shoua };
976