1*8700e3e7SMoni Shoua /* 2*8700e3e7SMoni Shoua * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved. 3*8700e3e7SMoni Shoua * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved. 4*8700e3e7SMoni Shoua * 5*8700e3e7SMoni Shoua * This software is available to you under a choice of one of two 6*8700e3e7SMoni Shoua * licenses. You may choose to be licensed under the terms of the GNU 7*8700e3e7SMoni Shoua * General Public License (GPL) Version 2, available from the file 8*8700e3e7SMoni Shoua * COPYING in the main directory of this source tree, or the 9*8700e3e7SMoni Shoua * OpenIB.org BSD license below: 10*8700e3e7SMoni Shoua * 11*8700e3e7SMoni Shoua * Redistribution and use in source and binary forms, with or 12*8700e3e7SMoni Shoua * without modification, are permitted provided that the following 13*8700e3e7SMoni Shoua * conditions are met: 14*8700e3e7SMoni Shoua * 15*8700e3e7SMoni Shoua * - Redistributions of source code must retain the above 16*8700e3e7SMoni Shoua * copyright notice, this list of conditions and the following 17*8700e3e7SMoni Shoua * disclaimer. 18*8700e3e7SMoni Shoua * 19*8700e3e7SMoni Shoua * - Redistributions in binary form must reproduce the above 20*8700e3e7SMoni Shoua * copyright notice, this list of conditions and the following 21*8700e3e7SMoni Shoua * disclaimer in the documentation and/or other materials 22*8700e3e7SMoni Shoua * provided with the distribution. 23*8700e3e7SMoni Shoua * 24*8700e3e7SMoni Shoua * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25*8700e3e7SMoni Shoua * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26*8700e3e7SMoni Shoua * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27*8700e3e7SMoni Shoua * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 28*8700e3e7SMoni Shoua * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 29*8700e3e7SMoni Shoua * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 30*8700e3e7SMoni Shoua * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31*8700e3e7SMoni Shoua * SOFTWARE. 32*8700e3e7SMoni Shoua */ 33*8700e3e7SMoni Shoua 34*8700e3e7SMoni Shoua #include <rdma/ib_pack.h> 35*8700e3e7SMoni Shoua #include "rxe_opcode.h" 36*8700e3e7SMoni Shoua #include "rxe_hdr.h" 37*8700e3e7SMoni Shoua 38*8700e3e7SMoni Shoua /* useful information about work request opcodes and pkt opcodes in 39*8700e3e7SMoni Shoua * table form 40*8700e3e7SMoni Shoua */ 41*8700e3e7SMoni Shoua struct rxe_wr_opcode_info rxe_wr_opcode_info[] = { 42*8700e3e7SMoni Shoua [IB_WR_RDMA_WRITE] = { 43*8700e3e7SMoni Shoua .name = "IB_WR_RDMA_WRITE", 44*8700e3e7SMoni Shoua .mask = { 45*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK, 46*8700e3e7SMoni Shoua [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_MASK, 47*8700e3e7SMoni Shoua }, 48*8700e3e7SMoni Shoua }, 49*8700e3e7SMoni Shoua [IB_WR_RDMA_WRITE_WITH_IMM] = { 50*8700e3e7SMoni Shoua .name = "IB_WR_RDMA_WRITE_WITH_IMM", 51*8700e3e7SMoni Shoua .mask = { 52*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_INLINE_MASK | WR_WRITE_MASK, 53*8700e3e7SMoni Shoua [IB_QPT_UC] = WR_INLINE_MASK | WR_WRITE_MASK, 54*8700e3e7SMoni Shoua }, 55*8700e3e7SMoni Shoua }, 56*8700e3e7SMoni Shoua [IB_WR_SEND] = { 57*8700e3e7SMoni Shoua .name = "IB_WR_SEND", 58*8700e3e7SMoni Shoua .mask = { 59*8700e3e7SMoni Shoua [IB_QPT_SMI] = WR_INLINE_MASK | WR_SEND_MASK, 60*8700e3e7SMoni Shoua [IB_QPT_GSI] = WR_INLINE_MASK | WR_SEND_MASK, 61*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_INLINE_MASK | WR_SEND_MASK, 62*8700e3e7SMoni Shoua [IB_QPT_UC] = WR_INLINE_MASK | WR_SEND_MASK, 63*8700e3e7SMoni Shoua [IB_QPT_UD] = WR_INLINE_MASK | WR_SEND_MASK, 64*8700e3e7SMoni Shoua }, 65*8700e3e7SMoni Shoua }, 66*8700e3e7SMoni Shoua [IB_WR_SEND_WITH_IMM] = { 67*8700e3e7SMoni Shoua .name = "IB_WR_SEND_WITH_IMM", 68*8700e3e7SMoni Shoua .mask = { 69*8700e3e7SMoni Shoua [IB_QPT_SMI] = WR_INLINE_MASK | WR_SEND_MASK, 70*8700e3e7SMoni Shoua [IB_QPT_GSI] = WR_INLINE_MASK | WR_SEND_MASK, 71*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_INLINE_MASK | WR_SEND_MASK, 72*8700e3e7SMoni Shoua [IB_QPT_UC] = WR_INLINE_MASK | WR_SEND_MASK, 73*8700e3e7SMoni Shoua [IB_QPT_UD] = WR_INLINE_MASK | WR_SEND_MASK, 74*8700e3e7SMoni Shoua }, 75*8700e3e7SMoni Shoua }, 76*8700e3e7SMoni Shoua [IB_WR_RDMA_READ] = { 77*8700e3e7SMoni Shoua .name = "IB_WR_RDMA_READ", 78*8700e3e7SMoni Shoua .mask = { 79*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_READ_MASK, 80*8700e3e7SMoni Shoua }, 81*8700e3e7SMoni Shoua }, 82*8700e3e7SMoni Shoua [IB_WR_ATOMIC_CMP_AND_SWP] = { 83*8700e3e7SMoni Shoua .name = "IB_WR_ATOMIC_CMP_AND_SWP", 84*8700e3e7SMoni Shoua .mask = { 85*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_ATOMIC_MASK, 86*8700e3e7SMoni Shoua }, 87*8700e3e7SMoni Shoua }, 88*8700e3e7SMoni Shoua [IB_WR_ATOMIC_FETCH_AND_ADD] = { 89*8700e3e7SMoni Shoua .name = "IB_WR_ATOMIC_FETCH_AND_ADD", 90*8700e3e7SMoni Shoua .mask = { 91*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_ATOMIC_MASK, 92*8700e3e7SMoni Shoua }, 93*8700e3e7SMoni Shoua }, 94*8700e3e7SMoni Shoua [IB_WR_LSO] = { 95*8700e3e7SMoni Shoua .name = "IB_WR_LSO", 96*8700e3e7SMoni Shoua .mask = { 97*8700e3e7SMoni Shoua /* not supported */ 98*8700e3e7SMoni Shoua }, 99*8700e3e7SMoni Shoua }, 100*8700e3e7SMoni Shoua [IB_WR_SEND_WITH_INV] = { 101*8700e3e7SMoni Shoua .name = "IB_WR_SEND_WITH_INV", 102*8700e3e7SMoni Shoua .mask = { 103*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_INLINE_MASK | WR_SEND_MASK, 104*8700e3e7SMoni Shoua [IB_QPT_UC] = WR_INLINE_MASK | WR_SEND_MASK, 105*8700e3e7SMoni Shoua [IB_QPT_UD] = WR_INLINE_MASK | WR_SEND_MASK, 106*8700e3e7SMoni Shoua }, 107*8700e3e7SMoni Shoua }, 108*8700e3e7SMoni Shoua [IB_WR_RDMA_READ_WITH_INV] = { 109*8700e3e7SMoni Shoua .name = "IB_WR_RDMA_READ_WITH_INV", 110*8700e3e7SMoni Shoua .mask = { 111*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_READ_MASK, 112*8700e3e7SMoni Shoua }, 113*8700e3e7SMoni Shoua }, 114*8700e3e7SMoni Shoua [IB_WR_LOCAL_INV] = { 115*8700e3e7SMoni Shoua .name = "IB_WR_LOCAL_INV", 116*8700e3e7SMoni Shoua .mask = { 117*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_REG_MASK, 118*8700e3e7SMoni Shoua }, 119*8700e3e7SMoni Shoua }, 120*8700e3e7SMoni Shoua [IB_WR_REG_MR] = { 121*8700e3e7SMoni Shoua .name = "IB_WR_REG_MR", 122*8700e3e7SMoni Shoua .mask = { 123*8700e3e7SMoni Shoua [IB_QPT_RC] = WR_REG_MASK, 124*8700e3e7SMoni Shoua }, 125*8700e3e7SMoni Shoua }, 126*8700e3e7SMoni Shoua }; 127*8700e3e7SMoni Shoua 128*8700e3e7SMoni Shoua struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = { 129*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_FIRST] = { 130*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_FIRST", 131*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK 132*8700e3e7SMoni Shoua | RXE_SEND_MASK | RXE_START_MASK, 133*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 134*8700e3e7SMoni Shoua .offset = { 135*8700e3e7SMoni Shoua [RXE_BTH] = 0, 136*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 137*8700e3e7SMoni Shoua } 138*8700e3e7SMoni Shoua }, 139*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_MIDDLE] = { 140*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_MIDDLE]", 141*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK 142*8700e3e7SMoni Shoua | RXE_MIDDLE_MASK, 143*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 144*8700e3e7SMoni Shoua .offset = { 145*8700e3e7SMoni Shoua [RXE_BTH] = 0, 146*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 147*8700e3e7SMoni Shoua } 148*8700e3e7SMoni Shoua }, 149*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_LAST] = { 150*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_LAST", 151*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK 152*8700e3e7SMoni Shoua | RXE_SEND_MASK | RXE_END_MASK, 153*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 154*8700e3e7SMoni Shoua .offset = { 155*8700e3e7SMoni Shoua [RXE_BTH] = 0, 156*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 157*8700e3e7SMoni Shoua } 158*8700e3e7SMoni Shoua }, 159*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE] = { 160*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_LAST_WITH_IMMEDIATE", 161*8700e3e7SMoni Shoua .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 162*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 163*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 164*8700e3e7SMoni Shoua .offset = { 165*8700e3e7SMoni Shoua [RXE_BTH] = 0, 166*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES, 167*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 168*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 169*8700e3e7SMoni Shoua } 170*8700e3e7SMoni Shoua }, 171*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_ONLY] = { 172*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_ONLY", 173*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK 174*8700e3e7SMoni Shoua | RXE_RWR_MASK | RXE_SEND_MASK 175*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 176*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 177*8700e3e7SMoni Shoua .offset = { 178*8700e3e7SMoni Shoua [RXE_BTH] = 0, 179*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 180*8700e3e7SMoni Shoua } 181*8700e3e7SMoni Shoua }, 182*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE] = { 183*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_ONLY_WITH_IMMEDIATE", 184*8700e3e7SMoni Shoua .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 185*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK 186*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 187*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 188*8700e3e7SMoni Shoua .offset = { 189*8700e3e7SMoni Shoua [RXE_BTH] = 0, 190*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES, 191*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 192*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 193*8700e3e7SMoni Shoua } 194*8700e3e7SMoni Shoua }, 195*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_WRITE_FIRST] = { 196*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_WRITE_FIRST", 197*8700e3e7SMoni Shoua .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 198*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_START_MASK, 199*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 200*8700e3e7SMoni Shoua .offset = { 201*8700e3e7SMoni Shoua [RXE_BTH] = 0, 202*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES, 203*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 204*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 205*8700e3e7SMoni Shoua } 206*8700e3e7SMoni Shoua }, 207*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_WRITE_MIDDLE] = { 208*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_WRITE_MIDDLE", 209*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK 210*8700e3e7SMoni Shoua | RXE_MIDDLE_MASK, 211*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 212*8700e3e7SMoni Shoua .offset = { 213*8700e3e7SMoni Shoua [RXE_BTH] = 0, 214*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 215*8700e3e7SMoni Shoua } 216*8700e3e7SMoni Shoua }, 217*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_WRITE_LAST] = { 218*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_WRITE_LAST", 219*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK 220*8700e3e7SMoni Shoua | RXE_END_MASK, 221*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 222*8700e3e7SMoni Shoua .offset = { 223*8700e3e7SMoni Shoua [RXE_BTH] = 0, 224*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 225*8700e3e7SMoni Shoua } 226*8700e3e7SMoni Shoua }, 227*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 228*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_WRITE_LAST_WITH_IMMEDIATE", 229*8700e3e7SMoni Shoua .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 230*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK 231*8700e3e7SMoni Shoua | RXE_END_MASK, 232*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 233*8700e3e7SMoni Shoua .offset = { 234*8700e3e7SMoni Shoua [RXE_BTH] = 0, 235*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES, 236*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 237*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 238*8700e3e7SMoni Shoua } 239*8700e3e7SMoni Shoua }, 240*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_WRITE_ONLY] = { 241*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_WRITE_ONLY", 242*8700e3e7SMoni Shoua .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 243*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_START_MASK 244*8700e3e7SMoni Shoua | RXE_END_MASK, 245*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 246*8700e3e7SMoni Shoua .offset = { 247*8700e3e7SMoni Shoua [RXE_BTH] = 0, 248*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES, 249*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 250*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 251*8700e3e7SMoni Shoua } 252*8700e3e7SMoni Shoua }, 253*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 254*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 255*8700e3e7SMoni Shoua .mask = RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK 256*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_WRITE_MASK 257*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK 258*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 259*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES, 260*8700e3e7SMoni Shoua .offset = { 261*8700e3e7SMoni Shoua [RXE_BTH] = 0, 262*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES, 263*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES 264*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 265*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 266*8700e3e7SMoni Shoua + RXE_RETH_BYTES 267*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 268*8700e3e7SMoni Shoua } 269*8700e3e7SMoni Shoua }, 270*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_READ_REQUEST] = { 271*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_READ_REQUEST", 272*8700e3e7SMoni Shoua .mask = RXE_RETH_MASK | RXE_REQ_MASK | RXE_READ_MASK 273*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 274*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 275*8700e3e7SMoni Shoua .offset = { 276*8700e3e7SMoni Shoua [RXE_BTH] = 0, 277*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES, 278*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 279*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 280*8700e3e7SMoni Shoua } 281*8700e3e7SMoni Shoua }, 282*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST] = { 283*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_FIRST", 284*8700e3e7SMoni Shoua .mask = RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK 285*8700e3e7SMoni Shoua | RXE_START_MASK, 286*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 287*8700e3e7SMoni Shoua .offset = { 288*8700e3e7SMoni Shoua [RXE_BTH] = 0, 289*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES, 290*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 291*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 292*8700e3e7SMoni Shoua } 293*8700e3e7SMoni Shoua }, 294*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE] = { 295*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_MIDDLE", 296*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_ACK_MASK | RXE_MIDDLE_MASK, 297*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 298*8700e3e7SMoni Shoua .offset = { 299*8700e3e7SMoni Shoua [RXE_BTH] = 0, 300*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 301*8700e3e7SMoni Shoua } 302*8700e3e7SMoni Shoua }, 303*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST] = { 304*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_LAST", 305*8700e3e7SMoni Shoua .mask = RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK 306*8700e3e7SMoni Shoua | RXE_END_MASK, 307*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 308*8700e3e7SMoni Shoua .offset = { 309*8700e3e7SMoni Shoua [RXE_BTH] = 0, 310*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES, 311*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 312*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 313*8700e3e7SMoni Shoua } 314*8700e3e7SMoni Shoua }, 315*8700e3e7SMoni Shoua [IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY] = { 316*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_RDMA_READ_RESPONSE_ONLY", 317*8700e3e7SMoni Shoua .mask = RXE_AETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK 318*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 319*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 320*8700e3e7SMoni Shoua .offset = { 321*8700e3e7SMoni Shoua [RXE_BTH] = 0, 322*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES, 323*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 324*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 325*8700e3e7SMoni Shoua } 326*8700e3e7SMoni Shoua }, 327*8700e3e7SMoni Shoua [IB_OPCODE_RC_ACKNOWLEDGE] = { 328*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_ACKNOWLEDGE", 329*8700e3e7SMoni Shoua .mask = RXE_AETH_MASK | RXE_ACK_MASK | RXE_START_MASK 330*8700e3e7SMoni Shoua | RXE_END_MASK, 331*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES, 332*8700e3e7SMoni Shoua .offset = { 333*8700e3e7SMoni Shoua [RXE_BTH] = 0, 334*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES, 335*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 336*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 337*8700e3e7SMoni Shoua } 338*8700e3e7SMoni Shoua }, 339*8700e3e7SMoni Shoua [IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE] = { 340*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_ATOMIC_ACKNOWLEDGE", 341*8700e3e7SMoni Shoua .mask = RXE_AETH_MASK | RXE_ATMACK_MASK | RXE_ACK_MASK 342*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 343*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES, 344*8700e3e7SMoni Shoua .offset = { 345*8700e3e7SMoni Shoua [RXE_BTH] = 0, 346*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES, 347*8700e3e7SMoni Shoua [RXE_ATMACK] = RXE_BTH_BYTES 348*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 349*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 350*8700e3e7SMoni Shoua + RXE_ATMACK_BYTES + RXE_AETH_BYTES, 351*8700e3e7SMoni Shoua } 352*8700e3e7SMoni Shoua }, 353*8700e3e7SMoni Shoua [IB_OPCODE_RC_COMPARE_SWAP] = { 354*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_COMPARE_SWAP", 355*8700e3e7SMoni Shoua .mask = RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK 356*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 357*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES, 358*8700e3e7SMoni Shoua .offset = { 359*8700e3e7SMoni Shoua [RXE_BTH] = 0, 360*8700e3e7SMoni Shoua [RXE_ATMETH] = RXE_BTH_BYTES, 361*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 362*8700e3e7SMoni Shoua + RXE_ATMETH_BYTES, 363*8700e3e7SMoni Shoua } 364*8700e3e7SMoni Shoua }, 365*8700e3e7SMoni Shoua [IB_OPCODE_RC_FETCH_ADD] = { 366*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_FETCH_ADD", 367*8700e3e7SMoni Shoua .mask = RXE_ATMETH_MASK | RXE_REQ_MASK | RXE_ATOMIC_MASK 368*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 369*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES, 370*8700e3e7SMoni Shoua .offset = { 371*8700e3e7SMoni Shoua [RXE_BTH] = 0, 372*8700e3e7SMoni Shoua [RXE_ATMETH] = RXE_BTH_BYTES, 373*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 374*8700e3e7SMoni Shoua + RXE_ATMETH_BYTES, 375*8700e3e7SMoni Shoua } 376*8700e3e7SMoni Shoua }, 377*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE] = { 378*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_LAST_WITH_INVALIDATE", 379*8700e3e7SMoni Shoua .mask = RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 380*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 381*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IETH_BYTES, 382*8700e3e7SMoni Shoua .offset = { 383*8700e3e7SMoni Shoua [RXE_BTH] = 0, 384*8700e3e7SMoni Shoua [RXE_IETH] = RXE_BTH_BYTES, 385*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 386*8700e3e7SMoni Shoua + RXE_IETH_BYTES, 387*8700e3e7SMoni Shoua } 388*8700e3e7SMoni Shoua }, 389*8700e3e7SMoni Shoua [IB_OPCODE_RC_SEND_ONLY_WITH_INVALIDATE] = { 390*8700e3e7SMoni Shoua .name = "IB_OPCODE_RC_SEND_ONLY_INV", 391*8700e3e7SMoni Shoua .mask = RXE_IETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 392*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK 393*8700e3e7SMoni Shoua | RXE_END_MASK, 394*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IETH_BYTES, 395*8700e3e7SMoni Shoua .offset = { 396*8700e3e7SMoni Shoua [RXE_BTH] = 0, 397*8700e3e7SMoni Shoua [RXE_IETH] = RXE_BTH_BYTES, 398*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 399*8700e3e7SMoni Shoua + RXE_IETH_BYTES, 400*8700e3e7SMoni Shoua } 401*8700e3e7SMoni Shoua }, 402*8700e3e7SMoni Shoua 403*8700e3e7SMoni Shoua /* UC */ 404*8700e3e7SMoni Shoua [IB_OPCODE_UC_SEND_FIRST] = { 405*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_SEND_FIRST", 406*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_RWR_MASK 407*8700e3e7SMoni Shoua | RXE_SEND_MASK | RXE_START_MASK, 408*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 409*8700e3e7SMoni Shoua .offset = { 410*8700e3e7SMoni Shoua [RXE_BTH] = 0, 411*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 412*8700e3e7SMoni Shoua } 413*8700e3e7SMoni Shoua }, 414*8700e3e7SMoni Shoua [IB_OPCODE_UC_SEND_MIDDLE] = { 415*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_SEND_MIDDLE", 416*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_SEND_MASK 417*8700e3e7SMoni Shoua | RXE_MIDDLE_MASK, 418*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 419*8700e3e7SMoni Shoua .offset = { 420*8700e3e7SMoni Shoua [RXE_BTH] = 0, 421*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 422*8700e3e7SMoni Shoua } 423*8700e3e7SMoni Shoua }, 424*8700e3e7SMoni Shoua [IB_OPCODE_UC_SEND_LAST] = { 425*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_SEND_LAST", 426*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK 427*8700e3e7SMoni Shoua | RXE_SEND_MASK | RXE_END_MASK, 428*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 429*8700e3e7SMoni Shoua .offset = { 430*8700e3e7SMoni Shoua [RXE_BTH] = 0, 431*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 432*8700e3e7SMoni Shoua } 433*8700e3e7SMoni Shoua }, 434*8700e3e7SMoni Shoua [IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE] = { 435*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_SEND_LAST_WITH_IMMEDIATE", 436*8700e3e7SMoni Shoua .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 437*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_SEND_MASK | RXE_END_MASK, 438*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 439*8700e3e7SMoni Shoua .offset = { 440*8700e3e7SMoni Shoua [RXE_BTH] = 0, 441*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES, 442*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 443*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 444*8700e3e7SMoni Shoua } 445*8700e3e7SMoni Shoua }, 446*8700e3e7SMoni Shoua [IB_OPCODE_UC_SEND_ONLY] = { 447*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_SEND_ONLY", 448*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_COMP_MASK 449*8700e3e7SMoni Shoua | RXE_RWR_MASK | RXE_SEND_MASK 450*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 451*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 452*8700e3e7SMoni Shoua .offset = { 453*8700e3e7SMoni Shoua [RXE_BTH] = 0, 454*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 455*8700e3e7SMoni Shoua } 456*8700e3e7SMoni Shoua }, 457*8700e3e7SMoni Shoua [IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE] = { 458*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_SEND_ONLY_WITH_IMMEDIATE", 459*8700e3e7SMoni Shoua .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 460*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK 461*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 462*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 463*8700e3e7SMoni Shoua .offset = { 464*8700e3e7SMoni Shoua [RXE_BTH] = 0, 465*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES, 466*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 467*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 468*8700e3e7SMoni Shoua } 469*8700e3e7SMoni Shoua }, 470*8700e3e7SMoni Shoua [IB_OPCODE_UC_RDMA_WRITE_FIRST] = { 471*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_RDMA_WRITE_FIRST", 472*8700e3e7SMoni Shoua .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 473*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_START_MASK, 474*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 475*8700e3e7SMoni Shoua .offset = { 476*8700e3e7SMoni Shoua [RXE_BTH] = 0, 477*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES, 478*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 479*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 480*8700e3e7SMoni Shoua } 481*8700e3e7SMoni Shoua }, 482*8700e3e7SMoni Shoua [IB_OPCODE_UC_RDMA_WRITE_MIDDLE] = { 483*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_RDMA_WRITE_MIDDLE", 484*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK 485*8700e3e7SMoni Shoua | RXE_MIDDLE_MASK, 486*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 487*8700e3e7SMoni Shoua .offset = { 488*8700e3e7SMoni Shoua [RXE_BTH] = 0, 489*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 490*8700e3e7SMoni Shoua } 491*8700e3e7SMoni Shoua }, 492*8700e3e7SMoni Shoua [IB_OPCODE_UC_RDMA_WRITE_LAST] = { 493*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_RDMA_WRITE_LAST", 494*8700e3e7SMoni Shoua .mask = RXE_PAYLOAD_MASK | RXE_REQ_MASK | RXE_WRITE_MASK 495*8700e3e7SMoni Shoua | RXE_END_MASK, 496*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES, 497*8700e3e7SMoni Shoua .offset = { 498*8700e3e7SMoni Shoua [RXE_BTH] = 0, 499*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES, 500*8700e3e7SMoni Shoua } 501*8700e3e7SMoni Shoua }, 502*8700e3e7SMoni Shoua [IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 503*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_RDMA_WRITE_LAST_WITH_IMMEDIATE", 504*8700e3e7SMoni Shoua .mask = RXE_IMMDT_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 505*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK 506*8700e3e7SMoni Shoua | RXE_END_MASK, 507*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES, 508*8700e3e7SMoni Shoua .offset = { 509*8700e3e7SMoni Shoua [RXE_BTH] = 0, 510*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES, 511*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 512*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 513*8700e3e7SMoni Shoua } 514*8700e3e7SMoni Shoua }, 515*8700e3e7SMoni Shoua [IB_OPCODE_UC_RDMA_WRITE_ONLY] = { 516*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_RDMA_WRITE_ONLY", 517*8700e3e7SMoni Shoua .mask = RXE_RETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 518*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_START_MASK 519*8700e3e7SMoni Shoua | RXE_END_MASK, 520*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES, 521*8700e3e7SMoni Shoua .offset = { 522*8700e3e7SMoni Shoua [RXE_BTH] = 0, 523*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES, 524*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 525*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 526*8700e3e7SMoni Shoua } 527*8700e3e7SMoni Shoua }, 528*8700e3e7SMoni Shoua [IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 529*8700e3e7SMoni Shoua .name = "IB_OPCODE_UC_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 530*8700e3e7SMoni Shoua .mask = RXE_RETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK 531*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_WRITE_MASK 532*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK 533*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 534*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES, 535*8700e3e7SMoni Shoua .offset = { 536*8700e3e7SMoni Shoua [RXE_BTH] = 0, 537*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES, 538*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES 539*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 540*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 541*8700e3e7SMoni Shoua + RXE_RETH_BYTES 542*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 543*8700e3e7SMoni Shoua } 544*8700e3e7SMoni Shoua }, 545*8700e3e7SMoni Shoua 546*8700e3e7SMoni Shoua /* RD */ 547*8700e3e7SMoni Shoua [IB_OPCODE_RD_SEND_FIRST] = { 548*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_SEND_FIRST", 549*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK 550*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_RWR_MASK | RXE_SEND_MASK 551*8700e3e7SMoni Shoua | RXE_START_MASK, 552*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 553*8700e3e7SMoni Shoua .offset = { 554*8700e3e7SMoni Shoua [RXE_BTH] = 0, 555*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 556*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 557*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 558*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 559*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 560*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 561*8700e3e7SMoni Shoua } 562*8700e3e7SMoni Shoua }, 563*8700e3e7SMoni Shoua [IB_OPCODE_RD_SEND_MIDDLE] = { 564*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_SEND_MIDDLE", 565*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK 566*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_SEND_MASK 567*8700e3e7SMoni Shoua | RXE_MIDDLE_MASK, 568*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 569*8700e3e7SMoni Shoua .offset = { 570*8700e3e7SMoni Shoua [RXE_BTH] = 0, 571*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 572*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 573*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 574*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 575*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 576*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 577*8700e3e7SMoni Shoua } 578*8700e3e7SMoni Shoua }, 579*8700e3e7SMoni Shoua [IB_OPCODE_RD_SEND_LAST] = { 580*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_SEND_LAST", 581*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK 582*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_COMP_MASK | RXE_SEND_MASK 583*8700e3e7SMoni Shoua | RXE_END_MASK, 584*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 585*8700e3e7SMoni Shoua .offset = { 586*8700e3e7SMoni Shoua [RXE_BTH] = 0, 587*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 588*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 589*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 590*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 591*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 592*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 593*8700e3e7SMoni Shoua } 594*8700e3e7SMoni Shoua }, 595*8700e3e7SMoni Shoua [IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE] = { 596*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_SEND_LAST_WITH_IMMEDIATE", 597*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK 598*8700e3e7SMoni Shoua | RXE_PAYLOAD_MASK | RXE_REQ_MASK 599*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_SEND_MASK 600*8700e3e7SMoni Shoua | RXE_END_MASK, 601*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES 602*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 603*8700e3e7SMoni Shoua .offset = { 604*8700e3e7SMoni Shoua [RXE_BTH] = 0, 605*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 606*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 607*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 608*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES 609*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 610*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 611*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 612*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 613*8700e3e7SMoni Shoua + RXE_DETH_BYTES 614*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 615*8700e3e7SMoni Shoua } 616*8700e3e7SMoni Shoua }, 617*8700e3e7SMoni Shoua [IB_OPCODE_RD_SEND_ONLY] = { 618*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_SEND_ONLY", 619*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK 620*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK 621*8700e3e7SMoni Shoua | RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK, 622*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 623*8700e3e7SMoni Shoua .offset = { 624*8700e3e7SMoni Shoua [RXE_BTH] = 0, 625*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 626*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 627*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 628*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 629*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 630*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 631*8700e3e7SMoni Shoua } 632*8700e3e7SMoni Shoua }, 633*8700e3e7SMoni Shoua [IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE] = { 634*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_SEND_ONLY_WITH_IMMEDIATE", 635*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK 636*8700e3e7SMoni Shoua | RXE_PAYLOAD_MASK | RXE_REQ_MASK 637*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK 638*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 639*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES 640*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 641*8700e3e7SMoni Shoua .offset = { 642*8700e3e7SMoni Shoua [RXE_BTH] = 0, 643*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 644*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 645*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 646*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES 647*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 648*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 649*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 650*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 651*8700e3e7SMoni Shoua + RXE_DETH_BYTES 652*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 653*8700e3e7SMoni Shoua } 654*8700e3e7SMoni Shoua }, 655*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_WRITE_FIRST] = { 656*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_WRITE_FIRST", 657*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK 658*8700e3e7SMoni Shoua | RXE_PAYLOAD_MASK | RXE_REQ_MASK 659*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_START_MASK, 660*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES 661*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 662*8700e3e7SMoni Shoua .offset = { 663*8700e3e7SMoni Shoua [RXE_BTH] = 0, 664*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 665*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 666*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 667*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES 668*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 669*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 670*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 671*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 672*8700e3e7SMoni Shoua + RXE_DETH_BYTES 673*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 674*8700e3e7SMoni Shoua } 675*8700e3e7SMoni Shoua }, 676*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_WRITE_MIDDLE] = { 677*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_WRITE_MIDDLE", 678*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK 679*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_WRITE_MASK 680*8700e3e7SMoni Shoua | RXE_MIDDLE_MASK, 681*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 682*8700e3e7SMoni Shoua .offset = { 683*8700e3e7SMoni Shoua [RXE_BTH] = 0, 684*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 685*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 686*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 687*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 688*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 689*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 690*8700e3e7SMoni Shoua } 691*8700e3e7SMoni Shoua }, 692*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_WRITE_LAST] = { 693*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_WRITE_LAST", 694*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_PAYLOAD_MASK 695*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_WRITE_MASK 696*8700e3e7SMoni Shoua | RXE_END_MASK, 697*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_DETH_BYTES + RXE_RDETH_BYTES, 698*8700e3e7SMoni Shoua .offset = { 699*8700e3e7SMoni Shoua [RXE_BTH] = 0, 700*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 701*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 702*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 703*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 704*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 705*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 706*8700e3e7SMoni Shoua } 707*8700e3e7SMoni Shoua }, 708*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE] = { 709*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_WRITE_LAST_WITH_IMMEDIATE", 710*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_IMMDT_MASK 711*8700e3e7SMoni Shoua | RXE_PAYLOAD_MASK | RXE_REQ_MASK 712*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_COMP_MASK | RXE_RWR_MASK 713*8700e3e7SMoni Shoua | RXE_END_MASK, 714*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES 715*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 716*8700e3e7SMoni Shoua .offset = { 717*8700e3e7SMoni Shoua [RXE_BTH] = 0, 718*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 719*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 720*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 721*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES 722*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 723*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 724*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 725*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 726*8700e3e7SMoni Shoua + RXE_DETH_BYTES 727*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 728*8700e3e7SMoni Shoua } 729*8700e3e7SMoni Shoua }, 730*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_WRITE_ONLY] = { 731*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_WRITE_ONLY", 732*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK 733*8700e3e7SMoni Shoua | RXE_PAYLOAD_MASK | RXE_REQ_MASK 734*8700e3e7SMoni Shoua | RXE_WRITE_MASK | RXE_START_MASK 735*8700e3e7SMoni Shoua | RXE_END_MASK, 736*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES 737*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 738*8700e3e7SMoni Shoua .offset = { 739*8700e3e7SMoni Shoua [RXE_BTH] = 0, 740*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 741*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 742*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 743*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES 744*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 745*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 746*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 747*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 748*8700e3e7SMoni Shoua + RXE_DETH_BYTES 749*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 750*8700e3e7SMoni Shoua } 751*8700e3e7SMoni Shoua }, 752*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE] = { 753*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_WRITE_ONLY_WITH_IMMEDIATE", 754*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK 755*8700e3e7SMoni Shoua | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK 756*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_WRITE_MASK 757*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK 758*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 759*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_RETH_BYTES 760*8700e3e7SMoni Shoua + RXE_DETH_BYTES + RXE_RDETH_BYTES, 761*8700e3e7SMoni Shoua .offset = { 762*8700e3e7SMoni Shoua [RXE_BTH] = 0, 763*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 764*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 765*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 766*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES 767*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 768*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 769*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES 770*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 771*8700e3e7SMoni Shoua + RXE_DETH_BYTES 772*8700e3e7SMoni Shoua + RXE_RETH_BYTES, 773*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 774*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 775*8700e3e7SMoni Shoua + RXE_DETH_BYTES 776*8700e3e7SMoni Shoua + RXE_RETH_BYTES 777*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 778*8700e3e7SMoni Shoua } 779*8700e3e7SMoni Shoua }, 780*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_READ_REQUEST] = { 781*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_READ_REQUEST", 782*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_RETH_MASK 783*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_READ_MASK 784*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 785*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RETH_BYTES + RXE_DETH_BYTES 786*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 787*8700e3e7SMoni Shoua .offset = { 788*8700e3e7SMoni Shoua [RXE_BTH] = 0, 789*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 790*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 791*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 792*8700e3e7SMoni Shoua [RXE_RETH] = RXE_BTH_BYTES 793*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 794*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 795*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 796*8700e3e7SMoni Shoua + RXE_RETH_BYTES 797*8700e3e7SMoni Shoua + RXE_DETH_BYTES 798*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 799*8700e3e7SMoni Shoua } 800*8700e3e7SMoni Shoua }, 801*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST] = { 802*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_FIRST", 803*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_AETH_MASK 804*8700e3e7SMoni Shoua | RXE_PAYLOAD_MASK | RXE_ACK_MASK 805*8700e3e7SMoni Shoua | RXE_START_MASK, 806*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 807*8700e3e7SMoni Shoua .offset = { 808*8700e3e7SMoni Shoua [RXE_BTH] = 0, 809*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 810*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES 811*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 812*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 813*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 814*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 815*8700e3e7SMoni Shoua } 816*8700e3e7SMoni Shoua }, 817*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE] = { 818*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_MIDDLE", 819*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_PAYLOAD_MASK | RXE_ACK_MASK 820*8700e3e7SMoni Shoua | RXE_MIDDLE_MASK, 821*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_RDETH_BYTES, 822*8700e3e7SMoni Shoua .offset = { 823*8700e3e7SMoni Shoua [RXE_BTH] = 0, 824*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 825*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 826*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 827*8700e3e7SMoni Shoua } 828*8700e3e7SMoni Shoua }, 829*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST] = { 830*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_LAST", 831*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK 832*8700e3e7SMoni Shoua | RXE_ACK_MASK | RXE_END_MASK, 833*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 834*8700e3e7SMoni Shoua .offset = { 835*8700e3e7SMoni Shoua [RXE_BTH] = 0, 836*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 837*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES 838*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 839*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 840*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 841*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 842*8700e3e7SMoni Shoua } 843*8700e3e7SMoni Shoua }, 844*8700e3e7SMoni Shoua [IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY] = { 845*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_RDMA_READ_RESPONSE_ONLY", 846*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_PAYLOAD_MASK 847*8700e3e7SMoni Shoua | RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK, 848*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 849*8700e3e7SMoni Shoua .offset = { 850*8700e3e7SMoni Shoua [RXE_BTH] = 0, 851*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 852*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES 853*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 854*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 855*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 856*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 857*8700e3e7SMoni Shoua } 858*8700e3e7SMoni Shoua }, 859*8700e3e7SMoni Shoua [IB_OPCODE_RD_ACKNOWLEDGE] = { 860*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_ACKNOWLEDGE", 861*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ACK_MASK 862*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 863*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_AETH_BYTES + RXE_RDETH_BYTES, 864*8700e3e7SMoni Shoua .offset = { 865*8700e3e7SMoni Shoua [RXE_BTH] = 0, 866*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 867*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES 868*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 869*8700e3e7SMoni Shoua } 870*8700e3e7SMoni Shoua }, 871*8700e3e7SMoni Shoua [IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE] = { 872*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_ATOMIC_ACKNOWLEDGE", 873*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_AETH_MASK | RXE_ATMACK_MASK 874*8700e3e7SMoni Shoua | RXE_ACK_MASK | RXE_START_MASK | RXE_END_MASK, 875*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_ATMACK_BYTES + RXE_AETH_BYTES 876*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 877*8700e3e7SMoni Shoua .offset = { 878*8700e3e7SMoni Shoua [RXE_BTH] = 0, 879*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 880*8700e3e7SMoni Shoua [RXE_AETH] = RXE_BTH_BYTES 881*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 882*8700e3e7SMoni Shoua [RXE_ATMACK] = RXE_BTH_BYTES 883*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 884*8700e3e7SMoni Shoua + RXE_AETH_BYTES, 885*8700e3e7SMoni Shoua } 886*8700e3e7SMoni Shoua }, 887*8700e3e7SMoni Shoua [IB_OPCODE_RD_COMPARE_SWAP] = { 888*8700e3e7SMoni Shoua .name = "RD_COMPARE_SWAP", 889*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK 890*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_ATOMIC_MASK 891*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 892*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES 893*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 894*8700e3e7SMoni Shoua .offset = { 895*8700e3e7SMoni Shoua [RXE_BTH] = 0, 896*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 897*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 898*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 899*8700e3e7SMoni Shoua [RXE_ATMETH] = RXE_BTH_BYTES 900*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 901*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 902*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES + 903*8700e3e7SMoni Shoua + RXE_ATMETH_BYTES 904*8700e3e7SMoni Shoua + RXE_DETH_BYTES + 905*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 906*8700e3e7SMoni Shoua } 907*8700e3e7SMoni Shoua }, 908*8700e3e7SMoni Shoua [IB_OPCODE_RD_FETCH_ADD] = { 909*8700e3e7SMoni Shoua .name = "IB_OPCODE_RD_FETCH_ADD", 910*8700e3e7SMoni Shoua .mask = RXE_RDETH_MASK | RXE_DETH_MASK | RXE_ATMETH_MASK 911*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_ATOMIC_MASK 912*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 913*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_ATMETH_BYTES + RXE_DETH_BYTES 914*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 915*8700e3e7SMoni Shoua .offset = { 916*8700e3e7SMoni Shoua [RXE_BTH] = 0, 917*8700e3e7SMoni Shoua [RXE_RDETH] = RXE_BTH_BYTES, 918*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES 919*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 920*8700e3e7SMoni Shoua [RXE_ATMETH] = RXE_BTH_BYTES 921*8700e3e7SMoni Shoua + RXE_RDETH_BYTES 922*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 923*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES + 924*8700e3e7SMoni Shoua + RXE_ATMETH_BYTES 925*8700e3e7SMoni Shoua + RXE_DETH_BYTES + 926*8700e3e7SMoni Shoua + RXE_RDETH_BYTES, 927*8700e3e7SMoni Shoua } 928*8700e3e7SMoni Shoua }, 929*8700e3e7SMoni Shoua 930*8700e3e7SMoni Shoua /* UD */ 931*8700e3e7SMoni Shoua [IB_OPCODE_UD_SEND_ONLY] = { 932*8700e3e7SMoni Shoua .name = "IB_OPCODE_UD_SEND_ONLY", 933*8700e3e7SMoni Shoua .mask = RXE_DETH_MASK | RXE_PAYLOAD_MASK | RXE_REQ_MASK 934*8700e3e7SMoni Shoua | RXE_COMP_MASK | RXE_RWR_MASK | RXE_SEND_MASK 935*8700e3e7SMoni Shoua | RXE_START_MASK | RXE_END_MASK, 936*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_DETH_BYTES, 937*8700e3e7SMoni Shoua .offset = { 938*8700e3e7SMoni Shoua [RXE_BTH] = 0, 939*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES, 940*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 941*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 942*8700e3e7SMoni Shoua } 943*8700e3e7SMoni Shoua }, 944*8700e3e7SMoni Shoua [IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE] = { 945*8700e3e7SMoni Shoua .name = "IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE", 946*8700e3e7SMoni Shoua .mask = RXE_DETH_MASK | RXE_IMMDT_MASK | RXE_PAYLOAD_MASK 947*8700e3e7SMoni Shoua | RXE_REQ_MASK | RXE_COMP_MASK | RXE_RWR_MASK 948*8700e3e7SMoni Shoua | RXE_SEND_MASK | RXE_START_MASK | RXE_END_MASK, 949*8700e3e7SMoni Shoua .length = RXE_BTH_BYTES + RXE_IMMDT_BYTES + RXE_DETH_BYTES, 950*8700e3e7SMoni Shoua .offset = { 951*8700e3e7SMoni Shoua [RXE_BTH] = 0, 952*8700e3e7SMoni Shoua [RXE_DETH] = RXE_BTH_BYTES, 953*8700e3e7SMoni Shoua [RXE_IMMDT] = RXE_BTH_BYTES 954*8700e3e7SMoni Shoua + RXE_DETH_BYTES, 955*8700e3e7SMoni Shoua [RXE_PAYLOAD] = RXE_BTH_BYTES 956*8700e3e7SMoni Shoua + RXE_DETH_BYTES 957*8700e3e7SMoni Shoua + RXE_IMMDT_BYTES, 958*8700e3e7SMoni Shoua } 959*8700e3e7SMoni Shoua }, 960*8700e3e7SMoni Shoua 961*8700e3e7SMoni Shoua }; 962