Blame IbAccess/Common/Inc/stl_pa_types.h

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_ */