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