|
Packit |
857059 |
/* BEGIN_ICS_COPYRIGHT7 ****************************************
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Copyright (c) 2015-2017, Intel Corporation
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Redistribution and use in source and binary forms, with or without
|
|
Packit |
857059 |
modification, are permitted provided that the following conditions are met:
|
|
Packit |
857059 |
|
|
Packit |
857059 |
* Redistributions of source code must retain the above copyright notice,
|
|
Packit |
857059 |
this list of conditions and the following disclaimer.
|
|
Packit |
857059 |
* Redistributions in binary form must reproduce the above copyright
|
|
Packit |
857059 |
notice, this list of conditions and the following disclaimer in the
|
|
Packit |
857059 |
documentation and/or other materials provided with the distribution.
|
|
Packit |
857059 |
* Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
857059 |
may be used to endorse or promote products derived from this software
|
|
Packit |
857059 |
without specific prior written permission.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
857059 |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
857059 |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
Packit |
857059 |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
Packit |
857059 |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit |
857059 |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
Packit |
857059 |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
Packit |
857059 |
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
Packit |
857059 |
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
Packit |
857059 |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
** END_ICS_COPYRIGHT7 ****************************************/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* [ICS VERSION STRING: unknown] */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifndef _STL_PA_TYPES_H_
|
|
Packit |
857059 |
#define _STL_PA_TYPES_H_ (1) /* suppress duplicate loading of this file */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include "iba/public/datatypes.h"
|
|
Packit |
857059 |
#include "iba/public/ibyteswap.h"
|
|
Packit |
857059 |
#include "iba/stl_mad_types.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifdef __cplusplus
|
|
Packit |
857059 |
extern "C" {
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include "iba/public/ipackon.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// XML Defines
|
|
Packit |
857059 |
#define STL_PM_MAX_DG_PER_PMPG 5 //Maximum number of Monitors allowed in a PmPortGroup
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/** PA MAD Payloads */
|
|
Packit |
857059 |
#define STL_PM_GROUPNAMELEN 64
|
|
Packit |
857059 |
#define STL_PM_NODEDESCLEN 64
|
|
Packit |
857059 |
#define STL_PM_MAX_GROUPS 10
|
|
Packit |
857059 |
#define STL_PM_VFNAMELEN 64
|
|
Packit |
857059 |
#define STL_PM_MAX_VFS 32
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PM_UTIL_GRAN_PERCENT 10 /* granularity of utilization buckets */
|
|
Packit |
857059 |
#define STL_PM_UTIL_BUCKETS (100 / STL_PM_UTIL_GRAN_PERCENT)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PM_CAT_GRAN_PERCENT 25 /* granularity of error buckets */
|
|
Packit |
857059 |
#define STL_PM_CATEGORY_BUCKETS ((100 / STL_PM_CAT_GRAN_PERCENT) + 1) // extra bucket is for those over threshold
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* ClassPortInfo Capability bits */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef STL_FIELDUNION8(STL_PA_CLASS_PORT_INFO_CAPABILITY_MASK, 16,
|
|
Packit |
857059 |
Reserved1: 2, /* start of class dependent bits */
|
|
Packit |
857059 |
IsPerImageListsSupported: 1, /* query to get group/vf list from specific images */
|
|
Packit |
857059 |
IsVFFocusTypesSupported: 1, /* VF level Focus types */
|
|
Packit |
857059 |
IsTopologyInfoSupported: 1, /* query to get the topology info from PM */
|
|
Packit |
857059 |
/* (GetGroupNodeInfo and GetGroupLinkInfo) */
|
|
Packit |
857059 |
IsExtFocusTypesSupported: 1, /* RO - PA supports extended focus types */
|
|
Packit |
857059 |
/* (unexpclrport, norespport and */
|
|
Packit |
857059 |
/* skippedport) in GetFocusPorts and */
|
|
Packit |
857059 |
/* adds GetFocusPortsMultiSelect */
|
|
Packit |
857059 |
Reserved3: 1,
|
|
Packit |
857059 |
IsAbsTimeQuerySupported: 1, /* RO - PA supports AbsImageTime queries w/ absoluteTime in Image ID */
|
|
Packit |
857059 |
Reserved2: 8); /* class independent bits*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* PA capability mask defines
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PA_CPI_CAPMASK_ABSTIMEQUERY 0x0100
|
|
Packit |
857059 |
#define STL_PA_CPI_CAPMASK_EXT_FOCUSTYPES 0x0400
|
|
Packit |
857059 |
#define STL_PA_CPI_CAPMASK_TOPO_INFO 0x0800
|
|
Packit |
857059 |
#define STL_PA_CPI_CAPMASK_VF_FOCUSTYPES 0x1000
|
|
Packit |
857059 |
#define STL_PA_CPI_CAPMASK_IMAGE_LISTS 0x2000
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline void
|
|
Packit |
857059 |
StlPaClassPortInfoCapMask(char buf[80], uint16 cmask)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!cmask) {
|
|
Packit |
857059 |
snprintf(buf, 80, "-");
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
snprintf(buf, 80, "%s%s%s%s%s%s%s%s",
|
|
Packit |
857059 |
(cmask & STL_CLASS_PORT_CAPMASK_TRAP) ? "Trap " : "",
|
|
Packit |
857059 |
(cmask & STL_CLASS_PORT_CAPMASK_NOTICE) ? "Notice " : "",
|
|
Packit |
857059 |
(cmask & STL_CLASS_PORT_CAPMASK_CM2) ? "CapMask2 " : "",
|
|
Packit |
857059 |
/* Class Specific */
|
|
Packit |
857059 |
(cmask & STL_PA_CPI_CAPMASK_ABSTIMEQUERY) ? "AbsTime " : "",
|
|
Packit |
857059 |
(cmask & STL_PA_CPI_CAPMASK_EXT_FOCUSTYPES) ? "ExtFocusTypes " : "",
|
|
Packit |
857059 |
(cmask & STL_PA_CPI_CAPMASK_TOPO_INFO) ? "TopologyInfo " : "",
|
|
Packit |
857059 |
(cmask & STL_PA_CPI_CAPMASK_VF_FOCUSTYPES) ? "VFFocusTypes " : "",
|
|
Packit |
857059 |
(cmask & STL_PA_CPI_CAPMASK_IMAGE_LISTS) ? "ImageLists " : "");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline void
|
|
Packit |
857059 |
StlPaClassPortInfoCapMask2(char buf[80], uint32 cmask)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!cmask) {
|
|
Packit |
857059 |
snprintf(buf, 80, "-");
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
buf[0] = '\0';
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Check to see if the Focus Select has no Value
|
|
Packit |
857059 |
#define IS_FOCUS_SELECT_NO_VAL(SELECT) \
|
|
Packit |
857059 |
((SELECT == STL_PA_SELECT_UNEXP_CLR_PORT) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_NO_RESP_PORT) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_SKIPPED_PORT))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Check to see if the Focus select is an UTIL BW category
|
|
Packit |
857059 |
#define IS_FOCUS_SELECT_UTIL(SELECT) \
|
|
Packit |
857059 |
((SELECT == STL_PA_SELECT_UTIL_HIGH) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_UTIL_LOW) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_VF_UTIL_HIGH) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_VF_UTIL_LOW))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Check to see if it is a VF Focus select
|
|
Packit |
857059 |
#define IS_VF_FOCUS_SELECT(SELECT) \
|
|
Packit |
857059 |
((SELECT == STL_PA_SELECT_VF_UTIL_HIGH) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_VF_UTIL_LOW) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_VF_UTIL_PKTS_HIGH) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_CATEGORY_VF_BUBBLE) || \
|
|
Packit |
857059 |
(SELECT == STL_PA_SELECT_CATEGORY_VF_CONG))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_List {
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN]; // \0 terminated - actual number indicated by numGroups
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_GROUP_LIST;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define PACLIENT_IMAGE_CURRENT 0 // imageNumber of most recent sweep image
|
|
Packit |
857059 |
#define PACLIENT_IMAGE_TIMED -1 // imageNumber of Image with particular time
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Image_ID_Data {
|
|
Packit |
857059 |
uint64 imageNumber;
|
|
Packit |
857059 |
int32 imageOffset;
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint32 absoluteTime;
|
|
Packit |
857059 |
int32 timeOffset;
|
|
Packit |
857059 |
} PACK_SUFFIX imageTime;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_IMAGE_ID_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Utilization statistical summary */
|
|
Packit |
857059 |
typedef struct _STL_PA_PM_Util_Stats {
|
|
Packit |
857059 |
uint64 totalMBps; /* MB per sec */
|
|
Packit |
857059 |
uint64 totalKPps; /* K pkts per sec */
|
|
Packit |
857059 |
uint32 avgMBps;
|
|
Packit |
857059 |
uint32 minMBps;
|
|
Packit |
857059 |
uint32 maxMBps;
|
|
Packit |
857059 |
uint32 numBWBuckets;
|
|
Packit |
857059 |
uint32 BWBuckets[STL_PM_UTIL_BUCKETS];
|
|
Packit |
857059 |
uint32 avgKPps;
|
|
Packit |
857059 |
uint32 minKPps;
|
|
Packit |
857059 |
uint32 maxKPps;
|
|
Packit |
857059 |
uint16 pmaNoRespPorts;
|
|
Packit |
857059 |
uint16 topoIncompPorts;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_PM_UTIL_STATS;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Error statistical summary */
|
|
Packit |
857059 |
typedef struct _STL_PA_PM_CATEGORY_SUMMARY {
|
|
Packit |
857059 |
uint32 integrityErrors;
|
|
Packit |
857059 |
uint32 congestion;
|
|
Packit |
857059 |
uint32 smaCongestion;
|
|
Packit |
857059 |
uint32 bubble;
|
|
Packit |
857059 |
uint32 securityErrors;
|
|
Packit |
857059 |
uint32 routingErrors;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16 utilizationPct10; /* in units of 10% */
|
|
Packit |
857059 |
uint16 discardsPct10; /* in units of 10% */
|
|
Packit |
857059 |
uint16 reserved[6];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_PM_CATEGORY_SUMMARY;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PM_CATEGORY_THRESHOLD {
|
|
Packit |
857059 |
uint32 integrityErrors;
|
|
Packit |
857059 |
uint32 congestion;
|
|
Packit |
857059 |
uint32 smaCongestion;
|
|
Packit |
857059 |
uint32 bubble;
|
|
Packit |
857059 |
uint32 securityErrors;
|
|
Packit |
857059 |
uint32 routingErrors;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PM_CATEGORY_THRESHOLD;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PM_CATEGORY_BUCKET {
|
|
Packit |
857059 |
uint32 integrityErrors;
|
|
Packit |
857059 |
uint32 congestion;
|
|
Packit |
857059 |
uint32 smaCongestion;
|
|
Packit |
857059 |
uint32 bubble;
|
|
Packit |
857059 |
uint32 securityErrors;
|
|
Packit |
857059 |
uint32 routingErrors;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PM_CATEGORY_BUCKET;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PM_CATEGORY_STATS {
|
|
Packit |
857059 |
STL_PA_PM_CATEGORY_SUMMARY categoryMaximums;
|
|
Packit |
857059 |
STL_PM_CATEGORY_BUCKET ports[STL_PM_CATEGORY_BUCKETS];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PM_CATEGORY_STATS;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_Info_Data {
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN]; // \0 terminated.
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint32 numInternalPorts;
|
|
Packit |
857059 |
uint32 numExternalPorts;
|
|
Packit |
857059 |
STL_PA_PM_UTIL_STATS internalUtilStats;
|
|
Packit |
857059 |
STL_PA_PM_UTIL_STATS sendUtilStats;
|
|
Packit |
857059 |
STL_PA_PM_UTIL_STATS recvUtilStats;
|
|
Packit |
857059 |
STL_PM_CATEGORY_STATS internalCategoryStats;
|
|
Packit |
857059 |
STL_PM_CATEGORY_STATS externalCategoryStats;
|
|
Packit |
857059 |
uint8 maxInternalRate;
|
|
Packit |
857059 |
uint8 minInternalRate;
|
|
Packit |
857059 |
uint8 maxExternalRate;
|
|
Packit |
857059 |
uint8 minExternalRate;
|
|
Packit |
857059 |
uint32 maxInternalMBps;
|
|
Packit |
857059 |
uint32 maxExternalMBps;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_PM_GROUP_INFO_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_Cfg_Req {
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN]; // \0 terminated.
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_PM_GROUP_CFG_REQ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_Cfg_Rsp {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
char nodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_PM_GROUP_CFG_RSP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// STL_PORT_COUNTERS_DATA.flags
|
|
Packit |
857059 |
#define STL_PA_PC_FLAG_DELTA 0x00000001 // are these DELTA(1) or running totals
|
|
Packit |
857059 |
#define STL_PA_PC_FLAG_UNEXPECTED_CLEAR 0x00000002 // was there an unexpected clear
|
|
Packit |
857059 |
#define STL_PA_PC_FLAG_SHARED_VL 0x00000004 // for vf port counters, vl is shared >1 vf
|
|
Packit |
857059 |
#define STL_PA_PC_FLAG_USER_COUNTERS 0x00000008 // for PA user controlled running counters
|
|
Packit |
857059 |
#define STL_PA_PC_FLAG_CLEAR_FAIL 0x00000010 // indicates clear query failed however, data should be valid
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PORT_COUNTERS_DATA {
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
uint32 flags;
|
|
Packit |
857059 |
uint32 reserved1;
|
|
Packit |
857059 |
uint64 reserved3;
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint64 portXmitData;
|
|
Packit |
857059 |
uint64 portRcvData;
|
|
Packit |
857059 |
uint64 portXmitPkts;
|
|
Packit |
857059 |
uint64 portRcvPkts;
|
|
Packit |
857059 |
uint64 portMulticastXmitPkts;
|
|
Packit |
857059 |
uint64 portMulticastRcvPkts;
|
|
Packit |
857059 |
uint64 localLinkIntegrityErrors;
|
|
Packit |
857059 |
uint64 fmConfigErrors;
|
|
Packit |
857059 |
uint64 portRcvErrors;
|
|
Packit |
857059 |
uint64 excessiveBufferOverruns;
|
|
Packit |
857059 |
uint64 portRcvConstraintErrors;
|
|
Packit |
857059 |
uint64 portRcvSwitchRelayErrors;
|
|
Packit |
857059 |
uint64 portXmitDiscards;
|
|
Packit |
857059 |
uint64 portXmitConstraintErrors;
|
|
Packit |
857059 |
uint64 portRcvRemotePhysicalErrors;
|
|
Packit |
857059 |
uint64 swPortCongestion;
|
|
Packit |
857059 |
uint64 portXmitWait;
|
|
Packit |
857059 |
uint64 portRcvFECN;
|
|
Packit |
857059 |
uint64 portRcvBECN;
|
|
Packit |
857059 |
uint64 portXmitTimeCong;
|
|
Packit |
857059 |
uint64 portXmitWastedBW;
|
|
Packit |
857059 |
uint64 portXmitWaitData;
|
|
Packit |
857059 |
uint64 portRcvBubble;
|
|
Packit |
857059 |
uint64 portMarkFECN;
|
|
Packit |
857059 |
uint32 linkErrorRecovery;
|
|
Packit |
857059 |
uint32 linkDowned;
|
|
Packit |
857059 |
uint8 uncorrectableErrors;
|
|
Packit |
857059 |
union {
|
|
Packit |
857059 |
uint8 AsReg8;
|
|
Packit |
857059 |
struct { IB_BITFIELD3(uint8,
|
|
Packit |
857059 |
numLanesDown : 4,
|
|
Packit |
857059 |
reserved : 1,
|
|
Packit |
857059 |
linkQualityIndicator : 3)
|
|
Packit |
857059 |
} PACK_SUFFIX s;
|
|
Packit |
857059 |
} lq;
|
|
Packit |
857059 |
uint8 reserved2[6];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PORT_COUNTERS_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint32 AsReg32;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct stl_counter_select_mask { IB_BITFIELD28(uint32,
|
|
Packit |
857059 |
PortXmitData : 1,
|
|
Packit |
857059 |
PortRcvData : 1,
|
|
Packit |
857059 |
PortXmitPkts : 1,
|
|
Packit |
857059 |
PortRcvPkts : 1,
|
|
Packit |
857059 |
PortMulticastXmitPkts : 1,
|
|
Packit |
857059 |
PortMulticastRcvPkts : 1,
|
|
Packit |
857059 |
PortXmitWait : 1,
|
|
Packit |
857059 |
SwPortCongestion : 1,
|
|
Packit |
857059 |
PortRcvFECN : 1,
|
|
Packit |
857059 |
PortRcvBECN : 1,
|
|
Packit |
857059 |
PortXmitTimeCong : 1,
|
|
Packit |
857059 |
PortXmitWastedBW : 1,
|
|
Packit |
857059 |
PortXmitWaitData : 1,
|
|
Packit |
857059 |
PortRcvBubble : 1,
|
|
Packit |
857059 |
PortMarkFECN : 1,
|
|
Packit |
857059 |
PortRcvConstraintErrors : 1,
|
|
Packit |
857059 |
PortRcvSwitchRelayErrors : 1,
|
|
Packit |
857059 |
PortXmitDiscards : 1,
|
|
Packit |
857059 |
PortXmitConstraintErrors : 1,
|
|
Packit |
857059 |
PortRcvRemotePhysicalErrors : 1,
|
|
Packit |
857059 |
LocalLinkIntegrityErrors : 1,
|
|
Packit |
857059 |
PortRcvErrors : 1,
|
|
Packit |
857059 |
ExcessiveBufferOverruns : 1,
|
|
Packit |
857059 |
FMConfigErrors : 1,
|
|
Packit |
857059 |
LinkErrorRecovery : 1,
|
|
Packit |
857059 |
LinkDowned : 1,
|
|
Packit |
857059 |
UncorrectableErrors : 1,
|
|
Packit |
857059 |
Reserved : 5)
|
|
Packit |
857059 |
} PACK_SUFFIX s;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} CounterSelectMask_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_CLR_PORT_COUNTERS_DATA {
|
|
Packit |
857059 |
STL_LID NodeLid;
|
|
Packit |
857059 |
uint8 PortNumber;
|
|
Packit |
857059 |
uint8 Reserved[3];
|
|
Packit |
857059 |
uint64 Reserved2;
|
|
Packit |
857059 |
CounterSelectMask_t CounterSelectMask;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CLR_PORT_COUNTERS_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_CLR_ALL_PORT_COUNTERS_DATA {
|
|
Packit |
857059 |
CounterSelectMask_t CounterSelectMask;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CLR_ALL_PORT_COUNTERS_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_INTEGRITY_WEIGHTS {
|
|
Packit |
857059 |
uint8 LocalLinkIntegrityErrors;
|
|
Packit |
857059 |
uint8 PortRcvErrors;
|
|
Packit |
857059 |
uint8 ExcessiveBufferOverruns;
|
|
Packit |
857059 |
uint8 LinkErrorRecovery;
|
|
Packit |
857059 |
uint8 LinkDowned;
|
|
Packit |
857059 |
uint8 UncorrectableErrors;
|
|
Packit |
857059 |
uint8 FMConfigErrors;
|
|
Packit |
857059 |
uint8 LinkQualityIndicator;
|
|
Packit |
857059 |
uint8 LinkWidthDowngrade;
|
|
Packit |
857059 |
uint8 reserved[7];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_INTEGRITY_WEIGHTS_T;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PM_CATEGORY_THRESHOLDS {
|
|
Packit |
857059 |
uint32 integrityErrors;
|
|
Packit |
857059 |
uint32 congestion;
|
|
Packit |
857059 |
uint32 smaCongestion;
|
|
Packit |
857059 |
uint32 bubble;
|
|
Packit |
857059 |
uint32 securityErrors;
|
|
Packit |
857059 |
uint32 routingErrors;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PM_CATEGORY_THRESHOLDS;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_CONGESTION_WEIGHTS {
|
|
Packit |
857059 |
uint8 PortXmitWait;
|
|
Packit |
857059 |
uint8 SwPortCongestion;
|
|
Packit |
857059 |
uint8 PortRcvFECN;
|
|
Packit |
857059 |
uint8 PortRcvBECN;
|
|
Packit |
857059 |
uint8 PortXmitTimeCong;
|
|
Packit |
857059 |
uint8 PortMarkFECN;
|
|
Packit |
857059 |
uint16 reserved;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_CONGESTION_WEIGHTS_T;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* PM configuration flags.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define STL_PM_NONE 0x0
|
|
Packit |
857059 |
#define STL_PM_PROCESS_VL_COUNTERS 0x00000001 // Enable Processing of VL Counters
|
|
Packit |
857059 |
#define STL_PM_PROCESS_HFI_COUNTERS 0x00000002 // Enable Processing of HFI Counters
|
|
Packit |
857059 |
#define STL_PM_PROCESS_CLR_DATA_COUNTERS 0x00000004 // Enable Clearing of Data Counters
|
|
Packit |
857059 |
#define STL_PM_PROCESS_CLR_64BIT_COUNTERS 0x00000008 // Enable Clearing of 64 bit Error Counters
|
|
Packit |
857059 |
#define STL_PM_PROCESS_CLR_32BIT_COUNTERS 0x00000010 // Enable Clearing of 32 bit Error Counters
|
|
Packit |
857059 |
#define STL_PM_PROCESS_CLR_8BIT_COUNTERS 0x00000020 // Enable Clearing of 8 bit Error Counters
|
|
Packit |
857059 |
#define STL_PM_PROCESS_ERRORINFO 0x00000040 // Enable Getting/Clearing of Error Info
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline
|
|
Packit |
857059 |
void StlFormatPmFlags(char buf[80], uint32 pmFlags)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
snprintf(buf, 80, "%s=%s %s=%s %s=%s %s=%s",
|
|
Packit |
857059 |
"ProcessHFICntrs", pmFlags & STL_PM_PROCESS_HFI_COUNTERS ? "On" : "Off",
|
|
Packit |
857059 |
"ProcessVLCntrs", pmFlags & STL_PM_PROCESS_VL_COUNTERS ? "On" : "Off",
|
|
Packit |
857059 |
"ClrDataCntrs", pmFlags & STL_PM_PROCESS_CLR_DATA_COUNTERS ? "On" : "Off",
|
|
Packit |
857059 |
"Clr64bitErrCntrs", pmFlags & STL_PM_PROCESS_CLR_64BIT_COUNTERS ? "On" : "Off");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline
|
|
Packit |
857059 |
void StlFormatPmFlags2(char buf[80], uint32 pmFlags)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
snprintf(buf, 80, "%s=%s %s=%s %s=%s",
|
|
Packit |
857059 |
"Clr32bitErrCntrs", pmFlags & STL_PM_PROCESS_CLR_32BIT_COUNTERS ? "On" : "Off",
|
|
Packit |
857059 |
"Clr8bitErrCntrs", pmFlags & STL_PM_PROCESS_CLR_8BIT_COUNTERS ? "On" : "Off",
|
|
Packit |
857059 |
"ProcessErrorInfo", pmFlags & STL_PM_PROCESS_ERRORINFO ? "On" : "Off");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_PM_Cfg_Data {
|
|
Packit |
857059 |
uint32 sweepInterval;
|
|
Packit |
857059 |
uint32 maxClients;
|
|
Packit |
857059 |
uint32 sizeHistory;
|
|
Packit |
857059 |
uint32 sizeFreeze;
|
|
Packit |
857059 |
uint32 lease;
|
|
Packit |
857059 |
uint32 pmFlags;
|
|
Packit |
857059 |
STL_CONGESTION_WEIGHTS_T congestionWeights;
|
|
Packit |
857059 |
STL_PM_CATEGORY_THRESHOLDS categoryThresholds;
|
|
Packit |
857059 |
STL_INTEGRITY_WEIGHTS_T integrityWeights;
|
|
Packit |
857059 |
uint64 memoryFootprint;
|
|
Packit |
857059 |
uint32 maxAttempts;
|
|
Packit |
857059 |
uint32 respTimeout;
|
|
Packit |
857059 |
uint32 minRespTimeout;
|
|
Packit |
857059 |
uint32 maxParallelNodes;
|
|
Packit |
857059 |
uint32 pmaBatchSize;
|
|
Packit |
857059 |
uint8 errorClear;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_PM_CFG_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_MOVE_FREEZE_DATA {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA oldFreezeImage;
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA newFreezeImage;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_MOVE_FREEZE_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PA_SELECT_UNEXP_CLR_PORT 0x00010101
|
|
Packit |
857059 |
#define STL_PA_SELECT_NO_RESP_PORT 0x00010102
|
|
Packit |
857059 |
#define STL_PA_SELECT_SKIPPED_PORT 0x00010103
|
|
Packit |
857059 |
#define STL_PA_SELECT_UTIL_HIGH 0x00020001 // highest first, descending
|
|
Packit |
857059 |
#define STL_PA_SELECT_UTIL_MC_HIGH 0x00020081 // not supported
|
|
Packit |
857059 |
#define STL_PA_SELECT_UTIL_PKTS_HIGH 0x00020082
|
|
Packit |
857059 |
#define STL_PA_SELECT_VF_UTIL_HIGH 0x00020083 // Only used with VFs
|
|
Packit |
857059 |
#define STL_PA_SELECT_VF_UTIL_PKTS_HIGH 0x00020084 // Only used with VFs
|
|
Packit |
857059 |
#define STL_PA_SELECT_UTIL_LOW 0x00020101 // lowest first, ascending
|
|
Packit |
857059 |
#define STL_PA_SELECT_UTIL_MC_LOW 0x00020102 // not supported
|
|
Packit |
857059 |
#define STL_PA_SELECT_VF_UTIL_LOW 0x00020103 // Only used with VFs
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_INTEG 0x00030001 // hightest first, descending
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_CONG 0x00030002
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_SMA_CONG 0x00030003
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_BUBBLE 0x00030004
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_SEC 0x00030005
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_ROUT 0x00030006
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_VF_CONG 0x00030007 // Only used with VFs
|
|
Packit |
857059 |
#define STL_PA_SELECT_CATEGORY_VF_BUBBLE 0x00030008 // Only used with VFs
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_FOCUS_PORTS_REQ {
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint32 select;
|
|
Packit |
857059 |
uint32 start;
|
|
Packit |
857059 |
uint32 range;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_FOCUS_PORTS_REQ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_FOCUS_PORT_TUPLE {
|
|
Packit |
857059 |
uint32 select;
|
|
Packit |
857059 |
uint8 comparator;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
uint64 argument;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_FOCUS_PORT_TUPLE;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_NUM_FOCUS_PORT_TUPLES 8
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define FOCUS_PORTS_LOGICAL_OPERATOR_INVALID 0
|
|
Packit |
857059 |
#define FOCUS_PORTS_LOGICAL_OPERATOR_AND 1
|
|
Packit |
857059 |
#define FOCUS_PORTS_LOGICAL_OPERATOR_OR 2
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define FOCUS_PORTS_COMPARATOR_INVALID 0
|
|
Packit |
857059 |
#define FOCUS_PORTS_COMPARATOR_GREATER_THAN 1
|
|
Packit |
857059 |
#define FOCUS_PORTS_COMPARATOR_LESS_THAN 2
|
|
Packit |
857059 |
#define FOCUS_PORTS_COMPARATOR_GREATER_THAN_OR_EQUAL 3
|
|
Packit |
857059 |
#define FOCUS_PORTS_COMPARATOR_LESS_THAN_OR_EQUAL 4
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_FOCUS_PORTS_MULTISELECT_REQ {
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint32 start;
|
|
Packit |
857059 |
uint32 range;
|
|
Packit |
857059 |
STL_FOCUS_PORT_TUPLE tuple[MAX_NUM_FOCUS_PORT_TUPLES];
|
|
Packit |
857059 |
uint8 logical_operator;
|
|
Packit |
857059 |
uint8 reserved[7];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_FOCUS_PORTS_MULTISELECT_REQ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PA_FOCUS_STATUS_OK 0
|
|
Packit |
857059 |
#define STL_PA_FOCUS_STATUS_PMA_IGNORE 1
|
|
Packit |
857059 |
#define STL_PA_FOCUS_STATUS_PMA_FAILURE 2
|
|
Packit |
857059 |
#define STL_PA_FOCUS_STATUS_TOPO_FAILURE 3
|
|
Packit |
857059 |
#define STL_PA_FOCUS_STATUS_UNEXPECTED_CLEAR 4
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline
|
|
Packit |
857059 |
const char* StlFocusStatusToText(uint8 status)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
switch (status) {
|
|
Packit |
857059 |
case STL_PA_FOCUS_STATUS_OK: return "OK";
|
|
Packit |
857059 |
case STL_PA_FOCUS_STATUS_PMA_IGNORE: return "PMA Ignore";
|
|
Packit |
857059 |
case STL_PA_FOCUS_STATUS_PMA_FAILURE: return "PMA Failure";
|
|
Packit |
857059 |
case STL_PA_FOCUS_STATUS_TOPO_FAILURE: return "Topo Failure";
|
|
Packit |
857059 |
case STL_PA_FOCUS_STATUS_UNEXPECTED_CLEAR: return "Unexp Clear";
|
|
Packit |
857059 |
default: return "Unknown";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline
|
|
Packit |
857059 |
const char* StlFocusAttributeToText(uint32 attribute)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
switch (attribute) {
|
|
Packit |
857059 |
case STL_PA_SELECT_UNEXP_CLR_PORT: return "Unexpected Clear";
|
|
Packit |
857059 |
case STL_PA_SELECT_NO_RESP_PORT: return "No Response Ports";
|
|
Packit |
857059 |
case STL_PA_SELECT_SKIPPED_PORT: return "Skipped Ports";
|
|
Packit |
857059 |
case STL_PA_SELECT_UTIL_HIGH: return "High Utilization";
|
|
Packit |
857059 |
case STL_PA_SELECT_UTIL_PKTS_HIGH: return "Packet Rate";
|
|
Packit |
857059 |
case STL_PA_SELECT_UTIL_LOW: return "Low Utilization";
|
|
Packit |
857059 |
case STL_PA_SELECT_VF_UTIL_HIGH: return "VF High Utilization";
|
|
Packit |
857059 |
case STL_PA_SELECT_VF_UTIL_PKTS_HIGH: return "VF Packet Rate";
|
|
Packit |
857059 |
case STL_PA_SELECT_VF_UTIL_LOW: return "VF Low Utilization";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_INTEG: return "Integrity Errors";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_CONG: return "Congestion";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_SMA_CONG: return "SMA Congestion";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_BUBBLE: return "Bubble";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_SEC: return "Security Errors";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_ROUT: return "Routing Errors";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_VF_CONG: return "VF Congestion";
|
|
Packit |
857059 |
case STL_PA_SELECT_CATEGORY_VF_BUBBLE:return "VF Bubble";
|
|
Packit |
857059 |
default: return "Unknown";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline
|
|
Packit |
857059 |
const char* StlComparatorToText(uint8 comparator)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
switch (comparator) {
|
|
Packit |
857059 |
case FOCUS_PORTS_COMPARATOR_GREATER_THAN: return "greater than";
|
|
Packit |
857059 |
case FOCUS_PORTS_COMPARATOR_LESS_THAN: return "less than";
|
|
Packit |
857059 |
case FOCUS_PORTS_COMPARATOR_GREATER_THAN_OR_EQUAL: return "greater than or equal to";
|
|
Packit |
857059 |
case FOCUS_PORTS_COMPARATOR_LESS_THAN_OR_EQUAL: return "less than or equal to";
|
|
Packit |
857059 |
case FOCUS_PORTS_COMPARATOR_INVALID:
|
|
Packit |
857059 |
default: return "invalid";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline
|
|
Packit |
857059 |
const char* StlOperatorToText(uint8 logical_operator)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
switch (logical_operator) {
|
|
Packit |
857059 |
case FOCUS_PORTS_LOGICAL_OPERATOR_AND: return "AND";
|
|
Packit |
857059 |
case FOCUS_PORTS_LOGICAL_OPERATOR_OR: return "OR";
|
|
Packit |
857059 |
case FOCUS_PORTS_LOGICAL_OPERATOR_INVALID:
|
|
Packit |
857059 |
default: return "invalid";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_FOCUS_PORTS_RSP {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 rate; // IB_STATIC_RATE - 5 bit value
|
|
Packit |
857059 |
uint8 maxVlMtu; // enum IB_MTU - 4 bit value
|
|
Packit |
857059 |
IB_BITFIELD2(uint8, localStatus : 4,
|
|
Packit |
857059 |
neighborStatus : 4)
|
|
Packit |
857059 |
uint64 value; // list sorting factor
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
char nodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
STL_LID neighborLid;
|
|
Packit |
857059 |
uint8 neighborPortNumber;
|
|
Packit |
857059 |
uint8 reserved3[3];
|
|
Packit |
857059 |
uint64 neighborValue;
|
|
Packit |
857059 |
uint64 neighborGuid;
|
|
Packit |
857059 |
char neighborNodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
} PACK_SUFFIX STL_FOCUS_PORTS_RSP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_FOCUS_PORTS_MULTISELECT_RSP {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 rate; // IB_STATIC_RATE - 5 bit value
|
|
Packit |
857059 |
uint8 maxVlMtu; // enum IB_MTU - 4 bit value
|
|
Packit |
857059 |
IB_BITFIELD2(uint8, localStatus : 4,
|
|
Packit |
857059 |
neighborStatus : 4)
|
|
Packit |
857059 |
uint64 value[MAX_NUM_FOCUS_PORT_TUPLES];
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
char nodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
STL_LID neighborLid;
|
|
Packit |
857059 |
uint8 neighborPortNumber;
|
|
Packit |
857059 |
uint8 reserved3[3];
|
|
Packit |
857059 |
uint64 neighborValue[MAX_NUM_FOCUS_PORT_TUPLES];
|
|
Packit |
857059 |
uint64 neighborGuid;
|
|
Packit |
857059 |
char neighborNodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
} PACK_SUFFIX STL_FOCUS_PORTS_MULTISELECT_RSP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_SMINFO_DATA {
|
|
Packit |
857059 |
STL_LID lid;
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
priority : 4,
|
|
Packit |
857059 |
state : 4)
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint16 reserved;
|
|
Packit |
857059 |
uint64 smPortGuid;
|
|
Packit |
857059 |
char smNodeDesc[64]; // can be 64 char w/o \0
|
|
Packit |
857059 |
} PACK_SUFFIX STL_SMINFO_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_IMAGE_INFO_DATA {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint64 sweepStart;
|
|
Packit |
857059 |
uint32 sweepDuration;
|
|
Packit |
857059 |
uint16 numHFIPorts;
|
|
Packit |
857059 |
uint16 reserved3;
|
|
Packit |
857059 |
uint16 reserved;
|
|
Packit |
857059 |
uint16 numSwitchNodes;
|
|
Packit |
857059 |
uint32 numSwitchPorts;
|
|
Packit |
857059 |
uint32 numLinks;
|
|
Packit |
857059 |
uint32 numSMs;
|
|
Packit |
857059 |
uint32 numNoRespNodes;
|
|
Packit |
857059 |
uint32 numNoRespPorts;
|
|
Packit |
857059 |
uint32 numSkippedNodes;
|
|
Packit |
857059 |
uint32 numSkippedPorts;
|
|
Packit |
857059 |
uint32 numUnexpectedClearPorts;
|
|
Packit |
857059 |
uint32 imageInterval;
|
|
Packit |
857059 |
STL_SMINFO_DATA SMInfo[2];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_IMAGE_INFO_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_LIST {
|
|
Packit |
857059 |
char vfName[STL_PM_VFNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_LIST;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_INFO_DATA {
|
|
Packit |
857059 |
char vfName[STL_PM_VFNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
uint64 reserved;
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint32 numPorts;
|
|
Packit |
857059 |
STL_PA_PM_UTIL_STATS internalUtilStats;
|
|
Packit |
857059 |
STL_PM_CATEGORY_STATS internalCategoryStats;
|
|
Packit |
857059 |
// these are added at the end to allow for forward and backward
|
|
Packit |
857059 |
// compatibility.
|
|
Packit |
857059 |
uint8 maxInternalRate;
|
|
Packit |
857059 |
uint8 minInternalRate;
|
|
Packit |
857059 |
uint32 maxInternalMBps;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_INFO_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_Cfg_Req {
|
|
Packit |
857059 |
char vfName[STL_PM_VFNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
uint64 reserved;
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_CFG_REQ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_Cfg_Rsp {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
char nodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_CFG_RSP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_PORT_COUNTERS_DATA {
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
uint32 flags;
|
|
Packit |
857059 |
uint32 reserved1;
|
|
Packit |
857059 |
uint64 reserved3;
|
|
Packit |
857059 |
char vfName[STL_PM_VFNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
uint64 reserved2;
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint64 portVFXmitData;
|
|
Packit |
857059 |
uint64 portVFRcvData;
|
|
Packit |
857059 |
uint64 portVFXmitPkts;
|
|
Packit |
857059 |
uint64 portVFRcvPkts;
|
|
Packit |
857059 |
uint64 portVFXmitDiscards;
|
|
Packit |
857059 |
uint64 swPortVFCongestion;
|
|
Packit |
857059 |
uint64 portVFXmitWait;
|
|
Packit |
857059 |
uint64 portVFRcvFECN;
|
|
Packit |
857059 |
uint64 portVFRcvBECN;
|
|
Packit |
857059 |
uint64 portVFXmitTimeCong;
|
|
Packit |
857059 |
uint64 portVFXmitWastedBW;
|
|
Packit |
857059 |
uint64 portVFXmitWaitData;
|
|
Packit |
857059 |
uint64 portVFRcvBubble;
|
|
Packit |
857059 |
uint64 portVFMarkFECN;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_PORT_COUNTERS_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef union {
|
|
Packit |
857059 |
uint32 AsReg32;
|
|
Packit |
857059 |
struct { IB_BITFIELD15(uint32,
|
|
Packit |
857059 |
PortVLXmitData : 1,
|
|
Packit |
857059 |
PortVLRcvData : 1,
|
|
Packit |
857059 |
PortVLXmitPkts : 1,
|
|
Packit |
857059 |
PortVLRcvPkts : 1,
|
|
Packit |
857059 |
PortVLXmitDiscards : 1,
|
|
Packit |
857059 |
SwPortVLCongestion : 1,
|
|
Packit |
857059 |
PortVLXmitWait : 1,
|
|
Packit |
857059 |
PortVLRcvFECN : 1,
|
|
Packit |
857059 |
PortVLRcvBECN : 1,
|
|
Packit |
857059 |
PortVLXmitTimeCong : 1,
|
|
Packit |
857059 |
PortVLXmitWastedBW : 1,
|
|
Packit |
857059 |
PortVLXmitWaitData : 1,
|
|
Packit |
857059 |
PortVLRcvBubble : 1,
|
|
Packit |
857059 |
PortVLMarkFECN : 1,
|
|
Packit |
857059 |
reserved : 18)
|
|
Packit |
857059 |
} PACK_SUFFIX s;
|
|
Packit |
857059 |
} STLVlCounterSelectMask;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_CLEAR_VF_PORT_COUNTERS_DATA {
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
uint64 reserved4;
|
|
Packit |
857059 |
char vfName[STL_PM_VFNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
uint64 reserved3;
|
|
Packit |
857059 |
STLVlCounterSelectMask vfCounterSelectMask;
|
|
Packit |
857059 |
uint32 reserved2;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_CLEAR_VF_PORT_COUNTERS_DATA;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_FOCUS_PORTS_REQ {
|
|
Packit |
857059 |
char vfName[STL_PM_VFNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
uint64 reserved;
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint32 select;
|
|
Packit |
857059 |
uint32 start;
|
|
Packit |
857059 |
uint32 range;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_FOCUS_PORTS_REQ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_FOCUS_PORTS_RSP {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
STL_LID nodeLid;
|
|
Packit |
857059 |
uint8 portNumber;
|
|
Packit |
857059 |
uint8 rate; // IB_STATIC_RATE - 5 bit value
|
|
Packit |
857059 |
uint8 maxVlMtu; // enum IB_MTU - 4 bit value
|
|
Packit |
857059 |
IB_BITFIELD2(uint8, localStatus : 4,
|
|
Packit |
857059 |
neighborStatus : 4)
|
|
Packit |
857059 |
uint64 value; // list sorting factor
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
char nodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
STL_LID neighborLid;
|
|
Packit |
857059 |
uint8 neighborPortNumber;
|
|
Packit |
857059 |
uint8 reserved3[3];
|
|
Packit |
857059 |
uint64 neighborValue;
|
|
Packit |
857059 |
uint64 neighborGuid;
|
|
Packit |
857059 |
char neighborNodeDesc[STL_PM_NODEDESCLEN]; // \0 terminated.
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_FOCUS_PORTS_RSP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_NodeInfo_Req {
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN];
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
char nodeDesc[STL_PM_NODEDESCLEN];
|
|
Packit |
857059 |
uint32 nodeLID;
|
|
Packit |
857059 |
uint32 reserved;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_GROUP_NODEINFO_REQ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_NodeInfo_Rsp {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint64 nodeGUID;
|
|
Packit |
857059 |
char nodeDesc[STL_PM_NODEDESCLEN];
|
|
Packit |
857059 |
uint32 nodeLID;
|
|
Packit |
857059 |
uint8 nodeType;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
uint64 portSelectMask[4];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_GROUP_NODEINFO_RSP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_LinkInfo_Req {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN];
|
|
Packit |
857059 |
uint32 lid;
|
|
Packit |
857059 |
uint8 port;
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_GROUP_LINKINFO_REQ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_Group_LinkInfo_Rsp {
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
uint32 fromLID;
|
|
Packit |
857059 |
uint32 toLID;
|
|
Packit |
857059 |
uint8 fromPort;
|
|
Packit |
857059 |
uint8 toPort;
|
|
Packit |
857059 |
IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
mtu:4,
|
|
Packit |
857059 |
activeSpeed:4)
|
|
Packit |
857059 |
IB_BITFIELD2( uint8,
|
|
Packit |
857059 |
txLinkWidthDowngradeActive:4,
|
|
Packit |
857059 |
rxLinkWidthDowngradeActive:4)
|
|
Packit |
857059 |
IB_BITFIELD2(uint8,
|
|
Packit |
857059 |
localStatus : 4,
|
|
Packit |
857059 |
neighborStatus : 4)
|
|
Packit |
857059 |
uint8 reserved[3];
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_GROUP_LINKINFO_RSP;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_GRP_LIST2 {
|
|
Packit |
857059 |
char groupName[STL_PM_GROUPNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_GROUP_LIST2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _STL_PA_VF_LIST2 {
|
|
Packit |
857059 |
char vfName[STL_PM_VFNAMELEN]; // \0 terminated
|
|
Packit |
857059 |
STL_PA_IMAGE_ID_DATA imageId;
|
|
Packit |
857059 |
} PACK_SUFFIX STL_PA_VF_LIST2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* End of packed data structures */
|
|
Packit |
857059 |
#include "iba/public/ipackoff.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Performance Analysis methods */
|
|
Packit |
857059 |
#define STL_PA_CMD_GET (0x01)
|
|
Packit |
857059 |
#define STL_PA_CMD_SET (0x02)
|
|
Packit |
857059 |
#define STL_PA_CMD_GET_RESP (0x81)
|
|
Packit |
857059 |
#define STL_PA_CMD_GETTABLE (0x12)
|
|
Packit |
857059 |
#define STL_PA_CMD_GETTABLE_RESP (0x92)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Performance Analysis attribute IDs */
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_CLASSPORTINFO 0x01
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_GRP_LIST 0xA0
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_GRP_INFO 0xA1
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_GRP_CFG 0xA2
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_PORT_CTRS 0xA3
|
|
Packit |
857059 |
#define STL_PA_ATTRID_CLR_PORT_CTRS 0xA4
|
|
Packit |
857059 |
#define STL_PA_ATTRID_CLR_ALL_PORT_CTRS 0xA5
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_PM_CONFIG 0xA6
|
|
Packit |
857059 |
#define STL_PA_ATTRID_FREEZE_IMAGE 0xA7
|
|
Packit |
857059 |
#define STL_PA_ATTRID_RELEASE_IMAGE 0xA8
|
|
Packit |
857059 |
#define STL_PA_ATTRID_RENEW_IMAGE 0xA9
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_FOCUS_PORTS 0xAA
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_IMAGE_INFO 0xAB
|
|
Packit |
857059 |
#define STL_PA_ATTRID_MOVE_FREEZE_FRAME 0xAC
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_VF_LIST 0xAD
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_VF_INFO 0xAE
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_VF_CONFIG 0xAF
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_VF_PORT_CTRS 0xB0
|
|
Packit |
857059 |
#define STL_PA_ATTRID_CLR_VF_PORT_CTRS 0xB1
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_VF_FOCUS_PORTS 0xB2
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_FOCUS_PORTS_MULTISELECT 0xB4
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_GRP_NODE_INFO 0xB5
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_GRP_LINK_INFO 0xB6
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_GRP_LIST2 0xB7
|
|
Packit |
857059 |
#define STL_PA_ATTRID_GET_VF_LIST2 0xB8
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Performance Analysis MAD status values */
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_UNAVAILABLE 0x0A00 // Engine unavailable
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_NO_GROUP 0x0B00 // No such group
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_NO_PORT 0x0C00 // Port not found
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_NO_VF 0x0D00 // VF not found
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_INVALID_PARAMETER 0x0E00 // Invalid parameter
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_NO_IMAGE 0x0F00 // Image not found
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_NO_DATA 0x1000 // No Data when port was not queried
|
|
Packit |
857059 |
#define STL_MAD_STATUS_STL_PA_BAD_DATA 0x1100 // Bad Data when query was unsuccessful
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* PM Service Record values */
|
|
Packit |
857059 |
#define STL_PM_SERVICE_NAME "Primary Intel OmniPath Performance Manager"
|
|
Packit |
857059 |
#define STL_PM_SERVICE_NAME_SEC "Secondary Intel OmniPath Performance Manager"
|
|
Packit |
857059 |
#define STL_PM_SERVICE_ID (0x1100d03c34845555ull)
|
|
Packit |
857059 |
#define STL_PM_SERVICE_ID_SEC (0x1100d03c34845555ull)
|
|
Packit |
857059 |
#define STL_PM_VERSION 0x01
|
|
Packit |
857059 |
#define STL_PM_MASTER 0x01 /* master state */
|
|
Packit |
857059 |
#define STL_PM_STANDBY 0x02 /* standby state */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PA_DATA_OFFSET 32
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PA_CLASS_VERSION 0x80
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* LinkQualityIndicator values */
|
|
Packit |
857059 |
#define STL_LINKQUALITY_EXCELLENT 5 /* working as intended */
|
|
Packit |
857059 |
#define STL_LINKQUALITY_VERY_GOOD 4 /* slightly below preferred, */
|
|
Packit |
857059 |
/* no action needed */
|
|
Packit |
857059 |
#define STL_LINKQUALITY_GOOD 3 /* low end of acceptable, */
|
|
Packit |
857059 |
/* recommend corrective action on */
|
|
Packit |
857059 |
/* next maintenance window */
|
|
Packit |
857059 |
#define STL_LINKQUALITY_POOR 2 /* below acceptable, */
|
|
Packit |
857059 |
/* recommend timely corrective action */
|
|
Packit |
857059 |
#define STL_LINKQUALITY_BAD 1 /* far below acceptable, */
|
|
Packit |
857059 |
/* immediate corrective action */
|
|
Packit |
857059 |
#define STL_LINKQUALITY_NONE 0 /* link down */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifdef __cplusplus
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#endif /* _STL_PA_TYPES_H_ */
|