1*0Sstevel@tonic-gate /* 2*0Sstevel@tonic-gate * CDDL HEADER START 3*0Sstevel@tonic-gate * 4*0Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*0Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*0Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*0Sstevel@tonic-gate * with the License. 8*0Sstevel@tonic-gate * 9*0Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*0Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*0Sstevel@tonic-gate * See the License for the specific language governing permissions 12*0Sstevel@tonic-gate * and limitations under the License. 13*0Sstevel@tonic-gate * 14*0Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*0Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*0Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*0Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*0Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*0Sstevel@tonic-gate * 20*0Sstevel@tonic-gate * CDDL HEADER END 21*0Sstevel@tonic-gate */ 22*0Sstevel@tonic-gate /* 23*0Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 24*0Sstevel@tonic-gate * Use is subject to license terms. 25*0Sstevel@tonic-gate */ 26*0Sstevel@tonic-gate 27*0Sstevel@tonic-gate #ifndef _SYS_IB_MGT_SA_RECS_H 28*0Sstevel@tonic-gate #define _SYS_IB_MGT_SA_RECS_H 29*0Sstevel@tonic-gate 30*0Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*0Sstevel@tonic-gate 32*0Sstevel@tonic-gate /* 33*0Sstevel@tonic-gate * This file contains the definitions of the SA-specific records in IB spec 34*0Sstevel@tonic-gate * volume 1, release 1.1, chapter 15. 35*0Sstevel@tonic-gate */ 36*0Sstevel@tonic-gate 37*0Sstevel@tonic-gate #ifdef __cplusplus 38*0Sstevel@tonic-gate extern "C" { 39*0Sstevel@tonic-gate #endif 40*0Sstevel@tonic-gate 41*0Sstevel@tonic-gate #include <sys/ib/ib_types.h> 42*0Sstevel@tonic-gate #include <sys/ib/mgt/sm_attr.h> 43*0Sstevel@tonic-gate 44*0Sstevel@tonic-gate /* class header for SA MADs */ 45*0Sstevel@tonic-gate typedef struct _ib_sa_hdr_t { 46*0Sstevel@tonic-gate uint64_t SM_KEY; 47*0Sstevel@tonic-gate uint16_t AttributeOffset; 48*0Sstevel@tonic-gate uint16_t Reserved; 49*0Sstevel@tonic-gate uint64_t ComponentMask; 50*0Sstevel@tonic-gate } ib_sa_hdr_t; 51*0Sstevel@tonic-gate 52*0Sstevel@tonic-gate /* subnet administration methods */ 53*0Sstevel@tonic-gate #define SA_SUBN_ADM_GET 0x01 54*0Sstevel@tonic-gate #define SA_SUBN_ADM_GET_RESP 0x81 55*0Sstevel@tonic-gate #define SA_SUBN_ADM_SET 0x02 56*0Sstevel@tonic-gate #define SA_SUBN_ADM_REPORT 0x06 57*0Sstevel@tonic-gate #define SA_SUBN_ADM_REPORT_RESP 0x86 58*0Sstevel@tonic-gate #define SA_SUBN_ADM_GET_TABLE 0x12 59*0Sstevel@tonic-gate #define SA_SUBN_ADM_GET_TABLE_RESP 0x92 60*0Sstevel@tonic-gate #define SA_SUBN_ADM_GET_TRACE_TABLE 0x13 61*0Sstevel@tonic-gate #define SA_SUBN_ADM_GET_MULTI 0x14 62*0Sstevel@tonic-gate #define SA_SUBN_ADM_GET_MULTI_RESP 0x94 63*0Sstevel@tonic-gate #define SA_SUBN_ADM_DELETE 0x15 64*0Sstevel@tonic-gate #define SA_SUBN_ADM_DELETE_RESP 0x95 65*0Sstevel@tonic-gate 66*0Sstevel@tonic-gate /* sa MAD status field bit value */ 67*0Sstevel@tonic-gate #define SA_STATUS_NO_ERROR 0x0000 68*0Sstevel@tonic-gate #define SA_STATUS_ERR_NO_RESOURCES 0x0100 69*0Sstevel@tonic-gate #define SA_STATUS_ERR_REQ_INVALID 0x0200 70*0Sstevel@tonic-gate #define SA_STATUS_ERR_NO_RECORDS 0x0300 71*0Sstevel@tonic-gate #define SA_STATUS_ERR_TOO_MANY_RECORDS 0x0400 72*0Sstevel@tonic-gate #define SA_STATUS_ERR_REQ_INVALID_GID 0x0500 73*0Sstevel@tonic-gate #define SA_STATUS_ERR_REQ_INSUFFICIENT_COMPONENTS 0x0600 74*0Sstevel@tonic-gate #define SA_STATUS_ERROR_MASK 0xFF00 75*0Sstevel@tonic-gate 76*0Sstevel@tonic-gate 77*0Sstevel@tonic-gate /* SA-Specific ClassPortinfo::CapabilityMask Bits: Table 152 */ 78*0Sstevel@tonic-gate #define SA_CAPMASK_OPT_RECORDS_SUPPORTED 0x100 79*0Sstevel@tonic-gate #define SA_CAPMASK_UD_MCAST_SUPPORTED 0x200 80*0Sstevel@tonic-gate #define SA_CAPMASK_MULTIPATH_SUPPORTED 0x400 81*0Sstevel@tonic-gate #define SA_CAPMASK_REINIT_SUPPORTED 0x800 82*0Sstevel@tonic-gate 83*0Sstevel@tonic-gate /* SA attribute IDs: Table 155 */ 84*0Sstevel@tonic-gate #define SA_CLASSPORTINFO_ATTRID 0x01 85*0Sstevel@tonic-gate #define SA_NOTICE_ATTRID 0x02 86*0Sstevel@tonic-gate #define SA_INFORMINFO_ATTRID 0x03 87*0Sstevel@tonic-gate #define SA_NODERECORD_ATTRID 0x11 88*0Sstevel@tonic-gate #define SA_PORTINFORECORD_ATTRID 0x12 89*0Sstevel@tonic-gate #define SA_SLTOVLRECORD_ATTRID 0x13 90*0Sstevel@tonic-gate #define SA_SWITCHINFORECORD_ATTRID 0x14 91*0Sstevel@tonic-gate #define SA_LINEARFDBRECORD_ATTRID 0x15 92*0Sstevel@tonic-gate #define SA_RANDOMFDBRECORD_ATTRID 0x16 93*0Sstevel@tonic-gate #define SA_MULTICASTFDBRECORD_ATTRID 0x17 94*0Sstevel@tonic-gate #define SA_SMINFORECORD_ATTRID 0x18 95*0Sstevel@tonic-gate #define SA_INFORMINFORECORD_ATTRID 0xF3 96*0Sstevel@tonic-gate #define SA_LINKRECORD_ATTRID 0x20 97*0Sstevel@tonic-gate #define SA_GUIDINFORECORD_ATTRID 0x30 98*0Sstevel@tonic-gate #define SA_SERVICERECORD_ATTRID 0x31 99*0Sstevel@tonic-gate #define SA_PARTITIONRECORD_ATTRID 0x33 100*0Sstevel@tonic-gate #define SA_PATHRECORD_ATTRID 0x35 101*0Sstevel@tonic-gate #define SA_VLARBRECORD_ATTRID 0x36 102*0Sstevel@tonic-gate #define SA_MCMEMBERRECORD_ATTRID 0x38 103*0Sstevel@tonic-gate #define SA_TRACERECORD_ATTRID 0x39 104*0Sstevel@tonic-gate #define SA_MULTIPATHRECORD_ATTRID 0x3A 105*0Sstevel@tonic-gate #define SA_SERVICEASSNRECORD_ATTRID 0x3B 106*0Sstevel@tonic-gate 107*0Sstevel@tonic-gate /* Node Record: Table 157 */ 108*0Sstevel@tonic-gate typedef struct sa_node_record_s { 109*0Sstevel@tonic-gate ib_lid_t LID; /* LID of a port of the node */ 110*0Sstevel@tonic-gate uint16_t Reserved; 111*0Sstevel@tonic-gate sm_nodeinfo_t NodeInfo; /* NodeInfo attr. contents */ 112*0Sstevel@tonic-gate sm_nodedesc_t NodeDescription; /* NodeDesc attr. contents */ 113*0Sstevel@tonic-gate } sa_node_record_t; 114*0Sstevel@tonic-gate 115*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_NODELID 0x1 116*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_RESERVED 0x2 117*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_BASEVERSION 0x4 118*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_CLASSVERSION 0x8 119*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_NODETYPE 0x10 120*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_NUMPORTS 0x20 121*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_SYSIMAGEGUID 0x40 122*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_NODEGUID 0x80 123*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_PORTGUID 0x100 124*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_PARTITIONCAP 0x200 125*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_DEVICEID 0x400 126*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_REVISION 0x800 127*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_LOCALPORTNUM 0x1000 128*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_VENDORID 0x2000 129*0Sstevel@tonic-gate #define SA_NODEINFO_COMPMASK_NODEDESCRIPTION 0x4000 130*0Sstevel@tonic-gate 131*0Sstevel@tonic-gate /* Portinfo Record: Table 158 */ 132*0Sstevel@tonic-gate typedef struct sa_portinfo_record_s { 133*0Sstevel@tonic-gate ib_lid_t EndportLID; /* LID of the port */ 134*0Sstevel@tonic-gate uint8_t PortNum; /* port number (for switch) */ 135*0Sstevel@tonic-gate uint8_t Reserved; 136*0Sstevel@tonic-gate sm_portinfo_t PortInfo; /* PortInfo attr. contents */ 137*0Sstevel@tonic-gate } sa_portinfo_record_t; 138*0Sstevel@tonic-gate 139*0Sstevel@tonic-gate /* first 3 components are atomic */ 140*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_PORTLID 0x1 141*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_PORTNUM 0x2 142*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_RESERVED 0x4 143*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_MKEY 0x8 144*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_GIDPREFIX 0x10 145*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LID 0x20 146*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_MASTERSMLID 0x40 147*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_CAPMASK 0x80 148*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_DIAGCODE 0x100 149*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_MKEYLEASE 0x200 150*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LOCALPORTNUM 0x400 151*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LINKWIDTHEN 0x800 152*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LINKWIDTHSUPP 0x1000 153*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LINKWIDTHACT 0x2000 154*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LINKSPEEDSUPP 0x4000 155*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_PORTSTATE 0x8000 156*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_PORTPHYSICALSTATE 0x10000 157*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LINKDOWNDEFSTATE 0x20000 158*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_MKEYPROTBITS 0x40000 159*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_RESERVED2 0x80000 160*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LMC 0x100000 161*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LINKSPEEDACT 0x200000 162*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LINKSPEEDEN 0x400000 163*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_NEIGHBORMTU 0x800000 164*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_MASTERSMSL 0x1000000 165*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_VLCAP 0x2000000 166*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_INITTYPE 0x4000000 167*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_VLHIGHLIMIT 0x8000000 168*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_VLARBHIGHCAP 0x10000000 169*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_VLARBLOWCAP 0x20000000 170*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_INITTYPEREPLY 0x40000000 171*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_MTUCAP 0x80000000 172*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_VLSTALLCOUNT 0x100000000 173*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_HOQLIFE 0x200000000 174*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_OPERATIONALVLS 0x400000000 175*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_PARTENFINBOUND 0x800000000 176*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_PARTENFOUTBOUND 0x1000000000 177*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_FILTERRAWPKTIN 0x2000000000 178*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_FILTERRAWPKTOUT 0x4000000000 179*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_MKEYVIOLATIONS 0x8000000000 180*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_PKEYVIOLATIONS 0x10000000000 181*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_QKEYVIOLATIONS 0x20000000000 182*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_GUIDCAP 0x40000000000 183*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_RESERVED5 0x80000000000 184*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_SUBNETTIMEOUT 0x100000000000 185*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_RESERVED6 0x200000000000 186*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_RESPTIMEVALUE 0x400000000000 187*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_LOCALPHYERRORS 0x800000000000 188*0Sstevel@tonic-gate #define SA_PORTINFO_COMPMASK_OVERRUNERRORS 0x1000000000000 189*0Sstevel@tonic-gate 190*0Sstevel@tonic-gate /* SLtoVL Mapping Table Record: Table 159 */ 191*0Sstevel@tonic-gate typedef struct sa_SLtoVLmapping_record_s { 192*0Sstevel@tonic-gate ib_lid_t LID; 193*0Sstevel@tonic-gate uint8_t InputPortNum; 194*0Sstevel@tonic-gate uint8_t OutputPortNum; 195*0Sstevel@tonic-gate uint32_t Reserved; 196*0Sstevel@tonic-gate sm_SLtoVL_mapping_table_t SLtoVLMappingTable; 197*0Sstevel@tonic-gate } sa_SLtoVLmapping_record_t; 198*0Sstevel@tonic-gate 199*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_PORTLID 0x1 200*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_INPUTPORTNUM 0x2 201*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_OUTPUTPORTNUM 0x4 202*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_RESERVED 0x8 203*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL0TOVL 0x10 204*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL1TOVL 0x20 205*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL2TOVL 0x40 206*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL3TOVL 0x80 207*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL4TOVL 0x100 208*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL5TOVL 0x200 209*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL6TOVL 0x400 210*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL7TOVL 0x800 211*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL8TOVL 0x1000 212*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL9TOVL 0x2000 213*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL10TOVL 0x4000 214*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL11TOVL 0x8000 215*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL12TOVL 0x10000 216*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL13TOVL 0x20000 217*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL14TOVL 0x40000 218*0Sstevel@tonic-gate #define SA_SLTOVL_COMPMASK_SL15TOVL 0x80000 219*0Sstevel@tonic-gate 220*0Sstevel@tonic-gate /* Switchinfo Record: Table 160 */ 221*0Sstevel@tonic-gate typedef struct sa_switchinfo_record_s { 222*0Sstevel@tonic-gate ib_lid_t LID; /* LID of switch port 0 */ 223*0Sstevel@tonic-gate uint16_t Reserved; 224*0Sstevel@tonic-gate sm_switchinfo_t SwitchInfo; /* SwitchInfo attr. contents */ 225*0Sstevel@tonic-gate } sa_switchinfo_record_t; 226*0Sstevel@tonic-gate 227*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_SWITCHLID 0x1 228*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_RESERVED 0x2 229*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_LINEARFDBCAP 0x4 230*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_RANDOMFDBCAP 0x8 231*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_MCASTFDBCAP 0x10 232*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_LINEARFDBTOP 0x20 233*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_DEFAULTPORT 0x40 234*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_DEFAULTMCASTPPORT 0x80 235*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_DEFAULTMCASTNPPORT 0x100 236*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_LIFETIMEVALUE 0x200 237*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_PORTSTATECHANGE 0x400 238*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_RESERVED2 0x800 239*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_LIDSPERPORT 0x1000 240*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_PARTENFCAP 0x2000 241*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_INBOUNDENFCAP 0x4000 242*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_OUTBOUNDENFCAP 0x8000 243*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_FILTERRAWPKTINCAP 0x10000 244*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_FILTERRAWPKTOUTCAP 0x20000 245*0Sstevel@tonic-gate #define SA_SWITCHINFO_COMPMASK_ENHANCED_PORT_0 0x40000 246*0Sstevel@tonic-gate 247*0Sstevel@tonic-gate /* Linear Forwarding Table Record: Table 161 */ 248*0Sstevel@tonic-gate typedef struct sa_linearft_record_s { 249*0Sstevel@tonic-gate ib_lid_t LID; 250*0Sstevel@tonic-gate uint16_t BlockNum; 251*0Sstevel@tonic-gate uint32_t Reserved; 252*0Sstevel@tonic-gate sm_linear_forwarding_table_t LinearFT; 253*0Sstevel@tonic-gate } sa_linearft_record_t; 254*0Sstevel@tonic-gate 255*0Sstevel@tonic-gate #define SA_LFT_COMPMASK_LFTLID 0x1 256*0Sstevel@tonic-gate #define SA_LFT_COMPMASK_BLOCKNUM 0x2 257*0Sstevel@tonic-gate #define SA_LFT_COMPMASK_RESERVED 0x4 258*0Sstevel@tonic-gate #define SA_LFT_COMPMASK_LINEARFORWARDINGTABLE 0x8 259*0Sstevel@tonic-gate 260*0Sstevel@tonic-gate /* Random Forwarding Table Record: Table 162 */ 261*0Sstevel@tonic-gate typedef struct sa_randomft_record_s { 262*0Sstevel@tonic-gate ib_lid_t LID; 263*0Sstevel@tonic-gate uint16_t BlockNum; 264*0Sstevel@tonic-gate uint32_t Reserved; 265*0Sstevel@tonic-gate sm_random_forwarding_table_t RandomFT; 266*0Sstevel@tonic-gate } sa_randomft_record_t; 267*0Sstevel@tonic-gate 268*0Sstevel@tonic-gate #define SA_RFT_COMPMASK_RFTLID 0x1 269*0Sstevel@tonic-gate #define SA_RFT_COMPMASK_BLOCKNUM 0x2 270*0Sstevel@tonic-gate #define SA_RFT_COMPMASK_RESERVED 0x4 271*0Sstevel@tonic-gate #define SA_RFT_COMPMASK_RANDOMFORWARDINGTABLE 0x8 272*0Sstevel@tonic-gate 273*0Sstevel@tonic-gate /* Multicast Forwarding Table Record: Table 163 */ 274*0Sstevel@tonic-gate 275*0Sstevel@tonic-gate #if defined(_BIT_FIELDS_HTOL) 276*0Sstevel@tonic-gate typedef struct sa_multicastft_record_s { 277*0Sstevel@tonic-gate ib_lid_t LID; 278*0Sstevel@tonic-gate uint16_t Position :4; /* position field of attr */ 279*0Sstevel@tonic-gate uint16_t Reserved :3; 280*0Sstevel@tonic-gate uint16_t BlockNum :9; 281*0Sstevel@tonic-gate uint32_t Reserved2; 282*0Sstevel@tonic-gate sm_multicast_forwarding_table_t MulticastFT; 283*0Sstevel@tonic-gate } sa_multicastft_record_t; 284*0Sstevel@tonic-gate 285*0Sstevel@tonic-gate #elif defined(_BIT_FIELDS_LTOH) 286*0Sstevel@tonic-gate 287*0Sstevel@tonic-gate typedef struct sa_multicastft_record_s { 288*0Sstevel@tonic-gate ib_lid_t LID; 289*0Sstevel@tonic-gate uint16_t BlockNum :9; 290*0Sstevel@tonic-gate uint16_t Reserved :3; 291*0Sstevel@tonic-gate uint16_t Position :4; /* position field of attr */ 292*0Sstevel@tonic-gate uint32_t Reserved2; 293*0Sstevel@tonic-gate sm_multicast_forwarding_table_t MulticastFT; 294*0Sstevel@tonic-gate } sa_multicastft_record_t; 295*0Sstevel@tonic-gate 296*0Sstevel@tonic-gate #else 297*0Sstevel@tonic-gate #error One of _BIT_FIELDS_HTOL or _BIT_FIELDS_HTOL must be defined 298*0Sstevel@tonic-gate #endif /* _BIT_FIELDS_HTOL */ 299*0Sstevel@tonic-gate 300*0Sstevel@tonic-gate #define SA_MFT_COMPMASK_MFTLID 0x1 301*0Sstevel@tonic-gate #define SA_MFT_COMPMASK_POSITION 0x2 302*0Sstevel@tonic-gate #define SA_MFT_COMPMASK_RESERVED 0x4 303*0Sstevel@tonic-gate #define SA_MFT_COMPMASK_BLOCKNUM 0x8 304*0Sstevel@tonic-gate #define SA_MFT_COMPMASK_RESERVED2 0x10 305*0Sstevel@tonic-gate #define SA_MFT_COMPMASK_MULTICASTFORWARDINGTABLE 0x20 306*0Sstevel@tonic-gate 307*0Sstevel@tonic-gate /* VLArbitration Table Record: Table 164 */ 308*0Sstevel@tonic-gate typedef struct sa_VLarb_table_record_s { 309*0Sstevel@tonic-gate ib_lid_t LID; 310*0Sstevel@tonic-gate uint8_t OutputPortNum; 311*0Sstevel@tonic-gate uint8_t BlockNum; 312*0Sstevel@tonic-gate uint32_t Reserved; 313*0Sstevel@tonic-gate sm_VLarb_table_t VLArbTable; 314*0Sstevel@tonic-gate } sa_VLarb_table_record_t; 315*0Sstevel@tonic-gate 316*0Sstevel@tonic-gate #define SA_VLARB_COMPMASK_NODELID 0x1 317*0Sstevel@tonic-gate #define SA_VLARB_COMPMASK_OUTPUTPORTNUM 0x2 318*0Sstevel@tonic-gate #define SA_VLARB_COMPMASK_BLOCKNUM 0x4 319*0Sstevel@tonic-gate #define SA_VLARB_COMPMASK_RESERVED 0x8 320*0Sstevel@tonic-gate #define SA_VLARB_COMPMASK_VLARBTABLE 0x10 321*0Sstevel@tonic-gate 322*0Sstevel@tonic-gate /* SMInfo Record: Table 165 */ 323*0Sstevel@tonic-gate typedef struct _sminfo_record_s { 324*0Sstevel@tonic-gate ib_lid_t LID; 325*0Sstevel@tonic-gate uint16_t Reserved; 326*0Sstevel@tonic-gate sm_sminfo_t SMInfo; 327*0Sstevel@tonic-gate } sa_sminfo_record_t; 328*0Sstevel@tonic-gate 329*0Sstevel@tonic-gate #define SA_SMINFO_COMPMASK_NODELID 0x1 330*0Sstevel@tonic-gate #define SA_SMINFO_COMPMASK_RESERVED 0x2 331*0Sstevel@tonic-gate #define SA_SMINFO_COMPMASK_GUID 0x4 332*0Sstevel@tonic-gate #define SA_SMINFO_COMPMASK_SMKEY 0x8 333*0Sstevel@tonic-gate #define SA_SMINFO_COMPMASK_ACTCOUNT 0x10 334*0Sstevel@tonic-gate #define SA_SMINFO_COMPMASK_PRIORITY 0x20 335*0Sstevel@tonic-gate #define SA_SMINFO_COMPMASK_SMSTATE 0x40 336*0Sstevel@tonic-gate 337*0Sstevel@tonic-gate /* P_Key Table Record: Table 166 */ 338*0Sstevel@tonic-gate typedef struct sa_pkey_table_record_s { 339*0Sstevel@tonic-gate ib_lid_t LID; 340*0Sstevel@tonic-gate uint16_t BlockNum; 341*0Sstevel@tonic-gate uint8_t PortNum; 342*0Sstevel@tonic-gate uint8_t Reserved[3]; 343*0Sstevel@tonic-gate sm_pkey_table_t P_KeyTable; 344*0Sstevel@tonic-gate } sa_pkey_table_record_t; 345*0Sstevel@tonic-gate 346*0Sstevel@tonic-gate #define SA_PKEY_COMPMASK_PORTLID 0x1 347*0Sstevel@tonic-gate #define SA_PKEY_COMPMASK_BLOCKNUM 0x2 348*0Sstevel@tonic-gate #define SA_PKEY_COMPMASK_PORTNUM 0x4 349*0Sstevel@tonic-gate #define SA_PKEY_COMPMASK_RESERVED 0x8 350*0Sstevel@tonic-gate #define SA_PKEY_COMPMASK_PKEYTABLE 0x10 351*0Sstevel@tonic-gate 352*0Sstevel@tonic-gate /* InformInfo Record: Table 167 */ 353*0Sstevel@tonic-gate typedef struct sa_informinfo_record_s { 354*0Sstevel@tonic-gate ib_gid_t SubscriberGID; 355*0Sstevel@tonic-gate uint16_t Enum; 356*0Sstevel@tonic-gate uint8_t Reserved[6]; 357*0Sstevel@tonic-gate ib_mad_informinfo_t InformInfo; 358*0Sstevel@tonic-gate } sa_informinfo_record_t; 359*0Sstevel@tonic-gate 360*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_SUBGID 0x1 361*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_ENUM 0x2 362*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_RESERVED 0x4 363*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_GID 0x8 364*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_LIDRANGEBEGIN 0x10 365*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_LIDRANGEEND 0x20 366*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_RESERVED2 0x40 367*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_ISGENERIC 0x80 368*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_SUBSCRIBE 0x100 369*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_TYPE 0x200 370*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_TRAPNUM_DEVID 0x400 371*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_QPN 0x800 372*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_RESERVED3 0x1000 373*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_RESPTIMEVALUE 0x2000 374*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_RESERVED4 0x4000 375*0Sstevel@tonic-gate #define SA_INFORMINFO_COMPMASK_PRODTYPE_VENDID 0x8000 376*0Sstevel@tonic-gate 377*0Sstevel@tonic-gate /* Link Record: Table 168 */ 378*0Sstevel@tonic-gate typedef struct sa_link_record_s { 379*0Sstevel@tonic-gate ib_lid_t FromLID; 380*0Sstevel@tonic-gate uint8_t FromPort; 381*0Sstevel@tonic-gate uint8_t ToPort; 382*0Sstevel@tonic-gate ib_lid_t ToLID; 383*0Sstevel@tonic-gate } sa_link_record_t; 384*0Sstevel@tonic-gate 385*0Sstevel@tonic-gate #define SA_LINKRECORD_COMPMASK_FROMLID 0x1 386*0Sstevel@tonic-gate #define SA_LINKRECORD_COMPMASK_FROMPORT 0x2 387*0Sstevel@tonic-gate #define SA_LINKRECORD_COMPMASK_TOPORT 0x4 388*0Sstevel@tonic-gate #define SA_LINKRECORD_COMPMASK_TOLID 0x8 389*0Sstevel@tonic-gate 390*0Sstevel@tonic-gate /* Service Record: Table 169 */ 391*0Sstevel@tonic-gate typedef struct sa_service_record_s { 392*0Sstevel@tonic-gate uint64_t ServiceID; /* id of service on port */ 393*0Sstevel@tonic-gate ib_gid_t ServiceGID; /* port GID for this service */ 394*0Sstevel@tonic-gate uint16_t ServiceP_Key; /* p_key used to contact serv */ 395*0Sstevel@tonic-gate uint16_t Reserved; 396*0Sstevel@tonic-gate uint32_t ServiceLease; /* lease period remaining */ 397*0Sstevel@tonic-gate uint64_t ServiceKey_hi; /* key value assoc. with serv */ 398*0Sstevel@tonic-gate uint64_t ServiceKey_lo; 399*0Sstevel@tonic-gate uint8_t ServiceName[IB_SVC_NAME_LEN]; 400*0Sstevel@tonic-gate /* UTF-8 encoded service name */ 401*0Sstevel@tonic-gate uint8_t ServiceData[IB_SVC_DATA_LEN]; 402*0Sstevel@tonic-gate /* data for this service rec. */ 403*0Sstevel@tonic-gate } sa_service_record_t; 404*0Sstevel@tonic-gate 405*0Sstevel@tonic-gate #define SA_SR_INDEFINITE_SERVICE_LEASE 0xFFFFFFFF 406*0Sstevel@tonic-gate 407*0Sstevel@tonic-gate /* 408*0Sstevel@tonic-gate * #defines mapping individual bits of the service record component mask 409*0Sstevel@tonic-gate * to components in the service record. ServiceData uses one component mask per 410*0Sstevel@tonic-gate * bit. See the IB spec for details. 411*0Sstevel@tonic-gate */ 412*0Sstevel@tonic-gate #define SA_SR_COMPMASK_ID 0x1 413*0Sstevel@tonic-gate #define SA_SR_COMPMASK_GID 0x2 414*0Sstevel@tonic-gate #define SA_SR_COMPMASK_PKEY 0x4 415*0Sstevel@tonic-gate #define SA_SR_COMPMASK_RESERVED 0x8 416*0Sstevel@tonic-gate #define SA_SR_COMPMASK_LEASE 0x10 417*0Sstevel@tonic-gate #define SA_SR_COMPMASK_KEY 0x20 418*0Sstevel@tonic-gate #define SA_SR_COMPMASK_NAME 0x40 419*0Sstevel@tonic-gate 420*0Sstevel@tonic-gate /* masks all ServiceData fields */ 421*0Sstevel@tonic-gate #define SA_SR_COMPMASK_ALL_DATA 0x1FFFFFFF80 422*0Sstevel@tonic-gate 423*0Sstevel@tonic-gate /* Service Association Record: Table 170 */ 424*0Sstevel@tonic-gate typedef struct sa_service_assn_record_s { 425*0Sstevel@tonic-gate uint64_t ServiceKey_hi; 426*0Sstevel@tonic-gate uint64_t ServiceKey_lo; 427*0Sstevel@tonic-gate uint8_t ServiceName[IB_SVC_NAME_LEN]; 428*0Sstevel@tonic-gate } sa_service_assn_record_t; 429*0Sstevel@tonic-gate 430*0Sstevel@tonic-gate #define SA_SERVASSOC_COMPMASK_SERVICEKEY 0x1 431*0Sstevel@tonic-gate #define SA_SERVASSOC_COMPMASK_SERVICENAME 0x2 432*0Sstevel@tonic-gate 433*0Sstevel@tonic-gate /* Path Record: Table 171 */ 434*0Sstevel@tonic-gate 435*0Sstevel@tonic-gate #if defined(_BIT_FIELDS_HTOL) 436*0Sstevel@tonic-gate typedef struct sa_path_record_s { 437*0Sstevel@tonic-gate uint32_t Reserved; 438*0Sstevel@tonic-gate uint32_t Reserved2; 439*0Sstevel@tonic-gate ib_gid_t DGID; /* dest gid of path */ 440*0Sstevel@tonic-gate ib_gid_t SGID; /* source gid of path */ 441*0Sstevel@tonic-gate uint16_t DLID; /* dest lid */ 442*0Sstevel@tonic-gate uint16_t SLID; /* source lid */ 443*0Sstevel@tonic-gate uint32_t RawTraffic :1; /* raw pkt path */ 444*0Sstevel@tonic-gate uint32_t Reserved3 :3; 445*0Sstevel@tonic-gate uint32_t FlowLabel :20; /* flow label */ 446*0Sstevel@tonic-gate uint32_t HopLimit :8; /* hop limit */ 447*0Sstevel@tonic-gate uint8_t TClass; /* TClass */ 448*0Sstevel@tonic-gate uint8_t Reversible :1; /* reversible path required */ 449*0Sstevel@tonic-gate uint8_t NumbPath :7; /* max num. of paths to ret. */ 450*0Sstevel@tonic-gate uint16_t P_Key; /* partition key for path */ 451*0Sstevel@tonic-gate uint16_t Reserved4 :12; 452*0Sstevel@tonic-gate uint16_t SL :4; /* service level for path */ 453*0Sstevel@tonic-gate uint8_t MtuSelector :2; /* MTU selector */ 454*0Sstevel@tonic-gate uint8_t Mtu :6; /* required MTU */ 455*0Sstevel@tonic-gate uint8_t RateSelector :2; /* rate selector */ 456*0Sstevel@tonic-gate uint8_t Rate :6; /* value of rate */ 457*0Sstevel@tonic-gate uint8_t PacketLifeTimeSelector:2; /* pkt life time selector */ 458*0Sstevel@tonic-gate uint8_t PacketLifeTime :6; /* total packet life time */ 459*0Sstevel@tonic-gate uint8_t Preference; /* in response, order of pref */ 460*0Sstevel@tonic-gate /* among all paths */ 461*0Sstevel@tonic-gate uint8_t Reserved5[6]; 462*0Sstevel@tonic-gate } sa_path_record_t; 463*0Sstevel@tonic-gate 464*0Sstevel@tonic-gate #elif defined(_BIT_FIELDS_LTOH) 465*0Sstevel@tonic-gate 466*0Sstevel@tonic-gate typedef struct sa_path_record_s { 467*0Sstevel@tonic-gate uint32_t Reserved; 468*0Sstevel@tonic-gate uint32_t Reserved2; 469*0Sstevel@tonic-gate ib_gid_t DGID; /* dest gid of path */ 470*0Sstevel@tonic-gate ib_gid_t SGID; /* source gid of path */ 471*0Sstevel@tonic-gate uint16_t DLID; /* dest lid */ 472*0Sstevel@tonic-gate uint16_t SLID; /* source lid */ 473*0Sstevel@tonic-gate uint32_t HopLimit :8; /* hop limit */ 474*0Sstevel@tonic-gate uint32_t FlowLabel :20; /* flow label */ 475*0Sstevel@tonic-gate uint32_t Reserved3 :3; 476*0Sstevel@tonic-gate uint32_t RawTraffic :1; /* raw pkt path */ 477*0Sstevel@tonic-gate uint8_t TClass; /* TClass */ 478*0Sstevel@tonic-gate uint8_t NumbPath :7; /* max num. of paths to ret. */ 479*0Sstevel@tonic-gate uint8_t Reversible :1; /* reversible path required */ 480*0Sstevel@tonic-gate uint16_t P_Key; /* partition key for path */ 481*0Sstevel@tonic-gate uint16_t SL :4; /* service level for path */ 482*0Sstevel@tonic-gate uint16_t Reserved4 :12; 483*0Sstevel@tonic-gate uint8_t Mtu :6; /* required MTU */ 484*0Sstevel@tonic-gate uint8_t MtuSelector :2; /* MTU selector */ 485*0Sstevel@tonic-gate uint8_t Rate :6; /* value of rate */ 486*0Sstevel@tonic-gate uint8_t RateSelector :2; /* rate selector */ 487*0Sstevel@tonic-gate uint8_t PacketLifeTime :6; /* total packet life time */ 488*0Sstevel@tonic-gate uint8_t PacketLifeTimeSelector:2; /* pkt life time selector */ 489*0Sstevel@tonic-gate uint8_t Preference; /* in response, order of pref */ 490*0Sstevel@tonic-gate /* among all paths */ 491*0Sstevel@tonic-gate uint8_t Reserved5[6]; 492*0Sstevel@tonic-gate } sa_path_record_t; 493*0Sstevel@tonic-gate 494*0Sstevel@tonic-gate #else 495*0Sstevel@tonic-gate #error One of _BIT_FIELDS_HTOL or _BIT_FIELDS_HTOL must be defined 496*0Sstevel@tonic-gate #endif /* _BIT_FIELDS_HTOL */ 497*0Sstevel@tonic-gate 498*0Sstevel@tonic-gate /* 499*0Sstevel@tonic-gate * #defines mapping individual bits of the path record component mask 500*0Sstevel@tonic-gate * to components in the path record 501*0Sstevel@tonic-gate */ 502*0Sstevel@tonic-gate #define SA_PR_COMPMASK_RESERVED 0x1 503*0Sstevel@tonic-gate #define SA_PR_COMPMASK_RESERVED2 0x2 504*0Sstevel@tonic-gate #define SA_PR_COMPMASK_DGID 0x4 505*0Sstevel@tonic-gate #define SA_PR_COMPMASK_SGID 0x8 506*0Sstevel@tonic-gate #define SA_PR_COMPMASK_DLID 0x10 507*0Sstevel@tonic-gate #define SA_PR_COMPMASK_SLID 0x20 508*0Sstevel@tonic-gate #define SA_PR_COMPMASK_RAWTRAFFIC 0x40 509*0Sstevel@tonic-gate #define SA_PR_COMPMASK_RESERVED3 0x80 510*0Sstevel@tonic-gate #define SA_PR_COMPMASK_FLOWLABEL 0x100 511*0Sstevel@tonic-gate #define SA_PR_COMPMASK_HOPLIMIT 0x200 512*0Sstevel@tonic-gate #define SA_PR_COMPMASK_TCLASS 0x400 513*0Sstevel@tonic-gate #define SA_PR_COMPMASK_REVERSIBLE 0x800 514*0Sstevel@tonic-gate #define SA_PR_COMPMASK_NUMBPATH 0x1000 515*0Sstevel@tonic-gate #define SA_PR_COMPMASK_PKEY 0x2000 516*0Sstevel@tonic-gate #define SA_PR_COMPMASK_RESERVED4 0x4000 517*0Sstevel@tonic-gate #define SA_PR_COMPMASK_SL 0x8000 518*0Sstevel@tonic-gate #define SA_PR_COMPMASK_MTUSELECTOR 0x10000 519*0Sstevel@tonic-gate #define SA_PR_COMPMASK_MTU 0x20000 520*0Sstevel@tonic-gate #define SA_PR_COMPMASK_RATESELECTOR 0x40000 521*0Sstevel@tonic-gate #define SA_PR_COMPMASK_RATE 0x80000 522*0Sstevel@tonic-gate #define SA_PR_COMPMASK_PKTLTSELECTOR 0x100000 523*0Sstevel@tonic-gate #define SA_PR_COMPMASK_PKTLT 0x200000 524*0Sstevel@tonic-gate #define SA_PR_COMPMASK_PREFERENCE 0x400000 525*0Sstevel@tonic-gate 526*0Sstevel@tonic-gate #define SA_PR_RAWTRAFFIC_PKEY 0x1 527*0Sstevel@tonic-gate #define SA_PR_RAWTRAFFIC_NO_PKEY 0x0 528*0Sstevel@tonic-gate #define SA_PR_MTU_SEL_GREATER 0x0 529*0Sstevel@tonic-gate #define SA_PR_MTU_SEL_LESS 0x1 530*0Sstevel@tonic-gate #define SA_PR_MTU_SEL_EXACTLY 0x2 531*0Sstevel@tonic-gate #define SA_PR_MTU_SEL_LARGEST_AVAIL 0x3 532*0Sstevel@tonic-gate #define SA_PR_MTU_256 0x1 533*0Sstevel@tonic-gate #define SA_PR_MTU_512 0x2 534*0Sstevel@tonic-gate #define SA_PR_MTU_1024 0x3 535*0Sstevel@tonic-gate #define SA_PR_MTU_2048 0x4 536*0Sstevel@tonic-gate #define SA_PR_MTU_4096 0x5 537*0Sstevel@tonic-gate #define SA_PR_RATE_SEL_GREATER 0x0 538*0Sstevel@tonic-gate #define SA_PR_RATE_SEL_LESS 0x1 539*0Sstevel@tonic-gate #define SA_PR_RATE_SEL_EXACTLY 0x2 540*0Sstevel@tonic-gate #define SA_PR_RATE_SEL_LARGEST_AVAIL 0x3 541*0Sstevel@tonic-gate #define SA_PR_RATE_25 0x2 542*0Sstevel@tonic-gate #define SA_PR_RATE_10 0x3 543*0Sstevel@tonic-gate #define SA_PR_RATE_30 0x4 544*0Sstevel@tonic-gate #define SA_PR_LT_SEL_GREATER 0x0 545*0Sstevel@tonic-gate #define SA_PR_LT_SEL_LESS 0x1 546*0Sstevel@tonic-gate #define SA_PR_LT_SEL_EXACTLY 0x2 547*0Sstevel@tonic-gate #define SA_PR_LT_SEL_SMALLEST_AVAIL 0x3 548*0Sstevel@tonic-gate 549*0Sstevel@tonic-gate /* MCMember Record: Table 176 */ 550*0Sstevel@tonic-gate 551*0Sstevel@tonic-gate #if defined(_BIT_FIELDS_HTOL) 552*0Sstevel@tonic-gate typedef struct sa_mcmember_record_s { 553*0Sstevel@tonic-gate ib_gid_t MGID; 554*0Sstevel@tonic-gate ib_gid_t PortGID; 555*0Sstevel@tonic-gate uint32_t Q_Key; 556*0Sstevel@tonic-gate ib_lid_t MLID; 557*0Sstevel@tonic-gate uint8_t MTUSelector :2; 558*0Sstevel@tonic-gate uint8_t MTU :6; 559*0Sstevel@tonic-gate uint8_t TClass; 560*0Sstevel@tonic-gate uint16_t P_Key; 561*0Sstevel@tonic-gate uint8_t RateSelector :2; 562*0Sstevel@tonic-gate uint8_t Rate :6; 563*0Sstevel@tonic-gate uint8_t PacketLifeTimeSelector :2; 564*0Sstevel@tonic-gate uint8_t PacketLifeTime :6; 565*0Sstevel@tonic-gate uint32_t SL :4; 566*0Sstevel@tonic-gate uint32_t FlowLabel :20; 567*0Sstevel@tonic-gate uint32_t HopLimit :8; 568*0Sstevel@tonic-gate uint32_t Scope :4; 569*0Sstevel@tonic-gate uint32_t JoinState :4; 570*0Sstevel@tonic-gate uint32_t ProxyJoin :1; 571*0Sstevel@tonic-gate uint32_t Reserved :23; 572*0Sstevel@tonic-gate } sa_mcmember_record_t; 573*0Sstevel@tonic-gate 574*0Sstevel@tonic-gate #elif defined(_BIT_FIELDS_LTOH) 575*0Sstevel@tonic-gate 576*0Sstevel@tonic-gate typedef struct sa_mcmember_record_s { 577*0Sstevel@tonic-gate ib_gid_t MGID; 578*0Sstevel@tonic-gate ib_gid_t PortGID; 579*0Sstevel@tonic-gate uint32_t Q_Key; 580*0Sstevel@tonic-gate ib_lid_t MLID; 581*0Sstevel@tonic-gate uint8_t MTU :6; 582*0Sstevel@tonic-gate uint8_t MTUSelector :2; 583*0Sstevel@tonic-gate uint8_t TClass; 584*0Sstevel@tonic-gate uint16_t P_Key; 585*0Sstevel@tonic-gate uint8_t Rate :6; 586*0Sstevel@tonic-gate uint8_t RateSelector :2; 587*0Sstevel@tonic-gate uint8_t PacketLifeTime :6; 588*0Sstevel@tonic-gate uint8_t PacketLifeTimeSelector :2; 589*0Sstevel@tonic-gate uint32_t HopLimit :8; 590*0Sstevel@tonic-gate uint32_t FlowLabel :20; 591*0Sstevel@tonic-gate uint32_t SL :4; 592*0Sstevel@tonic-gate uint32_t Reserved :23; 593*0Sstevel@tonic-gate uint32_t ProxyJoin :1; 594*0Sstevel@tonic-gate uint32_t JoinState :4; 595*0Sstevel@tonic-gate uint32_t Scope :4; 596*0Sstevel@tonic-gate } sa_mcmember_record_t; 597*0Sstevel@tonic-gate 598*0Sstevel@tonic-gate #else 599*0Sstevel@tonic-gate #error One of _BIT_FIELDS_HTOL or _BIT_FIELDS_HTOL must be defined 600*0Sstevel@tonic-gate #endif /* _BIT_FIELDS_HTOL */ 601*0Sstevel@tonic-gate 602*0Sstevel@tonic-gate #define SA_MC_COMPMASK_MGID 0x1 603*0Sstevel@tonic-gate #define SA_MC_COMPMASK_PORTGID 0x2 604*0Sstevel@tonic-gate #define SA_MC_COMPMASK_QKEY 0x4 605*0Sstevel@tonic-gate #define SA_MC_COMPMASK_MLID 0x8 606*0Sstevel@tonic-gate #define SA_MC_COMPMASK_MTUSELECTOR 0x10 607*0Sstevel@tonic-gate #define SA_MC_COMPMASK_MTU 0x20 608*0Sstevel@tonic-gate #define SA_MC_COMPMASK_TCLASS 0x40 609*0Sstevel@tonic-gate #define SA_MC_COMPMASK_PKEY 0x80 610*0Sstevel@tonic-gate #define SA_MC_COMPMASK_RATESELECTOR 0x100 611*0Sstevel@tonic-gate #define SA_MC_COMPMASK_RATE 0x200 612*0Sstevel@tonic-gate #define SA_MC_COMPMASK_PKTLTSELECTOR 0x400 613*0Sstevel@tonic-gate #define SA_MC_COMPMASK_PKTLT 0x800 614*0Sstevel@tonic-gate #define SA_MC_COMPMASK_SL 0x1000 615*0Sstevel@tonic-gate #define SA_MC_COMPMASK_FLOWLABEL 0x2000 616*0Sstevel@tonic-gate #define SA_MC_COMPMASK_HOPLIMIT 0x4000 617*0Sstevel@tonic-gate #define SA_MC_COMPMASK_SCOPE 0x8000 618*0Sstevel@tonic-gate #define SA_MC_COMPMASK_JOINSTATE 0x10000 619*0Sstevel@tonic-gate #define SA_MC_COMPMASK_PROXYJOIN 0x20000 620*0Sstevel@tonic-gate #define SA_MC_COMPMASK_RESERVED 0x40000 621*0Sstevel@tonic-gate 622*0Sstevel@tonic-gate #define SA_MC_MTU_SEL_GREATER 0x0 623*0Sstevel@tonic-gate #define SA_MC_MTU_SEL_LESS 0x1 624*0Sstevel@tonic-gate #define SA_MC_MTU_SEL_EXACTLY 0x2 625*0Sstevel@tonic-gate #define SA_MC_MTU_SEL_LARGEST_AVAIL 0x3 626*0Sstevel@tonic-gate #define SA_MC_MTU_256 0x1 627*0Sstevel@tonic-gate #define SA_MC_MTU_512 0x2 628*0Sstevel@tonic-gate #define SA_MC_MTU_1024 0x3 629*0Sstevel@tonic-gate #define SA_MC_MTU_2048 0x4 630*0Sstevel@tonic-gate #define SA_MC_MTU_4096 0x5 631*0Sstevel@tonic-gate #define SA_MC_RATE_SEL_GREATER 0x0 632*0Sstevel@tonic-gate #define SA_MC_RATE_SEL_LESS 0x1 633*0Sstevel@tonic-gate #define SA_MC_RATE_SEL_EXACTLY 0x2 634*0Sstevel@tonic-gate #define SA_MC_RATE_SEL_LARGEST_AVAIL 0x3 635*0Sstevel@tonic-gate #define SA_MC_RATE_25 0x2 636*0Sstevel@tonic-gate #define SA_MC_RATE_10 0x3 637*0Sstevel@tonic-gate #define SA_MC_RATE_30 0x4 638*0Sstevel@tonic-gate #define SA_MC_LT_SEL_GREATER 0x0 639*0Sstevel@tonic-gate #define SA_MC_LT_SEL_LESS 0x1 640*0Sstevel@tonic-gate #define SA_MC_LT_SEL_EXACTLY 0x2 641*0Sstevel@tonic-gate #define SA_MC_LT_SMALLEST_AVAIL 0x3 642*0Sstevel@tonic-gate 643*0Sstevel@tonic-gate /* GUIDInfo Record: Table 177 */ 644*0Sstevel@tonic-gate typedef struct sa_guidinfo_record_s { 645*0Sstevel@tonic-gate ib_lid_t LID; 646*0Sstevel@tonic-gate uint8_t BlockNum; 647*0Sstevel@tonic-gate uint8_t Reserved; 648*0Sstevel@tonic-gate uint32_t Reserved2; 649*0Sstevel@tonic-gate sm_guidinfo_t GUIDInfo; 650*0Sstevel@tonic-gate } sa_guidinfo_record_t; 651*0Sstevel@tonic-gate 652*0Sstevel@tonic-gate #define SA_GUIDINFO_COMPMASK_PORTLID 0x1 653*0Sstevel@tonic-gate #define SA_GUIDINFO_COMPMASK_BLOCKNUM 0x2 654*0Sstevel@tonic-gate #define SA_GUIDINFO_COMPMASK_RESERVED 0x4 655*0Sstevel@tonic-gate #define SA_GUIDINFO_COMPMASK_RESERVEVD2 0x8 656*0Sstevel@tonic-gate #define SA_GUIDINFO_COMPMASK_GUIDINFO 0x10 657*0Sstevel@tonic-gate 658*0Sstevel@tonic-gate /* Trace Record: Table 178 */ 659*0Sstevel@tonic-gate typedef struct sa_trace_record_s { 660*0Sstevel@tonic-gate ib_sn_prefix_t GIDPrefix; 661*0Sstevel@tonic-gate uint16_t IOCGeneration; 662*0Sstevel@tonic-gate uint8_t Reserved; 663*0Sstevel@tonic-gate uint8_t NodeType; 664*0Sstevel@tonic-gate uint64_t NodeID; 665*0Sstevel@tonic-gate uint64_t ChassisID; 666*0Sstevel@tonic-gate uint64_t EntryPortID; 667*0Sstevel@tonic-gate uint64_t ExitPortID; 668*0Sstevel@tonic-gate uint8_t EntryPort; 669*0Sstevel@tonic-gate uint8_t ExitPort; 670*0Sstevel@tonic-gate } sa_trace_record_t; 671*0Sstevel@tonic-gate 672*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_GIDPREFIX 0x1 673*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_IOCGENERATION 0x2 674*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_RESERVED 0x4 675*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_NODETYPE 0x8 676*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_NODEID 0x10 677*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_CHASSISID 0x20 678*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_ENTRYPORTID 0x40 679*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_EXITPORTID 0x80 680*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_ENTRYPORT 0x100 681*0Sstevel@tonic-gate #define SA_TRACE_COMPMASK_EXITPORT 0x200 682*0Sstevel@tonic-gate 683*0Sstevel@tonic-gate /* 684*0Sstevel@tonic-gate * MultiPath Record: Table 179 685*0Sstevel@tonic-gate * This structure only includes the constant portion of the multipath record. 686*0Sstevel@tonic-gate * The multipath record request will contain a variable number of SGIDs and 687*0Sstevel@tonic-gate * DGIDs at the end of this structure, as specified in the SGIDCount and 688*0Sstevel@tonic-gate * DGIDCount fields. 689*0Sstevel@tonic-gate */ 690*0Sstevel@tonic-gate 691*0Sstevel@tonic-gate #if defined(_BIT_FIELDS_HTOL) 692*0Sstevel@tonic-gate typedef struct sa_mutipath_record_s { 693*0Sstevel@tonic-gate uint32_t RawTraffic :1; /* raw pkt path */ 694*0Sstevel@tonic-gate uint32_t Reserved :3; 695*0Sstevel@tonic-gate uint32_t FlowLabel :20; /* flow label */ 696*0Sstevel@tonic-gate uint32_t HopLimit :8; /* hop limit */ 697*0Sstevel@tonic-gate uint8_t TClass; /* TClass */ 698*0Sstevel@tonic-gate uint8_t Reversible :1; /* reversible path required */ 699*0Sstevel@tonic-gate uint8_t NumbPath :7; /* max num. of paths to ret. */ 700*0Sstevel@tonic-gate uint16_t P_Key; /* partition key for path */ 701*0Sstevel@tonic-gate uint16_t Reserved2 :12; 702*0Sstevel@tonic-gate uint16_t SL :4; /* service level for path */ 703*0Sstevel@tonic-gate uint8_t MtuSelector :2; /* MTU selector */ 704*0Sstevel@tonic-gate uint8_t Mtu :6; /* required MTU */ 705*0Sstevel@tonic-gate uint8_t RateSelector :2; /* rate selector */ 706*0Sstevel@tonic-gate uint8_t Rate :6; /* value of rate */ 707*0Sstevel@tonic-gate uint8_t PacketLifeTimeSelector:2; /* pkt life time selector */ 708*0Sstevel@tonic-gate uint8_t PacketLifeTime :6; /* total packet life time */ 709*0Sstevel@tonic-gate uint8_t Reserved3; 710*0Sstevel@tonic-gate uint8_t IndependenceSelector:2; /* fault-tolerant paths */ 711*0Sstevel@tonic-gate uint8_t Reserved4 :6; 712*0Sstevel@tonic-gate uint8_t SGIDCount; /* number of SGIDS */ 713*0Sstevel@tonic-gate uint8_t DGIDCount; /* number of DGIDS */ 714*0Sstevel@tonic-gate uint8_t Reserved5[7]; 715*0Sstevel@tonic-gate } sa_multipath_record_t; 716*0Sstevel@tonic-gate 717*0Sstevel@tonic-gate #elif defined(_BIT_FIELDS_LTOH) 718*0Sstevel@tonic-gate 719*0Sstevel@tonic-gate typedef struct sa_mutipath_record_s { 720*0Sstevel@tonic-gate uint32_t HopLimit :8; /* hop limit */ 721*0Sstevel@tonic-gate uint32_t FlowLabel :20; /* flow label */ 722*0Sstevel@tonic-gate uint32_t Reserved :3; 723*0Sstevel@tonic-gate uint32_t RawTraffic :1; /* raw pkt path */ 724*0Sstevel@tonic-gate uint8_t TClass; /* TClass */ 725*0Sstevel@tonic-gate uint8_t NumbPath :7; /* max num. of paths to ret. */ 726*0Sstevel@tonic-gate uint8_t Reversible :1; /* reversible path required */ 727*0Sstevel@tonic-gate uint16_t P_Key; /* partition key for path */ 728*0Sstevel@tonic-gate uint16_t SL :4; /* service level for path */ 729*0Sstevel@tonic-gate uint16_t Reserved2 :12; 730*0Sstevel@tonic-gate uint8_t Mtu :6; /* required MTU */ 731*0Sstevel@tonic-gate uint8_t MtuSelector :2; /* MTU selector */ 732*0Sstevel@tonic-gate uint8_t Rate :6; /* value of rate */ 733*0Sstevel@tonic-gate uint8_t RateSelector :2; /* rate selector */ 734*0Sstevel@tonic-gate uint8_t PacketLifeTime :6; /* total packet life time */ 735*0Sstevel@tonic-gate uint8_t PacketLifeTimeSelector:2; /* pkt life time selector */ 736*0Sstevel@tonic-gate uint8_t Reserved3; 737*0Sstevel@tonic-gate uint8_t Reserved4 :6; 738*0Sstevel@tonic-gate uint8_t IndependenceSelector:2; /* fault-tolerant paths */ 739*0Sstevel@tonic-gate uint8_t SGIDCount; /* number of SGIDS */ 740*0Sstevel@tonic-gate uint8_t DGIDCount; /* number of DGIDS */ 741*0Sstevel@tonic-gate uint8_t Reserved5[7]; 742*0Sstevel@tonic-gate } sa_multipath_record_t; 743*0Sstevel@tonic-gate 744*0Sstevel@tonic-gate #else 745*0Sstevel@tonic-gate #error One of _BIT_FIELDS_HTOL or _BIT_FIELDS_HTOL must be defined 746*0Sstevel@tonic-gate #endif /* _BIT_FIELDS_HTOL */ 747*0Sstevel@tonic-gate 748*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RAWTRAFFIC 0x1 749*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RESERVED 0x2 750*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_FLOWLABEL 0x4 751*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_HOPLIMIT 0x8 752*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_TCLASS 0x10 753*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_REVERSIBLE 0x20 754*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_NUMBPATH 0x40 755*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_PKEY 0x80 756*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RESERVED2 0x100 757*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_SL 0x200 758*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_MTUSELECTOR 0x400 759*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_MTU 0x800 760*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RATESELECTOR 0x1000 761*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RATE 0x2000 762*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_PKTLTSELECTOR 0x4000 763*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_PKTLT 0x8000 764*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RESERVED3 0x10000 765*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_INDEPSEL 0x20000 766*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RESERVED4 0x40000 767*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_SGIDCOUNT 0x80000 768*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_DGIDCOUNT 0x100000 769*0Sstevel@tonic-gate #define SA_MPR_COMPMASK_RESERVED5 0x200000 770*0Sstevel@tonic-gate 771*0Sstevel@tonic-gate #ifdef __cplusplus 772*0Sstevel@tonic-gate } 773*0Sstevel@tonic-gate #endif 774*0Sstevel@tonic-gate 775*0Sstevel@tonic-gate #endif /* _SYS_IB_MGT_SA_RECS_H */ 776