Commit fee67371 authored by Scott Breyer's avatar Scott Breyer

Update to latest from build 10.1.0.0.145 (FF 10.1.0.0.126)

parent 1c92db79
......@@ -327,7 +327,7 @@ my %delta_comp_info_rhel72 = (
UserRpms => [ "libhfi1verbs", "libhfi1verbs-devel",
"hfi1-psm",
"hfi1-psm-devel", "hfi1-psm-compat",
"hfi1-diagtools-sw",
"hfi1-diagtools-sw", "hfidiags",
"hfi1-firmware", "hfi1-firmware_debug"
],
DebugRpms => [ "hfi1_debuginfo",
......@@ -623,7 +623,7 @@ my @delta_user_srpms_other = (
);
my @delta_user_srpms_rhel72 = (
"opa-scripts", "mpi-selector", "ibacm",
"libhfi1verbs", "hfi1-psm", "hfi1-diagtools-sw", "hfi1-firmware", "hfi1-firmware_debug",
"libhfi1verbs", "hfi1-psm", "hfi1-diagtools-sw", "hfidiags", "hfi1-firmware", "hfi1-firmware_debug",
"mvapich2", "openmpi", "gasnet", "openshmem", "openshmem-test-suite",
"shmem-benchmarks", "srptools", "hfi1_uefi"
);
......@@ -836,6 +836,12 @@ my %delta_srpm_info_rhel72 = (
PartOf => "", # filled in at runtime
BuildPrereq => [ 'readline-devel', 'ncurses-devel', ],
},
"hfidiags" => { Available => "",
Builds => "hfidiags",
PostReq => "",
PartOf => "", # filled in at runtime
BuildPrereq => [],
},
"hfi1-firmware" => { Available => "",
Builds => "hfi1-firmware",
PostReq => "",
......@@ -2802,10 +2808,7 @@ sub uninstall_opa_stack($$)
# determine if the given capability is configured for Autostart at boot
sub IsAutostart2_intel_hfi()
{
my $WhichStartup = $delta_comp_info{'intel_hfi'}{'StartupScript'};
my $ret = IsAutostart($WhichStartup); # just to be safe, test this too
return ($ret && ! is_blacklisted('hfi1'));
return (! is_blacklisted('hfi1'));
}
sub autostart_desc_intel_hfi()
{
......@@ -2814,14 +2817,18 @@ sub autostart_desc_intel_hfi()
# enable autostart for the given capability
sub enable_autostart2_intel_hfi()
{
remove_blacklist('hfi1');
rebuild_ramdisk();
if (! IsAutostart2_intel_hfi()) {
remove_blacklist('hfi1');
rebuild_ramdisk();
}
}
# disable autostart for the given capability
sub disable_autostart2_intel_hfi()
{
add_blacklist('hfi1');
rebuild_ramdisk();
if (IsAutostart2_intel_hfi()) {
add_blacklist('hfi1');
rebuild_ramdisk();
}
}
sub available_intel_hfi()
......
......@@ -205,14 +205,16 @@ sub os_vendor_version($)
my $rval = "";
my $mn = "";
if ( -e "/etc/os-release" && -e "/etc/redhat-release" ) {
if ( -e "/etc/os-release" ) {
$rval=`cat /etc/os-release | grep VERSION_ID | cut -d'=' -f2 | tr -d [\\"\\.0]`;
chop($rval);
$rval="ES".$rval;
if (!system("grep -qi centos /etc/redhat-release")) {
$rval = `cat /etc/redhat-release | cut -d' ' -f4`;
$rval =~ m/(\d+).(\d+)/;
$rval="ES".$1.$2;
if ( -e "/etc/redhat-release" ) {
if (!system("grep -qi centos /etc/redhat-release")) {
$rval = `cat /etc/redhat-release | cut -d' ' -f4`;
$rval =~ m/(\d+).(\d+)/;
$rval="ES".$1.$2;
}
}
} elsif ($vendor eq "apple") {
$rval=`sw_vers -productVersion|cut -f1-2 -d.`;
......
......@@ -255,12 +255,17 @@ sub rebuild_ramdisk()
END {
if ($CallDracut) {
my $cmd = "/usr/bin/dracut";
my $kver = `uname -r | xargs echo -n`;
my $tmpfile = "/tmp/initramfs-$kver.img";
# Reopen logfile
open_log($DracutOutputLogFile);
if ( -e $cmd ) {
NormalPrint("Rebuilding boot image with \"$cmd -f\"...");
if (system("$cmd -f") == 0) {
# Try to build a temporary image first as a dry-run to make sure
# a failed run will not destroy an existing image.
if (system("$cmd -f $tmpfile") == 0) {
system("mv -f $tmpfile /boot/");
NormalPrint("done.\n");
} else {
NormalPrint("failed.\n");
......
......@@ -603,7 +603,7 @@ sub rpm_run_install($$$)
if ( $? == 0 ) {
NormalPrint("$out");
} else {
NormalPrint("ERROR - Failed to install $rpmfile");
NormalPrint("ERROR - Failed to install $rpmfile\n");
NormalPrint("$out");
$exit_code = 1;
HitKeyCont;
......@@ -621,7 +621,7 @@ sub rpm_run_install($$$)
if ( $? == 0 ) {
NormalPrint("$out");
} else {
NormalPrint("ERROR - Failed to install $rpmfile");
NormalPrint("ERROR - Failed to install $rpmfile\n");
NormalPrint("$out");
$exit_code = 1;
HitKeyCont;
......
......@@ -55,7 +55,7 @@ sub disable_autostart($)
# disable autostart but leave any kill scripts so stopped on shutdown
# Note on SLES off removes kill scripts too, on redhat they remain
if($SYSTEMCTL_EXEC eq 0 &&
($WhichStartup eq "opafm" || $WhichStartup eq "opa"))
($WhichStartup eq "opafm" || $WhichStartup eq "opa" || $WhichStartup eq "ibacm"))
{
system "systemctl disable $WhichStartup >/dev/null 2>&1";
} else {
......@@ -69,7 +69,7 @@ sub enable_autostart($)
# cleanup to be safe
if($SYSTEMCTL_EXEC eq 0 &&
($WhichStartup eq "opafm" || $WhichStartup eq "opa"))
($WhichStartup eq "opafm" || $WhichStartup eq "opa" || $WhichStartup eq "ibacm"))
{
system "systemctl enable $WhichStartup >/dev/null 2>&1";
} else {
......@@ -85,7 +85,8 @@ sub IsAutostart($)
{
my($WhichStartup) = shift();
if($SYSTEMCTL_EXEC eq 0 && ($WhichStartup eq "opafm" || $WhichStartup eq "opa"))
if($SYSTEMCTL_EXEC eq 0 &&
($WhichStartup eq "opafm" || $WhichStartup eq "opa" || $WhichStartup eq "ibacm"))
{
my($isEnabled) = `systemctl is-enabled $WhichStartup 2>/dev/null`;
chomp($isEnabled);
......
......@@ -30,9 +30,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\file dsap_module.c
$Author: aestrin $
$Revision: 1.5 $
$Date: 2015/01/27 23:00:24 $
$Revision: 1.6 $
$Date: 2016/04/06 10:49:28 $
\brief Provider initialization and cleanup functions.
*/
......
......@@ -30,9 +30,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\file dsap_module.h
$Author: mwheinz $
$Revision: 1.3 $
$Date: 2015/01/22 18:07:38 $
$Revision: 1.4 $
$Date: 2016/04/06 10:49:28 $
Defines the prototypes and constants used by the ibacm provider dsap.
*/
......
......@@ -30,9 +30,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\file dsap_hca.h
$Author: mwheinz $
$Revision: 1.2 $
$Date: 2015/01/22 18:07:38 $
$Revision: 1.3 $
$Date: 2016/04/06 10:49:28 $
\brief Routines for registering for notifications from the SM.
*/
......
......@@ -30,9 +30,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\file dsap_topology.h
$Author: aestrin $
$Revision: 1.4 $
$Date: 2015/01/27 23:00:24 $
$Revision: 1.5 $
$Date: 2016/04/06 10:49:28 $
\brief Routines for populating tables to define fabric topology from the SM.
*/
......
This diff is collapsed.
......@@ -100,12 +100,14 @@ typedef struct _pmGroupConfig_s {
typedef struct _pmFocusPortEntry_s {
STL_LID_32 lid;
uint32 index;
uint8 portNum;
uint8 rate; // IB_STATIC_RATE
uint8 mtu; // enum STL MTU
uint8 neighborPortNum;
STL_LID_32 neighborLid;
uint8 localFlags:4;
uint8 neighborFlags:4;
uint8 reserved[3];
uint64 value;
uint64 guid;
char nodeDesc[64]; // can be 64 char w/o \0
......@@ -123,7 +125,9 @@ typedef struct _pmFocusPorts_s {
typedef struct _sortedValueEntry_s {
STL_LID_32 lid;
uint8 portNum;
uint8 reserved2[3];
uint8 localFlags : 4;
uint8 neighborFlags : 4;
uint8 reserved2[2];
uint64 value;
uint64 neighborValue;
uint64 sortValue;
......@@ -166,6 +170,7 @@ typedef struct _pmImageInfo_s {
uint32 numSkippedNodes;
uint32 numSkippedPorts;
uint32 numUnexpectedClearPorts;
uint32 imageInterval;
PmSmInfo_t SMInfo[2];
} PmImageInfo_t;
......@@ -206,11 +211,11 @@ typedef struct _pmVFFocusPorts_s {
FSTATUS paGetGroupList(Pm_t *pm, PmGroupList_t *GroupList);
// get group info - caller declares Pm_T and PmGroupInfo_t, and passes pointers
FSTATUS paGetGroupInfo(struct Pm_s *pm, char *groupName, PmGroupInfo_t *pmGroupInfo, uint64 imageId, int32 offset, uint64 *retImageId,
boolean *isFailedPort);
FSTATUS paGetGroupInfo(Pm_t *pm, char *groupName, PmGroupInfo_t *pmGroupInfo,
uint64 imageId, int32 offset, uint64 *returnImageId);
// get group config - caller declares Pm_T and PmGroupConfig_t, and passes pointers
FSTATUS paGetGroupConfig(struct Pm_s *pm, char *groupName, PmGroupConfig_t *pmGroupConfig, uint64 imageId, int32 offset, uint64 *retImageId);
FSTATUS paGetGroupConfig(Pm_t *pm, char *groupName, PmGroupConfig_t *pmGroupConfig, uint64 imageId, int32 offset, uint64 *retImageId);
// get port stats - caller declares Pm_T and PmCompositePortCounters_t
// delta - 1 requests delta counters, 0 gets raw total
......@@ -234,8 +239,9 @@ FSTATUS paFreezeFrameCreate(Pm_t *pm, uint64 imageId, int32 offset, uint64 *retI
FSTATUS paFreezeFrameMove(Pm_t *pm, uint64 ffImageId, uint64 imageId, int32 offset, uint64 *retImageId);
FSTATUS paGetFocusPorts(Pm_t *pm, char *groupName, PmFocusPorts_t *pmFocusPorts, uint64 imageId, int32 offset, uint64 *returnImageId,
uint32 select, uint32 start, uint32 range);
FSTATUS paGetFocusPorts(Pm_t *pm, char *groupName, PmFocusPorts_t *pmFocusPorts,
uint64 imageId, int32 offset, uint64 *returnImageId, uint32 select,
uint32 start, uint32 range);
FSTATUS paGetImageInfo(Pm_t *pm, uint64 imageId, int32 offset, PmImageInfo_t *imageInfo, uint64 *retImageId);
......@@ -246,8 +252,8 @@ FSTATUS paGetVFList(Pm_t *pm, PmVFList_t *pmVFList, uint32 imageIndex);
FSTATUS paGetVFConfig(Pm_t *pm, char *vfName, uint64 vfSid, PmVFConfig_t *pmVFConfig, uint64 imageId, int32 offset, uint64 *retImageId);
// get vf info - caller declares Pm_T and PmGroupInfo_t, and passes pointers
FSTATUS paGetVFInfo(Pm_t *pm, char *vfName, PmVFInfo_t *pmVFInfo, uint64 imageId, int32 offset, uint64 *retImageId,
boolean *isFailedPort);
FSTATUS paGetVFInfo(Pm_t *pm, char *vfName, PmVFInfo_t *pmVFInfo, uint64 imageId,
int32 offset, uint64 *returnImageId);
// get vf port stats - caller declares Pm_T and PmCompositeVLCounters_t
// delta - 1 requests delta counters, 0 gets raw total
......@@ -256,8 +262,9 @@ FSTATUS paGetVFPortStats(Pm_t *pm, STL_LID_32 lid, uint8 portNum, char *vfName,
FSTATUS paClearVFPortStats(Pm_t *pm, STL_LID_32 lid, uint8 portNum, STLVlCounterSelectMask select, char *vfName);
FSTATUS paGetVFFocusPorts(Pm_t *pm, char *vfName, PmVFFocusPorts_t *pmVFFocusPorts, uint64 imageId, int32 offset, uint64 *returnImageId,
uint32 select, uint32 start, uint32 range);
FSTATUS paGetVFFocusPorts(Pm_t *pm, char *vfName, PmVFFocusPorts_t *pmVFFocusPorts,
uint64 imageId, int32 offset, uint64 *returnImageId, uint32 select,
uint32 start, uint32 range);
#ifdef __cplusplus
......
This diff is collapsed.
......@@ -111,12 +111,12 @@ static uint8_t *gdata;
uint32_t pm_engineDebug = 0;
// XM config consistency checking
uint32_t pm_overall_checksum = 0;
uint32_t pm_consistency_checksum = 0;
uint32_t pm_overall_checksum = 0;
uint32_t pm_consistency_checksum = 0;
uint32_t pm_master_consistency_check_level = NO_CHECK_CCC_LEVEL;
uint32_t sm_master_consistency_check_level = NO_CHECK_CCC_LEVEL;
int pm_inconsistency_posted = FALSE;
uint32_t pm_master_consistency_check_level = DEFAULT_CCC_LEVEL;
uint32_t sm_master_consistency_check_level = DEFAULT_CCC_LEVEL;
int pm_inconsistency_posted = FALSE;
#define EXIT(a) exit (a)
......@@ -338,7 +338,6 @@ BuildRecord(STL_SERVICE_RECORD * srp, uint8_t * servName, uint64_t servID,
// the bytes 2 and 3 of data8 if we are configured to do so
// This is now just informational. PM doesn't validate checksums.
// That is left to the SM who will decide if we need to go inactive.
if (pm_config.config_consistency_check_level != NO_CHECK_CCC_LEVEL) {
srp->ServiceData32[0] = pm_config.consistency_checksum;
srp->ServiceData32[1] = sm_config.consistency_checksum;
......@@ -347,15 +346,8 @@ BuildRecord(STL_SERVICE_RECORD * srp, uint8_t * servName, uint64_t servID,
srp->ServiceData8[2] = pm_config.config_consistency_check_level;
srp->ServiceData8[3] = sm_config.config_consistency_check_level;
// supply the current XM checksum version
srp->ServiceData8[4] = XML_CHECKSUM_VERSION;
} else {
srp->ServiceData32[0] = 0;
srp->ServiceData32[1] = 0;
srp->ServiceData32[2] = 0;
srp->ServiceData8[2] = 0;
srp->ServiceData8[3] = 0;
srp->ServiceData8[4] = 0;
}
srp->ServiceData8[4] = FM_PROTOCOL_VERSION;
srp->Reserved = 0;
}
......@@ -549,6 +541,8 @@ Status_t pm_get_xml_config(void)
void
pm_compute_pool_size(void)
{
size_t pmImagePoolSize;
// calculate pool size for legacy support
#ifdef __VXWORKS__
// add a couple pages and 10% to allow for inefficiency in allocator
......@@ -574,7 +568,7 @@ pm_compute_pool_size(void)
// Ideally -only applicable if Pm.SweepInterval != 0, but at this point
// on ESM we have not yet read XML config file, so assume Pm enabled
// also will use default Pm image counts
g_pmPoolSize +=
pmImagePoolSize =
// pmportp's, 1 per LID + 1 per Switch Port 1-N
(sizeof(PmPort_t) + sizeof(PmPortImage_t)*(pm_config.total_images-1)) * cs_numPortRecords(pm_config.subnet_size)
// pmnodep's, 1 per LID (1 per FI port, 1 per switch)
......@@ -596,6 +590,14 @@ pm_compute_pool_size(void)
+ sizeof(PmDispatcherPort_t)*pm_config.MaxParallelNodes*pm_config.PmaBatchSize
+ sizeof(cntxt_entry_t)*pm_config.MaxParallelNodes*pm_config.PmaBatchSize
;
#ifdef __VXWORKS__
// keep it simple and just double image memory pool usage
g_pmPoolSize += (pmImagePoolSize * 2);
#else
g_pmPoolSize += pmImagePoolSize;
#endif
if (pm_config.shortTermHistory.enable && pm_config.sweep_interval) {
// PM Short Term History storage
// Allocate space for all history records
......@@ -612,7 +614,8 @@ pm_compute_pool_size(void)
+ sizeof(PmPort_t*) * cs_numNodeRecords(pm_config.subnet_size)
+ (sizeof(PmGroup_t) + sizeof(PmGroupImage_t)) * (PM_MAX_GROUPS+1)
+ (sizeof(PmVF_t) + sizeof(PmVFImage_t)) * MAX_VFABRICS
+ sizeof(PmImage_t);
+ sizeof(PmImage_t)
+ sizeof(char)*PM_HISTORY_FILENAME_LEN*((3600*pm_config.shortTermHistory.totalHistory)/(pm_config.shortTermHistory.imagesPerComposite*pm_config.sweep_interval));
}
}
......@@ -672,14 +675,13 @@ pm_main()
#endif
#if 0 // these are already checked by pm_initialize_config, should check for VxWorks too
// check device related configuration parameter settings, and display
// appropriate warning messages. And always synch with the current device
// settings of the SM.
sm_isValidDeviceConfigSettings(VIEO_PM_MOD_ID, pm_config.hca, pm_config.port, pm_config.port_guid);
(void)sm_getDeviceConfigSettings(&pm_config.hca, &pm_config.port, &pm_config.port_guid);
#if 0 // these are already checked by pm_initialize_config, should check for VxWorks too
// check configuration parameter settings related to being the Master PM, and
// display appropriate warning messages. And always synch with the current
// configuration settings of the SM.
......@@ -786,6 +788,12 @@ pm_main()
(void)vs_thread_sleep(PM_CONN_INTERVAL/2);
continue;
}
#elif defined(__VXWORKS__)
if (sm_isDeactivated()) {
pm_shutdown = TRUE;
IB_LOG_WARN_FMT( __func__, "Engine shutting down since SM is not active due to problems!");
goto bail;
}
#endif
if ((rc = if3_mngr_open_cnx_fe(pm_config.hca, pm_config.port, vfi_mclass, &pm_fd)) == VSTATUS_OK) {
while (!pm_shutdown && pm_fd > 0) {
......
......@@ -49,8 +49,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ib_status.h
// ib_const.h
//
// RESPONSIBLE ENGINEER
// Todd Rimmer
//
//===========================================================================//
......
......@@ -42,8 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// DEPENDENCIES
//
// RESPONSIBLE ENGINEER
// John Schmerge
//
//===========================================================================//
......
......@@ -45,8 +45,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// DEPENDENCIES
// ispinlock.h - for ATOMIC_UINT operations
//
// RESPONSIBLE ENGINEER
// John Schmerge
//
//===========================================================================//
......
......@@ -77,36 +77,41 @@ void PmRemovePortFromGroupIndex(PmPortImage_t *portImage, uint32 grpIndex,
}
}
static boolean PmIsPortImageInGroup(PmPortImage_t *portImage, PmGroup_t *groupp)
static boolean PmIsPortImageInGroup(PmPortImage_t *portImage, PmGroup_t *groupp, boolean *isInternal)
{
int i;
uint32 i;
boolean isInGroup = FALSE;
#if PM_COMPRESS_GROUPS
for (i=0; i<portImage->u.s.InGroups; i++) {
for (i = 0; i < portImage->u.s.InGroups; i++) {
#else
for (i=0; i<PM_MAX_GROUPS_PER_PORT; i++) {
for (i = 0; i < PM_MAX_GROUPS_PER_PORT; i++) {
#endif
if (portImage->Groups[i] == groupp)
return TRUE;
}
return FALSE;
if (portImage->Groups[i] == groupp) {
isInGroup = TRUE;
break;
}
}
if (isInternal && isInGroup) {
*isInternal = (boolean)(portImage->IntLinkFlags & (1<<i));
}
return isInGroup;
}
boolean PmIsPortInGroup(Pm_t *pm, PmPort_t *pmportp,
PmPortImage_t *portImage, PmGroup_t *groupp, boolean sth)
boolean PmIsPortInGroup(Pm_t *pm, PmPort_t *pmportp, PmPortImage_t *portImage,
PmGroup_t *groupp, boolean sth, boolean *isInternal)
{
// for non-Switch ports and switch port 0, active will be true
// but for other switch ports could be not active
// ports without a PMA are not tabulated
if (pmportp->u.s.PmaAvoid || ! portImage->u.s.active)
return FALSE;
if (!sth) {
return ((groupp == pm->AllPorts)
|| PmIsPortImageInGroup(portImage, groupp));
} else {
return ((groupp == pm->ShortTermHistory.LoadedImage.AllGroup)
|| PmIsPortImageInGroup(portImage, groupp));
}
// for non-Switch ports and switch port 0, active will be true
// but for other switch ports could be not active
// ports without a PMA are not tabulated
if (pmportp->u.s.PmaAvoid || !portImage->u.s.active)
return FALSE;
if (!sth) {
return ((groupp == pm->AllPorts)
|| PmIsPortImageInGroup(portImage, groupp, isInternal));
} else {
return ((groupp == pm->ShortTermHistory.LoadedImage.AllGroup)
|| PmIsPortImageInGroup(portImage, groupp, isInternal));
}
}
// adds a port to a group where the neighbor of the port WILL NOT be in
......
......@@ -40,8 +40,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* FUNCTIONS
*
* DEPENDENCIES
* RESPONSIBLE ENGINEER:
*
* HISTORY
*
* NAME DATE REMARKS
......
This diff is collapsed.
<
......@@ -54,6 +54,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
extern "C" {
#endif
#include "iba/public/ipackon.h"
// if 1, we compress groups such no gaps in portImage->groups
// this speeds up PM sweeps
// if 0, we can have gaps, this speeds up Removing groups
......@@ -211,7 +213,7 @@ typedef struct ErrorSummary_s {
uint16 UtilizationPct10; /* in units of 10% */
uint16 DiscardsPct10; /* in units of 10% */
uint32 Reserved;
} ErrorSummary_t;
} PACK_SUFFIX ErrorSummary_t;
// weight to use for each Integrity counter in weighted sum
typedef struct IntegrityWeights_s {
......@@ -251,7 +253,7 @@ typedef struct ErrorBucket_s {
pm_bucket_t Bubble;
pm_bucket_t Security;
pm_bucket_t Routing;
} ErrorBucket_t;
} PACK_SUFFIX ErrorBucket_t;
// we have 10 buckets each covering a 10% range.
// So we can say number of ports with 0-10% utilization, number with 10-20%
......@@ -279,9 +281,18 @@ typedef struct PmUtilStats_s {
uint32 MinKPps; // minimum kilo packets/sec of all selected ports
uint32 MaxKPps; // maximum kilo packets/sec of all selected ports
uint16 pmaFailedPorts; // Number of ports with failures but were still able
// to be included in Group/Vf Stats
uint16 topoFailedPorts; // Number of ports with failures that were not able
// to be included in Group/Vf Stats
// buckets for packets/sec % don't make much sense since theroretical
// limit is a function of packet size, hence confusing to report
} PmUtilStats_t;
uint32 reserved;
} PACK_SUFFIX PmUtilStats_t;
#define PA_INC_COUNTER_NO_OVERFLOW(cntr, max) do { if (cntr >= max) { cntr = max; } else { cntr++; } } while(0)
// we have 4 buckets each covering a 25% range and one extra bucket
// So we can say number of ports within 0-24% of threshold, number within 25-50%
......@@ -303,7 +314,7 @@ typedef struct PmErrStats_s {
// buckets are based on % of configured threshold,
// last bucket is for >=100% of threshold
ErrorBucket_t Ports[PM_ERR_BUCKETS];// in group
} PmErrStats_t;
} PACK_SUFFIX PmErrStats_t;
struct PmPort_s;
typedef boolean (*PmComparePortFunc_t)(struct PmPort_s *pmportp, char *groupName);
......@@ -751,12 +762,15 @@ typedef struct PmImage_s {
// --------------- Short-Term PA History --------------------
#define PM_HISTORY_FILENAME_LEN 133
#define PM_HISTORY_FILENAME_LEN 136 // max length of full filepath
// MUST BE MULTIPLE OF 8
#define PM_HISTORY_MAX_IMAGES_PER_COMPOSITE 60
#define PM_HISTORY_MAX_SMS_PER_COMPOSITE 2
#define PM_HISTORY_MAX_LOCATION_LEN 111
#define PM_HISTORY_VERSION 5
#define PM_HISTORY_VERSION 6
#define PM_HISTORY_VERSION_OLD 5 // Old version currently supported by PA
#define PM_MAX_COMPRESSION_DIVISIONS 32
#define PM_HISTORY_STHFILE_LEN 15 // the exact length of the filename, not full path
typedef struct PmCompositePort_s {
uint64 guid;
......@@ -851,7 +865,7 @@ typedef struct PmCompositePort_s {
PmCompositeVLCounters_t stlVLPortCounters[MAX_PM_VLS];
ErrorSummary_t errors;
ErrorSummary_t VFErrors[MAX_VFABRICS];
} PmCompositePort_t;
} PACK_SUFFIX PmCompositePort_t;
typedef struct PmCompositeNode_s {
uint64 guid;
......@@ -861,7 +875,7 @@ typedef struct PmCompositeNode_s {
uint8 numPorts;
uint32 reserved;
PmCompositePort_t **ports;
} PmCompositeNode_t;
} PACK_SUFFIX PmCompositeNode_t;
typedef struct PmCompositeVF_s {
char name[MAX_VFABRIC_NAME];
......@@ -872,7 +886,7 @@ typedef struct PmCompositeVF_s {
uint8 reserved;
PmUtilStats_t intUtil;
PmErrStats_t intErr;
} PmCompositeVF_t;
} PACK_SUFFIX PmCompositeVF_t;
typedef struct PmCompositeGroups_s {
char name[STL_PM_GROUPNAMELEN];
......@@ -888,7 +902,7 @@ typedef struct PmCompositeGroups_s {
PmUtilStats_t recvUtil;
PmErrStats_t intErr;
PmErrStats_t extErr;
} PmCompositeGroup_t;
} PACK_SUFFIX PmCompositeGroup_t;
typedef struct PmHistoryHeaderCommon_s {