xref: /openbmc/linux/drivers/infiniband/sw/rxe/rxe_opcode.c (revision 5c7af6c7938466aa2f3c52057f4dd28b4a1e9e42)
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*5c7af6c7SXiao Yang 	[IB_WR_ATOMIC_WRITE]                       = {
105*5c7af6c7SXiao Yang 		.name   = "IB_WR_ATOMIC_WRITE",
106*5c7af6c7SXiao Yang 		.mask   = {
107*5c7af6c7SXiao Yang 			[IB_QPT_RC]     = WR_ATOMIC_WRITE_MASK,
108*5c7af6c7SXiao Yang 		},
109*5c7af6c7SXiao Yang 	},
1108700e3e7SMoni Shoua };
1118700e3e7SMoni Shoua 
1128700e3e7SMoni Shoua struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = {
1138700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_FIRST]			= {
1148700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_FIRST",
115d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK |
116d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK,
1178700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1188700e3e7SMoni Shoua 		.offset = {
1198700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1208700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1218700e3e7SMoni Shoua 		}
1228700e3e7SMoni Shoua 	},
1238700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_MIDDLE]		= {
1248d1cfb88SChengguang Xu 		.name	= "IB_OPCODE_RC_SEND_MIDDLE",
125d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
126d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
1278700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1288700e3e7SMoni Shoua 		.offset = {
1298700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1308700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1318700e3e7SMoni Shoua 		}
1328700e3e7SMoni Shoua 	},
1338700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST]			= {
1348700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST",
135d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
136d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_END_MASK,
1378700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1388700e3e7SMoni Shoua 		.offset = {
1398700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1408700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1418700e3e7SMoni Shoua 		}
1428700e3e7SMoni Shoua 	},
1438700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE]		= {
1448700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE",
145d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
146d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
1478700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1488700e3e7SMoni Shoua 		.offset = {
1498700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1508700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
151d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
152d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
1538700e3e7SMoni Shoua 		}
1548700e3e7SMoni Shoua 	},
1558700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY]			= {
1568700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY",
157d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
158d8b0afd2SLi Zhijian 			  RXE_RWR_MASK | RXE_SEND_MASK |
159d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
1608700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1618700e3e7SMoni Shoua 		.offset = {
1628700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1638700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1648700e3e7SMoni Shoua 		}
1658700e3e7SMoni Shoua 	},
1668700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE]		= {
1678700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE",
168d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
169d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
170d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
1718700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1728700e3e7SMoni Shoua 		.offset = {
1738700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1748700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
175d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
176d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
1778700e3e7SMoni Shoua 		}
1788700e3e7SMoni Shoua 	},
1798700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_FIRST]		= {
1808700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_FIRST",
181d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
182d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
1838700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
1848700e3e7SMoni Shoua 		.offset = {
1858700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1868700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
187d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
188d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
1898700e3e7SMoni Shoua 		}
1908700e3e7SMoni Shoua 	},
1918700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_MIDDLE]		= {
1928700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_MIDDLE",
193d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
194d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
1958700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1968700e3e7SMoni Shoua 		.offset = {
1978700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1988700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1998700e3e7SMoni Shoua 		}
2008700e3e7SMoni Shoua 	},
2018700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST]			= {
2028700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST",
203d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
204d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2058700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
2068700e3e7SMoni Shoua 		.offset = {
2078700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2088700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
2098700e3e7SMoni Shoua 		}
2108700e3e7SMoni Shoua 	},
2118700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
2128700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
213d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
214d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
215d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2168700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
2178700e3e7SMoni Shoua 		.offset = {
2188700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2198700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
220d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
221d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
2228700e3e7SMoni Shoua 		}
2238700e3e7SMoni Shoua 	},
2248700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY]			= {
2258700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY",
226d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
227d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK |
228d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2298700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2308700e3e7SMoni Shoua 		.offset = {
2318700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2328700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
233d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
234d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
2358700e3e7SMoni Shoua 		}
2368700e3e7SMoni Shoua 	},
2378700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
2388700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
239d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
240d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
241d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
242d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
2438700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
2448700e3e7SMoni Shoua 		.offset = {
2458700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2468700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
247d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
248d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
249d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
250d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
251d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
2528700e3e7SMoni Shoua 		}
2538700e3e7SMoni Shoua 	},
2548700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_REQUEST]			= {
2558700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_REQUEST",
256d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_REQ_MASK | RXE_READ_MASK |
257d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
2588700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2598700e3e7SMoni Shoua 		.offset = {
2608700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2618700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
262d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
263d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
2648700e3e7SMoni Shoua 		}
2658700e3e7SMoni Shoua 	},
2668700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST]		= {
2678700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST",
268d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
269d8b0afd2SLi Zhijian 			  RXE_START_MASK,
2708700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2718700e3e7SMoni Shoua 		.offset = {
2728700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2738700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
274d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
275d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
2768700e3e7SMoni Shoua 		}
2778700e3e7SMoni Shoua 	},
2788700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE]		= {
2798700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE",
2808700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_ACK_MASK | RXE_MIDDLE_MASK,
2818700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
2828700e3e7SMoni Shoua 		.offset = {
2838700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2848700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
2858700e3e7SMoni Shoua 		}
2868700e3e7SMoni Shoua 	},
2878700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST]		= {
2888700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST",
289d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
290d8b0afd2SLi Zhijian 			  RXE_END_MASK,
2918700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2928700e3e7SMoni Shoua 		.offset = {
2938700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2948700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
295d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
296d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
2978700e3e7SMoni Shoua 		}
2988700e3e7SMoni Shoua 	},
2998700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY]		= {
3008700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY",
301d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
302d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3038700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
3048700e3e7SMoni Shoua 		.offset = {
3058700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3068700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
307d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
308d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3098700e3e7SMoni Shoua 		}
3108700e3e7SMoni Shoua 	},
3118700e3e7SMoni Shoua 	[IB_OPCODE_RC_ACKNOWLEDGE]			= {
3128700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ACKNOWLEDGE",
313d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK |
314d8b0afd2SLi Zhijian 			  RXE_END_MASK,
3158700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
3168700e3e7SMoni Shoua 		.offset = {
3178700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3188700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
319d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
320d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3218700e3e7SMoni Shoua 		}
3228700e3e7SMoni Shoua 	},
3238700e3e7SMoni Shoua 	[IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE]			= {
3248700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE",
325d8b0afd2SLi Zhijian 		.mask	= RXE_AETH_MASK | RXE_ATMACK_MASK | RXE_ACK_MASK |
326d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3278700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES,
3288700e3e7SMoni Shoua 		.offset = {
3298700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3308700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
331d8b0afd2SLi Zhijian 			[RXE_ATMACK]	= RXE_BTH_BYTES +
332d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
333d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
334d8b0afd2SLi Zhijian 					  RXE_ATMACK_BYTES +
335d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
3368700e3e7SMoni Shoua 		}
3378700e3e7SMoni Shoua 	},
3388700e3e7SMoni Shoua 	[IB_OPCODE_RC_COMPARE_SWAP]			= {
3398700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_COMPARE_SWAP",
340d8b0afd2SLi Zhijian 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK |
341d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3428700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
3438700e3e7SMoni Shoua 		.offset = {
3448700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3458700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
346d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
347d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES,
3488700e3e7SMoni Shoua 		}
3498700e3e7SMoni Shoua 	},
3508700e3e7SMoni Shoua 	[IB_OPCODE_RC_FETCH_ADD]			= {
3518700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_FETCH_ADD",
352d8b0afd2SLi Zhijian 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK |
353d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
3548700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
3558700e3e7SMoni Shoua 		.offset = {
3568700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3578700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
358d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
359d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES,
3608700e3e7SMoni Shoua 		}
3618700e3e7SMoni Shoua 	},
3628700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE]		= {
3638700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE",
364d8b0afd2SLi Zhijian 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
365d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
3668700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3678700e3e7SMoni Shoua 		.offset = {
3688700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3698700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
370d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
371d8b0afd2SLi Zhijian 					  RXE_IETH_BYTES,
3728700e3e7SMoni Shoua 		}
3738700e3e7SMoni Shoua 	},
3748700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE]		= {
3758700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_INV",
376d8b0afd2SLi Zhijian 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
377d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
378d8b0afd2SLi Zhijian 			  RXE_END_MASK  | RXE_START_MASK,
3798700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3808700e3e7SMoni Shoua 		.offset = {
3818700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3828700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
383d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
384d8b0afd2SLi Zhijian 					  RXE_IETH_BYTES,
3858700e3e7SMoni Shoua 		}
3868700e3e7SMoni Shoua 	},
387*5c7af6c7SXiao Yang 	[IB_OPCODE_RC_ATOMIC_WRITE]                        = {
388*5c7af6c7SXiao Yang 		.name   = "IB_OPCODE_RC_ATOMIC_WRITE",
389*5c7af6c7SXiao Yang 		.mask   = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
390*5c7af6c7SXiao Yang 			  RXE_ATOMIC_WRITE_MASK | RXE_START_MASK |
391*5c7af6c7SXiao Yang 			  RXE_END_MASK,
392*5c7af6c7SXiao Yang 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
393*5c7af6c7SXiao Yang 		.offset = {
394*5c7af6c7SXiao Yang 			[RXE_BTH]       = 0,
395*5c7af6c7SXiao Yang 			[RXE_RETH]      = RXE_BTH_BYTES,
396*5c7af6c7SXiao Yang 			[RXE_PAYLOAD]   = RXE_BTH_BYTES + RXE_RETH_BYTES,
397*5c7af6c7SXiao Yang 		}
398*5c7af6c7SXiao Yang 	},
3998700e3e7SMoni Shoua 
4008700e3e7SMoni Shoua 	/* UC */
4018700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_FIRST]			= {
4028700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_FIRST",
403d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK |
404d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK,
4058700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4068700e3e7SMoni Shoua 		.offset = {
4078700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4088700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4098700e3e7SMoni Shoua 		}
4108700e3e7SMoni Shoua 	},
4118700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_MIDDLE]		= {
4128700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_MIDDLE",
413d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK |
414d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
4158700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4168700e3e7SMoni Shoua 		.offset = {
4178700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4188700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4198700e3e7SMoni Shoua 		}
4208700e3e7SMoni Shoua 	},
4218700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST]			= {
4228700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST",
423d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
424d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_END_MASK,
4258700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4268700e3e7SMoni Shoua 		.offset = {
4278700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4288700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4298700e3e7SMoni Shoua 		}
4308700e3e7SMoni Shoua 	},
4318700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE]		= {
4328700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE",
433d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
434d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
4358700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4368700e3e7SMoni Shoua 		.offset = {
4378700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4388700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
439d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
440d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
4418700e3e7SMoni Shoua 		}
4428700e3e7SMoni Shoua 	},
4438700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY]			= {
4448700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY",
445d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK |
446d8b0afd2SLi Zhijian 			  RXE_RWR_MASK | RXE_SEND_MASK |
447d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
4488700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4498700e3e7SMoni Shoua 		.offset = {
4508700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4518700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4528700e3e7SMoni Shoua 		}
4538700e3e7SMoni Shoua 	},
4548700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE]		= {
4558700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE",
456d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
457d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
458d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
4598700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4608700e3e7SMoni Shoua 		.offset = {
4618700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4628700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
463d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
464d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
4658700e3e7SMoni Shoua 		}
4668700e3e7SMoni Shoua 	},
4678700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_FIRST]		= {
4688700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_FIRST",
469d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
470d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
4718700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
4728700e3e7SMoni Shoua 		.offset = {
4738700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4748700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
475d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
476d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
4778700e3e7SMoni Shoua 		}
4788700e3e7SMoni Shoua 	},
4798700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_MIDDLE]		= {
4808700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_MIDDLE",
481d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
482d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
4838700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4848700e3e7SMoni Shoua 		.offset = {
4858700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4868700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4878700e3e7SMoni Shoua 		}
4888700e3e7SMoni Shoua 	},
4898700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST]			= {
4908700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST",
491d8b0afd2SLi Zhijian 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK |
492d8b0afd2SLi Zhijian 			  RXE_END_MASK,
4938700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4948700e3e7SMoni Shoua 		.offset = {
4958700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4968700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4978700e3e7SMoni Shoua 		}
4988700e3e7SMoni Shoua 	},
4998700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
5008700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
501d8b0afd2SLi Zhijian 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
502d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
503d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5048700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
5058700e3e7SMoni Shoua 		.offset = {
5068700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5078700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
508d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
509d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
5108700e3e7SMoni Shoua 		}
5118700e3e7SMoni Shoua 	},
5128700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY]			= {
5138700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY",
514d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
515d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK |
516d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5178700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
5188700e3e7SMoni Shoua 		.offset = {
5198700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5208700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
521d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
522d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
5238700e3e7SMoni Shoua 		}
5248700e3e7SMoni Shoua 	},
5258700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
5268700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
527d8b0afd2SLi Zhijian 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
528d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
529d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
530d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
5318700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
5328700e3e7SMoni Shoua 		.offset = {
5338700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5348700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
535d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
536d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
537d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
538d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
539d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
5408700e3e7SMoni Shoua 		}
5418700e3e7SMoni Shoua 	},
5428700e3e7SMoni Shoua 
5438700e3e7SMoni Shoua 	/* RD */
5448700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_FIRST]			= {
5458700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_FIRST",
546d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
547d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
548d8b0afd2SLi Zhijian 			  RXE_START_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,
553d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
554d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
555d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
556d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
557d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5588700e3e7SMoni Shoua 		}
5598700e3e7SMoni Shoua 	},
5608700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_MIDDLE]		= {
5618700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_MIDDLE",
562d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
563d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_SEND_MASK |
564d8b0afd2SLi Zhijian 			  RXE_MIDDLE_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,
569d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
570d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
571d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
572d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
573d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5748700e3e7SMoni Shoua 		}
5758700e3e7SMoni Shoua 	},
5768700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST]			= {
5778700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST",
578d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
579d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK |
580d8b0afd2SLi Zhijian 			  RXE_END_MASK,
5818700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5828700e3e7SMoni Shoua 		.offset = {
5838700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5848700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
585d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
586d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
587d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
588d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
589d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
5908700e3e7SMoni Shoua 		}
5918700e3e7SMoni Shoua 	},
5928700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE]		= {
5938700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE",
594d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
595d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
596d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_SEND_MASK |
597d8b0afd2SLi Zhijian 			  RXE_END_MASK,
598d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
599d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6008700e3e7SMoni Shoua 		.offset = {
6018700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6028700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
603d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
604d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
605d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
606d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
607d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
608d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
609d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
610d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
611d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
6128700e3e7SMoni Shoua 		}
6138700e3e7SMoni Shoua 	},
6148700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY]			= {
6158700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY",
616d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
617d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
618d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
6198700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6208700e3e7SMoni Shoua 		.offset = {
6218700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6228700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
623d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
624d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
625d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
626d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
627d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
6288700e3e7SMoni Shoua 		}
6298700e3e7SMoni Shoua 	},
6308700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE]		= {
6318700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE",
632d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
633d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
634d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
635d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
636d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
637d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6388700e3e7SMoni Shoua 		.offset = {
6398700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6408700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
641d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
642d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
643d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
644d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
645d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
646d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
647d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
648d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
649d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
6508700e3e7SMoni Shoua 		}
6518700e3e7SMoni Shoua 	},
6528700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_FIRST]		= {
6538700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_FIRST",
654d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
655d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
656d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_START_MASK,
657d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
658d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
6598700e3e7SMoni Shoua 		.offset = {
6608700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6618700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
662d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
663d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
664d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
665d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
666d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
667d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
668d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
669d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
670d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
6718700e3e7SMoni Shoua 		}
6728700e3e7SMoni Shoua 	},
6738700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_MIDDLE]		= {
6748700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_MIDDLE",
675d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
676d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
677d8b0afd2SLi Zhijian 			  RXE_MIDDLE_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,
682d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
683d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
684d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
685d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
686d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
6878700e3e7SMoni Shoua 		}
6888700e3e7SMoni Shoua 	},
6898700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST]			= {
6908700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST",
691d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK |
692d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
693d8b0afd2SLi Zhijian 			  RXE_END_MASK,
6948700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6958700e3e7SMoni Shoua 		.offset = {
6968700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6978700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
698d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
699d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
700d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
701d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
702d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
7038700e3e7SMoni Shoua 		}
7048700e3e7SMoni Shoua 	},
7058700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
7068700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE",
707d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK |
708d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_REQ_MASK |
709d8b0afd2SLi Zhijian 			  RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
710d8b0afd2SLi Zhijian 			  RXE_END_MASK,
711d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES +
712d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
7138700e3e7SMoni Shoua 		.offset = {
7148700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7158700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
716d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
717d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
718d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
719d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
720d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
721d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
722d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
723d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
724d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
7258700e3e7SMoni Shoua 		}
7268700e3e7SMoni Shoua 	},
7278700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY]			= {
7288700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY",
729d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
730d8b0afd2SLi Zhijian 				RXE_PAYLOAD_MASK | RXE_REQ_MASK |
731d8b0afd2SLi Zhijian 				RXE_WRITE_MASK | RXE_START_MASK |
732d8b0afd2SLi Zhijian 				RXE_END_MASK,
733d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
734d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
7358700e3e7SMoni Shoua 		.offset = {
7368700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7378700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
738d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
739d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
740d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
741d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
742d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
743d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
744d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
745d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
746d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
7478700e3e7SMoni Shoua 		}
7488700e3e7SMoni Shoua 	},
7498700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
7508700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
751d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
752d8b0afd2SLi Zhijian 			  RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
753d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_WRITE_MASK |
754d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK |
755d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
756d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES +
757d8b0afd2SLi Zhijian 			  RXE_DETH_BYTES + RXE_RDETH_BYTES,
7588700e3e7SMoni Shoua 		.offset = {
7598700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7608700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
761d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
762d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
763d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
764d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
765d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
766d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
767d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
768d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
769d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES,
770d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
771d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
772d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
773d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
774d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
7758700e3e7SMoni Shoua 		}
7768700e3e7SMoni Shoua 	},
7778700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_REQUEST]			= {
7788700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_REQUEST",
779d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK |
780d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_READ_MASK |
781d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
782d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES +
783d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
7848700e3e7SMoni Shoua 		.offset = {
7858700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7868700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
787d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
788d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
789d8b0afd2SLi Zhijian 			[RXE_RETH]	= RXE_BTH_BYTES +
790d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
791d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
792d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
793d8b0afd2SLi Zhijian 					  RXE_RETH_BYTES +
794d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
795d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
7968700e3e7SMoni Shoua 		}
7978700e3e7SMoni Shoua 	},
7988700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST]		= {
7998700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST",
800d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK |
801d8b0afd2SLi Zhijian 			  RXE_PAYLOAD_MASK | RXE_ACK_MASK |
802d8b0afd2SLi Zhijian 			  RXE_START_MASK,
8038700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8048700e3e7SMoni Shoua 		.offset = {
8058700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8068700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
807d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
808d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
809d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
810d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
811d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8128700e3e7SMoni Shoua 		}
8138700e3e7SMoni Shoua 	},
8148700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE]		= {
8158700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE",
816d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK |
817d8b0afd2SLi Zhijian 			  RXE_MIDDLE_MASK,
8188700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
8198700e3e7SMoni Shoua 		.offset = {
8208700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8218700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
822d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
823d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8248700e3e7SMoni Shoua 		}
8258700e3e7SMoni Shoua 	},
8268700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST]		= {
8278700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST",
828d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK |
829d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_END_MASK,
8308700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8318700e3e7SMoni Shoua 		.offset = {
8328700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8338700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
834d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
835d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
836d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
837d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
838d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8398700e3e7SMoni Shoua 		}
8408700e3e7SMoni Shoua 	},
8418700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY]		= {
8428700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY",
843d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK |
844d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
8458700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8468700e3e7SMoni Shoua 		.offset = {
8478700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8488700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
849d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
850d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
851d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
852d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
853d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8548700e3e7SMoni Shoua 		}
8558700e3e7SMoni Shoua 	},
8568700e3e7SMoni Shoua 	[IB_OPCODE_RD_ACKNOWLEDGE]			= {
8578700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ACKNOWLEDGE",
858d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK |
859d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
8608700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8618700e3e7SMoni Shoua 		.offset = {
8628700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8638700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
864d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
865d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
8668700e3e7SMoni Shoua 		}
8678700e3e7SMoni Shoua 	},
8688700e3e7SMoni Shoua 	[IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE]			= {
8698700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE",
870d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK |
871d8b0afd2SLi Zhijian 			  RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
872d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES +
873d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
8748700e3e7SMoni Shoua 		.offset = {
8758700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8768700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
877d8b0afd2SLi Zhijian 			[RXE_AETH]	= RXE_BTH_BYTES +
878d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
879d8b0afd2SLi Zhijian 			[RXE_ATMACK]	= RXE_BTH_BYTES +
880d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
881d8b0afd2SLi Zhijian 					  RXE_AETH_BYTES,
8828700e3e7SMoni Shoua 		}
8838700e3e7SMoni Shoua 	},
8848700e3e7SMoni Shoua 	[IB_OPCODE_RD_COMPARE_SWAP]			= {
8858700e3e7SMoni Shoua 		.name	= "RD_COMPARE_SWAP",
886d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK |
887d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_ATOMIC_MASK |
888d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
889d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES +
890d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
8918700e3e7SMoni Shoua 		.offset = {
8928700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8938700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
894d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
895d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
896d8b0afd2SLi Zhijian 			[RXE_ATMETH]	= RXE_BTH_BYTES +
897d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
898d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
8998700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
900d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES +
901d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
902d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
9038700e3e7SMoni Shoua 		}
9048700e3e7SMoni Shoua 	},
9058700e3e7SMoni Shoua 	[IB_OPCODE_RD_FETCH_ADD]			= {
9068700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_FETCH_ADD",
907d8b0afd2SLi Zhijian 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK |
908d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_ATOMIC_MASK |
909d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
910d8b0afd2SLi Zhijian 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES +
911d8b0afd2SLi Zhijian 			  RXE_RDETH_BYTES,
9128700e3e7SMoni Shoua 		.offset = {
9138700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9148700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
915d8b0afd2SLi Zhijian 			[RXE_DETH]	= RXE_BTH_BYTES +
916d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
917d8b0afd2SLi Zhijian 			[RXE_ATMETH]	= RXE_BTH_BYTES +
918d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES +
919d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
9208700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
921d8b0afd2SLi Zhijian 					  RXE_ATMETH_BYTES +
922d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
923d8b0afd2SLi Zhijian 					  RXE_RDETH_BYTES,
9248700e3e7SMoni Shoua 		}
9258700e3e7SMoni Shoua 	},
9268700e3e7SMoni Shoua 
9278700e3e7SMoni Shoua 	/* UD */
9288700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY]			= {
9298700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY",
930d8b0afd2SLi Zhijian 		.mask	= RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK |
931d8b0afd2SLi Zhijian 			  RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK |
932d8b0afd2SLi Zhijian 			  RXE_START_MASK | RXE_END_MASK,
9338700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES,
9348700e3e7SMoni Shoua 		.offset = {
9358700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9368700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
937d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
938d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
9398700e3e7SMoni Shoua 		}
9408700e3e7SMoni Shoua 	},
9418700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE]		= {
9428700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE",
943d8b0afd2SLi Zhijian 		.mask	= RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK |
944d8b0afd2SLi Zhijian 			  RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK |
945d8b0afd2SLi Zhijian 			  RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
9468700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES,
9478700e3e7SMoni Shoua 		.offset = {
9488700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9498700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
950d8b0afd2SLi Zhijian 			[RXE_IMMDT]	= RXE_BTH_BYTES +
951d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES,
952d8b0afd2SLi Zhijian 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
953d8b0afd2SLi Zhijian 					  RXE_DETH_BYTES +
954d8b0afd2SLi Zhijian 					  RXE_IMMDT_BYTES,
9558700e3e7SMoni Shoua 		}
9568700e3e7SMoni Shoua 	},
9578700e3e7SMoni Shoua 
9588700e3e7SMoni Shoua };
959