1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This file is IBTA volume 1, chapter 12 declarations: 6*4882a593Smuzhiyun * CHAPTER 12: COMMUNICATION MANAGEMENT 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun #ifndef _IBTA_VOL1_C12_H_ 9*4882a593Smuzhiyun #define _IBTA_VOL1_C12_H_ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <rdma/iba.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #define CM_FIELD_BLOC(field_struct, byte_offset, bits_offset, width) \ 14*4882a593Smuzhiyun IBA_FIELD_BLOC(field_struct, \ 15*4882a593Smuzhiyun (byte_offset + sizeof(struct ib_mad_hdr)), bits_offset, \ 16*4882a593Smuzhiyun width) 17*4882a593Smuzhiyun #define CM_FIELD8_LOC(field_struct, byte_offset, width) \ 18*4882a593Smuzhiyun IBA_FIELD8_LOC(field_struct, \ 19*4882a593Smuzhiyun (byte_offset + sizeof(struct ib_mad_hdr)), width) 20*4882a593Smuzhiyun #define CM_FIELD16_LOC(field_struct, byte_offset, width) \ 21*4882a593Smuzhiyun IBA_FIELD16_LOC(field_struct, \ 22*4882a593Smuzhiyun (byte_offset + sizeof(struct ib_mad_hdr)), width) 23*4882a593Smuzhiyun #define CM_FIELD32_LOC(field_struct, byte_offset, width) \ 24*4882a593Smuzhiyun IBA_FIELD32_LOC(field_struct, \ 25*4882a593Smuzhiyun (byte_offset + sizeof(struct ib_mad_hdr)), width) 26*4882a593Smuzhiyun #define CM_FIELD64_LOC(field_struct, byte_offset) \ 27*4882a593Smuzhiyun IBA_FIELD64_LOC(field_struct, (byte_offset + sizeof(struct ib_mad_hdr))) 28*4882a593Smuzhiyun #define CM_FIELD_MLOC(field_struct, byte_offset, width, type) \ 29*4882a593Smuzhiyun IBA_FIELD_MLOC(field_struct, \ 30*4882a593Smuzhiyun (byte_offset + sizeof(struct ib_mad_hdr)), width, type) 31*4882a593Smuzhiyun #define CM_STRUCT(field_struct, total_len) \ 32*4882a593Smuzhiyun field_struct \ 33*4882a593Smuzhiyun { \ 34*4882a593Smuzhiyun struct ib_mad_hdr hdr; \ 35*4882a593Smuzhiyun u32 _data[(total_len) / 32 + \ 36*4882a593Smuzhiyun BUILD_BUG_ON_ZERO((total_len) % 32 != 0)]; \ 37*4882a593Smuzhiyun } 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* Table 106 REQ Message Contents */ 40*4882a593Smuzhiyun #define CM_REQ_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_req_msg, 0, 32) 41*4882a593Smuzhiyun #define CM_REQ_VENDOR_ID CM_FIELD32_LOC(struct cm_req_msg, 5, 24) 42*4882a593Smuzhiyun #define CM_REQ_SERVICE_ID CM_FIELD64_LOC(struct cm_req_msg, 8) 43*4882a593Smuzhiyun #define CM_REQ_LOCAL_CA_GUID CM_FIELD64_LOC(struct cm_req_msg, 16) 44*4882a593Smuzhiyun #define CM_REQ_LOCAL_Q_KEY CM_FIELD32_LOC(struct cm_req_msg, 28, 32) 45*4882a593Smuzhiyun #define CM_REQ_LOCAL_QPN CM_FIELD32_LOC(struct cm_req_msg, 32, 24) 46*4882a593Smuzhiyun #define CM_REQ_RESPONDER_RESOURCES CM_FIELD8_LOC(struct cm_req_msg, 35, 8) 47*4882a593Smuzhiyun #define CM_REQ_LOCAL_EECN CM_FIELD32_LOC(struct cm_req_msg, 36, 24) 48*4882a593Smuzhiyun #define CM_REQ_INITIATOR_DEPTH CM_FIELD8_LOC(struct cm_req_msg, 39, 8) 49*4882a593Smuzhiyun #define CM_REQ_REMOTE_EECN CM_FIELD32_LOC(struct cm_req_msg, 40, 24) 50*4882a593Smuzhiyun #define CM_REQ_REMOTE_CM_RESPONSE_TIMEOUT \ 51*4882a593Smuzhiyun CM_FIELD8_LOC(struct cm_req_msg, 43, 5) 52*4882a593Smuzhiyun #define CM_REQ_TRANSPORT_SERVICE_TYPE CM_FIELD_BLOC(struct cm_req_msg, 43, 5, 2) 53*4882a593Smuzhiyun #define CM_REQ_END_TO_END_FLOW_CONTROL \ 54*4882a593Smuzhiyun CM_FIELD_BLOC(struct cm_req_msg, 43, 7, 1) 55*4882a593Smuzhiyun #define CM_REQ_STARTING_PSN CM_FIELD32_LOC(struct cm_req_msg, 44, 24) 56*4882a593Smuzhiyun #define CM_REQ_LOCAL_CM_RESPONSE_TIMEOUT CM_FIELD8_LOC(struct cm_req_msg, 47, 5) 57*4882a593Smuzhiyun #define CM_REQ_RETRY_COUNT CM_FIELD_BLOC(struct cm_req_msg, 47, 5, 3) 58*4882a593Smuzhiyun #define CM_REQ_PARTITION_KEY CM_FIELD16_LOC(struct cm_req_msg, 48, 16) 59*4882a593Smuzhiyun #define CM_REQ_PATH_PACKET_PAYLOAD_MTU CM_FIELD8_LOC(struct cm_req_msg, 50, 4) 60*4882a593Smuzhiyun #define CM_REQ_RDC_EXISTS CM_FIELD_BLOC(struct cm_req_msg, 50, 4, 1) 61*4882a593Smuzhiyun #define CM_REQ_RNR_RETRY_COUNT CM_FIELD_BLOC(struct cm_req_msg, 50, 5, 3) 62*4882a593Smuzhiyun #define CM_REQ_MAX_CM_RETRIES CM_FIELD8_LOC(struct cm_req_msg, 51, 4) 63*4882a593Smuzhiyun #define CM_REQ_SRQ CM_FIELD_BLOC(struct cm_req_msg, 51, 4, 1) 64*4882a593Smuzhiyun #define CM_REQ_EXTENDED_TRANSPORT_TYPE \ 65*4882a593Smuzhiyun CM_FIELD_BLOC(struct cm_req_msg, 51, 5, 3) 66*4882a593Smuzhiyun #define CM_REQ_PRIMARY_LOCAL_PORT_LID CM_FIELD16_LOC(struct cm_req_msg, 52, 16) 67*4882a593Smuzhiyun #define CM_REQ_PRIMARY_REMOTE_PORT_LID CM_FIELD16_LOC(struct cm_req_msg, 54, 16) 68*4882a593Smuzhiyun #define CM_REQ_PRIMARY_LOCAL_PORT_GID \ 69*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_req_msg, 56, 128, union ib_gid) 70*4882a593Smuzhiyun #define CM_REQ_PRIMARY_REMOTE_PORT_GID \ 71*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_req_msg, 72, 128, union ib_gid) 72*4882a593Smuzhiyun #define CM_REQ_PRIMARY_FLOW_LABEL CM_FIELD32_LOC(struct cm_req_msg, 88, 20) 73*4882a593Smuzhiyun #define CM_REQ_PRIMARY_PACKET_RATE CM_FIELD_BLOC(struct cm_req_msg, 91, 2, 6) 74*4882a593Smuzhiyun #define CM_REQ_PRIMARY_TRAFFIC_CLASS CM_FIELD8_LOC(struct cm_req_msg, 92, 8) 75*4882a593Smuzhiyun #define CM_REQ_PRIMARY_HOP_LIMIT CM_FIELD8_LOC(struct cm_req_msg, 93, 8) 76*4882a593Smuzhiyun #define CM_REQ_PRIMARY_SL CM_FIELD8_LOC(struct cm_req_msg, 94, 4) 77*4882a593Smuzhiyun #define CM_REQ_PRIMARY_SUBNET_LOCAL CM_FIELD_BLOC(struct cm_req_msg, 94, 4, 1) 78*4882a593Smuzhiyun #define CM_REQ_PRIMARY_LOCAL_ACK_TIMEOUT CM_FIELD8_LOC(struct cm_req_msg, 95, 5) 79*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_LOCAL_PORT_LID \ 80*4882a593Smuzhiyun CM_FIELD16_LOC(struct cm_req_msg, 96, 16) 81*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_REMOTE_PORT_LID \ 82*4882a593Smuzhiyun CM_FIELD16_LOC(struct cm_req_msg, 98, 16) 83*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_LOCAL_PORT_GID \ 84*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_req_msg, 100, 128, union ib_gid) 85*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_REMOTE_PORT_GID \ 86*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_req_msg, 116, 128, union ib_gid) 87*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_FLOW_LABEL CM_FIELD32_LOC(struct cm_req_msg, 132, 20) 88*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_PACKET_RATE CM_FIELD_BLOC(struct cm_req_msg, 135, 2, 6) 89*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_TRAFFIC_CLASS CM_FIELD8_LOC(struct cm_req_msg, 136, 8) 90*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_HOP_LIMIT CM_FIELD8_LOC(struct cm_req_msg, 137, 8) 91*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_SL CM_FIELD8_LOC(struct cm_req_msg, 138, 4) 92*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_SUBNET_LOCAL \ 93*4882a593Smuzhiyun CM_FIELD_BLOC(struct cm_req_msg, 138, 4, 1) 94*4882a593Smuzhiyun #define CM_REQ_ALTERNATE_LOCAL_ACK_TIMEOUT \ 95*4882a593Smuzhiyun CM_FIELD8_LOC(struct cm_req_msg, 139, 5) 96*4882a593Smuzhiyun #define CM_REQ_SAP_SUPPORTED CM_FIELD_BLOC(struct cm_req_msg, 139, 5, 1) 97*4882a593Smuzhiyun #define CM_REQ_PRIVATE_DATA CM_FIELD_MLOC(struct cm_req_msg, 140, 736, void) 98*4882a593Smuzhiyun CM_STRUCT(struct cm_req_msg, 140 * 8 + 736); 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /* Table 107 MRA Message Contents */ 101*4882a593Smuzhiyun #define CM_MRA_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_mra_msg, 0, 32) 102*4882a593Smuzhiyun #define CM_MRA_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_mra_msg, 4, 32) 103*4882a593Smuzhiyun #define CM_MRA_MESSAGE_MRAED CM_FIELD8_LOC(struct cm_mra_msg, 8, 2) 104*4882a593Smuzhiyun #define CM_MRA_SERVICE_TIMEOUT CM_FIELD8_LOC(struct cm_mra_msg, 9, 5) 105*4882a593Smuzhiyun #define CM_MRA_PRIVATE_DATA CM_FIELD_MLOC(struct cm_mra_msg, 10, 1776, void) 106*4882a593Smuzhiyun CM_STRUCT(struct cm_mra_msg, 10 * 8 + 1776); 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun /* Table 108 REJ Message Contents */ 109*4882a593Smuzhiyun #define CM_REJ_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_rej_msg, 0, 32) 110*4882a593Smuzhiyun #define CM_REJ_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_rej_msg, 4, 32) 111*4882a593Smuzhiyun #define CM_REJ_MESSAGE_REJECTED CM_FIELD8_LOC(struct cm_rej_msg, 8, 2) 112*4882a593Smuzhiyun #define CM_REJ_REJECTED_INFO_LENGTH CM_FIELD8_LOC(struct cm_rej_msg, 9, 7) 113*4882a593Smuzhiyun #define CM_REJ_REASON CM_FIELD16_LOC(struct cm_rej_msg, 10, 16) 114*4882a593Smuzhiyun #define CM_REJ_ARI CM_FIELD_MLOC(struct cm_rej_msg, 12, 576, void) 115*4882a593Smuzhiyun #define CM_REJ_PRIVATE_DATA CM_FIELD_MLOC(struct cm_rej_msg, 84, 1184, void) 116*4882a593Smuzhiyun CM_STRUCT(struct cm_rej_msg, 84 * 8 + 1184); 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun /* Table 110 REP Message Contents */ 119*4882a593Smuzhiyun #define CM_REP_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_rep_msg, 0, 32) 120*4882a593Smuzhiyun #define CM_REP_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_rep_msg, 4, 32) 121*4882a593Smuzhiyun #define CM_REP_LOCAL_Q_KEY CM_FIELD32_LOC(struct cm_rep_msg, 8, 32) 122*4882a593Smuzhiyun #define CM_REP_LOCAL_QPN CM_FIELD32_LOC(struct cm_rep_msg, 12, 24) 123*4882a593Smuzhiyun #define CM_REP_VENDOR_ID_H CM_FIELD8_LOC(struct cm_rep_msg, 15, 8) 124*4882a593Smuzhiyun #define CM_REP_LOCAL_EE_CONTEXT_NUMBER CM_FIELD32_LOC(struct cm_rep_msg, 16, 24) 125*4882a593Smuzhiyun #define CM_REP_VENDOR_ID_M CM_FIELD8_LOC(struct cm_rep_msg, 19, 8) 126*4882a593Smuzhiyun #define CM_REP_STARTING_PSN CM_FIELD32_LOC(struct cm_rep_msg, 20, 24) 127*4882a593Smuzhiyun #define CM_REP_VENDOR_ID_L CM_FIELD8_LOC(struct cm_rep_msg, 23, 8) 128*4882a593Smuzhiyun #define CM_REP_RESPONDER_RESOURCES CM_FIELD8_LOC(struct cm_rep_msg, 24, 8) 129*4882a593Smuzhiyun #define CM_REP_INITIATOR_DEPTH CM_FIELD8_LOC(struct cm_rep_msg, 25, 8) 130*4882a593Smuzhiyun #define CM_REP_TARGET_ACK_DELAY CM_FIELD8_LOC(struct cm_rep_msg, 26, 5) 131*4882a593Smuzhiyun #define CM_REP_FAILOVER_ACCEPTED CM_FIELD_BLOC(struct cm_rep_msg, 26, 5, 2) 132*4882a593Smuzhiyun #define CM_REP_END_TO_END_FLOW_CONTROL \ 133*4882a593Smuzhiyun CM_FIELD_BLOC(struct cm_rep_msg, 26, 7, 1) 134*4882a593Smuzhiyun #define CM_REP_RNR_RETRY_COUNT CM_FIELD8_LOC(struct cm_rep_msg, 27, 3) 135*4882a593Smuzhiyun #define CM_REP_SRQ CM_FIELD_BLOC(struct cm_rep_msg, 27, 3, 1) 136*4882a593Smuzhiyun #define CM_REP_LOCAL_CA_GUID CM_FIELD64_LOC(struct cm_rep_msg, 28) 137*4882a593Smuzhiyun #define CM_REP_PRIVATE_DATA CM_FIELD_MLOC(struct cm_rep_msg, 36, 1568, void) 138*4882a593Smuzhiyun CM_STRUCT(struct cm_rep_msg, 36 * 8 + 1568); 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun /* Table 111 RTU Message Contents */ 141*4882a593Smuzhiyun #define CM_RTU_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_rtu_msg, 0, 32) 142*4882a593Smuzhiyun #define CM_RTU_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_rtu_msg, 4, 32) 143*4882a593Smuzhiyun #define CM_RTU_PRIVATE_DATA CM_FIELD_MLOC(struct cm_rtu_msg, 8, 1792, void) 144*4882a593Smuzhiyun CM_STRUCT(struct cm_rtu_msg, 8 * 8 + 1792); 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun /* Table 112 DREQ Message Contents */ 147*4882a593Smuzhiyun #define CM_DREQ_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_dreq_msg, 0, 32) 148*4882a593Smuzhiyun #define CM_DREQ_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_dreq_msg, 4, 32) 149*4882a593Smuzhiyun #define CM_DREQ_REMOTE_QPN_EECN CM_FIELD32_LOC(struct cm_dreq_msg, 8, 24) 150*4882a593Smuzhiyun #define CM_DREQ_PRIVATE_DATA CM_FIELD_MLOC(struct cm_dreq_msg, 12, 1760, void) 151*4882a593Smuzhiyun CM_STRUCT(struct cm_dreq_msg, 12 * 8 + 1760); 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun /* Table 113 DREP Message Contents */ 154*4882a593Smuzhiyun #define CM_DREP_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_drep_msg, 0, 32) 155*4882a593Smuzhiyun #define CM_DREP_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_drep_msg, 4, 32) 156*4882a593Smuzhiyun #define CM_DREP_PRIVATE_DATA CM_FIELD_MLOC(struct cm_drep_msg, 8, 1792, void) 157*4882a593Smuzhiyun CM_STRUCT(struct cm_drep_msg, 8 * 8 + 1792); 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun /* Table 115 LAP Message Contents */ 160*4882a593Smuzhiyun #define CM_LAP_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_lap_msg, 0, 32) 161*4882a593Smuzhiyun #define CM_LAP_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_lap_msg, 4, 32) 162*4882a593Smuzhiyun #define CM_LAP_REMOTE_QPN_EECN CM_FIELD32_LOC(struct cm_lap_msg, 12, 24) 163*4882a593Smuzhiyun #define CM_LAP_REMOTE_CM_RESPONSE_TIMEOUT \ 164*4882a593Smuzhiyun CM_FIELD8_LOC(struct cm_lap_msg, 15, 5) 165*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_LOCAL_PORT_LID \ 166*4882a593Smuzhiyun CM_FIELD16_LOC(struct cm_lap_msg, 20, 16) 167*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_REMOTE_PORT_LID \ 168*4882a593Smuzhiyun CM_FIELD16_LOC(struct cm_lap_msg, 22, 16) 169*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_LOCAL_PORT_GID \ 170*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_lap_msg, 24, 128, union ib_gid) 171*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_REMOTE_PORT_GID \ 172*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_lap_msg, 40, 128, union ib_gid) 173*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_FLOW_LABEL CM_FIELD32_LOC(struct cm_lap_msg, 56, 20) 174*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_TRAFFIC_CLASS CM_FIELD8_LOC(struct cm_lap_msg, 59, 8) 175*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_HOP_LIMIT CM_FIELD8_LOC(struct cm_lap_msg, 60, 8) 176*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_PACKET_RATE CM_FIELD_BLOC(struct cm_lap_msg, 61, 2, 6) 177*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_SL CM_FIELD8_LOC(struct cm_lap_msg, 62, 4) 178*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_SUBNET_LOCAL CM_FIELD_BLOC(struct cm_lap_msg, 62, 4, 1) 179*4882a593Smuzhiyun #define CM_LAP_ALTERNATE_LOCAL_ACK_TIMEOUT \ 180*4882a593Smuzhiyun CM_FIELD8_LOC(struct cm_lap_msg, 63, 5) 181*4882a593Smuzhiyun #define CM_LAP_PRIVATE_DATA CM_FIELD_MLOC(struct cm_lap_msg, 64, 1344, void) 182*4882a593Smuzhiyun CM_STRUCT(struct cm_lap_msg, 64 * 8 + 1344); 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun /* Table 116 APR Message Contents */ 185*4882a593Smuzhiyun #define CM_APR_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_apr_msg, 0, 32) 186*4882a593Smuzhiyun #define CM_APR_REMOTE_COMM_ID CM_FIELD32_LOC(struct cm_apr_msg, 4, 32) 187*4882a593Smuzhiyun #define CM_APR_ADDITIONAL_INFORMATION_LENGTH \ 188*4882a593Smuzhiyun CM_FIELD8_LOC(struct cm_apr_msg, 8, 8) 189*4882a593Smuzhiyun #define CM_APR_AR_STATUS CM_FIELD8_LOC(struct cm_apr_msg, 9, 8) 190*4882a593Smuzhiyun #define CM_APR_ADDITIONAL_INFORMATION \ 191*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_apr_msg, 12, 576, void) 192*4882a593Smuzhiyun #define CM_APR_PRIVATE_DATA CM_FIELD_MLOC(struct cm_apr_msg, 84, 1184, void) 193*4882a593Smuzhiyun CM_STRUCT(struct cm_apr_msg, 84 * 8 + 1184); 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun /* Table 119 SIDR_REQ Message Contents */ 196*4882a593Smuzhiyun #define CM_SIDR_REQ_REQUESTID CM_FIELD32_LOC(struct cm_sidr_req_msg, 0, 32) 197*4882a593Smuzhiyun #define CM_SIDR_REQ_PARTITION_KEY CM_FIELD16_LOC(struct cm_sidr_req_msg, 4, 16) 198*4882a593Smuzhiyun #define CM_SIDR_REQ_SERVICEID CM_FIELD64_LOC(struct cm_sidr_req_msg, 8) 199*4882a593Smuzhiyun #define CM_SIDR_REQ_PRIVATE_DATA \ 200*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_sidr_req_msg, 16, 1728, void) 201*4882a593Smuzhiyun CM_STRUCT(struct cm_sidr_req_msg, 16 * 8 + 1728); 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun /* Table 120 SIDR_REP Message Contents */ 204*4882a593Smuzhiyun #define CM_SIDR_REP_REQUESTID CM_FIELD32_LOC(struct cm_sidr_rep_msg, 0, 32) 205*4882a593Smuzhiyun #define CM_SIDR_REP_STATUS CM_FIELD8_LOC(struct cm_sidr_rep_msg, 4, 8) 206*4882a593Smuzhiyun #define CM_SIDR_REP_ADDITIONAL_INFORMATION_LENGTH \ 207*4882a593Smuzhiyun CM_FIELD8_LOC(struct cm_sidr_rep_msg, 5, 8) 208*4882a593Smuzhiyun #define CM_SIDR_REP_VENDOR_ID_H CM_FIELD16_LOC(struct cm_sidr_rep_msg, 6, 16) 209*4882a593Smuzhiyun #define CM_SIDR_REP_QPN CM_FIELD32_LOC(struct cm_sidr_rep_msg, 8, 24) 210*4882a593Smuzhiyun #define CM_SIDR_REP_VENDOR_ID_L CM_FIELD8_LOC(struct cm_sidr_rep_msg, 11, 8) 211*4882a593Smuzhiyun #define CM_SIDR_REP_SERVICEID CM_FIELD64_LOC(struct cm_sidr_rep_msg, 12) 212*4882a593Smuzhiyun #define CM_SIDR_REP_Q_KEY CM_FIELD32_LOC(struct cm_sidr_rep_msg, 20, 32) 213*4882a593Smuzhiyun #define CM_SIDR_REP_ADDITIONAL_INFORMATION \ 214*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_sidr_rep_msg, 24, 576, void) 215*4882a593Smuzhiyun #define CM_SIDR_REP_PRIVATE_DATA \ 216*4882a593Smuzhiyun CM_FIELD_MLOC(struct cm_sidr_rep_msg, 96, 1088, void) 217*4882a593Smuzhiyun CM_STRUCT(struct cm_sidr_rep_msg, 96 * 8 + 1088); 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun #endif /* _IBTA_VOL1_C12_H_ */ 220