|
Packit |
857059 |
/* BEGIN_ICS_COPYRIGHT7 ****************************************
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Copyright (c) 2015-2017, Intel Corporation
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Redistribution and use in source and binary forms, with or without
|
|
Packit |
857059 |
modification, are permitted provided that the following conditions are met:
|
|
Packit |
857059 |
|
|
Packit |
857059 |
* Redistributions of source code must retain the above copyright notice,
|
|
Packit |
857059 |
this list of conditions and the following disclaimer.
|
|
Packit |
857059 |
* Redistributions in binary form must reproduce the above copyright
|
|
Packit |
857059 |
notice, this list of conditions and the following disclaimer in the
|
|
Packit |
857059 |
documentation and/or other materials provided with the distribution.
|
|
Packit |
857059 |
* Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
857059 |
may be used to endorse or promote products derived from this software
|
|
Packit |
857059 |
without specific prior written permission.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
857059 |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
857059 |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
Packit |
857059 |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
Packit |
857059 |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit |
857059 |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
Packit |
857059 |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
Packit |
857059 |
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
Packit |
857059 |
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
Packit |
857059 |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
** END_ICS_COPYRIGHT7 ****************************************/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* [ICS VERSION STRING: unknown] */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SA MADs
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* General Notes:
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* (1) Structures are defined in the most readable manner rather than
|
|
Packit |
857059 |
* what might be most useful for the coder or the compiler. Compiler
|
|
Packit |
857059 |
* hints (i.e., PACK_SUFFIX) are omitted, blocks of data may be
|
|
Packit |
857059 |
* defined as multi-dimensional arrays when useful, and so on.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* (2) An effort has been made to ensure that 32-bit fields fall on a 4 byte
|
|
Packit |
857059 |
* boundary and 64-bit fields fall on an 8 byte boundary. In addition,
|
|
Packit |
857059 |
* SA records are set as multiples of 8-bytes in order to preserve
|
|
Packit |
857059 |
* alignment across multi-record responses.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* (3) When extending a LID to 32-bits would break word alignment of other
|
|
Packit |
857059 |
* fields, the process was to:
|
|
Packit |
857059 |
* (a) First, remove existing reserved fields if this will restore
|
|
Packit |
857059 |
* alignment.
|
|
Packit |
857059 |
* (b) If (a) is not possible, consider moving fields if this will
|
|
Packit |
857059 |
* restore alignment.
|
|
Packit |
857059 |
* (c) If (b) fails, add new reserved fields to restore alignment.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* (4) In this document, attributes are listed in the same order they appear
|
|
Packit |
857059 |
* in the IB spec. Where a new attribute is added, it is added after
|
|
Packit |
857059 |
* the existing attribute it was modeled after.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* (5) The use of "Jumbo" (>256 byte) MADs are only used when needed. For
|
|
Packit |
857059 |
* table-based MADs, RMPP is the preferred solution.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifndef __STL_SA_H__
|
|
Packit |
857059 |
#define __STL_SA_H__
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include "iba/stl_mad_types.h"
|
|
Packit |
857059 |
#include "iba/ib_sa_records.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#if defined (__cplusplus)
|
|
Packit |
857059 |
extern "C" {
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include "iba/public/ipackon.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SA_CLASS_VERSION 0x80
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Subnet Administration Attribute IDs Adapted from IB
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_SA_ATTR_CLASS_PORT_INFO 0x0001
|
|
Packit |
857059 |
#define STL_SA_ATTR_NOTICE 0x0002
|
|
Packit |
857059 |
#define STL_SA_ATTR_INFORM_INFO 0x0003
|
|
Packit |
857059 |
#define STL_SA_ATTR_NODE_RECORD 0x0011
|
|
Packit |
857059 |
#define STL_SA_ATTR_PORTINFO_RECORD 0x0012
|
|
Packit |
857059 |
#define STL_SA_ATTR_SC_MAPTBL_RECORD 0x0013 // REPLACES SL TO VL!
|
|
Packit |
857059 |
#define STL_SA_ATTR_SWITCHINFO_RECORD 0x0014
|
|
Packit |
857059 |
#define STL_SA_ATTR_LINEAR_FWDTBL_RECORD 0x0015
|
|
Packit |
857059 |
//#define STL_SA_ATTR_RANDOM_FWD_TBL_RECORD 0x0016 // Undefined in STL.
|
|
Packit |
857059 |
#define STL_SA_ATTR_MCAST_FWDTBL_RECORD 0x0017
|
|
Packit |
857059 |
#define STL_SA_ATTR_SMINFO_RECORD 0x0018
|
|
Packit |
857059 |
#define STL_SA_ATTR_LINK_SPD_WDTH_PAIRS_RECORD 0x0019 // Defined but never impl'ed
|
|
Packit |
857059 |
//Available 0x001A-0x001F
|
|
Packit |
857059 |
#define STL_SA_ATTR_LINK_RECORD 0x0020
|
|
Packit |
857059 |
//#define STL_SA_ATTR_GUIDINFO_RECORD 0x0030 // Undefined in STL.
|
|
Packit |
857059 |
#define STL_SA_ATTR_SERVICE_RECORD 0x0031
|
|
Packit |
857059 |
#define STL_SA_ATTR_P_KEY_TABLE_RECORD 0x0033
|
|
Packit |
857059 |
#define STL_SA_ATTR_PATH_RECORD 0x0035
|
|
Packit |
857059 |
#define STL_SA_ATTR_VLARBTABLE_RECORD 0x0036
|
|
Packit |
857059 |
#define STL_SA_ATTR_MCMEMBER_RECORD 0x0038
|
|
Packit |
857059 |
#define STL_SA_ATTR_TRACE_RECORD 0x0039
|
|
Packit |
857059 |
#define STL_SA_ATTR_MULTIPATH_GID_RECORD 0x003A
|
|
Packit |
857059 |
#define STL_SA_ATTR_SERVICEASSOCIATION_RECORD 0x003B /* not implemented */
|
|
Packit |
857059 |
//Available 0x003C-0x007F
|
|
Packit |
857059 |
#define STL_SA_ATTR_INFORM_INFO_RECORD 0x00F3
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Subnet Administration Attribute IDs New for STL
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_SA_ATTR_SL2SC_MAPTBL_RECORD 0x0080
|
|
Packit |
857059 |
#define STL_SA_ATTR_SC2SL_MAPTBL_RECORD 0x0081
|
|
Packit |
857059 |
#define STL_SA_ATTR_SC2VL_NT_MAPTBL_RECORD 0x0082
|
|
Packit |
857059 |
#define STL_SA_ATTR_SC2VL_T_MAPTBL_RECORD 0x0083
|
|
Packit |
857059 |
#define STL_SA_ATTR_SC2VL_R_MAPTBL_RECORD 0x0084
|
|
Packit |
857059 |
#define STL_SA_ATTR_PGROUP_FWDTBL_RECORD 0x0085
|
|
Packit |
857059 |
#define STL_SA_ATTR_MULTIPATH_GUID_RECORD 0x0086 /* not implemented */
|
|
Packit |
857059 |
#define STL_SA_ATTR_MULTIPATH_LID_RECORD 0x0087 /* not implemented */
|
|
Packit |
857059 |
#define STL_SA_ATTR_CABLE_INFO_RECORD 0x0088
|
|
Packit |
857059 |
#define STL_SA_ATTR_VF_INFO_RECORD 0x0089 // Previously vendor specific
|
|
Packit |
857059 |
#define STL_SA_ATTR_PORT_STATE_INFO_RECORD 0x008A
|
|
Packit |
857059 |
#define STL_SA_ATTR_PORTGROUP_TABLE_RECORD 0x008B
|
|
Packit |
857059 |
#define STL_SA_ATTR_BUFF_CTRL_TAB_RECORD 0x008C
|
|
Packit |
857059 |
#define STL_SA_ATTR_FABRICINFO_RECORD 0x008D
|
|
Packit |
857059 |
#define STL_SA_ATTR_QUARANTINED_NODE_RECORD 0x0090 // Previously vendor specific
|
|
Packit |
857059 |
#define STL_SA_ATTR_CONGESTION_INFO_RECORD 0x0091 // Previously vendor specific
|
|
Packit |
857059 |
#define STL_SA_ATTR_SWITCH_CONG_RECORD 0x0092 // Previously vendor specific
|
|
Packit |
857059 |
#define STL_SA_ATTR_SWITCH_PORT_CONG_RECORD 0x0093 // Previously vendor specific
|
|
Packit |
857059 |
#define STL_SA_ATTR_HFI_CONG_RECORD 0x0094 // Previously vendor specific
|
|
Packit |
857059 |
#define STL_SA_ATTR_HFI_CONG_CTRL_RECORD 0x0095 // Previously vendor specific
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SA_ATTR_DG_MEMBER_RECORD 0x009B
|
|
Packit |
857059 |
#define STL_SA_ATTR_DG_NAME_RECORD 0x009C
|
|
Packit |
857059 |
#define STL_SA_ATTR_DT_MEMBER_RECORD 0x009D
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SA_ATTR_SWITCH_COST_RECORD 0x00A3
|
|
Packit |
857059 |
|
|
Packit |
857059 |
//#define STL_SA_ATTR_JOB_ROUTE_RECORD 0xffb2 // Never implemented.
|
|
Packit |
857059 |
//#define STL_SA_ATTR_CG_RECORD 0xff40 // Never implemented.
|
|
Packit |
857059 |
//#define STL_SA_ATTR_CG_STATUS_RECORD 0xff41 // Never implemented.
|
|
Packit |
857059 |
//#define STL_SA_ATTR_CFT_RECORD 0xff42 // Never implemented.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Subnet Administration MAD status values */
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_SA_UNAVAILABLE 0x0100 // SA unavailable
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SA capability mask defines
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY_MULTICAST_SUPPORT 0x0200
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY_MULTIPATH_SUPPORT 0x0400
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY_PORTINFO_CAPMASK_MATCH 0x2000
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY_PA_SERVICES_SUPPORT 0x8000
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 32 bit values, lower 27 bits are capabilities*/
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY2_QOS_SUPPORT 0x0000002
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY2_MFTTOP_SUPPORT 0x0000008
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY2_FULL_PORTINFO 0x0000040
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY2_EXT_SUPPORT 0x0000080
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY2_DGDTRECORD_SUPPORT 0x1000000
|
|
Packit |
857059 |
#define STL_SA_CAPABILITY2_SWCOSTRECORD_SUPPORT 0x2000000
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* SA Capmask Bits to return on IB SA ClassPortInfo */
|
|
Packit |
857059 |
#define IB_SA_CAPABILITY_MASK(capmask) (capmask & \
|
|
Packit |
857059 |
(STL_CLASS_PORT_CAPMASK_TRAP | \
|
|
Packit |
857059 |
STL_CLASS_PORT_CAPMASK_NOTICE | \
|
|
Packit |
857059 |
STL_CLASS_PORT_CAPMASK_CM2 | \
|
|
Packit |
857059 |
STL_SA_CAPABILITY_MULTICAST_SUPPORT | \
|
|
Packit |
857059 |
STL_SA_CAPABILITY_MULTIPATH_SUPPORT | \
|
|
Packit |
857059 |
STL_SA_CAPABILITY_PORTINFO_CAPMASK_MATCH | \
|
|
Packit |
857059 |
STL_SA_CAPABILITY_PA_SERVICES_SUPPORT))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* SA Capmask2 Bits to return on IB SA ClassPortInfo */
|
|
Packit |
857059 |
#define IB_SA_CAPABILITY2_MASK(capmask) (capmask & \
|
|
Packit |
857059 |
(STL_SA_CAPABILITY2_QOS_SUPPORT | \
|
|
Packit |
857059 |
STL_SA_CAPABILITY2_MFTTOP_SUPPORT | \
|
|
Packit |
857059 |
STL_SA_CAPABILITY2_FULL_PORTINFO | \
|
|
Packit |
857059 |
STL_SA_CAPABILITY2_EXT_SUPPORT))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline void
|
|
Packit |
857059 |
StlSaClassPortInfoCapMask(char buf[80], uint16 cmask)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!cmask) {
|
|
Packit |
857059 |
snprintf(buf, 80, "-");
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
snprintf(buf, 80, "%s%s%s%s%s%s%s",
|
|
Packit |
857059 |
(cmask & STL_CLASS_PORT_CAPMASK_TRAP) ? "Trap " : "",
|
|
Packit |
857059 |
(cmask & STL_CLASS_PORT_CAPMASK_NOTICE) ? "Notice " : "",
|
|
Packit |
857059 |
(cmask & STL_CLASS_PORT_CAPMASK_CM2) ? "CapMask2 " : "",
|
|
Packit |
857059 |
/* Class Specific */
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY_MULTICAST_SUPPORT) ? "MultiCast " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY_MULTIPATH_SUPPORT) ? "MultiPath " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY_PORTINFO_CAPMASK_MATCH) ? "PortInfoMask " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY_PA_SERVICES_SUPPORT) ? "PartService " : "");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
static __inline void
|
|
Packit |
857059 |
StlSaClassPortInfoCapMask2(char buf[80], uint32 cmask)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!cmask) {
|
|
Packit |
857059 |
snprintf(buf, 80, "-");
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
snprintf(buf, 80, "%s%s%s%s%s%s",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY2_QOS_SUPPORT) ? "QoS " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY2_MFTTOP_SUPPORT) ? "MFTTop " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY2_FULL_PORTINFO) ? "FullPortInfo " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY2_EXT_SUPPORT) ? "ExtSpeed " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY2_DGDTRECORD_SUPPORT) ? "DG/DT " : "",
|
|
Packit |
857059 |
(cmask & STL_SA_CAPABILITY2_SWCOSTRECORD_SUPPORT) ? "SwCost " : "");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* NodeRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Extended LID to 32 bits.
|
|
Packit |
857059 |
* Reserved added to 8-byte-align structures.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_NODE_INFO NodeInfo;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_NODE_DESCRIPTION NodeDesc;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_NODE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* ComponentMask bits */
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_LID 0x00000001
|
|
Packit |
857059 |
/* reserved field 0x00000002 */
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_BASEVERSION 0x00000004
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_CLASSVERSION 0x00000008
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_NODETYPE 0x00000010
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_NUMPORTS 0x00000020
|
|
Packit |
857059 |
/* reserved field 0x00000040 */
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_SYSIMAGEGUID 0x00000080
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_NODEGUID 0x00000100
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_PORTGUID 0x00000200
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_PARTITIONCAP 0x00000400
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_DEVICEID 0x00000800
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_REVISION 0x00001000
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_LOCALPORTNUM 0x00002000
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_VENDORID 0x00004000
|
|
Packit |
857059 |
#define STL_NODE_RECORD_COMP_NODEDESC 0x00008000
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* PortInfoRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* EndPortLID extended to 32 bits.
|
|
Packit |
857059 |
* RID.Reserved field changed to a bitfield to comply with proposed
|
|
Packit |
857059 |
* IBTA 1.3 spec.
|
|
Packit |
857059 |
* Reserved added to qword-align PortInfoData.
|
|
Packit |
857059 |
* RID.PortNum for HFI will return HFI port number
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_NUM_LINKDOWN_REASONS 8
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint8 Reserved[6];
|
|
Packit |
857059 |
uint8 NeighborLinkDownReason;
|
|
Packit |
857059 |
uint8 LinkDownReason;
|
|
Packit |
857059 |
uint64 Timestamp;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_LINKDOWN_REASON;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/**
|
|
Packit |
857059 |
* Returns the next index in an array of STL_LINKDOWN_REASONS of size
|
|
Packit |
857059 |
* STL_NUM_LINKDOWN_REASONS to use. Uses the first free space or the
|
|
Packit |
857059 |
* LinkDownReason with the oldest timestamp.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
static __inline__ int STL_LINKDOWN_REASON_NEXT_INDEX(STL_LINKDOWN_REASON* ldr) {
|
|
Packit |
857059 |
int i;
|
|
Packit |
857059 |
int selectedIndex = 0;
|
|
Packit |
857059 |
uint64 earliestTimestamp = 0xffffffffffffffffll;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
for(i = 0; i < STL_NUM_LINKDOWN_REASONS; i++) {
|
|
Packit |
857059 |
if(ldr[i].Timestamp == 0) {
|
|
Packit |
857059 |
return i;
|
|
Packit |
857059 |
} else if(ldr[i].Timestamp < earliestTimestamp){
|
|
Packit |
857059 |
selectedIndex = i;
|
|
Packit |
857059 |
earliestTimestamp = ldr[i].Timestamp;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return selectedIndex;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/**
|
|
Packit |
857059 |
* Returns the most recent stored LinkDownReason
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
static __inline__ int STL_LINKDOWN_REASON_LAST_INDEX(STL_LINKDOWN_REASON* ldr) {
|
|
Packit |
857059 |
int i;
|
|
Packit |
857059 |
int selectedIndex = -1;
|
|
Packit |
857059 |
uint64 earliestTimestamp = 0x0ll;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
for(i = 0; i < STL_NUM_LINKDOWN_REASONS; i++) {
|
|
Packit |
857059 |
if(ldr[i].Timestamp > earliestTimestamp){
|
|
Packit |
857059 |
selectedIndex = i;
|
|
Packit |
857059 |
earliestTimestamp = ldr[i].Timestamp;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return selectedIndex;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID EndPortLID;
|
|
Packit |
857059 |
uint8 PortNum; /* for switch or HFI: port numnber */
|
|
Packit |
857059 |
uint8 Reserved;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_PORT_INFO PortInfo;
|
|
Packit |
857059 |
STL_LINKDOWN_REASON LinkDownReasons[STL_NUM_LINKDOWN_REASONS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORTINFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* ComponentMask bits */
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* The component mask bits for port info deviate from the IB standard
|
|
Packit |
857059 |
* because there are too many fields in port info to enumerate. At
|
|
Packit |
857059 |
* this time only the following mask bits are defined. All other bits
|
|
Packit |
857059 |
* are reserved for future expansion.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PORTINFO_RECORD_COMP_ENDPORTLID 0x0000000000000001ll
|
|
Packit |
857059 |
#define STL_PORTINFO_RECORD_COMP_PORTNUM 0x0000000000000002ll
|
|
Packit |
857059 |
#define STL_PORTINFO_RECORD_COMP_OPTIONS 0x0000000000000004ll
|
|
Packit |
857059 |
#define STL_PORTINFO_RECORD_COMP_CAPABILITYMASK 0x0000000000000008ll
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* P_KeyTableRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* LID extended to 32 bits.
|
|
Packit |
857059 |
* Reserved shortened to restore alignment.
|
|
Packit |
857059 |
* RID.PortNum for HFI will return HFI port number
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
uint32 LID;
|
|
Packit |
857059 |
uint16 Blocknum;
|
|
Packit |
857059 |
uint8 PortNum; /* for switch or HFI: port numnber */
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_PARTITION_TABLE PKeyTblData;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_P_KEY_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PKEYTABLE_RECORD_COMP_LID 0x00000001
|
|
Packit |
857059 |
#define STL_PKEYTABLE_RECORD_COMP_BLOCKNUM 0x00000002
|
|
Packit |
857059 |
#define STL_PKEYTABLE_RECORD_COMP_PORTNUM 0x00000004
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SCMappingTableRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Used for querying the SA for SC to SC Mapping information about a
|
|
Packit |
857059 |
* single input/output pair.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* LID extended to 32 bits. Each entry in the table is widened to 8 bits,
|
|
Packit |
857059 |
* the top 3 bits of each entry MUST be zero. This was done in
|
|
Packit |
857059 |
* preference to trying to pack 5 bit fields into multiples of 8 bits.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 InputPort;
|
|
Packit |
857059 |
uint8 OutputPort;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
RID_Secondary:1,
|
|
Packit |
857059 |
Reserved2:7);
|
|
Packit |
857059 |
uint8 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SC Map[STL_MAX_SCS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SC_MAPPING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SC2SC_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_SC2SC_RECORD_COMP_INPUTPORT 0x0000000000000002ull
|
|
Packit |
857059 |
#define STL_SC2SC_RECORD_COMP_OUTPUTPORT 0x0000000000000004ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SL2SCMappingTableRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* New for STL.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SC SLSCMap[STL_MAX_SLS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SL2SC_MAPPING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SL2SC_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SC2SLMappingTableRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* New for STL.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SL SCSLMap[STL_MAX_SCS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SC2SL_MAPPING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SC2SL_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SC2VL Mapping Table Records
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* There are three possible SC to VL mapping tables: NT, T and R. SC2VL_R
|
|
Packit |
857059 |
* will not be implemented in STL Gen 1. While they are all three separate
|
|
Packit |
857059 |
* SA MAD attributes, they all have identical structure.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 Port; /* for switch or HFI: port numnber */
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved[3];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_VL SCVLMap[STL_MAX_SCS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SC2VL_R_MAPPING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef STL_SC2VL_R_MAPPING_TABLE_RECORD STL_SC2PVL_T_MAPPING_TABLE_RECORD;
|
|
Packit |
857059 |
typedef STL_SC2VL_R_MAPPING_TABLE_RECORD STL_SC2PVL_NT_MAPPING_TABLE_RECORD;
|
|
Packit |
857059 |
typedef STL_SC2VL_R_MAPPING_TABLE_RECORD STL_SC2PVL_R_MAPPING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SC2VL_R_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_SC2VL_R_RECORD_COMP_PORT 0x0000000000000002ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SwitchInfoRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences
|
|
Packit |
857059 |
* Old LID/Reserved RID replaced with 32 bit LID.
|
|
Packit |
857059 |
* Reserved added to align SwitchInfoData.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SWITCH_INFO SwitchInfoData;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCHINFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000002ull */
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_LFDBCAP 0x0000000000000004ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000008ull */
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_MFDBCAP 0x0000000000000010ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_LFDBTOP 0x0000000000000020ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000040ull */
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_MFDBTOP 0x0000000000000080ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_COLLCAP 0x0000000000000100ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_COLLTOP 0x0000000000000200ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000400ull */
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_IPPRIMARY 0x0000000000000800ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_IPSECONDARY 0x0000000000001000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_PORTSTATECHG 0x0000000000020000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_LIFETIME 0x0000000000040000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_PENFCAP 0x0000000000080000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_PORTGROUPCAP 0x0000000000100000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_PORTGROUPTOP 0x0000000000200000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_RMODESUPPORTEED 0x0000000000400000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_RMODEENABLED 0x0000000000800000ull
|
|
Packit |
857059 |
/* Reserved 0x0000000001000000ull */
|
|
Packit |
857059 |
/* Reserved 0x0000000002000000ull */
|
|
Packit |
857059 |
/* Reserved 0x0000000004000000ull */
|
|
Packit |
857059 |
/* Reserved 0x0000000008000000ull */
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_EP0 0x0000000010000000ull
|
|
Packit |
857059 |
/* Reserved 0x0000000020000000ull */
|
|
Packit |
857059 |
/* Reserved 0x0000000040000000ull */
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_COLLMASK 0x0000000080000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_MCMASK 0x0000000100000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_ARLOSTONLY 0x0000000200000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_ARPAUSE 0x0000000400000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_ARENABLE 0x0000000800000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_ARALGORITHM 0x0000001000000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_ARFREQ 0x0000002000000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_ARTHRESHOLD 0x0000004000000000ull
|
|
Packit |
857059 |
/* Reserved 0x0000008000000000ull */
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_CAPMASK 0x0000010000000000ull
|
|
Packit |
857059 |
#define STL_SWITCHINFO_RECORD_COMP_CMCOLLECTIVES 0x0000020000000000ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* LFTRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Blocks are still defined as 64 bytes long to be consistent with IB.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* LID extended to 32 bits.
|
|
Packit |
857059 |
* BlockNum extended to 18 bits.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
IB_BITFIELD2(uint32,
|
|
Packit |
857059 |
Reserved:14,
|
|
Packit |
857059 |
BlockNum:18);
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 8 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 LinearFdbData[64];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 72 bytes */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_LINEAR_FORWARDING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_LFT_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000002ull */
|
|
Packit |
857059 |
#define STL_LFT_RECORD_COMP_BLOCKNUM 0x0000000000000004ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* MFTRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* NOTES:
|
|
Packit |
857059 |
* In IB the width of the PORTMASK data type was defined as only 16
|
|
Packit |
857059 |
* bits, requiring the SM to iterate over 3 different positions values
|
|
Packit |
857059 |
* to retrieve the MFTs for a 48-port switch.
|
|
Packit |
857059 |
* For this reason PORTMASK is now defined as 64 bits wide, eliminating
|
|
Packit |
857059 |
* the need to use the "position" attribute in the Gen 1 & Gen 2
|
|
Packit |
857059 |
* generations of hardware.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* As above, a "block" is defined as 64 bytes; therefore a single block
|
|
Packit |
857059 |
* will contain 8 MFT records. The consumer should use GetTable() and
|
|
Packit |
857059 |
* RMPP to retrieve more than one block. As with the RFT, BlockNum is
|
|
Packit |
857059 |
* defined as 21 bits, providing for a total of 2^24 LIDs.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* PORTMASK is now 64 bits.
|
|
Packit |
857059 |
* LID is now 32 bits.
|
|
Packit |
857059 |
* Position is now 2 bits.
|
|
Packit |
857059 |
* Reserved is now 9 bits.
|
|
Packit |
857059 |
* BlockNum is now 21 bits.
|
|
Packit |
857059 |
* Reserved2 removed to preserve word alignment.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MFTB_WIDTH 64
|
|
Packit |
857059 |
#define STL_MFTB_MAX_POSITION 4
|
|
Packit |
857059 |
typedef struct _STL_MULTICAST_FORWARDING_TABLE_RECORD {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID; // Port 0 of the switch.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION3(u1, 32,
|
|
Packit |
857059 |
Position:2,
|
|
Packit |
857059 |
Reserved:9,
|
|
Packit |
857059 |
BlockNum:21);
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_MULTICAST_FORWARDING_TABLE MftTable;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_MULTICAST_FORWARDING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MFTB_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_MFTB_RECORD_COMP_POSITIONl 0x0000000000000002ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000004ull */
|
|
Packit |
857059 |
#define STL_MFTB_RECORD_COMP_BLOCKNUM 0x0000000000000008ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Port Group Table Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Defines which ports are associated with which port groups.
|
|
Packit |
857059 |
* For each query, BlockNum defines a block of port groups, from 0-31,
|
|
Packit |
857059 |
* with each block containing 8 port groups. Position identifies a group
|
|
Packit |
857059 |
* of ports with 0 being ports 1-64, 1 being ports 65-128, etc.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* This is nearly optimal; only switches that support more than 248 port groups
|
|
Packit |
857059 |
* will require two queries to read the entire table.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PGTB_NUM_ENTRIES_PER_BLOCK 8
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
IB_BITFIELD3(uint16,
|
|
Packit |
857059 |
Position:2,
|
|
Packit |
857059 |
Reserved:9,
|
|
Packit |
857059 |
BlockNum:5);
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_PORTMASK GroupBlock[STL_PGTB_NUM_ENTRIES_PER_BLOCK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORT_GROUP_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PGTB_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_PGTB_RECORD_COMP_POSITION 0x0000000000000002ull
|
|
Packit |
857059 |
#define STL_PGTB_RECORD_COMP_BLOCKNUM 0x0000000000000004ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Port Group Forwarding Table Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Maps LIDs to Port Groups.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* New for STL. Similar to the preceding forwarding table records.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PGFDB_NUM_ENTRIES_PER_BLOCK 64
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION2(u1, 32,
|
|
Packit |
857059 |
Reserved:14,
|
|
Packit |
857059 |
BlockNum:18);
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
PORT PGFdbData[STL_PGFDB_NUM_ENTRIES_PER_BLOCK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORT_GROUP_FORWARDING_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PGFWDTB_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_PGFWDTB_RECORD_COMP_BLOCKNUM 0x0000000000000002ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* VLArbitrationRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Switch LID extended.
|
|
Packit |
857059 |
* Blocknum now defined as 0 - 3 as per the VL Arbitration Table MAD.
|
|
Packit |
857059 |
* Length of Low, High tables extended to 128 bytes.
|
|
Packit |
857059 |
* Preempt table added.
|
|
Packit |
857059 |
* RID.OutputPortNum for HFI will return port number
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 OutputPortNum; /* for switch or HFI: port numnber */
|
|
Packit |
857059 |
uint8 BlockNum;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_VLARB_TABLE VLArbTable;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_VLARBTABLE_RECORD;
|
|
Packit |
857059 |
#define STL_VLARB_COMPONENTMASK_LID 0x0000000000000001ul
|
|
Packit |
857059 |
#define STL_VLARB_COMPONENTMASK_OUTPORTNUM 0x0000000000000002ul
|
|
Packit |
857059 |
#define STL_VLARB_COMPONENTMASK_BLOCKNUM 0x0000000000000004ul
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* MCMemberRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* MLID moved to new location for flit alignment.
|
|
Packit |
857059 |
* SL Lengthened to 5 bits.
|
|
Packit |
857059 |
* FlowLabel removed.
|
|
Packit |
857059 |
* Record is now 16 bits longer.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
IB_GID MGID;
|
|
Packit |
857059 |
/* 16 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_GID PortGID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 32 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Q_Key;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved; // Used to be MLID.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
MtuSelector:2,
|
|
Packit |
857059 |
Mtu:6);
|
|
Packit |
857059 |
uint8 TClass;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 40 bytes */
|
|
Packit |
857059 |
uint16 P_Key;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
RateSelector:2,
|
|
Packit |
857059 |
Rate:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
PktLifeTimeSelector:2,
|
|
Packit |
857059 |
PktLifeTime:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint32,
|
|
Packit |
857059 |
SL:5,
|
|
Packit |
857059 |
Reserved5:19,
|
|
Packit |
857059 |
HopLimit:8);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 48 bytes */
|
|
Packit |
857059 |
IB_BITFIELD5(uint8,
|
|
Packit |
857059 |
Scope:4,
|
|
Packit |
857059 |
Reserved4:1,
|
|
Packit |
857059 |
JoinSendOnlyMember:1, // NOTE: Treat these 4 JoinStates as 1 attr.
|
|
Packit |
857059 |
JoinNonMember:1,
|
|
Packit |
857059 |
JoinFullMember:1);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
ProxyJoin:1,
|
|
Packit |
857059 |
Reserved2:7);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved3;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_LID MLID; // Moved for alignment.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 56 bytes */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_MCMEMBER_RECORD;
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_MGID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_PORTGID 0x0000000000000002ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_QKEY 0x0000000000000004ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000008ull */
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_MTU_SEL 0x0000000000000010ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_MTU 0x0000000000000020ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_OK_MTU ( STL_MCMEMBER_COMPONENTMASK_MTU_SEL \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_MTU )
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_TCLASS 0x0000000000000040ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_PKEY 0x0000000000000080ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_RATE_SEL 0x0000000000000100ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_RATE 0x0000000000000200ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_OK_RATE ( STL_MCMEMBER_COMPONENTMASK_RATE \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_RATE_SEL )
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_LIFE_SEL 0x0000000000000400ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_LIFE 0x0000000000000800ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_OK_LIFE ( STL_MCMEMBER_COMPONENTMASK_LIFE_SEL \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_LIFE )
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_SL 0x0000000000001000ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000002000ull */
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_HOP 0x0000000000004000ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_SCOPE 0x0000000000008000ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000010000ull */
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_JNSTATE 0x0000000000020000ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_OK_JOIN ( STL_MCMEMBER_COMPONENTMASK_MGID \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_JNSTATE \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_PORTGID )
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_PROXYJN 0x0000000000040000ull
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_MLID 0x0000000000080000ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MCMEMBER_COMPONENTMASK_OK_CREATE ( STL_MCMEMBER_COMPONENTMASK_PKEY \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_QKEY \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_SL \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_TCLASS \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_JNSTATE \
|
|
Packit |
857059 |
| STL_MCMEMBER_COMPONENTMASK_PORTGID )
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MCMRECORD_GETJOINSTATE(REC) ( (REC)->JoinSendOnlyMember \
|
|
Packit |
857059 |
| (REC)->JoinNonMember \
|
|
Packit |
857059 |
| (REC)->JoinFullMember )
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SMInfoRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* LID extended to 32 bits.
|
|
Packit |
857059 |
* Added Reserved to ensure word-alignment of SMInfo.
|
|
Packit |
857059 |
* Added Reserved2 to ensure word-alignment of GetTable() responses.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SM_INFO SMInfo;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SMINFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_LID 0x0000000000000001ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000002ull */
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_GUID 0x0000000000000004ull
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_SMKEY 0x0000000000000008ull
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_ACTCOUNT 0x0000000000000010ull
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_ETIME 0x0000000000000020ull
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_PRIORITY 0x0000000000000040ull
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_SMSTATEELEV 0x0000000000000080ull
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_SMSTATEINIT 0x0000000000000100ull
|
|
Packit |
857059 |
#define STL_SMINFO_RECORD_COMP_SMSTATECURR 0x0000000000000200ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* InformInfoRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Length is TBD.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Replaced SubscriberGID with SubscriberLID.
|
|
Packit |
857059 |
* Reserved adjusted to preserve alignment.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID SubscriberLID;
|
|
Packit |
857059 |
uint16 Enum;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_INFORM_INFO InformInfoData;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_INFORM_INFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_SUBSCRIBER_LID 0x0000000000000001ll
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_SUBSCRIBER_ENUM 0x0000000000000002ll
|
|
Packit |
857059 |
/* reserved 0x0000000000000004ll */
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_GID 0x0000000000000008ll
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_RANGE_BEGIN 0x0000000000000010ll
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_RANGE_END 0x0000000000000020ll
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_RANGE_GENERIC 0x0000000000000040ll
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_RANGE_SUBSCRIBE 0x0000000000000080ll
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_RANGE_TYPE 0x0000000000000100ll
|
|
Packit |
857059 |
/* reserved 0x0000000000000200ll */
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_TRAP_NUMBER 0x0000000000000400ll
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_QPN 0x0000000000000800ll
|
|
Packit |
857059 |
/* reserved 0x0000000000001000ll */
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_RESP_TIME 0x0000000000002000ll
|
|
Packit |
857059 |
/* reserved 0x0000000000004000ll */
|
|
Packit |
857059 |
#define STL_INFORM_INFO_REC_COMP_LID_PRODUCER_TYPE 0x0000000000008000ll
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* LinkRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* LIDs lengthened
|
|
Packit |
857059 |
* Reserved field added to preserve alignment.
|
|
Packit |
857059 |
* RID.FromPort and ToPort for HFI will return HFI port number
|
|
Packit |
857059 |
* LinkCondition field added to describe which link errors apply to the link when asking for this data.
|
|
Packit |
857059 |
* ErrorMask field added to provide detailed information on the particular errors that led to the LinkCondition error.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct _STL_LINK_RECORD {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID FromLID;
|
|
Packit |
857059 |
uint8 FromPort; /* for switch or HFI: port number */
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 ToPort; /* for switch or HFI: port number */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_LID ToLID;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_LINK_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_LINK_REC_COMP_FROM_LID 0x0000000000000001ll
|
|
Packit |
857059 |
#define STL_LINK_REC_COMP_FROM_PORT 0x0000000000000002ll
|
|
Packit |
857059 |
#define STL_LINK_REC_COMP_TO_PORT 0x0000000000000004ll
|
|
Packit |
857059 |
#define STL_LINK_REC_LINK_CONDITION 0x0000000000000008ll
|
|
Packit |
857059 |
#define STL_LINK_REC_COMP_TO_LID 0x0000000000000010ll
|
|
Packit |
857059 |
#define STL_LINK_REC_COMP_ERROR_MASK 0x0000000000000020ll
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* These constants are used to describe the applicable link condition(s) */
|
|
Packit |
857059 |
#define STL_LINK_REC_SLOWLINKS 0x0000000000000001ll
|
|
Packit |
857059 |
#define STL_LINK_REC_MISCONFIGLINKS 0x0000000000000002ll
|
|
Packit |
857059 |
#define STL_LINK_REC_MISCONNLINKS 0x0000000000000004ll
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* ServiceRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences
|
|
Packit |
857059 |
* Added of ServiceLID
|
|
Packit |
857059 |
* Moved Reserved field to maintain alignment.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
uint64 ServiceID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_LID ServiceLID;
|
|
Packit |
857059 |
uint16 ServiceP_Key;
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_GID ServiceGID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 ServiceLease;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 ServiceKey[16];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 ServiceName[64];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 ServiceData8[16];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 ServiceData16[8];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 ServiceData32[4];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 ServiceData64[2];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SERVICE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICEID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICELID 0x0000000000000002ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICEPKEY 0x0000000000000004ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000008ull */
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICEGID 0x0000000000000010ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICELEASE 0x0000000000000020ull
|
|
Packit |
857059 |
/* Reserved 0x0000000000000040ull */
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICEKEY 0x0000000000000080ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICENAME 0x0000000000000100ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_1 0x0000000000000200ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_2 0x0000000000000400ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_3 0x0000000000000800ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_4 0x0000000000001000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_5 0x0000000000002000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_6 0x0000000000004000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_7 0x0000000000008000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_8 0x0000000000010000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_9 0x0000000000020000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_10 0x0000000000040000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_11 0x0000000000080000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_12 0x0000000000100000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_13 0x0000000000200000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_14 0x0000000000400000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_15 0x0000000000800000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_8_16 0x0000000001000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_1 0x0000000002000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_2 0x0000000004000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_3 0x0000000008000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_4 0x0000000010000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_5 0x0000000020000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_6 0x0000000040000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_7 0x0000000080000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_16_8 0x0000000100000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_32_1 0x0000000200000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_32_2 0x0000000400000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_32_3 0x0000000800000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_32_4 0x0000001000000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_64_1 0x0000002000000000ull
|
|
Packit |
857059 |
#define STL_SERVICE_RECORD_COMP_SERVICE_64_2 0x0000004000000000ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* ServiceAssociationRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* NOTE: No changes from IB version.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef IB_SERVICEASSOCIATION_RECORD STL_SERVICEASSOCIATION_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* TraceRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* GIDPrefix deleted.
|
|
Packit |
857059 |
* EntryPort, ExitPort moved for alignment.
|
|
Packit |
857059 |
* Reserved2 added to word/qword-align NodeID.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint16 IDGeneration;
|
|
Packit |
857059 |
uint8 Reserved;
|
|
Packit |
857059 |
uint8 NodeType;
|
|
Packit |
857059 |
uint8 EntryPort;
|
|
Packit |
857059 |
uint8 ExitPort;
|
|
Packit |
857059 |
uint16 Reserved2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 NodeID;
|
|
Packit |
857059 |
uint64 ChassisID;
|
|
Packit |
857059 |
uint64 EntryPortID;
|
|
Packit |
857059 |
uint64 ExitPortID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRACE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* MultiPathRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* RawTraffic is now reserved.
|
|
Packit |
857059 |
* Reserved2 moved, shortened.
|
|
Packit |
857059 |
* SL lengthened.
|
|
Packit |
857059 |
* L2 settings added.
|
|
Packit |
857059 |
* Reserved3 added to ensure alignment of gids.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
IB_BITFIELD3(uint32,
|
|
Packit |
857059 |
Reserved1:4,
|
|
Packit |
857059 |
FlowLabel:20,
|
|
Packit |
857059 |
HopLimit:8);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 TClass;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
Reversible:1,
|
|
Packit |
857059 |
NumbPath:7);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 P_Key;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD4(uint16,
|
|
Packit |
857059 |
QoSType:2,
|
|
Packit |
857059 |
QoSPriority:8,
|
|
Packit |
857059 |
Reserved2:1,
|
|
Packit |
857059 |
SL:5);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
MtuSelector:2,
|
|
Packit |
857059 |
Mtu:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
RateSelector:2,
|
|
Packit |
857059 |
Rate:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
PktLifeTimeSelector:2,
|
|
Packit |
857059 |
PktLifeTime:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
IndependenceSelector:2,
|
|
Packit |
857059 |
SGIDScope:3,
|
|
Packit |
857059 |
DGIDScope:3);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 SGIDCount;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 DGIDCount;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 ServiceID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD5(uint8,
|
|
Packit |
857059 |
L2_8B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_10B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_9B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_16B:1, // True if path supports this L2.
|
|
Packit |
857059 |
Reserved:4);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved3[7];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_GID GIDList[0]; // SGIDCount + DGIDCount entries.
|
|
Packit |
857059 |
} PACK_SUFFIX STL_MULTIPATH_RECORD_GID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* MultiPathRecord (GUID)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* New for STL
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
IB_BITFIELD3(uint32,
|
|
Packit |
857059 |
Reserved1:4,
|
|
Packit |
857059 |
FlowLabel:20,
|
|
Packit |
857059 |
HopLimit:8);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 TClass;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
Reversible:1,
|
|
Packit |
857059 |
NumbPath:7);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 P_Key;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD4(uint16,
|
|
Packit |
857059 |
QoSType:2,
|
|
Packit |
857059 |
QoSPriority:8,
|
|
Packit |
857059 |
Reserved2:1,
|
|
Packit |
857059 |
SL:5);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
MtuSelector:2,
|
|
Packit |
857059 |
Mtu:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
RateSelector:2,
|
|
Packit |
857059 |
Rate:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
PktLifeTimeSelector:2,
|
|
Packit |
857059 |
PktLifeTime:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
IndependenceSelector:2,
|
|
Packit |
857059 |
SGUIDScope:3,
|
|
Packit |
857059 |
DGUIDScope:3);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 SGUIDCount;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 DGUIDCount;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD5(uint8,
|
|
Packit |
857059 |
L2_8B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_10B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_9B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_16B:1, // True if path supports this L2.
|
|
Packit |
857059 |
Reserved:4);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved3[5];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 ServiceID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 SubnetPrefix;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 GUIDList[0]; // SGUIDCount + DGUIDCount entries.
|
|
Packit |
857059 |
} PACK_SUFFIX STL_MULTIPATH_RECORD_GUID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* MultiPathRecord (LID)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* New for STL
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
IB_BITFIELD3(uint32,
|
|
Packit |
857059 |
Reserved1:4,
|
|
Packit |
857059 |
FlowLabel:20,
|
|
Packit |
857059 |
HopLimit:8);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 TClass;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
Reversible:1,
|
|
Packit |
857059 |
NumbPath:7);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 P_Key;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD4(uint16,
|
|
Packit |
857059 |
QoSType:2,
|
|
Packit |
857059 |
QoSPriority:8,
|
|
Packit |
857059 |
Reserved2:1,
|
|
Packit |
857059 |
SL:5);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
MtuSelector:2,
|
|
Packit |
857059 |
Mtu:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
RateSelector:2,
|
|
Packit |
857059 |
Rate:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
PktLifeTimeSelector:2,
|
|
Packit |
857059 |
PktLifeTime:6);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
IndependenceSelector:2,
|
|
Packit |
857059 |
SGUIDScope:3,
|
|
Packit |
857059 |
DGUIDScope:3);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 SLIDCount;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 DLIDCount;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD5(uint8,
|
|
Packit |
857059 |
L2_8B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_10B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_9B:1, // True if path supports this L2.
|
|
Packit |
857059 |
L2_16B:1, // True if path supports this L2.
|
|
Packit |
857059 |
Reserved:4);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved3[5];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 ServiceID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_LID LIDList[0]; // SLIDCount + DLIDCount entries
|
|
Packit |
857059 |
} PACK_SUFFIX STL_MULTIPATH_RECORD_LID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* CableInfoRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* LID lengthened to 32 bits.
|
|
Packit |
857059 |
* Reserved2 field shortened from 20 bits to 4 to preserve word-alignment.
|
|
Packit |
857059 |
* RID.Port for HFI will return HFI port number
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_CIR_DATA_SIZE 64
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 Port; /* for switch or HFI: port numnber */
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
Length:7,
|
|
Packit |
857059 |
Reserved:1);
|
|
Packit |
857059 |
STL_FIELDUNION2(u1, 16,
|
|
Packit |
857059 |
Address:12,
|
|
Packit |
857059 |
PortType:4); /* Port type for response only */
|
|
Packit |
857059 |
};
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Data[STL_CIR_DATA_SIZE];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CABLE_INFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_CIR_COMP_LID 0x1ul
|
|
Packit |
857059 |
#define STL_CIR_COMP_PORT 0x2ul
|
|
Packit |
857059 |
#define STL_CIR_COMP_LEN 0x4ul
|
|
Packit |
857059 |
//Reserved 0x8ul
|
|
Packit |
857059 |
#define STL_CIR_COMP_ADDR 0x10ul
|
|
Packit |
857059 |
//Reserved2 0x20ul
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_VFABRIC_NAME_LEN 64
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* VFInfoRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Was a Vendor-specific MAD in IB
|
|
Packit |
857059 |
* SL lengthened to 5 bits.
|
|
Packit |
857059 |
* Reserved fields renamed.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* TBD - adjust to report multiple SLs (perhaps a mask) for TrafficClass
|
|
Packit |
857059 |
* concept in prep for STL2
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint16 vfIndex; /* The index assigned to the VF */
|
|
Packit |
857059 |
uint16 pKey; /* PKey associated with the VF */
|
|
Packit |
857059 |
uint32 rsvd1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 8 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 vfName[STL_VFABRIC_NAME_LEN]; /* The name of the VF. Must be \0 terminated. */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 72 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 ServiceID; /* for query only */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 80 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_GID MGID; /* for query only */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 96 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
selectFlags:2, /* 1 bit to indicate SL in queries, 1 bit for pkey */
|
|
Packit |
857059 |
rsvd2:1,
|
|
Packit |
857059 |
slBase:5); /* service level - 5 bits */
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
mtuSpecified:1, /* mtu specified for VF - 1 bit */
|
|
Packit |
857059 |
rsvd3:1,
|
|
Packit |
857059 |
mtu:6); /* max mtu assigned to VF - 6 bits */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
rateSpecified:1, /* rate specified for VF - 1 bit */
|
|
Packit |
857059 |
rsvd4:1,
|
|
Packit |
857059 |
rate:6); /* max rate assigned to VF - 6 bits */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
pktLifeSpecified:1, /* pkt life time specified for VF - 1 bit */
|
|
Packit |
857059 |
rsvd5:4,
|
|
Packit |
857059 |
pktLifeTimeInc:3); /* pkt life time assigned to VF - 3 bits */
|
|
Packit |
857059 |
} PACK_SUFFIX s1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 optionFlags; /* security bit, QoS bit, reliable flow disable, 5 reserved */
|
|
Packit |
857059 |
uint8 bandwidthPercent; /* bandwidth percentage, 8 bits */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
rsvd6:7,
|
|
Packit |
857059 |
priority:1); /* priority, 1 bit */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 routingSLs; /* Always 1 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
rsvd7:1,
|
|
Packit |
857059 |
preemptionRank:7);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
rsvd8:3,
|
|
Packit |
857059 |
hoqLife:5);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
slResponseSpecified:1, /* slResponse field is set - 1 bit */
|
|
Packit |
857059 |
rsvd9:2,
|
|
Packit |
857059 |
slResponse:5); /* service level - 5 bits */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
slMulticastSpecified:1, /* slMulticast field is set - 1 bit */
|
|
Packit |
857059 |
rsvd10:2,
|
|
Packit |
857059 |
slMulticast:5); /* service level - 5 bits */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 rsvd11[20];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_VFINFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_VFINFO_REC_COMP_INDEX 0x0000000000000001ll
|
|
Packit |
857059 |
#define STL_VFINFO_REC_COMP_PKEY 0x0000000000000002ll
|
|
Packit |
857059 |
#define STL_VFINFO_REC_COMP_NAME 0x0000000000000008ll
|
|
Packit |
857059 |
#define STL_VFINFO_REC_COMP_SERVICEID 0x0000000000000010ll
|
|
Packit |
857059 |
#define STL_VFINFO_REC_COMP_MGID 0x0000000000000020ll
|
|
Packit |
857059 |
#define STL_VFINFO_REC_COMP_SL 0x0000000000000080ll
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* selectFlags */
|
|
Packit |
857059 |
#define STL_VFINFO_REC_SEL_PKEY_QUERY 0x01
|
|
Packit |
857059 |
#define STL_VFINFO_REC_SEL_SL_QUERY 0x02
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* optionFlags */
|
|
Packit |
857059 |
#define STL_VFINFO_REC_OPT_SECURITY 0x01
|
|
Packit |
857059 |
#define STL_VFINFO_REC_OPT_QOS 0x02
|
|
Packit |
857059 |
#define STL_VFINFO_REC_OPT_FLOW_DISABLE 0x04
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* QuarantinedNodeRecord
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* New for STL
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* NOTE: GET TABLE is the only supported method for this query.
|
|
Packit |
857059 |
* Component Mask must be zero.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_SPOOF_GENERIC 0x00000001
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_TOPO_NODE_GUID 0x00000002
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_TOPO_NODE_DESC 0x00000004
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_TOPO_PORT_GUID 0x00000008
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_TOPO_UNDEFINED_LINK 0x00000010
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_VL_COUNT 0x00000020
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_SMALL_MTU_SIZE 0x00000040
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_BAD_PACKET_FORMATS 0x00000080
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_MAXLID 0x00000100
|
|
Packit |
857059 |
#define STL_QUARANTINE_REASON_UNKNOWN 0x00000000
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_NODE_DESCRIPTION nodeDesc;
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
uint64 portGUID;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_EXPECTED_NODE_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID trustedLid;
|
|
Packit |
857059 |
uint8 trustedPortNum;
|
|
Packit |
857059 |
uint8 Reserved[3];
|
|
Packit |
857059 |
uint64 trustedNodeGUID;
|
|
Packit |
857059 |
uint64 trustedNeighborNodeGUID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_NODE_DESCRIPTION NodeDesc;
|
|
Packit |
857059 |
STL_NODE_INFO NodeInfo;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 quarantineReasons;
|
|
Packit |
857059 |
// expectedNodeInfo only valid if quarantineReasons != 0
|
|
Packit |
857059 |
STL_EXPECTED_NODE_INFO expectedNodeInfo;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_QUARANTINED_NODE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Congestion Info Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Was Vendor Specific in IB.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint32 reserved;
|
|
Packit |
857059 |
STL_CONGESTION_INFO CongestionInfo;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CONGESTION_INFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define CIR_COMPONENTMASK_COMP_LID 0x00000001
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Switch Congestion Setting Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Was Vendor Specific in IB.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct { /* all fields are RW */
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint32 reserved;
|
|
Packit |
857059 |
STL_SWITCH_CONGESTION_SETTING SwitchCongestionSetting;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_CONGESTION_SETTING_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SWCSR_COMPONENTMASK_COMP_LID 0x00000001
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Switch Port Congestion Setting Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Was Vendor Specific in IB.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 Port;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved[3];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* 8 bytes */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SWITCH_PORT_CONGESTION_SETTING SwitchPortCongestionSetting;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_PORT_CONGESTION_SETTING_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SWPCSR_COMPONENTMASK_COMP_LID 0x00000001
|
|
Packit |
857059 |
#define SWPCSR_COMPONENTMASK_COMP_PORT 0x00000002
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* HFI Congestion Setting Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Was Vendor Specific in IB.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct { /* all fields are RW */
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint32 reserved;
|
|
Packit |
857059 |
STL_HFI_CONGESTION_SETTING HFICongestionSetting;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_SETTING_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define HCSR_COMPONENTMASK_COMP_LID 0x00000001
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* HFI Congestion Control Table Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* Was Vendor Specific in IB.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct { /* all fields are RW */
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint16 BlockNum;
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
uint16 reserved;
|
|
Packit |
857059 |
STL_HFI_CONGESTION_CONTROL_TABLE HFICongestionControlTable;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_CONTROL_TABLE_RECORD;
|
|
Packit |
857059 |
#define HCCTR_COMPONENTMASK_COMP_LID 0x00000001
|
|
Packit |
857059 |
#define HCCTR_COMPONENTMASK_COMP_BLOCK 0x00000002
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Buffer Control Table Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* New for STL
|
|
Packit |
857059 |
* At this time, Component Mask is only supported for LID and Port.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 Port; /* for switch or HFI: port numnber */
|
|
Packit |
857059 |
} PACK_SUFFIX RID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved[3];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_BUFFER_CONTROL_TABLE BufferControlTable;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_BUFFER_CONTROL_TABLE_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define BFCTRL_COMPONENTMASK_COMP_LID 0x00000001
|
|
Packit |
857059 |
#define BFCTRL_COMPONENTMASK_COMP_PORT 0x00000002
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* FabricInfo Record
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* STL Differences:
|
|
Packit |
857059 |
* New for STL
|
|
Packit |
857059 |
* supports only Get, Component Mask N/A
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint32 NumHFIs; /* HFI Nodes */
|
|
Packit |
857059 |
uint32 NumSwitches; /* Switch Nodes (ASICs) */
|
|
Packit |
857059 |
/* Internal = in same SystemImageGuid */
|
|
Packit |
857059 |
/* HFI = HFI to switch and HFI to HFI links */
|
|
Packit |
857059 |
/* ISL = switch to switch links */
|
|
Packit |
857059 |
/* links which are Omitted will not be considered for Degraded checks */
|
|
Packit |
857059 |
/* switch port 0 is not counted as a link */
|
|
Packit |
857059 |
uint32 NumInternalHFILinks; /* HFI to switch (or HFI) links */
|
|
Packit |
857059 |
uint32 NumExternalHFILinks; /* HFI to switch (or HFI) links */
|
|
Packit |
857059 |
uint32 NumInternalISLs; /* switch to switch links */
|
|
Packit |
857059 |
uint32 NumExternalISLs; /* switch to switch links */
|
|
Packit |
857059 |
uint32 NumDegradedHFILinks; /* links with one or both sides below best enabled */
|
|
Packit |
857059 |
uint32 NumDegradedISLs; /* links with one or both sides below best enabled */
|
|
Packit |
857059 |
uint32 NumOmittedHFILinks; /* links quarantined or left in Init */
|
|
Packit |
857059 |
uint32 NumOmittedISLs; /* links quarantined or left in Init */
|
|
Packit |
857059 |
uint32 rsvd5[92];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_FABRICINFO_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_DG_NAME 64
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* DeviceGroupNameRecord
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint8 DeviceGroupName[MAX_DG_NAME]; /* Must be \0 terminated. */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_DEVICE_GROUP_NAME_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_DEVICE_GROUP_COMPONENTMASK_LID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_DEVICE_GROUP_COMPONENTMASK_PORT 0x0000000000000002ull
|
|
Packit |
857059 |
/* reserved field 0x0000000000000004ull */
|
|
Packit |
857059 |
#define STL_DEVICE_GROUP_COMPONENTMASK_DGNAME 0x0000000000000008ull
|
|
Packit |
857059 |
#define STL_DEVICE_GROUP_COMPONENTMASK_GUID 0x0000000000000010ull
|
|
Packit |
857059 |
#define STL_DEVICE_GROUP_COMPONENTMASK_NODEDESC 0x0000000000000020ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* DeviceGroupMemberRecord
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 Port;
|
|
Packit |
857059 |
uint8 Reserved1[3];
|
|
Packit |
857059 |
uint8 DeviceGroupName[MAX_DG_NAME]; /* Must be \0 terminated. */
|
|
Packit |
857059 |
uint64 GUID;
|
|
Packit |
857059 |
STL_NODE_DESCRIPTION NodeDescription;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_DEVICE_GROUP_MEMBER_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_LID 0x0000000000000001ull
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_NUMPORTS 0x0000000000000002ull
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_NODETYPE 0x0000000000000004ull
|
|
Packit |
857059 |
/* reserved field 0x0000000000000008ull */
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_PORTSTATEMASKACT 0x0000000000000010ull
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_PORTSTATEMASKETH 0x0000000000000020ull
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_GUID 0x0000000000000040ull
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_SYSIMAGEGUID 0x0000000000000080ull
|
|
Packit |
857059 |
#define STL_DEVICE_TREE_COMPONENTMASK_NODEDESC 0x0000000000000100ull
|
|
Packit |
857059 |
/* reserved field 0x0000000000000200ull */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* DeviceTreeMemberRecord
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID LID;
|
|
Packit |
857059 |
uint8 NumPorts;
|
|
Packit |
857059 |
uint8 NodeType;
|
|
Packit |
857059 |
uint8 Reserved1[2];
|
|
Packit |
857059 |
STL_PORTMASK portMaskAct[STL_MAX_PORTMASK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_PORTMASK portMaskReserved[STL_MAX_PORTMASK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_PORTMASK portMaskPortLinkMode[STL_MAX_PORTMASK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 GUID;
|
|
Packit |
857059 |
uint64 SystemImageGUID;
|
|
Packit |
857059 |
STL_NODE_DESCRIPTION NodeDescription;
|
|
Packit |
857059 |
uint64 Reserved2[4];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_DEVICE_TREE_MEMBER_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SwitchCost Record
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_SWITCH_COST_NUM_ENTRIES 64
|
|
Packit |
857059 |
typedef struct _STL_SWITCH_COST {
|
|
Packit |
857059 |
STL_LID DLID;
|
|
Packit |
857059 |
uint16 value;
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_COST;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_SWITCH_COST_RECORD {
|
|
Packit |
857059 |
STL_LID SLID;
|
|
Packit |
857059 |
STL_SWITCH_COST Cost[STL_SWITCH_COST_NUM_ENTRIES];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_COST_RECORD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SWITCH_COST_REC_COMP_SLID 0x0000000000000001ull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#if defined (__cplusplus)
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
#endif // __STL_SA_H__
|