xref: /openbmc/linux/drivers/infiniband/sw/rxe/rxe_opcode.c (revision 886441fb2e658e601e22705c1a9c856ac2e8a464)
163fa15dbSBob Pearson // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
28700e3e7SMoni Shoua /*
38700e3e7SMoni Shoua  * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
48700e3e7SMoni Shoua  * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
58700e3e7SMoni Shoua  */
68700e3e7SMoni Shoua 
78700e3e7SMoni Shoua #include <rdma/ib_pack.h>
88700e3e7SMoni Shoua #include "rxe_opcode.h"
98700e3e7SMoni Shoua #include "rxe_hdr.h"
108700e3e7SMoni Shoua 
118700e3e7SMoni Shoua /* useful information about work request opcodes and pkt opcodes in
128700e3e7SMoni Shoua  * table form
138700e3e7SMoni Shoua  */
148700e3e7SMoni Shoua struct rxe_wr_opcode_info rxe_wr_opcode_info[] = {
158700e3e7SMoni Shoua 	[IB_WR_RDMA_WRITE]				= {
168700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_WRITE",
178700e3e7SMoni Shoua 		.mask	= {
188700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_WRITE_MASK,
198700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_WRITE_MASK,
208700e3e7SMoni Shoua 		},
218700e3e7SMoni Shoua 	},
228700e3e7SMoni Shoua 	[IB_WR_RDMA_WRITE_WITH_IMM]			= {
238700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_WRITE_WITH_IMM",
248700e3e7SMoni Shoua 		.mask	= {
258700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_WRITE_MASK,
268700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_WRITE_MASK,
278700e3e7SMoni Shoua 		},
288700e3e7SMoni Shoua 	},
298700e3e7SMoni Shoua 	[IB_WR_SEND]					= {
308700e3e7SMoni Shoua 		.name	= "IB_WR_SEND",
318700e3e7SMoni Shoua 		.mask	= {
328700e3e7SMoni Shoua 			[IB_QPT_SMI]	= WR_INLINE_MASK | WR_SEND_MASK,
338700e3e7SMoni Shoua 			[IB_QPT_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
348700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
358700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
368700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
378700e3e7SMoni Shoua 		},
388700e3e7SMoni Shoua 	},
398700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_IMM]				= {
408700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_IMM",
418700e3e7SMoni Shoua 		.mask	= {
428700e3e7SMoni Shoua 			[IB_QPT_SMI]	= WR_INLINE_MASK | WR_SEND_MASK,
438700e3e7SMoni Shoua 			[IB_QPT_GSI]	= WR_INLINE_MASK | WR_SEND_MASK,
448700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
458700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
468700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
478700e3e7SMoni Shoua 		},
488700e3e7SMoni Shoua 	},
498700e3e7SMoni Shoua 	[IB_WR_RDMA_READ]				= {
508700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ",
518700e3e7SMoni Shoua 		.mask	= {
528700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
538700e3e7SMoni Shoua 		},
548700e3e7SMoni Shoua 	},
558700e3e7SMoni Shoua 	[IB_WR_ATOMIC_CMP_AND_SWP]			= {
568700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_CMP_AND_SWP",
578700e3e7SMoni Shoua 		.mask	= {
588700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
598700e3e7SMoni Shoua 		},
608700e3e7SMoni Shoua 	},
618700e3e7SMoni Shoua 	[IB_WR_ATOMIC_FETCH_AND_ADD]			= {
628700e3e7SMoni Shoua 		.name	= "IB_WR_ATOMIC_FETCH_AND_ADD",
638700e3e7SMoni Shoua 		.mask	= {
648700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_ATOMIC_MASK,
658700e3e7SMoni Shoua 		},
668700e3e7SMoni Shoua 	},
678700e3e7SMoni Shoua 	[IB_WR_LSO]					= {
688700e3e7SMoni Shoua 		.name	= "IB_WR_LSO",
698700e3e7SMoni Shoua 		.mask	= {
708700e3e7SMoni Shoua 			/* not supported */
718700e3e7SMoni Shoua 		},
728700e3e7SMoni Shoua 	},
738700e3e7SMoni Shoua 	[IB_WR_SEND_WITH_INV]				= {
748700e3e7SMoni Shoua 		.name	= "IB_WR_SEND_WITH_INV",
758700e3e7SMoni Shoua 		.mask	= {
768700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_INLINE_MASK | WR_SEND_MASK,
778700e3e7SMoni Shoua 			[IB_QPT_UC]	= WR_INLINE_MASK | WR_SEND_MASK,
788700e3e7SMoni Shoua 			[IB_QPT_UD]	= WR_INLINE_MASK | WR_SEND_MASK,
798700e3e7SMoni Shoua 		},
808700e3e7SMoni Shoua 	},
818700e3e7SMoni Shoua 	[IB_WR_RDMA_READ_WITH_INV]			= {
828700e3e7SMoni Shoua 		.name	= "IB_WR_RDMA_READ_WITH_INV",
838700e3e7SMoni Shoua 		.mask	= {
848700e3e7SMoni Shoua 			[IB_QPT_RC]	= WR_READ_MASK,
858700e3e7SMoni Shoua 		},
868700e3e7SMoni Shoua 	},
878700e3e7SMoni Shoua 	[IB_WR_LOCAL_INV]				= {
888700e3e7SMoni Shoua 		.name	= "IB_WR_LOCAL_INV",
898700e3e7SMoni Shoua 		.mask	= {
90*886441fbSBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
918700e3e7SMoni Shoua 		},
928700e3e7SMoni Shoua 	},
938700e3e7SMoni Shoua 	[IB_WR_REG_MR]					= {
948700e3e7SMoni Shoua 		.name	= "IB_WR_REG_MR",
958700e3e7SMoni Shoua 		.mask	= {
96*886441fbSBob Pearson 			[IB_QPT_RC]	= WR_LOCAL_OP_MASK,
978700e3e7SMoni Shoua 		},
988700e3e7SMoni Shoua 	},
998700e3e7SMoni Shoua };
1008700e3e7SMoni Shoua 
1018700e3e7SMoni Shoua struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = {
1028700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_FIRST]			= {
1038700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_FIRST",
1048700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK
1058700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK,
1068700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1078700e3e7SMoni Shoua 		.offset = {
1088700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1098700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1108700e3e7SMoni Shoua 		}
1118700e3e7SMoni Shoua 	},
1128700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_MIDDLE]		= {
1138700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_MIDDLE]",
1148700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK
1158700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
1168700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1178700e3e7SMoni Shoua 		.offset = {
1188700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1198700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1208700e3e7SMoni Shoua 		}
1218700e3e7SMoni Shoua 	},
1228700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST]			= {
1238700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST",
1248700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
1258700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_END_MASK,
1268700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1278700e3e7SMoni Shoua 		.offset = {
1288700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1298700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1308700e3e7SMoni Shoua 		}
1318700e3e7SMoni Shoua 	},
1328700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE]		= {
1338700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE",
1348700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
1358700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
1368700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1378700e3e7SMoni Shoua 		.offset = {
1388700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1398700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
1408700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
1418700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
1428700e3e7SMoni Shoua 		}
1438700e3e7SMoni Shoua 	},
1448700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY]			= {
1458700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY",
1468700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
1478700e3e7SMoni Shoua 				| RXE_RWR_MASK | RXE_SEND_MASK
1488700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
1498700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1508700e3e7SMoni Shoua 		.offset = {
1518700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1528700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1538700e3e7SMoni Shoua 		}
1548700e3e7SMoni Shoua 	},
1558700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE]		= {
1568700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE",
1578700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
1588700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
1598700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
1608700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
1618700e3e7SMoni Shoua 		.offset = {
1628700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1638700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
1648700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
1658700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
1668700e3e7SMoni Shoua 		}
1678700e3e7SMoni Shoua 	},
1688700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_FIRST]		= {
1698700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_FIRST",
1708700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
1718700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK,
1728700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
1738700e3e7SMoni Shoua 		.offset = {
1748700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1758700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
1768700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
1778700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
1788700e3e7SMoni Shoua 		}
1798700e3e7SMoni Shoua 	},
1808700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_MIDDLE]		= {
1818700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_MIDDLE",
1828700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
1838700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
1848700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1858700e3e7SMoni Shoua 		.offset = {
1868700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1878700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1888700e3e7SMoni Shoua 		}
1898700e3e7SMoni Shoua 	},
1908700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST]			= {
1918700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST",
1928700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
1938700e3e7SMoni Shoua 				| RXE_END_MASK,
1948700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
1958700e3e7SMoni Shoua 		.offset = {
1968700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
1978700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
1988700e3e7SMoni Shoua 		}
1998700e3e7SMoni Shoua 	},
2008700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
2018700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
2028700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
2038700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK
2048700e3e7SMoni Shoua 				| RXE_END_MASK,
2058700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
2068700e3e7SMoni Shoua 		.offset = {
2078700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2088700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
2098700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
2108700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
2118700e3e7SMoni Shoua 		}
2128700e3e7SMoni Shoua 	},
2138700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY]			= {
2148700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY",
2158700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
2168700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK
2178700e3e7SMoni Shoua 				| RXE_END_MASK,
2188700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2198700e3e7SMoni Shoua 		.offset = {
2208700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2218700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
2228700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
2238700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
2248700e3e7SMoni Shoua 		}
2258700e3e7SMoni Shoua 	},
2268700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
2278700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
2288700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
2298700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
2308700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK
2318700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
2328700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
2338700e3e7SMoni Shoua 		.offset = {
2348700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2358700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
2368700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
2378700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
2388700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
2398700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
2408700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
2418700e3e7SMoni Shoua 		}
2428700e3e7SMoni Shoua 	},
2438700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_REQUEST]			= {
2448700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_REQUEST",
2458700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_REQ_MASK | RXE_READ_MASK
2468700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
2478700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
2488700e3e7SMoni Shoua 		.offset = {
2498700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2508700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
2518700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
2528700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
2538700e3e7SMoni Shoua 		}
2548700e3e7SMoni Shoua 	},
2558700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST]		= {
2568700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST",
2578700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
2588700e3e7SMoni Shoua 				| RXE_START_MASK,
2598700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2608700e3e7SMoni Shoua 		.offset = {
2618700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2628700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
2638700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
2648700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
2658700e3e7SMoni Shoua 		}
2668700e3e7SMoni Shoua 	},
2678700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE]		= {
2688700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE",
2698700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_ACK_MASK | RXE_MIDDLE_MASK,
2708700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
2718700e3e7SMoni Shoua 		.offset = {
2728700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2738700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
2748700e3e7SMoni Shoua 		}
2758700e3e7SMoni Shoua 	},
2768700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST]		= {
2778700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST",
2788700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
2798700e3e7SMoni Shoua 				| RXE_END_MASK,
2808700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2818700e3e7SMoni Shoua 		.offset = {
2828700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2838700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
2848700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
2858700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
2868700e3e7SMoni Shoua 		}
2878700e3e7SMoni Shoua 	},
2888700e3e7SMoni Shoua 	[IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY]		= {
2898700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY",
2908700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
2918700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
2928700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
2938700e3e7SMoni Shoua 		.offset = {
2948700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
2958700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
2968700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
2978700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
2988700e3e7SMoni Shoua 		}
2998700e3e7SMoni Shoua 	},
3008700e3e7SMoni Shoua 	[IB_OPCODE_RC_ACKNOWLEDGE]			= {
3018700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ACKNOWLEDGE",
3028700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK
3038700e3e7SMoni Shoua 				| RXE_END_MASK,
3048700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES,
3058700e3e7SMoni Shoua 		.offset = {
3068700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3078700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
3088700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
3098700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
3108700e3e7SMoni Shoua 		}
3118700e3e7SMoni Shoua 	},
3128700e3e7SMoni Shoua 	[IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE]			= {
3138700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE",
3148700e3e7SMoni Shoua 		.mask	= RXE_AETH_MASK | RXE_ATMACK_MASK | RXE_ACK_MASK
3158700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
3168700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES,
3178700e3e7SMoni Shoua 		.offset = {
3188700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3198700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES,
3208700e3e7SMoni Shoua 			[RXE_ATMACK]	= RXE_BTH_BYTES
3218700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
3228700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
3238700e3e7SMoni Shoua 					+ RXE_ATMACK_BYTES + RXE_AETH_BYTES,
3248700e3e7SMoni Shoua 		}
3258700e3e7SMoni Shoua 	},
3268700e3e7SMoni Shoua 	[IB_OPCODE_RC_COMPARE_SWAP]			= {
3278700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_COMPARE_SWAP",
3288700e3e7SMoni Shoua 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK
3298700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
3308700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES,
3318700e3e7SMoni Shoua 		.offset = {
3328700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3338700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES,
3348700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
3358700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES,
3368700e3e7SMoni Shoua 		}
3378700e3e7SMoni Shoua 	},
3388700e3e7SMoni Shoua 	[IB_OPCODE_RC_FETCH_ADD]			= {
3398700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_FETCH_ADD",
3408700e3e7SMoni Shoua 		.mask	= RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK
3418700e3e7SMoni Shoua 				| 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,
3468700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
3478700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES,
3488700e3e7SMoni Shoua 		}
3498700e3e7SMoni Shoua 	},
3508700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE]		= {
3518700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE",
3528700e3e7SMoni Shoua 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
3538700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
3548700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3558700e3e7SMoni Shoua 		.offset = {
3568700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3578700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
3588700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
3598700e3e7SMoni Shoua 						+ RXE_IETH_BYTES,
3608700e3e7SMoni Shoua 		}
3618700e3e7SMoni Shoua 	},
3628700e3e7SMoni Shoua 	[IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE]		= {
3638700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RC_SEND_ONLY_INV",
3648700e3e7SMoni Shoua 		.mask	= RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
3658700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
3662da36d44SJianchao Wang 				| RXE_END_MASK  | RXE_START_MASK,
3678700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IETH_BYTES,
3688700e3e7SMoni Shoua 		.offset = {
3698700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3708700e3e7SMoni Shoua 			[RXE_IETH]	= RXE_BTH_BYTES,
3718700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
3728700e3e7SMoni Shoua 						+ RXE_IETH_BYTES,
3738700e3e7SMoni Shoua 		}
3748700e3e7SMoni Shoua 	},
3758700e3e7SMoni Shoua 
3768700e3e7SMoni Shoua 	/* UC */
3778700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_FIRST]			= {
3788700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_FIRST",
3798700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK
3808700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK,
3818700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
3828700e3e7SMoni Shoua 		.offset = {
3838700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3848700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
3858700e3e7SMoni Shoua 		}
3868700e3e7SMoni Shoua 	},
3878700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_MIDDLE]		= {
3888700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_MIDDLE",
3898700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK
3908700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
3918700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
3928700e3e7SMoni Shoua 		.offset = {
3938700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
3948700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
3958700e3e7SMoni Shoua 		}
3968700e3e7SMoni Shoua 	},
3978700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST]			= {
3988700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST",
3998700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
4008700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_END_MASK,
4018700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4028700e3e7SMoni Shoua 		.offset = {
4038700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4048700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4058700e3e7SMoni Shoua 		}
4068700e3e7SMoni Shoua 	},
4078700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE]		= {
4088700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE",
4098700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
4108700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK,
4118700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4128700e3e7SMoni Shoua 		.offset = {
4138700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4148700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
4158700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
4168700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
4178700e3e7SMoni Shoua 		}
4188700e3e7SMoni Shoua 	},
4198700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY]			= {
4208700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY",
4218700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK
4228700e3e7SMoni Shoua 				| RXE_RWR_MASK | RXE_SEND_MASK
4238700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
4248700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4258700e3e7SMoni Shoua 		.offset = {
4268700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4278700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4288700e3e7SMoni Shoua 		}
4298700e3e7SMoni Shoua 	},
4308700e3e7SMoni Shoua 	[IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE]		= {
4318700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE",
4328700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
4338700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
4348700e3e7SMoni Shoua 				| RXE_START_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,
4398700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
4408700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
4418700e3e7SMoni Shoua 		}
4428700e3e7SMoni Shoua 	},
4438700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_FIRST]		= {
4448700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_FIRST",
4458700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
4468700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK,
4478700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
4488700e3e7SMoni Shoua 		.offset = {
4498700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4508700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
4518700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
4528700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
4538700e3e7SMoni Shoua 		}
4548700e3e7SMoni Shoua 	},
4558700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_MIDDLE]		= {
4568700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_MIDDLE",
4578700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
4588700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
4598700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4608700e3e7SMoni Shoua 		.offset = {
4618700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4628700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4638700e3e7SMoni Shoua 		}
4648700e3e7SMoni Shoua 	},
4658700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST]			= {
4668700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST",
4678700e3e7SMoni Shoua 		.mask	= RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK
4688700e3e7SMoni Shoua 				| RXE_END_MASK,
4698700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES,
4708700e3e7SMoni Shoua 		.offset = {
4718700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4728700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES,
4738700e3e7SMoni Shoua 		}
4748700e3e7SMoni Shoua 	},
4758700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
4768700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE",
4778700e3e7SMoni Shoua 		.mask	= RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
4788700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK
4798700e3e7SMoni Shoua 				| RXE_END_MASK,
4808700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES,
4818700e3e7SMoni Shoua 		.offset = {
4828700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4838700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES,
4848700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
4858700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
4868700e3e7SMoni Shoua 		}
4878700e3e7SMoni Shoua 	},
4888700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY]			= {
4898700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY",
4908700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
4918700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK
4928700e3e7SMoni Shoua 				| RXE_END_MASK,
4938700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES,
4948700e3e7SMoni Shoua 		.offset = {
4958700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
4968700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
4978700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
4988700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
4998700e3e7SMoni Shoua 		}
5008700e3e7SMoni Shoua 	},
5018700e3e7SMoni Shoua 	[IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
5028700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
5038700e3e7SMoni Shoua 		.mask	= RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
5048700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
5058700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK
5068700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
5078700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES,
5088700e3e7SMoni Shoua 		.offset = {
5098700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5108700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES,
5118700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
5128700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
5138700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
5148700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
5158700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
5168700e3e7SMoni Shoua 		}
5178700e3e7SMoni Shoua 	},
5188700e3e7SMoni Shoua 
5198700e3e7SMoni Shoua 	/* RD */
5208700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_FIRST]			= {
5218700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_FIRST",
5228700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
5238700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK
5248700e3e7SMoni Shoua 				| RXE_START_MASK,
5258700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5268700e3e7SMoni Shoua 		.offset = {
5278700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5288700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
5298700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
5308700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
5318700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
5328700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
5338700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
5348700e3e7SMoni Shoua 		}
5358700e3e7SMoni Shoua 	},
5368700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_MIDDLE]		= {
5378700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_MIDDLE",
5388700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
5398700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_SEND_MASK
5408700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
5418700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5428700e3e7SMoni Shoua 		.offset = {
5438700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5448700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
5458700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
5468700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
5478700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
5488700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
5498700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
5508700e3e7SMoni Shoua 		}
5518700e3e7SMoni Shoua 	},
5528700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST]			= {
5538700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST",
5548700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
5558700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK
5568700e3e7SMoni Shoua 				| RXE_END_MASK,
5578700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5588700e3e7SMoni Shoua 		.offset = {
5598700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5608700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
5618700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
5628700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
5638700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
5648700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
5658700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
5668700e3e7SMoni Shoua 		}
5678700e3e7SMoni Shoua 	},
5688700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE]		= {
5698700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE",
5708700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK
5718700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
5728700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_SEND_MASK
5738700e3e7SMoni Shoua 				| RXE_END_MASK,
5748700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
5758700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
5768700e3e7SMoni Shoua 		.offset = {
5778700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5788700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
5798700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
5808700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
5818700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
5828700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
5838700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
5848700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
5858700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
5868700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
5878700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
5888700e3e7SMoni Shoua 		}
5898700e3e7SMoni Shoua 	},
5908700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY]			= {
5918700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY",
5928700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
5938700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK
5948700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
5958700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
5968700e3e7SMoni Shoua 		.offset = {
5978700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
5988700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
5998700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
6008700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
6018700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
6028700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6038700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
6048700e3e7SMoni Shoua 		}
6058700e3e7SMoni Shoua 	},
6068700e3e7SMoni Shoua 	[IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE]		= {
6078700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE",
6088700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK
6098700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
6108700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
6118700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
6128700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
6138700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
6148700e3e7SMoni Shoua 		.offset = {
6158700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6168700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
6178700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
6188700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
6198700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
6208700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6218700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
6228700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
6238700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6248700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
6258700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
6268700e3e7SMoni Shoua 		}
6278700e3e7SMoni Shoua 	},
6288700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_FIRST]		= {
6298700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_FIRST",
6308700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
6318700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
6328700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK,
6338700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
6348700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
6358700e3e7SMoni Shoua 		.offset = {
6368700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6378700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
6388700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
6398700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
6408700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
6418700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6428700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
6438700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
6448700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6458700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
6468700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
6478700e3e7SMoni Shoua 		}
6488700e3e7SMoni Shoua 	},
6498700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_MIDDLE]		= {
6508700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_MIDDLE",
6518700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
6528700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
6538700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
6548700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6558700e3e7SMoni Shoua 		.offset = {
6568700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6578700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
6588700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
6598700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
6608700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
6618700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6628700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
6638700e3e7SMoni Shoua 		}
6648700e3e7SMoni Shoua 	},
6658700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST]			= {
6668700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST",
6678700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK
6688700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
6698700e3e7SMoni Shoua 				| RXE_END_MASK,
6708700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES,
6718700e3e7SMoni Shoua 		.offset = {
6728700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6738700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
6748700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
6758700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
6768700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
6778700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6788700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
6798700e3e7SMoni Shoua 		}
6808700e3e7SMoni Shoua 	},
6818700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE]		= {
6828700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE",
6838700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK
6848700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
6858700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK
6868700e3e7SMoni Shoua 				| RXE_END_MASK,
6878700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES
6888700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
6898700e3e7SMoni Shoua 		.offset = {
6908700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
6918700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
6928700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
6938700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
6948700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
6958700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6968700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
6978700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
6988700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
6998700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
7008700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
7018700e3e7SMoni Shoua 		}
7028700e3e7SMoni Shoua 	},
7038700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY]			= {
7048700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY",
7058700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
7068700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_REQ_MASK
7078700e3e7SMoni Shoua 				| RXE_WRITE_MASK | RXE_START_MASK
7088700e3e7SMoni Shoua 				| RXE_END_MASK,
7098700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
7108700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
7118700e3e7SMoni Shoua 		.offset = {
7128700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7138700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
7148700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
7158700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
7168700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
7178700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
7188700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
7198700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
7208700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
7218700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
7228700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
7238700e3e7SMoni Shoua 		}
7248700e3e7SMoni Shoua 	},
7258700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE]		= {
7268700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE",
7278700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
7288700e3e7SMoni Shoua 				| RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
7298700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_WRITE_MASK
7308700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK
7318700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
7328700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES
7338700e3e7SMoni Shoua 				+ RXE_DETH_BYTES + RXE_RDETH_BYTES,
7348700e3e7SMoni Shoua 		.offset = {
7358700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7368700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
7378700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
7388700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
7398700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
7408700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
7418700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
7428700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
7438700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
7448700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
7458700e3e7SMoni Shoua 						+ RXE_RETH_BYTES,
7468700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
7478700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
7488700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
7498700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
7508700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
7518700e3e7SMoni Shoua 		}
7528700e3e7SMoni Shoua 	},
7538700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_REQUEST]			= {
7548700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_REQUEST",
7558700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK
7568700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_READ_MASK
7578700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
7588700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES
7598700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
7608700e3e7SMoni Shoua 		.offset = {
7618700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7628700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
7638700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
7648700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
7658700e3e7SMoni Shoua 			[RXE_RETH]	= RXE_BTH_BYTES
7668700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
7678700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
7688700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
7698700e3e7SMoni Shoua 						+ RXE_RETH_BYTES
7708700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
7718700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
7728700e3e7SMoni Shoua 		}
7738700e3e7SMoni Shoua 	},
7748700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST]		= {
7758700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST",
7768700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK
7778700e3e7SMoni Shoua 				| RXE_PAYLOAD_MASK | RXE_ACK_MASK
7788700e3e7SMoni Shoua 				| RXE_START_MASK,
7798700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
7808700e3e7SMoni Shoua 		.offset = {
7818700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7828700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
7838700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
7848700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
7858700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
7868700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
7878700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
7888700e3e7SMoni Shoua 		}
7898700e3e7SMoni Shoua 	},
7908700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE]		= {
7918700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE",
7928700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK
7938700e3e7SMoni Shoua 				| RXE_MIDDLE_MASK,
7948700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_RDETH_BYTES,
7958700e3e7SMoni Shoua 		.offset = {
7968700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
7978700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
7988700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
7998700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8008700e3e7SMoni Shoua 		}
8018700e3e7SMoni Shoua 	},
8028700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST]		= {
8038700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST",
8048700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK
8058700e3e7SMoni Shoua 				| RXE_ACK_MASK | RXE_END_MASK,
8068700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8078700e3e7SMoni Shoua 		.offset = {
8088700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8098700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
8108700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
8118700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8128700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
8138700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
8148700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
8158700e3e7SMoni Shoua 		}
8168700e3e7SMoni Shoua 	},
8178700e3e7SMoni Shoua 	[IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY]		= {
8188700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY",
8198700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK
8208700e3e7SMoni Shoua 				| RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
8218700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8228700e3e7SMoni Shoua 		.offset = {
8238700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8248700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
8258700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
8268700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8278700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
8288700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
8298700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
8308700e3e7SMoni Shoua 		}
8318700e3e7SMoni Shoua 	},
8328700e3e7SMoni Shoua 	[IB_OPCODE_RD_ACKNOWLEDGE]			= {
8338700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ACKNOWLEDGE",
8348700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK
8358700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
8368700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES,
8378700e3e7SMoni Shoua 		.offset = {
8388700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8398700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
8408700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
8418700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8428700e3e7SMoni Shoua 		}
8438700e3e7SMoni Shoua 	},
8448700e3e7SMoni Shoua 	[IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE]			= {
8458700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE",
8468700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK
8478700e3e7SMoni Shoua 				| RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK,
8488700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES
8498700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
8508700e3e7SMoni Shoua 		.offset = {
8518700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8528700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
8538700e3e7SMoni Shoua 			[RXE_AETH]	= RXE_BTH_BYTES
8548700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8558700e3e7SMoni Shoua 			[RXE_ATMACK]	= RXE_BTH_BYTES
8568700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
8578700e3e7SMoni Shoua 						+ RXE_AETH_BYTES,
8588700e3e7SMoni Shoua 		}
8598700e3e7SMoni Shoua 	},
8608700e3e7SMoni Shoua 	[IB_OPCODE_RD_COMPARE_SWAP]			= {
8618700e3e7SMoni Shoua 		.name	= "RD_COMPARE_SWAP",
8628700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK
8638700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_ATOMIC_MASK
8648700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
8658700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES
8668700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
8678700e3e7SMoni Shoua 		.offset = {
8688700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8698700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
8708700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
8718700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8728700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES
8738700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
8748700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
8758700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
8768700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES
8778700e3e7SMoni Shoua 						+ RXE_DETH_BYTES +
8788700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8798700e3e7SMoni Shoua 		}
8808700e3e7SMoni Shoua 	},
8818700e3e7SMoni Shoua 	[IB_OPCODE_RD_FETCH_ADD]			= {
8828700e3e7SMoni Shoua 		.name	= "IB_OPCODE_RD_FETCH_ADD",
8838700e3e7SMoni Shoua 		.mask	= RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK
8848700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_ATOMIC_MASK
8858700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
8868700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES
8878700e3e7SMoni Shoua 				+ RXE_RDETH_BYTES,
8888700e3e7SMoni Shoua 		.offset = {
8898700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
8908700e3e7SMoni Shoua 			[RXE_RDETH]	= RXE_BTH_BYTES,
8918700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES
8928700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
8938700e3e7SMoni Shoua 			[RXE_ATMETH]	= RXE_BTH_BYTES
8948700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES
8958700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
8968700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES +
8978700e3e7SMoni Shoua 						+ RXE_ATMETH_BYTES
8988700e3e7SMoni Shoua 						+ RXE_DETH_BYTES +
8998700e3e7SMoni Shoua 						+ RXE_RDETH_BYTES,
9008700e3e7SMoni Shoua 		}
9018700e3e7SMoni Shoua 	},
9028700e3e7SMoni Shoua 
9038700e3e7SMoni Shoua 	/* UD */
9048700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY]			= {
9058700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY",
9068700e3e7SMoni Shoua 		.mask	= RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK
9078700e3e7SMoni Shoua 				| RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK
9088700e3e7SMoni Shoua 				| RXE_START_MASK | RXE_END_MASK,
9098700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_DETH_BYTES,
9108700e3e7SMoni Shoua 		.offset = {
9118700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9128700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
9138700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
9148700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
9158700e3e7SMoni Shoua 		}
9168700e3e7SMoni Shoua 	},
9178700e3e7SMoni Shoua 	[IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE]		= {
9188700e3e7SMoni Shoua 		.name	= "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE",
9198700e3e7SMoni Shoua 		.mask	= RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK
9208700e3e7SMoni Shoua 				| RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK
9218700e3e7SMoni Shoua 				| RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK,
9228700e3e7SMoni Shoua 		.length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES,
9238700e3e7SMoni Shoua 		.offset = {
9248700e3e7SMoni Shoua 			[RXE_BTH]	= 0,
9258700e3e7SMoni Shoua 			[RXE_DETH]	= RXE_BTH_BYTES,
9268700e3e7SMoni Shoua 			[RXE_IMMDT]	= RXE_BTH_BYTES
9278700e3e7SMoni Shoua 						+ RXE_DETH_BYTES,
9288700e3e7SMoni Shoua 			[RXE_PAYLOAD]	= RXE_BTH_BYTES
9298700e3e7SMoni Shoua 						+ RXE_DETH_BYTES
9308700e3e7SMoni Shoua 						+ RXE_IMMDT_BYTES,
9318700e3e7SMoni Shoua 		}
9328700e3e7SMoni Shoua 	},
9338700e3e7SMoni Shoua 
9348700e3e7SMoni Shoua };
935