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