|
Packit |
857059 |
/* BEGIN_ICS_COPYRIGHT7 ****************************************
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Copyright (c) 2015-2018, 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 |
#ifndef __IBA_STL_SM_TYPES_H__
|
|
Packit |
857059 |
#define __IBA_STL_SM_TYPES_H__
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include "iba/stl_types.h"
|
|
Packit |
857059 |
#include "iba/ib_sm_types.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 |
/*
|
|
Packit |
857059 |
* Defines
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_SM_CLASS_VERSION 0x80 /* Subnet Management */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* SMP Attributes */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_NODE_DESCRIPTION 0x0010 /* Node Description */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_NODE_INFO 0x0011 /* Node Information */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SWITCH_INFO 0x0012 /* Switch Information */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_PORT_INFO 0x0015 /* Port Information */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_PART_TABLE 0x0016 /* Partition Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SL_SC_MAPPING_TABLE 0x0017 /* Service Level to */
|
|
Packit |
857059 |
/* Service Channel Mapping Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_VL_ARBITRATION 0x0018 /* Lists of VL Arbitration Weights */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_LINEAR_FWD_TABLE 0x0019 /* Linear Forwarding Table */
|
|
Packit |
857059 |
// reserved 0x001A /* (was) Random Forwarding Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_MCAST_FWD_TABLE 0x001B /* Multicast Forwarding Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SM_INFO 0x0020 /* Subnet Manager Information */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_LED_INFO 0x0031 /* Turn on/off beaconing LED */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_CABLE_INFO 0x0032 /* Cable Information */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_AGGREGATE 0x0080 /* Aggregate */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SC_SC_MAPPING_TABLE 0x0081 /* Service Channel to */
|
|
Packit |
857059 |
/* Service Channel Mapping Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SC_SL_MAPPING_TABLE 0x0082 /* Service Channel to */
|
|
Packit |
857059 |
/* Service Level Mapping Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SC_VLR_MAPPING_TABLE 0x0083 /* Service Channel to Virtual */
|
|
Packit |
857059 |
/* Lane Receive Mapping Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SC_VLT_MAPPING_TABLE 0x0084 /* Service Channel to Virtual */
|
|
Packit |
857059 |
/* Lane Transmit Mapping Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SC_VLNT_MAPPING_TABLE 0x0085 /* Service Channel to Virtual */
|
|
Packit |
857059 |
/* Lane Credit Return Mapping Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_PORT_STATE_INFO 0x0087 /* Port State Information */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_PORT_GROUP_FWD_TABLE 0x0088 /* Adaptive Routing Port Group Forwarding Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_PORT_GROUP_TABLE 0x0089 /* Adaptive Routing Port Group Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_BUFFER_CONTROL_TABLE 0x008A /* Buffer Control Table */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_CONGESTION_INFO 0x008B /* Congestion Information */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SWITCH_CONGESTION_LOG 0x008C /* Congestion Log */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SWITCH_CONGESTION_SETTING 0x008D /* Switch Congestion Setting */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SWITCH_PORT_CONGESTION_SETTING 0x008E /* Switch Congestion Setting */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_HFI_CONGESTION_LOG 0x008F /* Congestion Log */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_HFI_CONGESTION_SETTING 0x0090 /* HFI Congestion Setting */
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_HFI_CONGESTION_CONTROL_TABLE 0x0091 /* HFI Congestion Control Table */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MCLASS_ATTRIB_ID_SC_SC_MULTI_SET 0x0094 /* Service Channel to Service */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* SMP Attribute Modifiers */
|
|
Packit |
857059 |
#define STL_SM_CONF_START_ATTR_MOD 0x00000200 /* PortInfo & PortStateInfo Attr Mod Flag */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* *************************************************************************
|
|
Packit |
857059 |
* SMPs
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* SMP Fields (LID Routed/Directed Route) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MAX_PAYLOAD_SMP_DR 1872 /* Max size of DR SMP payload */
|
|
Packit |
857059 |
#define STL_MAX_PAYLOAD_SMP_LR 2016 /* Max size of LR SMP payload */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MIN_SMP_DR_MAD (STL_MAD_BLOCK_SIZE - STL_MAX_PAYLOAD_SMP_DR)
|
|
Packit |
857059 |
#define STL_MIN_SMP_LR_MAD (STL_MAD_BLOCK_SIZE - STL_MAX_PAYLOAD_SMP_LR)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
MAD_COMMON common;
|
|
Packit |
857059 |
uint64 M_Key; /* A 64 bit key, */
|
|
Packit |
857059 |
/* employed for SM authentication */
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
struct _STL_LIDRouted {
|
|
Packit |
857059 |
uint8 SMPData[STL_MAX_PAYLOAD_SMP_LR]; /* Up to 'MAX' byte field of SMP */
|
|
Packit |
857059 |
/* data used to contain the */
|
|
Packit |
857059 |
/* method's attribute */
|
|
Packit |
857059 |
} LIDRouted;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct _STL_DirectedRoute {
|
|
Packit |
857059 |
STL_LID DrSLID; /* Directed route source LID */
|
|
Packit |
857059 |
STL_LID DrDLID; /* Directed route destination LID */
|
|
Packit |
857059 |
uint8 InitPath[64]; /* 64-byte field containing the initial */
|
|
Packit |
857059 |
/* directed path */
|
|
Packit |
857059 |
uint8 RetPath[64]; /* 64-byte field containing the */
|
|
Packit |
857059 |
/* returning directed path */
|
|
Packit |
857059 |
uint8 Reserved2[8]; /* For the purpose of aligning the Data */
|
|
Packit |
857059 |
/* field on a 16-byte boundary */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 SMPData[STL_MAX_PAYLOAD_SMP_DR]; /* Up to 'MAX' byte field of SMP */
|
|
Packit |
857059 |
/* data used to contain the */
|
|
Packit |
857059 |
/* method's attribute */
|
|
Packit |
857059 |
} DirectedRoute;
|
|
Packit |
857059 |
}SmpExt;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SMP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* **************************************************************************
|
|
Packit |
857059 |
* Attribute specific SMP Packet Formats
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* In the attributes which follow member fields are marked (where appropriate)
|
|
Packit |
857059 |
* with usage information as: 'AccessType/NodeType/IB-Only'. AccessType
|
|
Packit |
857059 |
* refers to how members can be accessed; NodeType refers to which node
|
|
Packit |
857059 |
* types the member applies; IB-Only refers to members which have been
|
|
Packit |
857059 |
* deprecated for STL use but retained to report information about IB nodes.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* AccessType: Read Write ('RW'), Read Only ('RO')
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* NodeType: HFI ('H'), External Switch Port ('S'), Base Switch Port 0 ('P'),
|
|
Packit |
857059 |
* Enhanced Switch Port 0 ('E'). NodeType is shown as a 4-character string
|
|
Packit |
857059 |
* with each character representing (in positional order) a node type 'HSPE'.
|
|
Packit |
857059 |
* If a node type is not applicable for a member, its character position is
|
|
Packit |
857059 |
* shown as '-' (ex. 'H-PE').
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Power-On-Default values are shown as 'POD: xxx'
|
|
Packit |
857059 |
* Link-Up-Default values are shown as 'LUD: xxx'
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Member fields which require a link bounce for new values to become effective
|
|
Packit |
857059 |
* are marked 'LinkBounce'
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SMA Notices/Traps (Data field for IB_NOTICE)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Trap Numbers */
|
|
Packit |
857059 |
#define STL_TRAP_GID_NOW_IN_SERVICE 0x40
|
|
Packit |
857059 |
#define STL_TRAP_GID_OUT_OF_SERVICE 0x41
|
|
Packit |
857059 |
#define STL_TRAP_ADD_MULTICAST_GROUP 0x42
|
|
Packit |
857059 |
#define STL_TRAP_DEL_MULTICAST_GROUP 0x43
|
|
Packit |
857059 |
#define STL_TRAP_LINK_PORT_CHANGE_STATE 0x80
|
|
Packit |
857059 |
#define STL_TRAP_LINK_INTEGRITY 0x81
|
|
Packit |
857059 |
#define STL_TRAP_BUFFER_OVERRUN 0x82
|
|
Packit |
857059 |
#define STL_TRAP_FLOW_WATCHDOG 0x83
|
|
Packit |
857059 |
#define STL_TRAP_CHANGE_CAPABILITY 0x90
|
|
Packit |
857059 |
#define STL_TRAP_CHANGE_SYSGUID 0x91
|
|
Packit |
857059 |
#define STL_TRAP_BAD_M_KEY 0x100
|
|
Packit |
857059 |
#define STL_TRAP_BAD_P_KEY 0x101
|
|
Packit |
857059 |
#define STL_TRAP_BAD_Q_KEY 0x102
|
|
Packit |
857059 |
#define STL_TRAP_SWITCH_BAD_PKEY 0x103
|
|
Packit |
857059 |
#define STL_SMA_TRAP_LINK_WIDTH 0x800
|
|
Packit |
857059 |
#define STL_TRAP_COST_MATRIX_CHANGE 0x801
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
IB_GID Gid;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_GID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_TRAP_GID_NOW_IN_SERVICE_DATA STL_TRAP_GID
|
|
Packit |
857059 |
#define STL_TRAP_GID_OUT_OF_SERVICE_DATA STL_TRAP_GID
|
|
Packit |
857059 |
#define STL_TRAP_GID_ADD_MULTICAST_GROUP_DATA STL_TRAP_GID
|
|
Packit |
857059 |
#define STL_TRAP_GID_DEL_MULTICAST_GROUP_DATA STL_TRAP_GID
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID Lid;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_PORT_CHANGE_STATE_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID Lid;
|
|
Packit |
857059 |
uint8 Port;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_LINK;
|
|
Packit |
857059 |
#define STL_TRAP_LINK_INTEGRITY_DATA STL_TRAP_LINK
|
|
Packit |
857059 |
#define STL_TRAP_BUFFER_OVERRUN_DATA STL_TRAP_LINK
|
|
Packit |
857059 |
#define STL_TRAP_FLOW_WATCHDOG_DATA STL_TRAP_LINK
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef STL_FIELDUNION16(STL_CAPABILITY_MASK, 32,
|
|
Packit |
857059 |
CmReserved6: 1, /* shall be zero */
|
|
Packit |
857059 |
CmReserved24: 2, /* shall be zero */
|
|
Packit |
857059 |
CmReserved5: 2, /* shall be zero */
|
|
Packit |
857059 |
CmReserved23: 4, /* shall be zero */
|
|
Packit |
857059 |
IsCapabilityMaskNoticeSupported: 1,
|
|
Packit |
857059 |
CmReserved22: 1, /* shall be zero */
|
|
Packit |
857059 |
IsVendorClassSupported: 1,
|
|
Packit |
857059 |
IsDeviceManagementSupported: 1,
|
|
Packit |
857059 |
CmReserved21: 2, /* shall be zero */
|
|
Packit |
857059 |
IsConnectionManagementSupported: 1,
|
|
Packit |
857059 |
CmReserved25: 10, /* shall be zero */
|
|
Packit |
857059 |
IsAutomaticMigrationSupported: 1,
|
|
Packit |
857059 |
CmReserved2: 1, /* shall be zero */
|
|
Packit |
857059 |
CmReserved20: 2,
|
|
Packit |
857059 |
IsSM: 1,
|
|
Packit |
857059 |
CmReserved1: 1 ); /* shall be zero */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Capability Mask 3 - a bit set to 1 for affirmation of supported capability
|
|
Packit |
857059 |
* by a given port
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef STL_FIELDUNION15(STL_CAPABILITY_MASK3, 16,
|
|
Packit |
857059 |
CmReserved0: 1,
|
|
Packit |
857059 |
CmReserved1: 1,
|
|
Packit |
857059 |
CmReserved2: 1,
|
|
Packit |
857059 |
IsMAXLIDSupported: 1, /* RO/H--- Does the HFI support the MAX */
|
|
Packit |
857059 |
/* LID being configured */
|
|
Packit |
857059 |
CmReserved3: 1,
|
|
Packit |
857059 |
CmReserved4: 1,
|
|
Packit |
857059 |
VLSchedulingConfig: 2, /* RO/H-PE VL Arbitration */
|
|
Packit |
857059 |
/* see STL_VL_SCHEDULING_MODE */
|
|
Packit |
857059 |
/* Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsSnoopSupported: 1, /* RO/--PE Packet snoop */
|
|
Packit |
857059 |
/* Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsAsyncSC2VLSupported: 1, /* RO/H-PE Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsAddrRangeConfigSupported: 1, /* RO/H-PE Can addr range for Multicast */
|
|
Packit |
857059 |
/* and Collectives be configured */
|
|
Packit |
857059 |
/* Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsPassThroughSupported: 1, /* RO/--PE Packet pass through */
|
|
Packit |
857059 |
/* Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsSharedSpaceSupported: 1, /* RO/H-PE Shared Space */
|
|
Packit |
857059 |
/* Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsSharedGroupSpaceSupported:1, /* RO/H-PE Shared Space */
|
|
Packit |
857059 |
/* Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsVLMarkerSupported: 1, /* RO/H-PE VL Marker */
|
|
Packit |
857059 |
/* Port 0 indicates whole switch */
|
|
Packit |
857059 |
IsVLrSupported: 1 ); /* RO/H-PE SC->VL_r table */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef enum {
|
|
Packit |
857059 |
VL_SCHED_MODE_VLARB = 0, /* VL Arbitration Tables */
|
|
Packit |
857059 |
VL_SCHED_MODE_AUTOMATIC = 2, /* harcoded, not configurable */
|
|
Packit |
857059 |
/* reserved 3 */
|
|
Packit |
857059 |
} STL_VL_SCHEDULING_MODE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID Lid;
|
|
Packit |
857059 |
STL_CAPABILITY_MASK CapabilityMask;
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
STL_CAPABILITY_MASK3 CapabilityMask3;
|
|
Packit |
857059 |
STL_FIELDUNION5(u,16,
|
|
Packit |
857059 |
Reserved:12,
|
|
Packit |
857059 |
LinkWidthDowngradeEnabledChange:1,
|
|
Packit |
857059 |
LinkSpeedEnabledChange:1,
|
|
Packit |
857059 |
LinkWidthEnabledChange:1,
|
|
Packit |
857059 |
NodeDescriptionChange:1);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_CHANGE_CAPABILITY_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint64 SystemImageGuid;
|
|
Packit |
857059 |
STL_LID Lid;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_SYSGUID_CHANGE_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID Lid;
|
|
Packit |
857059 |
STL_LID DRSLid;
|
|
Packit |
857059 |
/* 8 bytes */
|
|
Packit |
857059 |
uint8 Method;
|
|
Packit |
857059 |
STL_FIELDUNION3(u,8,
|
|
Packit |
857059 |
DRNotice:1,
|
|
Packit |
857059 |
DRPathTruncated:1,
|
|
Packit |
857059 |
DRHopCount:6);
|
|
Packit |
857059 |
uint16 AttributeID;
|
|
Packit |
857059 |
/* 12 bytes */
|
|
Packit |
857059 |
uint32 AttributeModifier;
|
|
Packit |
857059 |
/* 16 bytes */
|
|
Packit |
857059 |
uint64 MKey;
|
|
Packit |
857059 |
/* 24 bytes */
|
|
Packit |
857059 |
uint8 DRReturnPath[30]; // We can make this longer....
|
|
Packit |
857059 |
/* 54 bytes */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_BAD_M_KEY_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID Lid1;
|
|
Packit |
857059 |
STL_LID Lid2;
|
|
Packit |
857059 |
/* 8 bytes */
|
|
Packit |
857059 |
uint32 Key; // pkey or qkey
|
|
Packit |
857059 |
STL_FIELDUNION2(u,8,
|
|
Packit |
857059 |
SL:5,
|
|
Packit |
857059 |
Reserved:3);
|
|
Packit |
857059 |
uint8 Reserved[3];
|
|
Packit |
857059 |
/* 16 bytes */
|
|
Packit |
857059 |
IB_GID Gid1;
|
|
Packit |
857059 |
/* 32 bytes */
|
|
Packit |
857059 |
IB_GID Gid2;
|
|
Packit |
857059 |
/* 48 bytes */
|
|
Packit |
857059 |
STL_FIELDUNION2(qp1,32,
|
|
Packit |
857059 |
Reserved:8,
|
|
Packit |
857059 |
qp:24);
|
|
Packit |
857059 |
/* 52 bytes */
|
|
Packit |
857059 |
STL_FIELDUNION2(qp2,32,
|
|
Packit |
857059 |
Reserved:8,
|
|
Packit |
857059 |
qp:24);
|
|
Packit |
857059 |
/* 56 bytes */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_BAD_KEY_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_TRAP_BAD_P_KEY_DATA STL_TRAP_BAD_KEY_DATA
|
|
Packit |
857059 |
#define STL_TRAP_BAD_Q_KEY_DATA STL_TRAP_BAD_KEY_DATA
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_FIELDUNION9(u,16,
|
|
Packit |
857059 |
Lid1:1, Lid2:1, PKey:1, SL:1,
|
|
Packit |
857059 |
QP1:1, QP2:1, Gid1:1, Gid2:1,
|
|
Packit |
857059 |
Reserved:8);
|
|
Packit |
857059 |
uint16 PKey;
|
|
Packit |
857059 |
/* 4 bytes */
|
|
Packit |
857059 |
STL_LID Lid1;
|
|
Packit |
857059 |
STL_LID Lid2;
|
|
Packit |
857059 |
STL_FIELDUNION2(u2,8,
|
|
Packit |
857059 |
SL:5,
|
|
Packit |
857059 |
Reserved:3);
|
|
Packit |
857059 |
uint8 Reserved[3];
|
|
Packit |
857059 |
/* 16 bytes */
|
|
Packit |
857059 |
IB_GID Gid1;
|
|
Packit |
857059 |
/* 32 bytes */
|
|
Packit |
857059 |
IB_GID Gid2;
|
|
Packit |
857059 |
/* 48 bytes */
|
|
Packit |
857059 |
STL_FIELDUNION2(qp1,32,
|
|
Packit |
857059 |
qp:24,
|
|
Packit |
857059 |
Reserved:8);
|
|
Packit |
857059 |
/* 52 bytes */
|
|
Packit |
857059 |
STL_FIELDUNION2(qp2,32,
|
|
Packit |
857059 |
qp:24,
|
|
Packit |
857059 |
Reserved:8);
|
|
Packit |
857059 |
/* 56 bytes */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_TRAP_SWITCH_BAD_PKEY_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* LinkWidth of at least one port of switch at <ReportingLID> has changed */
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID ReportingLID;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SMA_TRAP_DATA_LINK_WIDTH;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* NodeInfo
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 BaseVersion; /* RO Supported MAD Base Version */
|
|
Packit |
857059 |
uint8 ClassVersion; /* RO Supported Subnet Management Class */
|
|
Packit |
857059 |
/* (SMP) Version */
|
|
Packit |
857059 |
uint8 NodeType;
|
|
Packit |
857059 |
uint8 NumPorts; /* RO Number of link ports on this node */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 SystemImageGUID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 NodeGUID; /* RO GUID of the HFI or switch */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 PortGUID; /* RO GUID of this end port itself */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 PartitionCap; /* RO Number of entries in the Partition Table */
|
|
Packit |
857059 |
/* for end ports */
|
|
Packit |
857059 |
uint16 DeviceID; /* RO Device ID information as assigned by */
|
|
Packit |
857059 |
/* device manufacturer */
|
|
Packit |
857059 |
uint32 Revision; /* RO Device revision, assigned by manufacturer */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION2(u1, 32,
|
|
Packit |
857059 |
LocalPortNum: 8, /* RO The link port number this */
|
|
Packit |
857059 |
/* SMP came on in */
|
|
Packit |
857059 |
VendorID: 24); /* RO Device vendor, per IEEE */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_NODE_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* NodeDescription
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NODE_DESCRIPTION_ARRAY_SIZE 64
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Node String is an array of UTF-8 character that */
|
|
Packit |
857059 |
/* describes the node in text format */
|
|
Packit |
857059 |
/* Note that this string MUST BE NULL TERMINATED! */
|
|
Packit |
857059 |
uint8 NodeString[STL_NODE_DESCRIPTION_ARRAY_SIZE]; /* RO */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_NODE_DESCRIPTION;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SwitchInfo
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Routing Modes */
|
|
Packit |
857059 |
#define STL_ROUTE_NOP 0 /* No change */
|
|
Packit |
857059 |
#define STL_ROUTE_LINEAR 1 /* Linear routing algorithm */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint16 AsReg16;
|
|
Packit |
857059 |
struct { IB_BITFIELD5( uint16,
|
|
Packit |
857059 |
Reserved: 12,
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IsExtendedSCSCSupported: 1, /* RO Extended SCSC */
|
|
Packit |
857059 |
IsAddrRangeConfigSupported: 1, /* Can addr range for Multicast */
|
|
Packit |
857059 |
/* and Collectives be configured */
|
|
Packit |
857059 |
Reserved2: 1,
|
|
Packit |
857059 |
IsAdaptiveRoutingSupported: 1 )
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} SWITCH_CAPABILITY_MASK;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint16 AsReg16;
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} CAPABILITY_MASK_COLLECTIVES;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint32 LinearFDBCap; /* RO Number of entries supported in the */
|
|
Packit |
857059 |
/* Linear Unicast Forwarding Database */
|
|
Packit |
857059 |
uint32 PortGroupFDBCap; /* RO Number of entries supported in the */
|
|
Packit |
857059 |
/* Port Group Forwarding Database */
|
|
Packit |
857059 |
uint32 MulticastFDBCap; /* RO Number of entries supported in the */
|
|
Packit |
857059 |
/* Multicast Forwarding Database */
|
|
Packit |
857059 |
STL_LID LinearFDBTop; /* RW Indicates the maximum DLID programmed */
|
|
Packit |
857059 |
/* in the routing tables */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
STL_LID MulticastFDBTop; /* RW Indicates the top of the Multicast */
|
|
Packit |
857059 |
/* Forwarding Table */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
uint32 CollectiveCap; /* RO Number of entries supported in the */
|
|
Packit |
857059 |
/* Collective Table */
|
|
Packit |
857059 |
/* Reserved in Gen1 */
|
|
Packit |
857059 |
STL_LID CollectiveTop; /* RW Indicates the top of the Collective Table */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
/* Reserved in Gen1 */
|
|
Packit |
857059 |
uint32 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_IPV6_IP_ADDR IPAddrIPV6; /* RO IP Address - IPV6 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_IPV4_IP_ADDR IPAddrIPV4; /* RO IP Address - IPV4 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved26;
|
|
Packit |
857059 |
uint32 Reserved27;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved28;
|
|
Packit |
857059 |
uint8 Reserved21;
|
|
Packit |
857059 |
uint8 Reserved22;
|
|
Packit |
857059 |
uint8 Reserved23;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD3( uint8,
|
|
Packit |
857059 |
LifeTimeValue: 5, /* LifeTimeValue */
|
|
Packit |
857059 |
PortStateChange: 1, /* RW This bit is set to zero by a */
|
|
Packit |
857059 |
/* management write */
|
|
Packit |
857059 |
Reserved20: 2 )
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} u1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved24;
|
|
Packit |
857059 |
uint16 PartitionEnforcementCap; /* RO Specifies the number of entries in the */
|
|
Packit |
857059 |
/* partition enforcement table */
|
|
Packit |
857059 |
uint8 PortGroupCap; /* RO Specifies the maximum number of */
|
|
Packit |
857059 |
/* entries in the port group table */
|
|
Packit |
857059 |
uint8 PortGroupTop; /* RW The current number of entries in */
|
|
Packit |
857059 |
/* port group table. */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* RW (see STL_ROUTING_MODE) */
|
|
Packit |
857059 |
uint8 Supported; /* Supported routing mode */
|
|
Packit |
857059 |
uint8 Enabled; /* Enabled routing mode */
|
|
Packit |
857059 |
} RoutingMode;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD6( uint8,
|
|
Packit |
857059 |
Reserved20: 1,
|
|
Packit |
857059 |
Reserved21: 1,
|
|
Packit |
857059 |
Reserved22: 1,
|
|
Packit |
857059 |
Reserved23: 1,
|
|
Packit |
857059 |
EnhancedPort0: 1,
|
|
Packit |
857059 |
Reserved: 3 )
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} u2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD3( uint8, /* Multicast/Collectives masks */
|
|
Packit |
857059 |
Reserved: 2,
|
|
Packit |
857059 |
CollectiveMask: 3, /* RW Num of additional upper 1s in */
|
|
Packit |
857059 |
/* Collective address */
|
|
Packit |
857059 |
/* POD: 1 */
|
|
Packit |
857059 |
/* Reserved in Gen1 */
|
|
Packit |
857059 |
MulticastMask: 3 ) /* RW Num of upper 1s in Multicast address */
|
|
Packit |
857059 |
/* POD: 4 */
|
|
Packit |
857059 |
} MultiCollectMask;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION8(AdaptiveRouting, 16,
|
|
Packit |
857059 |
Enable: 1, /* RW Enable/Disable AR */
|
|
Packit |
857059 |
Pause: 1, /* RW Pause AR when true */
|
|
Packit |
857059 |
Algorithm: 3, /* RW 0 = Random, 1 = Greedy, */
|
|
Packit |
857059 |
/* 2 = Random Greedy. */
|
|
Packit |
857059 |
Frequency: 3, /* RW 0-7. Value expands to 2^F*64ms. */
|
|
Packit |
857059 |
LostRoutesOnly: 1, /* RW. Indicates that AR should only be done */
|
|
Packit |
857059 |
/* for failed links. */
|
|
Packit |
857059 |
Threshold: 3, /* CCA-level at which switch uses AR. */
|
|
Packit |
857059 |
Reserved2: 1,
|
|
Packit |
857059 |
Reserved: 3);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
SWITCH_CAPABILITY_MASK CapabilityMask; /* RO */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
CAPABILITY_MASK_COLLECTIVES CapabilityMaskCollectives; /* RW */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* PortInfo
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 0000 00SA PPPP PPPP
|
|
Packit |
857059 |
* N: Number of ports
|
|
Packit |
857059 |
* S=1: Start of SM configuration
|
|
Packit |
857059 |
* A=1: All ports starting at P (Set only)
|
|
Packit |
857059 |
* P: Port number (0 - management port, switches only;
|
|
Packit |
857059 |
* for HFIs P is ignored and the attribute is
|
|
Packit |
857059 |
* applicable only to the port that receives the packet)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL_PORT_STATE values continue from IB_PORT_STATE */
|
|
Packit |
857059 |
/* reserved 5-6 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL_PORT_PHYS_STATE values continue from IB_PORT_PHYS_STATE */
|
|
Packit |
857059 |
/* reserved 7-8 */
|
|
Packit |
857059 |
#define STL_PORT_PHYS_OFFLINE 9 /* offline */
|
|
Packit |
857059 |
/* reserved 10 */
|
|
Packit |
857059 |
#define STL_PORT_PHYS_TEST 11 /* test */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Offline Disabled Reason, indicated as follows: */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_NONE 0 /* Nop/No specified reason */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_DISCONNECTED 1 /* not connected in design*/
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_LOCAL_MEDIA_NOT_INSTALLED 2 /* Module not installed
|
|
Packit |
857059 |
* in connector (QSFP,
|
|
Packit |
857059 |
* SiPh_x16, etc) */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_NOT_INSTALLED 3 /* internal link not
|
|
Packit |
857059 |
* installed, neighbor FRU
|
|
Packit |
857059 |
* absent */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_CHASSIS_CONFIG 4 /* Chassis mgmt forced
|
|
Packit |
857059 |
* offline due to incompat
|
|
Packit |
857059 |
* or absent neighbor FRU */
|
|
Packit |
857059 |
/* reserved 5 */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_END_TO_END_NOT_INSTALLED 6 /* local module present
|
|
Packit |
857059 |
* but unable to detect
|
|
Packit |
857059 |
* end to optical link */
|
|
Packit |
857059 |
/* reserved 7 */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_POWER_POLICY 8 /* enabling port would
|
|
Packit |
857059 |
* exceed power policy */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_LINKSPEED_POLICY 9 /* enabled speed unable to
|
|
Packit |
857059 |
* be met due to persistent
|
|
Packit |
857059 |
* cause */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_LINKWIDTH_POLICY 10 /* enabled width unable to
|
|
Packit |
857059 |
* be met due to persistent
|
|
Packit |
857059 |
* cause */
|
|
Packit |
857059 |
/* reserved 11 */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_SWITCH_MGMT 12 /* user disabled via switch
|
|
Packit |
857059 |
* mangement interface
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_SMA_DISABLED 13 /* user disabled via SMA
|
|
Packit |
857059 |
* Set to phys port state
|
|
Packit |
857059 |
* disabled */
|
|
Packit |
857059 |
/* reserved 14 */
|
|
Packit |
857059 |
#define STL_OFFDIS_REASON_TRANSIENT 15 /* Transient offline as part
|
|
Packit |
857059 |
* of sync with neighbor
|
|
Packit |
857059 |
* phys port state machine*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Link Init Reason, indicated as follows: */
|
|
Packit |
857059 |
#define STL_LINKINIT_REASON_NOP 0 /* None on Get/no change on Set */
|
|
Packit |
857059 |
#define STL_LINKINIT_REASON_LINKUP 1 /* link just came up */
|
|
Packit |
857059 |
/* values from 2-7 will not be altered by transistions from Polling to Linkup/Init */
|
|
Packit |
857059 |
/* these can represent persistent reasons why the SM is ignoring a link */
|
|
Packit |
857059 |
#define STL_LINKINIT_REASON_FLAPPING 2 /* FM ignoring flapping port */
|
|
Packit |
857059 |
/* reserved 3-7 */
|
|
Packit |
857059 |
/* values from 8-15 will be altered by transistions from Polling to LinkUp/Init */
|
|
Packit |
857059 |
/* these can represent transient reasons why the SM is ignoring a link */
|
|
Packit |
857059 |
#define STL_LINKINIT_OUTSIDE_POLICY 8 /* FM ignoring, width or speed outside FM configured policy */
|
|
Packit |
857059 |
#define STL_LINKINIT_QUARANTINED 9 /* FM ignoring, quarantined for security */
|
|
Packit |
857059 |
#define STL_LINKINIT_INSUFIC_CAPABILITY 10 /* FM ignoring, link has insufficient capabilities*/
|
|
Packit |
857059 |
/* for FM configuration (eg. MTU too small etc) */
|
|
Packit |
857059 |
/* reserved 11-15 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* these correspond to locally initiated link bounce due to PortErrorAction */
|
|
Packit |
857059 |
/* See Section 9.8.3, “Error Counters”, Table 9-23 */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_NONE 0 /* No specified reason */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_0 1
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_PKT_LEN 2
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_PKT_TOO_LONG 3
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_PKT_TOO_SHORT 4
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_SLID 5
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_DLID 6
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_L2 7
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_SC 8
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_8 9
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_MID_TAIL 10
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_10 11
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_PREEMPT_ERROR 12
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_PREEMPT_VL15 13
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_VL_MARKER 14
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_14 15
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_15 16
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_HEAD_DIST 17
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_TAIL_DIST 18
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_CTRL_DIST 19
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_CREDIT_ACK 20
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_UNSUPPORTED_VL_MARKER 21
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_PREEMPT 22
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_BAD_CONTROL_FLIT 23
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_EXCEED_MULTICAST_LIMIT 24
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_24 25
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_25 26
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_26 27
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_27 28
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_28 29
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_29 30
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_RCV_ERROR_30 31
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_EXCESSIVE_BUFFER_OVERRUN 32
|
|
Packit |
857059 |
/* the next two correspond to locally initiated intentional link down */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_UNKNOWN 33
|
|
Packit |
857059 |
/* code 33 is used for locally initiated link downs which don't */
|
|
Packit |
857059 |
/* match any of these reason code */
|
|
Packit |
857059 |
/* reserved 34 */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_REBOOT 35 /* reboot or device reset */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_NEIGHBOR_UNKNOWN 36
|
|
Packit |
857059 |
/* This indicates the link down was not locally initiated */
|
|
Packit |
857059 |
/* but no LinkGoingDown idle flit was received */
|
|
Packit |
857059 |
/* See Section 6.3.11.1.2, "PlannedDownInform Substate" */
|
|
Packit |
857059 |
/* reserved 37 - 38 */
|
|
Packit |
857059 |
/*These correspond to locally initiated intentional link down */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_FM_BOUNCE 39 /* FM initiated bounce */
|
|
Packit |
857059 |
/* by transitioning from linkup to Polling */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_SPEED_POLICY 40 /* link outside speed policy */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_WIDTH_POLICY 41 /* link downgrade outside */
|
|
Packit |
857059 |
/* LinkWidthDowngrade.Enabled policy */
|
|
Packit |
857059 |
/* reserved 42-47 */
|
|
Packit |
857059 |
/* these correspond to locally initiated link down via transition to Offline or Disabled */
|
|
Packit |
857059 |
/* See Section 6.6.2, “Offline/Disabled Reasons”, Table 6-38*/
|
|
Packit |
857059 |
/* All values in that section are provided for here, although in practice a few */
|
|
Packit |
857059 |
/* such as 49 (Disconnected) represent links which can never reach LinkUp and hence */
|
|
Packit |
857059 |
/* could not have a transition to LinkDown */
|
|
Packit |
857059 |
/* reserved 48 */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_DISCONNECTED 49
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_LOCAL_MEDIA_NOT_INSTALLED 50
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_NOT_INSTALLED 51
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_CHASSIS_CONFIG 52
|
|
Packit |
857059 |
/* reserved 53 */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_END_TO_END_NOT_INSTALLED 54
|
|
Packit |
857059 |
/* reserved 55 */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_POWER_POLICY 56
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_LINKSPEED_POLICY 57
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_LINKWIDTH_POLICY 58
|
|
Packit |
857059 |
/* reserved 59 */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_SWITCH_MGMT 60
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_SMA_DISABLED 61
|
|
Packit |
857059 |
/* reserved 62 */
|
|
Packit |
857059 |
#define STL_LINKDOWN_REASON_TRANSIENT 63
|
|
Packit |
857059 |
/* reserved 64-255 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL PORT TYPE values imply cable info availabilty and format */
|
|
Packit |
857059 |
#define STL_PORT_TYPE_UNKNOWN 0
|
|
Packit |
857059 |
#define STL_PORT_TYPE_DISCONNECTED 1 /* the port is not currently usable � CableInfo not available */
|
|
Packit |
857059 |
#define STL_PORT_TYPE_FIXED 2 /* A fixed backplane port in a director class switch � All STL ASICS */
|
|
Packit |
857059 |
#define STL_PORT_TYPE_VARIABLE 3 /* A backplane port in a blade system � possibly mixed configuration */
|
|
Packit |
857059 |
#define STL_PORT_TYPE_STANDARD 4 /* implies a SFF-8636 defined format for CableInfo (QSFP) */
|
|
Packit |
857059 |
#define STL_PORT_TYPE_SI_PHOTONICS 5 /* A silicon photonics module �
|
|
Packit |
857059 |
* implies TBD defined format for CableInfo as defined by Intel SFO group */
|
|
Packit |
857059 |
/* 6 - 15 Reserved */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL NEIGHBOR NODE TYPE indicate whether the neighbor is an HFI or
|
|
Packit |
857059 |
* a switch. */
|
|
Packit |
857059 |
#define STL_NEIGH_NODE_TYPE_HFI 0 /* Gen 1 HFIs are considered "untrusted" */
|
|
Packit |
857059 |
#define STL_NEIGH_NODE_TYPE_SW 1 /* Gen 1 Switches are considered "trusted" */
|
|
Packit |
857059 |
/* Values 2 & 3 are reserved in Gen1. */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint32 AsReg32;
|
|
Packit |
857059 |
struct { IB_BITFIELD8( uint32, /* Port states */
|
|
Packit |
857059 |
Reserved: 9,
|
|
Packit |
857059 |
LEDEnabled: 1, /* RO/HS-- Set to 1 if the port LED is active. */
|
|
Packit |
857059 |
IsSMConfigurationStarted: 1, /* RO/HS-E - POD/LUD: 0 */
|
|
Packit |
857059 |
NeighborNormal: 1, /* RO/HS-- */
|
|
Packit |
857059 |
/* POD/LUD: 0 */
|
|
Packit |
857059 |
OfflineDisabledReason: 4, /* RO/HS-E Reason for Offline (see STL_OFFDIS_REASON_XXX) */
|
|
Packit |
857059 |
Reserved2: 8,
|
|
Packit |
857059 |
PortPhysicalState: 4, /* RW/HS-E Port Physical State (see STL_PORT_PHYS_XXX) */
|
|
Packit |
857059 |
PortState: 4 ) /* RW/HS-E Port State (see STL_PORT_XXX) */
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} STL_PORT_STATES;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8, /* RW/HS-E Neighbor MTU values per VL */
|
|
Packit |
857059 |
/* LUD: 2048 MTU for STL VL15 */
|
|
Packit |
857059 |
VL0_to_MTU: 4,
|
|
Packit |
857059 |
VL1_to_MTU: 4 )
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} STL_VL_TO_MTU;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_VL0_VL31 6
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Link speed, continued from IB_LINK_SPEED and indicated as follows:
|
|
Packit |
857059 |
* values are additive for Supported and Enabled fields
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_LINK_SPEED_NOP 0 /* LinkSpeed.Enabled: no change */
|
|
Packit |
857059 |
/* LinkSpeeed.Active: link is LinkDown*/
|
|
Packit |
857059 |
#define STL_LINK_SPEED_12_5G 0x0001 /* 12.5 Gbps */
|
|
Packit |
857059 |
#define STL_LINK_SPEED_25G 0x0002 /* 25.78125? Gbps (EDR) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Link width, continued from IB_LINK_WIDTH and indicated as follows:
|
|
Packit |
857059 |
* values are additive for Supported and Enabled fields
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_LINK_WIDTH_NOP 0 /* LinkWidth.Enabled: no changeon set (nop) */
|
|
Packit |
857059 |
/* LinkWidth.Active: link is LinkDown*/
|
|
Packit |
857059 |
/* LinkWidthDowngrade.Supported: unsupported */
|
|
Packit |
857059 |
/* LinkWidthDowngrade.Enable: disabled */
|
|
Packit |
857059 |
/* LinkWidthDowngrade.TxActive: link is LinkDown*/
|
|
Packit |
857059 |
/* LinkWidthDowngrade.RxActive: link is LinkDown */
|
|
Packit |
857059 |
#define STL_LINK_WIDTH_1X 0x0001
|
|
Packit |
857059 |
#define STL_LINK_WIDTH_2X 0x0002
|
|
Packit |
857059 |
#define STL_LINK_WIDTH_3X 0x0004
|
|
Packit |
857059 |
#define STL_LINK_WIDTH_4X 0x0008
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Port link mode, indicated as follows:
|
|
Packit |
857059 |
* values are additive for Supported and Enabled fields
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PORT_LINK_MODE_NOP 0 /* No change */
|
|
Packit |
857059 |
/* reserved 1 */
|
|
Packit |
857059 |
/* reserved 2 */
|
|
Packit |
857059 |
#define STL_PORT_LINK_MODE_STL 4 /* Port mode is STL */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Port link formats, indicated as follows:
|
|
Packit |
857059 |
* values are additive for Supported and Enabled fields
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PORT_PACKET_FORMAT_NOP 0 /* No change */
|
|
Packit |
857059 |
#define STL_PORT_PACKET_FORMAT_8B 1 /* Format 8B */
|
|
Packit |
857059 |
#define STL_PORT_PACKET_FORMAT_9B 2 /* Format 9B */
|
|
Packit |
857059 |
#define STL_PORT_PACKET_FORMAT_10B 4 /* Format 10B */
|
|
Packit |
857059 |
#define STL_PORT_PACKET_FORMAT_16B 8 /* Format 16B */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Port LTP CRC mode, indicated as follows:
|
|
Packit |
857059 |
* values are additive for Supported and Enabled fields
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PORT_LTP_CRC_MODE_NONE 0 /* No change */
|
|
Packit |
857059 |
#define STL_PORT_LTP_CRC_MODE_14 1 /* 14-bit LTP CRC mode (optional) */
|
|
Packit |
857059 |
#define STL_PORT_LTP_CRC_MODE_16 2 /* 16-bit LTP CRC mode */
|
|
Packit |
857059 |
#define STL_PORT_LTP_CRC_MODE_48 4 /* 48-bit LTP CRC mode (optional) */
|
|
Packit |
857059 |
#define STL_PORT_LTP_CRC_MODE_12_16_PER_LANE 8 /* 12/16-bit per lane LTP CRC mode */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Port Flit distance mode, indicated as follows:
|
|
Packit |
857059 |
* values are additive for Supported and Enabled fields
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PORT_FLIT_DISTANCE_MODE_NONE 0 /* No change */
|
|
Packit |
857059 |
#define STL_PORT_FLIT_DISTANCE_MODE_1 1 /* STL1 mode */
|
|
Packit |
857059 |
#define STL_PORT_FLIT_DISTANCE_MODE_2 2 /* STL2 mode */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL VL Scheduling mode, indicated as follows:
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_VL_SCHED_MODE_VLARB 0 /* Gen1 VLARB */
|
|
Packit |
857059 |
#define STL_VL_SCHED_MODE_AUTOMATIC 2 /* hardcoded, not configurable */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL Port Flit preemption limits of unlimited */
|
|
Packit |
857059 |
#define STL_PORT_PREEMPTION_LIMIT_NONE 255 /* Unlimited */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define BYTES_PER_LTP 128
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* NOTE - first-pass ordering of PortInfo members:
|
|
Packit |
857059 |
* 1 RW members before RO members;
|
|
Packit |
857059 |
* 2 Roughly prioritize RW and RO sections;
|
|
Packit |
857059 |
* 3 No separation of RO and RW members within sub-structures.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as NNNN NNNN 0000 0000 0000 000A PPPP PPPP
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* N = number of ports
|
|
Packit |
857059 |
* A = 1 - All ports starting at P
|
|
Packit |
857059 |
* P = port number
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_LID LID; /* RW/HSPE H-PE: base LID of this node */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
/* -S--: base LID of neighbor node */
|
|
Packit |
857059 |
/* POD/LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 FlowControlMask; /* RW/-S-- Flow control mask (1 bit per VL) */
|
|
Packit |
857059 |
/* POD/LUD: flow control enabled all VLs except VL15 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
uint8 PreemptCap; /* RO/HS-E size of Preempting VL Arbitration table */
|
|
Packit |
857059 |
/* only used when VLSchedulingConfig */
|
|
Packit |
857059 |
/* is VL_SCHED_MODE_VLARB, otherwise reserved */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Reserved: 3,
|
|
Packit |
857059 |
Cap: 5 ) /* RO/HS-E Virtual Lanes supported on this port */
|
|
Packit |
857059 |
} s2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 HighLimit; /* RW/HS-E Limit of high priority component of */
|
|
Packit |
857059 |
/* VL Arbitration table */
|
|
Packit |
857059 |
/* only used when VLSchedulingConfig */
|
|
Packit |
857059 |
/* is VL_SCHED_MODE_VLARB, otherwise reserved */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
uint16 PreemptingLimit; /* RW/HS-E Limit of preempt component of */
|
|
Packit |
857059 |
/* VL Arbitration table */
|
|
Packit |
857059 |
/* only used when VLSchedulingConfig */
|
|
Packit |
857059 |
/* is VL_SCHED_MODE_VLARB, otherwise reserved */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 ArbitrationHighCap; /* RO/HS-E VL Arbitration table cap */
|
|
Packit |
857059 |
/* only used when VLSchedulingConfig */
|
|
Packit |
857059 |
/* is VL_SCHED_MODE_VLARB, otherwise reserved */
|
|
Packit |
857059 |
};
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 ArbitrationLowCap; /* RO/HS-E VL Arbitration table cap */
|
|
Packit |
857059 |
/* only used when VLSchedulingConfig */
|
|
Packit |
857059 |
/* is VL_SCHED_MODE_VLARB, otherwise reserved */
|
|
Packit |
857059 |
} VL;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_PORT_STATES PortStates; /* Port states */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION2(PortPhysConfig,8,
|
|
Packit |
857059 |
Reserved:4, /* Reserved */
|
|
Packit |
857059 |
PortType:4); /* RO/HS-- PORT_TYPE */
|
|
Packit |
857059 |
/* Switch port 0 shall report Fixed */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD3( uint8, /* Multicast/Collectives masks */
|
|
Packit |
857059 |
Reserved: 2,
|
|
Packit |
857059 |
CollectiveMask: 3, /* RW/H--- Num of additional upper 1s in */
|
|
Packit |
857059 |
/* Collective address */
|
|
Packit |
857059 |
/* POD: 1 */
|
|
Packit |
857059 |
/* Reserved in Gen1 */
|
|
Packit |
857059 |
MulticastMask: 3 ) /* RW/H--- Num of upper 1s in Multicast address */
|
|
Packit |
857059 |
/* POD: 4 */
|
|
Packit |
857059 |
} MultiCollectMask;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD3( uint8,
|
|
Packit |
857059 |
M_KeyProtectBits: 2, /* RW/H-PE see mgmt key usage */
|
|
Packit |
857059 |
Reserved: 2, /* reserved, shall be zero */
|
|
Packit |
857059 |
LMC: 4 ) /* RW/HSPE LID mask for multipath support */
|
|
Packit |
857059 |
/* H---: POD: 0 */
|
|
Packit |
857059 |
/* --PE: POD/LUD: 0 */
|
|
Packit |
857059 |
/* -S--: LID mask for Neighbor node */
|
|
Packit |
857059 |
/* POD/LUD: 0 */
|
|
Packit |
857059 |
} s1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Reserved: 3,
|
|
Packit |
857059 |
MasterSMSL: 5 ) /* RW/H-PE The adminstrative SL of the master */
|
|
Packit |
857059 |
/* SM that is managing this port */
|
|
Packit |
857059 |
} s2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD5( uint8,
|
|
Packit |
857059 |
LinkInitReason: 4, /*RW/HSPE POD: 1, see STL_LINKINIT_REASON */
|
|
Packit |
857059 |
PartitionEnforcementInbound: 1, /* RW/-S-- */
|
|
Packit |
857059 |
/* LUD: 1 neighbor is HFI, 0 else */
|
|
Packit |
857059 |
PartitionEnforcementOutbound: 1, /* RW/-S-- */
|
|
Packit |
857059 |
/* LUD: 1 neighbor is HFI, 0 else */
|
|
Packit |
857059 |
Reserved20: 1,
|
|
Packit |
857059 |
Reserved21: 1 )
|
|
Packit |
857059 |
} s3;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Reserved: 3,
|
|
Packit |
857059 |
OperationalVL: 5 ) /* RW/HS-E Virtual Lanes operational this port */
|
|
Packit |
857059 |
} s4;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* STL Partial P_Keys */
|
|
Packit |
857059 |
uint16 P_Key_8B; /* RW/HS-E Implicit 8B P_Key */
|
|
Packit |
857059 |
uint16 P_Key_10B; /* RW/HS-E Partial upper 10B P_Key */
|
|
Packit |
857059 |
/* (12 bits, lower 4 bits reserved) */
|
|
Packit |
857059 |
} P_Keys; /* POD/LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
uint16 M_Key; /* RW/H-PE */
|
|
Packit |
857059 |
uint16 P_Key; /* RW/H-PE */
|
|
Packit |
857059 |
uint16 Q_Key; /* RW/H-PE */
|
|
Packit |
857059 |
} Violations; /* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION2(SM_TrapQP, 32,
|
|
Packit |
857059 |
Reserved: 8,
|
|
Packit |
857059 |
QueuePair: 24 ); /* RW/HS-E SM Trap QP. POD/LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION2(SA_QP, 32,
|
|
Packit |
857059 |
Reserved: 8,
|
|
Packit |
857059 |
QueuePair: 24 ); /* RW/HS-E SA QP. POD/LUD: 1 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 NeighborPortNum; /* RO/HS-- Port number of neighbor node */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 LinkDownReason; /* RW/HS-E Link Down Reason (see STL_LINKDOWN_REASON_XXX) */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 NeighborLinkDownReason;/* RW/HS-E Neighbor Link Down Reason - STL_LINKDOWN_REASON */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD3( uint8,
|
|
Packit |
857059 |
ClientReregister: 1, /* RW/H-PE POD/LUD: 0 */
|
|
Packit |
857059 |
MulticastPKeyTrapSuppressionEnabled:2, /* RW/H-PE */
|
|
Packit |
857059 |
Timeout: 5 ) /* RW/H-PE Timer value used for subnet timeout */
|
|
Packit |
857059 |
} Subnet;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* Link speed (see STL_LINK_SPEED_XXX) LinkBounce */
|
|
Packit |
857059 |
uint16 Supported; /* RO/HS-E Supported link speed */
|
|
Packit |
857059 |
uint16 Enabled; /* RW/HS-E Enabled link speed POD: = supported */
|
|
Packit |
857059 |
uint16 Active; /* RO/HS-E Active link speed */
|
|
Packit |
857059 |
} LinkSpeed;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* 9(12) of each 16 bits used (see STL_LINK_WIDTH_XXX) */
|
|
Packit |
857059 |
/* LinkBounce */
|
|
Packit |
857059 |
uint16 Supported; /* RO/HS-E Supported link width */
|
|
Packit |
857059 |
uint16 Enabled; /* RW/HS-E Enabled link width POD: = supported */
|
|
Packit |
857059 |
uint16 Active; /* RO/HS-E link width negotiated by LNI*/
|
|
Packit |
857059 |
} LinkWidth;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* Downgrade of link on error (see STL_LINK_WIDTH_XXX) */
|
|
Packit |
857059 |
uint16 Supported; /* RO/HS-E Supported downgraded link width */
|
|
Packit |
857059 |
uint16 Enabled; /* RW/HS-E Enabled link width downgrade */
|
|
Packit |
857059 |
/* POD/LUD: = supported */
|
|
Packit |
857059 |
uint16 TxActive; /* RO/HS-E Currently active link width in tx dir */
|
|
Packit |
857059 |
uint16 RxActive; /* RO/HS-- Currently active link width in rx dir */
|
|
Packit |
857059 |
} LinkWidthDowngrade;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION4(PortLinkMode,16, /* STL/Eth Port Link Modes */
|
|
Packit |
857059 |
/* (see STL_PORT_LINK_MODE_XXX) */
|
|
Packit |
857059 |
Reserved: 1,
|
|
Packit |
857059 |
Supported: 5, /* RO/HS-E Supported port link mode */
|
|
Packit |
857059 |
Enabled: 5, /* RW/HS-E Enabled port link mode POD: from FW INI */
|
|
Packit |
857059 |
Active: 5 ); /* RO/HS-E Active port link mode */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION4(PortLTPCRCMode, 16, /* STL Port LTP CRC Modes */
|
|
Packit |
857059 |
/* (see STL_PORT_LTP_CRC_MODE_XXX) */
|
|
Packit |
857059 |
Reserved: 4,
|
|
Packit |
857059 |
Supported: 4, /* RO/HS-E Supported port LTP mode */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
Enabled: 4, /* RW/HS-E Enabled port LTP mode POD: from FW INI */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
Active: 4 ); /* RO/HS-E Active port LTP mode */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION7(PortMode, 16, /* General port modes */
|
|
Packit |
857059 |
Reserved: 9,
|
|
Packit |
857059 |
IsActiveOptimizeEnabled: 1, /* RW/HS-- Optimized Active handling */
|
|
Packit |
857059 |
/* POD/LUD: 0 */
|
|
Packit |
857059 |
IsPassThroughEnabled: 1, /* RW/-S-- Pass-Through LUD: 0 */
|
|
Packit |
857059 |
IsVLMarkerEnabled: 1, /* RW/HS-- VL Marker LUD: 0 */
|
|
Packit |
857059 |
Reserved2: 2,
|
|
Packit |
857059 |
Is16BTrapQueryEnabled: 1, /* RW/H-PE 16B Traps & SA/PA Queries (else 9B) */
|
|
Packit |
857059 |
/* LUD: 0 */
|
|
Packit |
857059 |
Reserved3: 1 ); /* RW/-S-- SMA Security Checking */
|
|
Packit |
857059 |
/* LUD: 1 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* Packet formats */
|
|
Packit |
857059 |
/* (see STL_PORT_PACKET_FORMAT_XXX) */
|
|
Packit |
857059 |
uint16 Supported; /* RO/HSPE Supported formats */
|
|
Packit |
857059 |
uint16 Enabled; /* RW/HSPE Enabled formats */
|
|
Packit |
857059 |
} PortPacketFormats;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* Flit control LinkBounce */
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint16 AsReg16;
|
|
Packit |
857059 |
struct { IB_BITFIELD5( uint16, /* Flit interleaving */
|
|
Packit |
857059 |
Reserved: 2,
|
|
Packit |
857059 |
DistanceSupported: 2, /* RO/HS-E Supported Flit distance mode */
|
|
Packit |
857059 |
/* (see STL_PORT_FLIT_DISTANCE_MODE_XXX) */
|
|
Packit |
857059 |
DistanceEnabled: 2, /* RW/HS-E Enabled Flit distance mode */
|
|
Packit |
857059 |
/* (see STL_PORT_FLIT_DISTANCE_MODE_XXX) */
|
|
Packit |
857059 |
/* LUD: mode1 */
|
|
Packit |
857059 |
MaxNestLevelTxEnabled: 5, /* RW/HS-E Max nest level enabled Flit Tx */
|
|
Packit |
857059 |
/* LUD: 0 */
|
|
Packit |
857059 |
MaxNestLevelRxSupported: 5 ) /* RO/HS-E Max nest level supported Flit Rx */
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} Interleave;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct Preemption_t { /* Flit preemption */
|
|
Packit |
857059 |
uint16 MinInitial; /* RW/HS-E Min bytes before preemption Head Flit */
|
|
Packit |
857059 |
/* Range 8 to 10240 bytes */
|
|
Packit |
857059 |
uint16 MinTail; /* RW/HS-E Min bytes before preemption Tail Flit */
|
|
Packit |
857059 |
/* Range 8 to 10240 bytes */
|
|
Packit |
857059 |
uint8 LargePktLimit; /* RW/HS-E Size of packet that can be preempted */
|
|
Packit |
857059 |
/* Packet Size >= 512+(512*LargePktLimit) */
|
|
Packit |
857059 |
/* Packet Size Range >=512 to >=8192 bytes */
|
|
Packit |
857059 |
uint8 SmallPktLimit; /* RW/HS-E Size of packet that can preempt */
|
|
Packit |
857059 |
/* Packet Size <= 32+(32*SmallPktLimit) */
|
|
Packit |
857059 |
/* Packet Size Range <=32 to <=8192 bytes */
|
|
Packit |
857059 |
/* MaxSmallPktLimit sets upper bound allowed */
|
|
Packit |
857059 |
uint8 MaxSmallPktLimit;/* RO/HS-E Max value for SmallPktLimit */
|
|
Packit |
857059 |
/* Packet Size <= 32+(32*MaxSmallPktLimit) */
|
|
Packit |
857059 |
/* Packet Size Range <=32 to <=8192 bytes */
|
|
Packit |
857059 |
uint8 PreemptionLimit;/* RW/HS-E Num bytes of preemption */
|
|
Packit |
857059 |
/* limit = (256*PreemptionLimit) */
|
|
Packit |
857059 |
/* Limit range 0 to 65024, 0xff=unlimited */
|
|
Packit |
857059 |
} Preemption;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} FlitControl;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_LID MaxLID; /* RW/H---: POD: 0xBFFF */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
union _PortErrorAction {
|
|
Packit |
857059 |
uint32 AsReg32;
|
|
Packit |
857059 |
struct { IB_BITFIELD25( uint32, /* RW/HS-E Port Error Action Mask */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
ExcessiveBufferOverrun: 1,
|
|
Packit |
857059 |
Reserved: 7,
|
|
Packit |
857059 |
FmConfigErrorExceedMulticastLimit: 1,
|
|
Packit |
857059 |
FmConfigErrorBadControlFlit: 1,
|
|
Packit |
857059 |
FmConfigErrorBadPreempt: 1,
|
|
Packit |
857059 |
FmConfigErrorUnsupportedVLMarker: 1,
|
|
Packit |
857059 |
FmConfigErrorBadCrdtAck: 1,
|
|
Packit |
857059 |
FmConfigErrorBadCtrlDist: 1,
|
|
Packit |
857059 |
FmConfigErrorBadTailDist: 1,
|
|
Packit |
857059 |
FmConfigErrorBadHeadDist: 1,
|
|
Packit |
857059 |
Reserved2: 2,
|
|
Packit |
857059 |
PortRcvErrorBadVLMarker: 1,
|
|
Packit |
857059 |
PortRcvErrorPreemptVL15: 1,
|
|
Packit |
857059 |
PortRcvErrorPreemptError: 1,
|
|
Packit |
857059 |
Reserved3: 1,
|
|
Packit |
857059 |
PortRcvErrorBadMidTail: 1,
|
|
Packit |
857059 |
PortRcvErrorReserved: 1,
|
|
Packit |
857059 |
PortRcvErrorBadSC: 1,
|
|
Packit |
857059 |
PortRcvErrorBadL2: 1,
|
|
Packit |
857059 |
PortRcvErrorBadDLID: 1,
|
|
Packit |
857059 |
PortRcvErrorBadSLID: 1,
|
|
Packit |
857059 |
PortRcvErrorPktLenTooShort: 1,
|
|
Packit |
857059 |
PortRcvErrorPktLenTooLong: 1,
|
|
Packit |
857059 |
PortRcvErrorBadPktLen: 1,
|
|
Packit |
857059 |
Reserved4: 1 )
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} PortErrorAction;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* Pass through mode control */
|
|
Packit |
857059 |
uint8 EgressPort; /* RW/-S-- Egress port: 0-disable pass through */
|
|
Packit |
857059 |
/* LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Reserved: 7,
|
|
Packit |
857059 |
DRControl: 1 ) /* RW/-S-- DR: 0-normal process, 1-repeat on egress port */
|
|
Packit |
857059 |
/* LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PassThroughControl;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 M_KeyLeasePeriod; /* RW/H-PE LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION5(BufferUnits, 32, /* VL bfr & ack unit sizes (bytes) */
|
|
Packit |
857059 |
Reserved: 9,
|
|
Packit |
857059 |
VL15Init: 12, /* RO/HS-E Initial VL15 units (N) */
|
|
Packit |
857059 |
VL15CreditRate: 5, /* RW/HS-E VL15 Credit rate (32*2^N) */
|
|
Packit |
857059 |
/* LUD: if neighbor is STL HFI: 18, otherwise 0 */
|
|
Packit |
857059 |
CreditAck: 3, /* RO/HS-E Credit ack unit (BufferAlloc*2^N) */
|
|
Packit |
857059 |
BufferAlloc: 3 ); /* RO/HS-E Buffer alloc unit (8*2^N) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved14;
|
|
Packit |
857059 |
uint8 BundleNextPort; /* RO/HS-- next logical port in a bundled connector */
|
|
Packit |
857059 |
uint8 BundleLane; /* RO/HS-- first lane in connector associated with this port */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_LID MasterSMLID; /* RW/H-PE The base LID of the master SM that is */
|
|
Packit |
857059 |
/* managing this port */
|
|
Packit |
857059 |
/* POD/LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 M_Key; /* RW/H-PE The 8-byte management key */
|
|
Packit |
857059 |
/* POD/LUD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 SubnetPrefix; /* RW/H-PE Subnet prefix for this port */
|
|
Packit |
857059 |
/* Set to default value if no */
|
|
Packit |
857059 |
/* other subnet interaction */
|
|
Packit |
857059 |
/* POD: 0xf8000000:00000000 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_VL_TO_MTU NeighborMTU[STL_MAX_VLS / 2]; /* RW/HS-E Neighbor MTU values per VL */
|
|
Packit |
857059 |
/* VL15 LUD: 2048 STL mode */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct XmitQ_s { IB_BITFIELD2( uint8, /* Transmitter Queueing Controls */
|
|
Packit |
857059 |
/* per VL */
|
|
Packit |
857059 |
VLStallCount: 3, /* RW/-S-- Applies to switches only */
|
|
Packit |
857059 |
/* LUD: 7 */
|
|
Packit |
857059 |
HOQLife: 5 ) /* RW/-S-- Applies to routers & switches only */
|
|
Packit |
857059 |
/* LUD: infinite */
|
|
Packit |
857059 |
} XmitQ[STL_MAX_VLS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* END OF RW SECTION */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* BEGINNING OF RO SECTION */
|
|
Packit |
857059 |
STL_IPV6_IP_ADDR IPAddrIPV6; /* RO/H-PE IP Address - IPV6 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_IPV4_IP_ADDR IPAddrIPV4; /* RO/H-PE IP Address - IPV4 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved26;
|
|
Packit |
857059 |
uint32 Reserved27;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved28;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint64 NeighborNodeGUID; /* RO/-S-E GUID of neighbor connected to this port */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_CAPABILITY_MASK CapabilityMask; /* RO/H-PE Capability Mask */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 Reserved20;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_CAPABILITY_MASK3 CapabilityMask3; /* RO/H-PE Capability Mask 3 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 Reserved23;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 OverallBufferSpace; /* RO/HS-E Overall dedicated + shared space */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* most significant 8 bits of Replay depths */
|
|
Packit |
857059 |
uint8 BufferDepthH; /* RO/HS-- Replay buffer depth MSB */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
uint8 WireDepthH; /* RO/HS-- Replay wire depth MSB */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
} ReplayDepthH;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_FIELDUNION3(DiagCode, 16, /* RO/H-PE Diagnostic code, Refer Node Diagnostics */
|
|
Packit |
857059 |
UniversalDiagCode: 4,
|
|
Packit |
857059 |
VendorDiagCode: 11,
|
|
Packit |
857059 |
Chain: 1 );
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { /* least significant 8 bits of Replay depths */
|
|
Packit |
857059 |
uint8 BufferDepth; /* RO/HS-E Replay buffer depth LSB */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
uint8 WireDepth; /* RO/HS-E Replay wire depth LSB */
|
|
Packit |
857059 |
/* reserved when PortLinkMode.Active is not STL */
|
|
Packit |
857059 |
} ReplayDepth;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD4( uint8, /* RO/HS-E Port modes based on neighbor */
|
|
Packit |
857059 |
Reserved: 4,
|
|
Packit |
857059 |
MgmtAllowed: 1, /* RO/H--- neighbor allows this node to be mgmt */
|
|
Packit |
857059 |
/* Switch: mgmt is allowed for neighbor */
|
|
Packit |
857059 |
/* EP0: mgmt is allowed for port */
|
|
Packit |
857059 |
NeighborFWAuthenBypass: 1, /* RO/-S-E 0=Authenticated, 1=Not Authenticated */
|
|
Packit |
857059 |
NeighborNodeType: 2 ) /* RO/-S-E 0=HFI (not trusted), 1=Switch (trusted) */
|
|
Packit |
857059 |
} PortNeighborMode;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Reserved20: 4,
|
|
Packit |
857059 |
Cap: 4 ) /* RO/HS-E Max MTU supported by this port */
|
|
Packit |
857059 |
} MTU;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Reserved: 3,
|
|
Packit |
857059 |
TimeValue: 5 ) /* RO/H-PE */
|
|
Packit |
857059 |
} Resp;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 LocalPortNum; /* RO/HSPE The link port number this SMP came on in */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved25;
|
|
Packit |
857059 |
uint8 Reserved24;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORT_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* PartitionTable
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN PPPP PPPP 0000 0BBB BBBB BBBB
|
|
Packit |
857059 |
* N: Number of blocks
|
|
Packit |
857059 |
* P: Port number (0 - management port, switches only;
|
|
Packit |
857059 |
* for HFIs P is ignored and the attribute is
|
|
Packit |
857059 |
* applicable only to the port that receives the packet)
|
|
Packit |
857059 |
* B: Block number
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The (max) PartitionTable is 2**16 entries (P_Keys) long, 16 bits wide.
|
|
Packit |
857059 |
* Each PartitionTable block is 32 entries long, 16 bits wide. The Partition
|
|
Packit |
857059 |
* Table is a linear array of blocks[2**11].
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define NUM_PKEY_ELEMENTS_BLOCK (32) /* Num elements per block; currently same as IB */
|
|
Packit |
857059 |
#define MAX_PKEY_BLOCK_NUM 0x7FF
|
|
Packit |
857059 |
#define PKEY_BLOCK_NUM_MASK 0x7FF
|
|
Packit |
857059 |
#define STL_DEFAULT_PKEY 0x7FFF
|
|
Packit |
857059 |
#define STL_DEFAULT_APP_PKEY 0x8001
|
|
Packit |
857059 |
#define STL_DEFAULT_FM_PKEY 0xFFFF
|
|
Packit |
857059 |
#define STL_DEFAULT_CLIENT_PKEY 0x7FFF
|
|
Packit |
857059 |
#define STL_DEFAULT_APP_PKEY_IDX 0
|
|
Packit |
857059 |
#define STL_DEFAULT_CLIENT_PKEY_IDX 1
|
|
Packit |
857059 |
#define STL_DEFAULT_FM_PKEY_IDX 2
|
|
Packit |
857059 |
#define STL_MIN_PKEY_COUNT 3
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint16 AsReg16;
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint16,
|
|
Packit |
857059 |
MembershipType: 1, /* 0=Limited, 1=Full */
|
|
Packit |
857059 |
P_KeyBase: 15 ) /* Base value of the P_Key that */
|
|
Packit |
857059 |
/* the endnode will use to check */
|
|
Packit |
857059 |
/* against incoming packets */
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PKEY_ELEMENT;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_PKEY_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR / sizeof(STL_PARTITION_TABLE)))
|
|
Packit |
857059 |
#define STL_NUM_PKEY_BLOCKS_PER_LID_SMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_LR / sizeof(STL_PARTITION_TABLE)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_PKEY_ELEMENT PartitionTableBlock[NUM_PKEY_ELEMENTS_BLOCK]; /* RW List of P_Key Block elements */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PARTITION_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SL_TO_SC Mapping table
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* This Attribute is used only for HFIs and switch port 0
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Each block contains 32 bytes of SL->SC data, 1 byte per SL.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_SC SLSCMap[STL_MAX_SLS]; /* RW/HSPE */
|
|
Packit |
857059 |
/* H---: POD: SLn_to_SCn (1-to-1) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SLSCMAP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SC_TO_SC Mapping table
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 00AB IIII IIII EEEE EEEE
|
|
Packit |
857059 |
* N: Number of blocks (egress ports (B=0),
|
|
Packit |
857059 |
* but if B=1 then ingress ports)
|
|
Packit |
857059 |
* A=1: All ingress ports starting at I (Set only; excludes port 0)
|
|
Packit |
857059 |
* B=1: All egress ports starting at E (Set only; excludes port 0)
|
|
Packit |
857059 |
* I: Ingress port number (0 - reserved, switches only)
|
|
Packit |
857059 |
* E: Egress port number (0 - reserved, switches only)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* This attribute is not applicable to HFIs.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Each block contains 32 bytes of SC->SC data, 1 byte per SC.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_SC SCSCMap[STL_MAX_SCS]; /* RW/HSPE */
|
|
Packit |
857059 |
/* -SPE: POD: SCn_to_SCn (1-to-1) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SCSCMAP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_SCSC_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR / sizeof(STL_SCSCMAP)))
|
|
Packit |
857059 |
#define STL_NUM_SCSC_BLOCKS_PER_LID_SMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_LR / sizeof(STL_SCSCMAP)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SC_TO_SC MultiSet
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 0000 0000 0000 0000
|
|
Packit |
857059 |
* N: Number of Multi-Set Blocks
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* This attribute is not applicable to HFIs.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Each block contains 32 bytes of SC->SC data, 1 byte per SC and ingress/egress port masks
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_PORTMASK IngressPortMask[STL_MAX_PORTMASK];
|
|
Packit |
857059 |
STL_PORTMASK EgressPortMask[STL_MAX_PORTMASK];
|
|
Packit |
857059 |
STL_SCSCMAP SCSCMap; /* RW/HSPE */
|
|
Packit |
857059 |
/* -SPE: POD: SCn_to_SCn (1-to-1) */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SCSC_MULTISET;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_SCSC_MULTI_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR / sizeof(STL_SCSC_MULTISET)))
|
|
Packit |
857059 |
#define STL_NUM_SCSC_MULTI_BLOCKS_PER_LRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_LR / sizeof(STL_SCSC_MULTISET)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SC_TO_SL Mapping table
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* This Attribute is used only for HFIs and switch port 0
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Each block contains 32 bytes of SC->SL data, 1 byte per SC.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct { /* RW POD: SCn_to_SLn (1-to-1) */
|
|
Packit |
857059 |
STL_SL SCSLMap[STL_MAX_SCS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SCSLMAP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SC_TO_VL Mapping table
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 000Y 000A PPPP PPPP
|
|
Packit |
857059 |
* N: Number of blocks (ports)
|
|
Packit |
857059 |
* Y=1: Async update (Set of SC-to-VLt only with link state Armed or Active)
|
|
Packit |
857059 |
* A=1: All ports starting at P (Set only)
|
|
Packit |
857059 |
* P: Port number (0 - management port, switches only;
|
|
Packit |
857059 |
* for HFIs P is ignored and the attribute is
|
|
Packit |
857059 |
* applicable only to the port that receives the packet)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Each block contains 32 bytes of SC->VL data, 1 byte per SC.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* NOTE: this attribute applies for all SC-to-VL tables (SC-to-VLr, SC-to-VLt,
|
|
Packit |
857059 |
* SC-to-VLnt); Port is ingress port or egress port as applicable.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_VL SCVLMap[STL_MAX_SCS]; /* RW/HSPE POD: SCn_to_VLn (1-to-1) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SCVLMAP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_SCVL_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR / sizeof(STL_SCVLMAP)))
|
|
Packit |
857059 |
#define STL_NUM_SCVL_BLOCKS_PER_LID_SMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_LR / sizeof(STL_SCVLMAP)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* VL Arbitration Table (aka VL Arbitration Table 2)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN SSSS SSSS 0000 000A PPPP PPPP
|
|
Packit |
857059 |
* N: Number of ports
|
|
Packit |
857059 |
* S: Section of Table as:
|
|
Packit |
857059 |
* 0: Arbitration Low Elements
|
|
Packit |
857059 |
* 1: Arbitration High Elements
|
|
Packit |
857059 |
* 2: Preemption Elements
|
|
Packit |
857059 |
* 3: Preemption Matrix
|
|
Packit |
857059 |
* 4-255: Reserved
|
|
Packit |
857059 |
* A=1: All ports starting at P (Set only)
|
|
Packit |
857059 |
* P: Port number (0 - management port, switches only;
|
|
Packit |
857059 |
* for HFIs P is ignored and the attribute is
|
|
Packit |
857059 |
* applicable only to the port that receives the packet)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_MAX_LOW_CAP 128 /* Also applies to High but not Preempt */
|
|
Packit |
857059 |
#define STL_MAX_PREEMPT_CAP 32 /* MAX Preempt table size is 32 */
|
|
Packit |
857059 |
#define STL_VLARB_LOW_ELEMENTS 0
|
|
Packit |
857059 |
#define STL_VLARB_HIGH_ELEMENTS 1
|
|
Packit |
857059 |
#define STL_VLARB_PREEMPT_ELEMENTS 2
|
|
Packit |
857059 |
#define STL_VLARB_PREEMPT_MATRIX 3
|
|
Packit |
857059 |
#define STL_VLARB_NUM_SECTIONS 4
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Reserved: 3,
|
|
Packit |
857059 |
VL: 5 ) /* RW */
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Weight; /* RW */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_VLARB_TABLE_ELEMENT;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define VLARB_TABLE_LENGTH 128
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
STL_VLARB_TABLE_ELEMENT Elements[VLARB_TABLE_LENGTH]; /* RW */
|
|
Packit |
857059 |
uint32 Matrix[STL_MAX_VLS]; /* RW */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_VLARB_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_VLARB_PORTS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR / sizeof(STL_VLARB_TABLE)))
|
|
Packit |
857059 |
#define STL_NUM_VLARB_PORTS_PER_LID_SMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_LR / sizeof(STL_VLARB_TABLE)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Linear Forwarding Table (LFT)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0ABB BBBB BBBB BBBB BBBB
|
|
Packit |
857059 |
* N: Number of blocks
|
|
Packit |
857059 |
* A=1: All blocks starting at B (Set only)
|
|
Packit |
857059 |
* B: Block number
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The (max) LFT is 2**24 entries (LIDs) long (STL_LID_24), 8 bits wide.
|
|
Packit |
857059 |
* Each LFT block is 64 entries long, 8 bits wide. The LFT is a
|
|
Packit |
857059 |
* linear array of blocks[2**18].
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_LFT_ELEMENTS_BLOCK (64) /* Max elements per block; currently same as IB */
|
|
Packit |
857059 |
#define MAX_LFT_BLOCK_NUM 0x3FFFF
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_LFT_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR/MAX_LFT_ELEMENTS_BLOCK))
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
PORT LftBlock[MAX_LFT_ELEMENTS_BLOCK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_LINEAR_FORWARDING_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Multicast Forwarding Table (MFT)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN PP0A BBBB BBBB BBBB BBBB BBBB
|
|
Packit |
857059 |
* N: Number of blocks
|
|
Packit |
857059 |
* P: Position number
|
|
Packit |
857059 |
* A=1: All blocks starting at B (Set only)
|
|
Packit |
857059 |
* B: Block number
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The (max) MFT is 2**23 entries (LIDs) long (STL_LID_24 / 2), 256 bits wide.
|
|
Packit |
857059 |
* Each MFT block is 8 entries long, 64 bits wide. The MFT is a
|
|
Packit |
857059 |
* 2-dimensional array of blocks[2**20][4].
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_MFT_ELEMENTS_BLOCK 8 /* Num elements per block */
|
|
Packit |
857059 |
#define STL_NUM_MFT_POSITIONS_MASK 4 /* Num positions per 256-bit port mask */
|
|
Packit |
857059 |
#define STL_MAX_MFT_BLOCK_NUM 0xFFFFF
|
|
Packit |
857059 |
#define STL_PORT_MASK_WIDTH 64 /* Width of STL_PORTMASK in bits */
|
|
Packit |
857059 |
#define STL_MAX_PORTS 255
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_PORTMASK MftBlock[STL_NUM_MFT_ELEMENTS_BLOCK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_MULTICAST_FORWARDING_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_MFT_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR/sizeof(STL_MULTICAST_FORWARDING_TABLE)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* SMInfo
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint64 PortGUID; /* RO This SM's perception of the PortGUID */
|
|
Packit |
857059 |
/* of the master SM */
|
|
Packit |
857059 |
uint64 SM_Key; /* RO Key of this SM. This is shown as 0 unless */
|
|
Packit |
857059 |
/* the requesting SM is proven to be the */
|
|
Packit |
857059 |
/* master, or the requester is otherwise */
|
|
Packit |
857059 |
/* authenticated */
|
|
Packit |
857059 |
uint32 ActCount; /* RO Counter that increments each time the SM */
|
|
Packit |
857059 |
/* issues a SMP or performs other management */
|
|
Packit |
857059 |
/* activities. Used as a 'heartbeat' indicator */
|
|
Packit |
857059 |
/* by standby SMs */
|
|
Packit |
857059 |
uint32 ElapsedTime; /* RO Time (in seconds): time Master SM has been */
|
|
Packit |
857059 |
/* Master, or time since Standby SM was last */
|
|
Packit |
857059 |
/* updated by Master */
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint16 AsReg16;
|
|
Packit |
857059 |
struct { IB_BITFIELD4( uint16,
|
|
Packit |
857059 |
Priority: 4, /* RO Administratively assigned priority for this */
|
|
Packit |
857059 |
/* SM. Can be reset by master SM */
|
|
Packit |
857059 |
ElevatedPriority: 4, /* RO This SM's elevated priority */
|
|
Packit |
857059 |
InitialPriority: 4, /* RO This SM's initial priority */
|
|
Packit |
857059 |
SMStateCurrent: 4 ) /* RO This SM's current state (see SM_STATE) */
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} u;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SM_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* LEDInfo
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 0000 000A PPPP PPPP
|
|
Packit |
857059 |
* N: Number of ports
|
|
Packit |
857059 |
* A=1: All ports starting at P (Set only)
|
|
Packit |
857059 |
* P: Port number (must be 0 for HFI)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint32 AsReg32;
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint32,
|
|
Packit |
857059 |
LedMask: 1, /* RW POD: 0 */
|
|
Packit |
857059 |
Reserved: 31 );
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} u;
|
|
Packit |
857059 |
uint32 Reserved2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_LED_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* CableInfo
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0AAA AAAA AAAA ALLL LLL0 0000 PPPP PPPP
|
|
Packit |
857059 |
* A: Starting address of cable data
|
|
Packit |
857059 |
* L: Length (bytes) of cable data - 1
|
|
Packit |
857059 |
* (L+1 bytes of data read)
|
|
Packit |
857059 |
* P: Port number (0 - management port, switches only;
|
|
Packit |
857059 |
* for HFIs P is ignored and the attribute is
|
|
Packit |
857059 |
* applicable only to the port that receives the packet)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* NOTE: Cable Info is mapped onto a linear 4096-byte address space (0-4095).
|
|
Packit |
857059 |
* Cable Info can only be read within 128-byte pages; that is, a single
|
|
Packit |
857059 |
* read cannot cross a 128-byte (page) boundary.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_CABLE_INFO_DATA_SIZE 64
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint8 Data[STL_CABLE_INFO_DATA_SIZE]; /* RO Cable Info data (up to 64 bytes) */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CABLE_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_CABLE_INFO_PAGESZ 128
|
|
Packit |
857059 |
#define STL_CABLE_INFO_MAXADDR 4095
|
|
Packit |
857059 |
#define STL_CABLE_INFO_MAXLEN 63
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Note: Even though the entire cable memory is available to be read,
|
|
Packit |
857059 |
// tools only interpret one page of cable info memory which contains
|
|
Packit |
857059 |
// relevant data.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// These are for PortType Standard, uses of these can assume START and END
|
|
Packit |
857059 |
// will be on and STL_CABLE_INFO_DATA_SIZE boundary
|
|
Packit |
857059 |
#define STL_CIB_STD_LOW_PAGE_ADDR 0
|
|
Packit |
857059 |
#define STL_CIB_STD_HIGH_PAGE_ADDR 128
|
|
Packit |
857059 |
#define STL_CIB_STD_END_ADDR (STL_CIB_STD_HIGH_PAGE_ADDR+STL_CABLE_INFO_PAGESZ-1)
|
|
Packit |
857059 |
#define STL_CIB_STD_LEN (STL_CABLE_INFO_PAGESZ)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_CIB_STD_MAX_STRING 16 // Max ASCII string in STD CableInfo field
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Byte 0 and byte 128: identifier (SFF-8024)
|
|
Packit |
857059 |
#define STL_CIB_STD_QSFP 0xC // QSFP transceiver identifier value
|
|
Packit |
857059 |
#define STL_CIB_STD_QSFP_PLUS 0xD // QSFP+ transceiver identifier value
|
|
Packit |
857059 |
#define STL_CIB_STD_QSFP_28 0x11 // QSFP28 transceiver identifier value
|
|
Packit |
857059 |
#define STL_CIB_STD_QSFP_DD 0x18 // QSFP-DD transceiver identifier value
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Byte 129: pwr_class_low, pwr_class_high
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRLOW_1_5 0 // Pwr class low class 1 (1.5 W)
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRLOW_2_0 1 // Pwr class low class 2 (2.0 W)
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRLOW_2_5 2 // Pwr class low class 3 (2.5 W)
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRLOW_3_5 3 // Pwr class low class 4 (3.5 W)
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRHIGH_LEGACY 0 // Pwr class high legacy settings
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRHIGH_4_0 1 // Pwr class high class 5 (4.0 W)
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRHIGH_4_5 2 // Pwr class high class 6 (4.5 W)
|
|
Packit |
857059 |
#define STL_CIB_STD_PWRHIGH_5_0 3 // Pwr class high class 7 (5.0 W)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Byte 130: connector
|
|
Packit |
857059 |
#define STL_CIB_STD_CONNECTOR_MPO1x12 0x0C // Connector type is MPO 1x12
|
|
Packit |
857059 |
#define STL_CIB_STD_CONNECTOR_MPO2x16 0x0D // Connector type is MPO 2x16
|
|
Packit |
857059 |
#define STL_CIB_STD_CONNECTOR_NO_SEP 0x23 // Connector type is non-separable
|
|
Packit |
857059 |
#define STL_CIB_STD_CONNECTOR_MXC2x16 0x24 // Connector type is MXC 2x16
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Byte 140: bit_rate_low
|
|
Packit |
857059 |
#define STL_CIB_STD_RATELOW_NONE 0 // Nominal bit rate low not specified
|
|
Packit |
857059 |
#define STL_CIB_STD_RATELOW_EXCEED 0xFF // Nominal bit rate low > 25.4 Gbps
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Byte 147: dev_tech.xmit_tech
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_850_VCSEL 0x0 // Tx tech 850 nm VCSEL
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1310_VCSEL 0x1 // Tx tech 1310 nm VCSEL
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1550_VCSEL 0x2 // Tx tech 1550 nm VCSEL
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1310_FP 0x3 // Tx tech 1310 nm FP
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1310_DFB 0x4 // Tx tech 1310 nm DFB
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1550_DFB 0x5 // Tx tech 1550 nm DFB
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1310_EML 0x6 // Tx tech 1310 nm EML
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1550_EML 0x7 // Tx tech 1550 nm EML
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_OTHER 0x8 // Tx tech Other/Undefined
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_1490_DFB 0x9 // Tx tech 1490 nm DFB
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_CU_UNEQ 0xA // Tx tech Cu unequalized
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_CU_PASSIVEQ 0xB // Tx tech Cu passive equalized
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_CU_NFELIMACTEQ 0xC // Tx tech Cu near & far end limiting active equalizers
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_CU_FELIMACTEQ 0xD // Tx tech Cu far end limiting active equalizers
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_CU_NELIMACTEQ 0xE // Tx tech Cu near end limiting active equalizers
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_CU_LINACTEQ 0xF // Tx tech Cu linear active equalizers
|
|
Packit |
857059 |
#define STL_CIB_STD_TXTECH_MAX 0xF // Tx tech max value
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Byte 250: opa_cert_cable
|
|
Packit |
857059 |
#define STL_CIB_STD_OPA_CERTIFIED_CABLE 0xAB // OPA certified cable
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Byte 252: opa_cert_data_rate
|
|
Packit |
857059 |
#define STL_CIB_STD_OPACERTRATE_4X25G 0x02 // Certified data rate 4x25G
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// The following structure represents CableInfo page 0 Lower in memory.
|
|
Packit |
857059 |
// (based on Rev 2.9.2 SFF-8636 memory map)
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint8 ident; // 0: Identifier
|
|
Packit |
857059 |
uint8 status[2]; // 1-2: Status
|
|
Packit |
857059 |
uint8 interruptFlags[19]; // 3-21: Interrupt Flags
|
|
Packit |
857059 |
uint16 temperature; // 22-23: Module temperature
|
|
Packit |
857059 |
uint8 moduleMonitors1[2]; // 24-25: Module level Monitors
|
|
Packit |
857059 |
uint16 voltage; // 26-27: Supply Voltage
|
|
Packit |
857059 |
uint8 moduleMonitors2[6]; // 28-33: Module level Monitors
|
|
Packit |
857059 |
uint16 rxOpticalPwr1; // 34-35: rx Optical Power 1
|
|
Packit |
857059 |
uint16 rxOpticalPwr2; // 36-37: rx Optical Power 2
|
|
Packit |
857059 |
uint16 rxOpticalPwr3; // 38-39: rx Optical Power 3
|
|
Packit |
857059 |
uint16 rxOpticalPwr4; // 40-41: rx Optical Power 4
|
|
Packit |
857059 |
uint8 laneMonitors1[8]; // 42-49: Lane Specific Monitors
|
|
Packit |
857059 |
uint16 txOpticalPwr1; // 50-51: tx Optical Power 1
|
|
Packit |
857059 |
uint16 txOpticalPwr2; // 52-53: tx Optical Power 2
|
|
Packit |
857059 |
uint16 txOpticalPwr3; // 54-55: tx Optical Power 3
|
|
Packit |
857059 |
uint16 txOpticalPwr4; // 56-57: tx Optical Power 4
|
|
Packit |
857059 |
uint8 laneMonitors2[24]; // 34-81: Lane Specific Monitors
|
|
Packit |
857059 |
uint8 reserved1[4]; // 82-85: Reserved
|
|
Packit |
857059 |
uint8 controlBytes[14]; // 86-99: Control bytes
|
|
Packit |
857059 |
uint8 laneInterruptMasks[3]; // 100-102: Lane specific Indicator Interrupt Masks
|
|
Packit |
857059 |
uint8 moduleInterruptMasks[4];// 103-106: Module level interrupt masks
|
|
Packit |
857059 |
uint8 moduleProperties1[4]; // 107-110: Module Properties
|
|
Packit |
857059 |
uint8 assignedPCI[2]; // 111-112: Module type advertising code
|
|
Packit |
857059 |
uint8 moduleProperties2[3]; // 113-115: Module Properties
|
|
Packit |
857059 |
uint8 secondaryExtSpecCode; // 116: Secondary Extended Spec Compliance Code
|
|
Packit |
857059 |
uint8 reserved2[2]; // 117-118: Reserved
|
|
Packit |
857059 |
uint8 passwordChangeArea[4]; // 119-122: Password Change Area
|
|
Packit |
857059 |
uint8 passwordEntryArea[4]; // 123-126: Password Entry Area
|
|
Packit |
857059 |
uint8 pageSelectType; // 127: Page Select Type
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CABLE_INFO_LOW0_STD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// The following structure represents STD CableInfo page 0 upper in memory.
|
|
Packit |
857059 |
// (based on SFF-8636 Rev 2-5)
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
// Page 0 upper, bytes 128-255
|
|
Packit |
857059 |
uint8 ident; // 128: Identifier
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD5( uint8, // 129: Extended identifier:
|
|
Packit |
857059 |
pwr_class_low: 2, // Power class low
|
|
Packit |
857059 |
other: 2, // Other settings
|
|
Packit |
857059 |
tx_cdr_supp: 1, // Tx CDR support
|
|
Packit |
857059 |
rx_cdr_supp: 1, // Rx CDR support
|
|
Packit |
857059 |
pwr_class_high: 2) // Power class low
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} ext_ident;
|
|
Packit |
857059 |
uint8 connector; // 130: Connector (see STL_CIB_CONNECTOR_TYPE_xxx)
|
|
Packit |
857059 |
uint8 spec_comp[8]; // 131-138: Elec/optical compliance code
|
|
Packit |
857059 |
uint8 encode; // 139: Encoding algorithm
|
|
Packit |
857059 |
uint8 bit_rate_low; // 140: Nominal bit rate low (units 100 Mbps)
|
|
Packit |
857059 |
// (0xFF see bit_rate_high)
|
|
Packit |
857059 |
uint8 ext_rate_comp; // 141: Extended rate compliance code
|
|
Packit |
857059 |
uint8 len_smf; // 142: Link len SMF fiber (units km)
|
|
Packit |
857059 |
uint8 len_om3; // 143: Link len OM3 fiber (units 2m)
|
|
Packit |
857059 |
uint8 len_om2; // 144: Link len OM2 fiber (units 1m)
|
|
Packit |
857059 |
uint8 len_om1; // 145: Link len OM1 fiber (units 1m)
|
|
Packit |
857059 |
uint8 len_om4; // 146: Link len OM4 copper or fiber (units 1m or 2m)
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint8, // 147: Device technology:
|
|
Packit |
857059 |
xmit_tech: 4, // Transmitter technology
|
|
Packit |
857059 |
other: 4) // Other settings
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} dev_tech;
|
|
Packit |
857059 |
uint8 vendor_name[16]; // 148-163: Vendor name
|
|
Packit |
857059 |
uint8 ext_mod; // 164: Extended module code
|
|
Packit |
857059 |
uint8 vendor_oui[3]; // 165-167: Vendor OUI
|
|
Packit |
857059 |
uint8 vendor_pn[16]; // 168-183: Vendor part number
|
|
Packit |
857059 |
uint8 vendor_rev[2]; // 184-185: Vendor revision
|
|
Packit |
857059 |
uint8 wave_atten[2]; // 186-187: Wave length (value/20 nm) or
|
|
Packit |
857059 |
// copper attenuation (units dB)
|
|
Packit |
857059 |
uint8 wave_tol[2]; // 188-189: Wave length tolerance (value/200 nm)
|
|
Packit |
857059 |
uint8 max_case_temp; // 190: Max case temperature (degrees C)
|
|
Packit |
857059 |
uint8 cc_base; // 191: Checksum addresses 128-190
|
|
Packit |
857059 |
uint8 link_codes; // 192: Link codes
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD5( uint8, // 193: RxTx options: equalization & emphasis
|
|
Packit |
857059 |
reserved: 4, // Reserved
|
|
Packit |
857059 |
tx_inpeq_autadp_cap: 1, // Tx inp equal auto-adaptive capable
|
|
Packit |
857059 |
tx_inpeq_fixpro_cap: 1, // Tx inp equal fixed-prog capable
|
|
Packit |
857059 |
rx_outemp_fixpro_cap: 1, // Rx outp emphasis fixed-prog capable
|
|
Packit |
857059 |
rx_outamp_fixpro_cap: 1) // Rx outp amplitude fixed-prog capable
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} rxtx_opt_equemp;
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD8( uint8, // 194: RxTx options: CDR, LOL, squelch
|
|
Packit |
857059 |
tx_cdr_ctrl: 1, // Tx CDR On/Off ctrl implemented
|
|
Packit |
857059 |
rx_cdr_ctrl: 1, // Rx CDR On/Off ctrl implemented
|
|
Packit |
857059 |
tx_cdr_lol: 1, // Tx CDR loss of lock flag implemented
|
|
Packit |
857059 |
rx_cdr_lol: 1, // Rx CDR loss of lock flag implemented
|
|
Packit |
857059 |
rx_squel_dis: 1, // Rx squelch disable implemented
|
|
Packit |
857059 |
rx_out_dis: 1, // Rx output disable implemented
|
|
Packit |
857059 |
tx_squel_dis: 1, // Tx squelch disable implemented
|
|
Packit |
857059 |
tx_squel: 1) // Tx squelch implemented
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} rxtx_opt_cdrsquel;
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD8( uint8, // 195: MemTx options: pages 1 & 2, implementations
|
|
Packit |
857059 |
page_2: 1, // Mem page 2 implemented
|
|
Packit |
857059 |
page_1: 1, // Mem page 1 implemented
|
|
Packit |
857059 |
rate_sel: 1, // Rate select implemented
|
|
Packit |
857059 |
tx_dis: 1, // Tx disable implemented
|
|
Packit |
857059 |
tx_fault: 1, // Tx fault signal implemented
|
|
Packit |
857059 |
tx_squel_omapav: 1, // Tx squelch OMA/Pave
|
|
Packit |
857059 |
tx_los: 1, // Tx loss of signal implemented
|
|
Packit |
857059 |
reserved: 1) // Reserved
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} memtx_opt_pagesquel;
|
|
Packit |
857059 |
uint8 vendor_sn[16]; // 196-211: Vendor serial number
|
|
Packit |
857059 |
uint8 date_code[8]; // 212-219: Vendor manufacture date code
|
|
Packit |
857059 |
uint8 diag_mon_type; // 220: Diagnostic monitoring type
|
|
Packit |
857059 |
uint8 options_enh; // 221: Enhanced options
|
|
Packit |
857059 |
uint8 bit_rate_high; // 222: Nominal bit rate high (units 250 Mbps)
|
|
Packit |
857059 |
// (see also bit_rate_low)
|
|
Packit |
857059 |
uint8 cc_ext; // 223: Checksum addresses 192-222
|
|
Packit |
857059 |
uint8 vendor[26]; // 224-249: Vendor specific
|
|
Packit |
857059 |
uint8 opa_cert_cable; // 250: OPA certified cable (see STL_CIB_CERTIFIED_CABLE)
|
|
Packit |
857059 |
uint8 vendor2; // 251: Vendor specific
|
|
Packit |
857059 |
uint8 opa_cert_data_rate; // 252: OPA certified data rate
|
|
Packit |
857059 |
uint8 vendor3[3]; // 253-255: Vendor specific
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CABLE_INFO_STD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// The following structure represents CableInfo page 0 Lower(DD) in memory.
|
|
Packit |
857059 |
// (based on Rev 3.0 Memory map)
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint8 ident; // 0: Identifier
|
|
Packit |
857059 |
uint8 versionID; // 1: version ID
|
|
Packit |
857059 |
uint8 interrupt[2]; // 2-3: Flat mem, Interrupt
|
|
Packit |
857059 |
uint8 bankLaneFlag[4]; // 4-7: Bank Lane Flag summary
|
|
Packit |
857059 |
uint8 moduleFlags[6]; // 8-13: Module Flags
|
|
Packit |
857059 |
uint16 temperature; // 14-15: Module temperature
|
|
Packit |
857059 |
uint16 voltage; // 16-17: Supply Voltage
|
|
Packit |
857059 |
uint8 moduleMonitors[8]; // 14-25: Module Monitors
|
|
Packit |
857059 |
uint8 moduleGlobalCtrls[5]; // 26-30: Module Global Monitors
|
|
Packit |
857059 |
uint8 moduleMasks[6]; // 31-36: Module masks
|
|
Packit |
857059 |
uint8 reserved1[27]; // 37-63: Reserved
|
|
Packit |
857059 |
uint8 custom[21]; // 64-84: custom
|
|
Packit |
857059 |
uint8 moduleType; // 85: Module type advertising code
|
|
Packit |
857059 |
uint8 moduleHostMediaInf[32]; // 86-117: Module Host-Media Interface Options
|
|
Packit |
857059 |
uint8 password[8]; // 118-125: Password Area
|
|
Packit |
857059 |
uint8 bankSelectType; // 126: Bank Select Type
|
|
Packit |
857059 |
uint8 pageSelectType; // 127: Page Select Type
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CABLE_INFO_LOW0_DD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// The following structure represents CableInfo page 0 upper (DD) in memory.
|
|
Packit |
857059 |
// (based on Rev 0.61 frozen memory map)
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint8 ident; // 128: Identifier
|
|
Packit |
857059 |
uint8 vendor_name[16]; // 129-144: Vendor name
|
|
Packit |
857059 |
uint8 vendor_oui[3]; // 145-147: Vendor OUI
|
|
Packit |
857059 |
uint8 vendor_pn[16]; // 148-163: Vendor part number
|
|
Packit |
857059 |
uint8 vendor_rev[2]; // 164-165: Vendor revision
|
|
Packit |
857059 |
uint8 vendor_sn[16]; // 166-181: Vendor serial number
|
|
Packit |
857059 |
uint8 date_code[8]; // 182-189: Vendor manufacture date code
|
|
Packit |
857059 |
uint8 reserved1[11]; // 190-200: Reserved
|
|
Packit |
857059 |
uint8 powerMax; // 201: Max power dissipation, in 0.25W increments
|
|
Packit |
857059 |
uint8 cableLengthEnc; // 202: Cable assembly length
|
|
Packit |
857059 |
uint8 connector; // 203: Connector (see STL_CIB_CONNECTOR_TYPE_xxx)
|
|
Packit |
857059 |
uint8 reserved2[8]; // 204-211: Reserved
|
|
Packit |
857059 |
uint8 cable_type; // 212: Cable type (optics/passive/active Cu)
|
|
Packit |
857059 |
uint8 reserved3[43]; // 213-255: Reserved
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CABLE_INFO_UP0_DD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Aggregate
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0000 0000 0000 0000 0000 0000 NNNN NNNN
|
|
Packit |
857059 |
* N: Number of aggregated attributes
|
|
Packit |
857059 |
* (1-MAX_AGGREGATE_ATTRIBUTES)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* A wrapper attribute, containing a sequence of AttributeID/AttributeModifier/Payload
|
|
Packit |
857059 |
* segments. Each segment begins on an 8-byte boundary and contains a payload
|
|
Packit |
857059 |
* length specified by RequestLength (in 8-byte units). RequestLength is
|
|
Packit |
857059 |
* supplied by the Requester and specifies the amount of data in the request
|
|
Packit |
857059 |
* and the response. The offset from the beginning of one segment to the
|
|
Packit |
857059 |
* next is determined by RequestLength. If a request or response does not fit
|
|
Packit |
857059 |
* within RequestLength then an error is set in Status; response data is undefined
|
|
Packit |
857059 |
* in this situation.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
/* Max number of aggregate attributes */
|
|
Packit |
857059 |
#define MAX_AGGREGATE_ATTRIBUTES (STL_MAX_PAYLOAD_SMP_DR / 16)
|
|
Packit |
857059 |
#define STL_MAX_PAYLOAD_AGGREGATE 1016
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint16 AttributeID;
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint16 AsReg16;
|
|
Packit |
857059 |
struct { IB_BITFIELD3( uint16,
|
|
Packit |
857059 |
Error: 1, /* 1: Error (Invalid AttributeID/Modifier, */
|
|
Packit |
857059 |
/* RequestLength, Attribute Data) */
|
|
Packit |
857059 |
Reserved: 8,
|
|
Packit |
857059 |
RequestLength: 7 ) /* Request length (8-byte units) */
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} Result;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 AttributeModifier;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Data[0];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_AGGREGATE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Returns a pointer to the first member of an aggregate MAD.
|
|
Packit |
857059 |
* Header must be in HOST byte order.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_AGGREGATE_FIRST(smp) (STL_AGGREGATE*)((smp->common.MgmtClass == MCLASS_SM_LID_ROUTED)?(smp->SmpExt.LIDRouted.SMPData):(smp->SmpExt.DirectedRoute.SMPData))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Given an STL_AGGREGATE member, returns the next member.
|
|
Packit |
857059 |
* Member header must be in HOST byte order. Does not range check.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_AGGREGATE_NEXT(pAggr) ((STL_AGGREGATE*)((uint8*)(pAggr)+((pAggr)->Result.s.RequestLength*8)+sizeof(STL_AGGREGATE)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* PortStateInfo
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 0000 00S0 PPPP PPPP
|
|
Packit |
857059 |
* N: Number of ports
|
|
Packit |
857059 |
* S=1: Start of SM configuration
|
|
Packit |
857059 |
* P: Port number (0 - management port, switches only;
|
|
Packit |
857059 |
* for HFIs P is ignored and the attribute is
|
|
Packit |
857059 |
* applicable only to the port that receives the packet)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* A list of port state information, one entry per port (starting at port P).
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_PORT_STATES PortStates; /* RW */
|
|
Packit |
857059 |
uint16 LinkWidthDowngradeTxActive; /* RO */
|
|
Packit |
857059 |
uint16 LinkWidthDowngradeRxActive; /* RO */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORT_STATE_INFO;
|
|
Packit |
857059 |
#define STL_NUM_PORT_STATE_INFO_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR / sizeof(STL_PORT_STATES)))
|
|
Packit |
857059 |
#define STL_NUM_PORT_STATE_INFO_BLOCKS_PER_LID_SMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_LR / sizeof(STL_PORT_STATES)))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Port Group Forwarding Table (PGFT)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0ABB BBBB BBBB BBBB BBBB
|
|
Packit |
857059 |
* N: Number of blocks
|
|
Packit |
857059 |
* A=1: All blocks starting at B (Set only)
|
|
Packit |
857059 |
* B: Block number
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The (max) PGFT is 2**24 entries (LIDs) long (STL_LID_24), 8 bits wide.
|
|
Packit |
857059 |
* Each PGFT block is 64 entries long, 8 bits wide. The PGFT is a
|
|
Packit |
857059 |
* linear array of blocks[2**18].
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define NUM_PGFT_ELEMENTS_BLOCK 0x40 /* Num elements per block */
|
|
Packit |
857059 |
#define DEFAULT_MAX_PGFT_BLOCK_NUM 0x80 /* Cap for alpha PRR is 128 blocks. */
|
|
Packit |
857059 |
#define DEFAULT_MAX_PGFT_LID ((DEFAULT_MAX_PGFT_BLOCK_NUM * NUM_PGFT_ELEMENTS_BLOCK) - 1)
|
|
Packit |
857059 |
#define STL_NUM_PGFT_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR/NUM_PGFT_ELEMENTS_BLOCK))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RW POD: PGFTn=0xFF */
|
|
Packit |
857059 |
PORT PgftBlock[NUM_PGFT_ELEMENTS_BLOCK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORT_GROUP_FORWARDING_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Port Group Table (PGT)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN PP00 0000 0000 0000 00AB BBBB
|
|
Packit |
857059 |
* N: Number of blocks
|
|
Packit |
857059 |
* P: Position number
|
|
Packit |
857059 |
* A=1: All blocks starting at B (Set only)
|
|
Packit |
857059 |
* B: Block number
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The PGT is 256 entries long, 256 bits wide.
|
|
Packit |
857059 |
* Each PGT block is 8 entries long, 64 bits wide. The PGT is a
|
|
Packit |
857059 |
* 2-dimensional array of blocks[32][4].
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define NUM_PGT_ELEMENTS_BLOCK 8 /* Num elements per block */
|
|
Packit |
857059 |
#define MAX_PGT_BLOCK_NUM 0x1F
|
|
Packit |
857059 |
#define MAX_PGT_ELEMENTS 256
|
|
Packit |
857059 |
#define STL_NUM_PGTABLE_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR/NUM_PGFT_ELEMENTS_BLOCK))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RW POD: PGTn=0 */
|
|
Packit |
857059 |
STL_PORTMASK PgtBlock[NUM_PGT_ELEMENTS_BLOCK];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORT_GROUP_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* BufferControlTable
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 0000 000A PPPP PPPP
|
|
Packit |
857059 |
* N: Number of ports
|
|
Packit |
857059 |
* A=1: All ports starting at P (Set only)
|
|
Packit |
857059 |
* P: Port number (0 - management port, switches only;
|
|
Packit |
857059 |
* for HFIs P is ignored and the attribute is
|
|
Packit |
857059 |
* applicable only to the port that receives the packet)
|
|
Packit |
857059 |
* Note:
|
|
Packit |
857059 |
* All receive values in buffer allocation units of this receiver
|
|
Packit |
857059 |
* All transmit values in buffer allocation units of neighbor receiver
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint16 Reserved;
|
|
Packit |
857059 |
uint16 TxOverallSharedLimit; /* RW Overall shared limit */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct STL_BUFFER_CONTROL_TABLE_VL_s { /* Per VL data */
|
|
Packit |
857059 |
uint16 TxDedicatedLimit; /* RW Dedicated limit */
|
|
Packit |
857059 |
uint16 TxSharedLimit; /* RW Shared limit */
|
|
Packit |
857059 |
} VL[STL_MAX_VLS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_BUFFER_CONTROL_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// NOTE: STL_BUFFER_CONTROL_TABLE is NOT 8 byte aligned. When doing multiblock queries, each block
|
|
Packit |
857059 |
// *MUST* be rounded to the nearest 8 byte boundary, or PRR will reject any SMA request for more than
|
|
Packit |
857059 |
// one block. In the future we may just want to pad out the structure, for now the following macros should
|
|
Packit |
857059 |
// be used when working with BCT blocks inside of SMAs.
|
|
Packit |
857059 |
#define STL_BFRCTRLTAB_PAD_SIZE ((sizeof(STL_BUFFER_CONTROL_TABLE)+7)&~0x7)
|
|
Packit |
857059 |
#define STL_NUM_BFRCTLTAB_BLOCKS_PER_DRSMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_DR / STL_BFRCTRLTAB_PAD_SIZE))
|
|
Packit |
857059 |
#define STL_NUM_BFRCTLTAB_BLOCKS_PER_LID_SMP ((uint8_t)(STL_MAX_PAYLOAD_SMP_LR / STL_BFRCTRLTAB_PAD_SIZE))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Congestion Info
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define CC_CONGESTION_INFO_CREDIT_STARVATION 0x0001 /* Supports credit starvation (switch only) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint16 CongestionInfo; /* RO Defined in IBTA V1.2.1 A10.4.3.3. */
|
|
Packit |
857059 |
uint8 ControlTableCap; /* RO Number of supported entries in */
|
|
Packit |
857059 |
/* HFI Congestion Control Table */
|
|
Packit |
857059 |
uint8 CongestionLogLength; /* RO. Legal values are 0 <= N <= 96 */
|
|
Packit |
857059 |
} STL_CONGESTION_INFO;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Switch Congestion Log
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The Log is up to 96 entries long. Each Log is 96 entries long.
|
|
Packit |
857059 |
* If a request asks for more entries than the device supports, the
|
|
Packit |
857059 |
* remainder should be zero-filled.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_CONGESTION_LOG_ELEMENTS 96 /* Max num elements in log (SW and HFI) */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* POD: 0 */
|
|
Packit |
857059 |
STL_LID SLID;
|
|
Packit |
857059 |
STL_LID DLID;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
SC: 5,
|
|
Packit |
857059 |
Reserved: 3 );
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved2;
|
|
Packit |
857059 |
uint16 Reserved3;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 TimeStamp;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} STL_SWITCH_CONGESTION_LOG_EVENT;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RO */
|
|
Packit |
857059 |
uint8 LogType; /* shall be 1 in response from a switch */
|
|
Packit |
857059 |
uint8 CongestionFlags;
|
|
Packit |
857059 |
uint16 LogEventsCounter; /* POD: 0 */
|
|
Packit |
857059 |
uint32 CurrentTimeStamp; /* POD: 0 */
|
|
Packit |
857059 |
uint8 PortMap[256/8];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SWITCH_CONGESTION_LOG_EVENT CongestionEntryList[STL_NUM_CONGESTION_LOG_ELEMENTS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_CONGESTION_LOG;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Switch Congestion Setting
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* bitfields for Control_Map */
|
|
Packit |
857059 |
#define CC_SWITCH_CONTROL_MAP_VICTIM_VALID 0x00000001 /* Victim_Mask */
|
|
Packit |
857059 |
#define CC_SWITCH_CONTROL_MAP_CREDIT_VALID 0x00000002 /* Credit_Mask */
|
|
Packit |
857059 |
#define CC_SWITCH_CONTROL_MAP_CC_VALID 0x00000004 /* Threshold & Packet_Size */
|
|
Packit |
857059 |
#define CC_SWITCH_CONTROL_MAP_CS_VALID 0x00000008 /* CS_threshold & CS_ReturnDelay */
|
|
Packit |
857059 |
#define CC_SWITCH_CONTROL_MAP_MARKING_VALID 0x00000010 /* Marking Rate */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RW */
|
|
Packit |
857059 |
uint32 Control_Map; /* POD: 0 */
|
|
Packit |
857059 |
uint8 Victim_Mask[256/8]; /* POD: 0 */
|
|
Packit |
857059 |
uint8 Credit_Mask[256/8]; /* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
Threshold: 4, /* POD: 0 */
|
|
Packit |
857059 |
Reserved: 4 );
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Packet_Size; /* in 64 byte units */
|
|
Packit |
857059 |
/* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
CS_Threshold: 4, /* POD: 0 */
|
|
Packit |
857059 |
Reserved2: 4 );
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved3;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 CS_ReturnDelay; /* POD: 0 */
|
|
Packit |
857059 |
uint16 Marking_Rate; /* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_CONGESTION_SETTING;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Switch Port Congestion Setting
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 0000 0000 PPPP PPPP
|
|
Packit |
857059 |
* N: Number of blocks
|
|
Packit |
857059 |
* P: Port number
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Values for Control_Type
|
|
Packit |
857059 |
#define SWITCH_PORT_CONGESTION_CONTROL_TYPE_CC 0
|
|
Packit |
857059 |
#define SWITCH_PORT_CONGESTION_CONTROL_TYPE_STARVATION 1
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
IB_BITFIELD4( uint8, /* POD: 0 */
|
|
Packit |
857059 |
Valid: 1,
|
|
Packit |
857059 |
Control_Type: 1,
|
|
Packit |
857059 |
Reserved: 2,
|
|
Packit |
857059 |
Threshold: 4 ); /* 0-15 where 0 = no marking and */
|
|
Packit |
857059 |
/* 15 = most aggressive */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Packet_Size; /* POD: 0. When Control_Type == 1 */
|
|
Packit |
857059 |
/* this field is reserved. When Control*/
|
|
Packit |
857059 |
/* _Type == 0, this field contains the */
|
|
Packit |
857059 |
/* minimum size of a packet which may */
|
|
Packit |
857059 |
/* be marked with a FECN. Packets */
|
|
Packit |
857059 |
/* smaller than this size will not be */
|
|
Packit |
857059 |
/* marked. Packet_Size is specified in */
|
|
Packit |
857059 |
/* credits. */
|
|
Packit |
857059 |
uint16 Marking_Rate; /* POD: 0. When Control_Type == 0 this */
|
|
Packit |
857059 |
/* contains the port marking rate, */
|
|
Packit |
857059 |
/* defined as the minimum number of */
|
|
Packit |
857059 |
/* packets between marking eligible */
|
|
Packit |
857059 |
/* packets with a FECN. */
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_PORT_CONGESTION_SETTING_ELEMENT;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RW */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_SWITCH_PORT_CONGESTION_SETTING_ELEMENT Elements[1];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SWITCH_PORT_CONGESTION_SETTING;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* HFI Congestion Log
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The Log is up to 96 entries long. Each Log is 96 entries long.
|
|
Packit |
857059 |
* If a request asks for more entries than the device supports, the
|
|
Packit |
857059 |
* remainder should be zero-filled.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define CC_RC_TYPE 0
|
|
Packit |
857059 |
#define CC_UC_TYPE 1
|
|
Packit |
857059 |
#define CC_RD_TYPE 2
|
|
Packit |
857059 |
#define CC_UD_TYPE 3
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* POD: 0 */
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
uint8 AsReg8s[3];
|
|
Packit |
857059 |
} Local_QP_CN_Entry; /* 0->port threshold reached */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct {
|
|
Packit |
857059 |
uint8 AsReg8s[3];
|
|
Packit |
857059 |
} Remote_QP_Number_CN_Entry; /* 0 for UD */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
SL_CN_Entry: 5,
|
|
Packit |
857059 |
Service_Type_CN_Entry: 3 );
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8 Reserved;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_LID Remote_LID_CN_Entry; /* IBTA already used 32 bits for this */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32 TimeStamp_CN_Entry;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_LOG_EVENT;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RO */
|
|
Packit |
857059 |
uint8 LogType; /* shall be 0x2 in a response from an HFI */
|
|
Packit |
857059 |
uint8 CongestionFlags;
|
|
Packit |
857059 |
uint16 ThresholdEventCounter; /* POD: 0 */
|
|
Packit |
857059 |
uint32 CurrentTimeStamp; /* POD: 0 */
|
|
Packit |
857059 |
uint8 ThresholdCongestionEventMap[STL_MAX_SLS/8]; /* 1 bit per SL */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_HFI_CONGESTION_LOG_EVENT CongestionEntryList[STL_NUM_CONGESTION_LOG_ELEMENTS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_LOG;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* HFI Congestion Setting
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: 0 (not used)
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* This attribute applicable to HFIs or Enhanced Switch Port 0.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Port_Control field bit values */
|
|
Packit |
857059 |
#define CC_HFI_CONGESTION_SETTING_SL_PORT 0x0001 /* SL/Port control */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint8 CCTI_Increase; /* POD: 0 */
|
|
Packit |
857059 |
uint8 Reserved;
|
|
Packit |
857059 |
uint16 CCTI_Timer; /* POD: 0 */
|
|
Packit |
857059 |
uint8 TriggerThreshold; /* POD: 0 */
|
|
Packit |
857059 |
uint8 CCTI_Min; /* POD: 0 */
|
|
Packit |
857059 |
} STL_HFI_CONGESTION_SETTING_ENTRY;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RW */
|
|
Packit |
857059 |
uint32 Control_Map; /* POD: 0 */
|
|
Packit |
857059 |
uint16 Port_Control; /* POD: 0 */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
STL_HFI_CONGESTION_SETTING_ENTRY HFICongestionEntryList[STL_MAX_SLS];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_SETTING;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* HFI Congestion Control Table
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* Attribute Modifier as: NNNN NNNN 0000 0000 0000 0000 BBBB BBBB
|
|
Packit |
857059 |
* N: Number of blocks
|
|
Packit |
857059 |
* B: Block number
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* The HFI Congestion Control Table is up to 2**14 entries long. Each block
|
|
Packit |
857059 |
* is 64 entries long. Table is a linear array of blocks[2**8].
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_NUM_CONGESTION_CONTROL_ELEMENTS_BLOCK_ENTRIES 64 /* Num elements per block */
|
|
Packit |
857059 |
#define STL_NUM_CONGESTION_CONTROL_ELEMENTS_BLOCKS 256 /* Max num blocks per table */
|
|
Packit |
857059 |
#define STL_CONGESTION_CONTROL_ENTRY_MAX_VALUE 16384 /* 2**14 max multiplier value*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint16 AsReg16;
|
|
Packit |
857059 |
struct { IB_BITFIELD2( uint16,
|
|
Packit |
857059 |
CCT_Shift: 2, /* POD: 0 */
|
|
Packit |
857059 |
CCT_Multiplier: 14 ); /* POD: 0 */
|
|
Packit |
857059 |
} s;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_CONTROL_TABLE_ENTRY;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
STL_HFI_CONGESTION_CONTROL_TABLE_ENTRY CCT_Entry_List[STL_NUM_CONGESTION_CONTROL_ELEMENTS_BLOCK_ENTRIES];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_CONTROL_TABLE_BLOCK;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct { /* RW */
|
|
Packit |
857059 |
uint16 CCTI_Limit; /* POD: 0 */
|
|
Packit |
857059 |
STL_HFI_CONGESTION_CONTROL_TABLE_BLOCK CCT_Block_List[1]; /* 1 or more blocks */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX STL_HFI_CONGESTION_CONTROL_TABLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define CONGESTION_CONTROL_TABLE_CCTILIMIT_SZ (sizeof(uint16))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* this is conservative and considers the least payload */
|
|
Packit |
857059 |
#define CONGESTION_CONTROL_TABLE_BLOCKS_PER_MAD \
|
|
Packit |
857059 |
((MIN(STL_MAX_PAYLOAD_SMP_DR, STL_MAX_PAYLOAD_SMP_LR) - CONGESTION_CONTROL_TABLE_CCTILIMIT_SZ) / sizeof(STL_HFI_CONGESTION_CONTROL_TABLE_BLOCK))
|
|
Packit |
857059 |
#define CONGESTION_CONTROL_TABLE_ENTRIES_PER_MAD \
|
|
Packit |
857059 |
(CONGESTION_CONTROL_TABLE_BLOCKS_PER_MAD * \
|
|
Packit |
857059 |
STL_NUM_CONGESTION_CONTROL_ELEMENTS_BLOCK_ENTRIES)
|
|
Packit |
857059 |
#define CONGESTION_CONTROL_IMPLEMENTATION_LIMIT 895
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint64 M_Key; /* A 64 bit key, */
|
|
Packit |
857059 |
STL_LID DrSLID; /* Directed route source LID */
|
|
Packit |
857059 |
STL_LID DrDLID; /* Directed route destination LID */
|
|
Packit |
857059 |
uint8 InitPath[64]; /* 64-byte field containing the initial */
|
|
Packit |
857059 |
/* directed path */
|
|
Packit |
857059 |
uint8 RetPath[64]; /* 64-byte field containing the */
|
|
Packit |
857059 |
/* returning directed path */
|
|
Packit |
857059 |
uint8 Reserved2[8]; /* For the purpose of aligning the Data */
|
|
Packit |
857059 |
/* field on a 16-byte boundary */
|
|
Packit |
857059 |
uint8 SMPData[STL_MAX_PAYLOAD_SMP_DR]; /* Up to 'MAX' byte field of SMP */
|
|
Packit |
857059 |
/* data used to contain the */
|
|
Packit |
857059 |
/* method's attribute */
|
|
Packit |
857059 |
} PACK_SUFFIX DRStlSmp_t;
|
|
Packit |
857059 |
#define STL_SMP_DR_HDR_LEN (sizeof(DRStlSmp_t) - STL_MAX_PAYLOAD_SMP_DR)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct {
|
|
Packit |
857059 |
uint64 M_Key; /* A 64 bit key, */
|
|
Packit |
857059 |
uint8 SMPData[STL_MAX_PAYLOAD_SMP_LR]; /* Up to 'MAX' byte field of SMP */
|
|
Packit |
857059 |
/* data used to contain the */
|
|
Packit |
857059 |
/* method's attribute */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PACK_SUFFIX LRStlSmp_t;
|
|
Packit |
857059 |
#define STL_SMP_LR_HDR_LEN (sizeof(LRStlSmp_t) - STL_MAX_PAYLOAD_SMP_LR)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include "iba/public/ipackoff.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#if defined (__cplusplus)
|
|
Packit |
857059 |
};
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#endif /* __IBA_STL_SM_TYPES_H__ */
|