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