diff --git a/userspace/snmpd/WR-SWITCH-MIB.txt b/userspace/snmpd/WR-SWITCH-MIB.txt index 09a6a7bdaacfcdd740c7a4515110b50ad9e597d5..8508f180a9dc107861ad8b5c7ea1fe00ad6ea17b 100644 --- a/userspace/snmpd/WR-SWITCH-MIB.txt +++ b/userspace/snmpd/WR-SWITCH-MIB.txt @@ -2646,7 +2646,8 @@ WrsPtpInstanceEntry ::= wrsPtpInstanceProfile INTEGER, wrsPtpInstanceExtension INTEGER, wrsPtpInstanceAsymEnabled INTEGER, - wrsPtpInstanceAsymConstAsym INTEGER, + wrsPtpInstanceAsymConstAsym Counter64, + wrsPtpInstanceAsymConstAsymPS Counter64, wrsPtpInstanceAsymScDelayCoef Counter64, wrsPtpInstanceAsymScDelayCoefHR DisplayString, wrsPtpInstanceTSCorrEgressLat Counter64, @@ -2655,13 +2656,12 @@ WrsPtpInstanceEntry ::= wrsPtpInstanceTSCorrIngLatPS Counter64, wrsPtpInstanceTSCorrSemistLat Counter64, wrsPtpInstanceTSCorrSemistLatPS Counter64, - wrsPtpInstancePtpSupport INTEGER, - wrsPtpInstanceExtEnabled INTEGER, wrsPtpInstanceProtoDetectState INTEGER, + wrsPtpInstanceExtState INTEGER, wrsPtpInstancePeerMac PhysAddress, wrsPtpInstancePeerVid INTEGER, wrsPtpInstanceVlanNum INTEGER, - wrsPtpInstanceVlanListStr DisplayString --check-- + wrsPtpInstanceVlanListStr DisplayString } wrsPtpInstancePortIndex OBJECT-TYPE @@ -2723,25 +2723,7 @@ wrsPtpInstanceState OBJECT-TYPE master(6), passive(7), uncalibrated(8), - slave(9), - wrsPresent(100), - wrsSLock(101), - wrsMLock(102), - wrsLocked(103), - wrsCalibration(104), - wrsCalibrated(105), - wrsRespCalibReq(106), - wrsWrLinkOn(107), - wrPortCalibration0(108), - wrPortCalibration1(109), - wrPortCalibration2(110), - wrPortCalibration3(111), - wrPortCalibration4(112), - wrPortCalibration5(113), - wrPortCalibration6(114), - wrPortCalibration7(115), - wrPortCalibration8(116), - wrsAbscal(117) + slave(9) } MAX-ACCESS read-only STATUS current @@ -2752,185 +2734,194 @@ wrsPtpInstanceState OBJECT-TYPE wrsPtpInstanceMasterOnly OBJECT-TYPE SYNTAX INTEGER { na(0), - x(1) - --????-- + disabled(1), + enabled(2) } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "MasterOnly feature enabled/disabled" ::= { wrsPtpInstanceEntry 8 } wrsPtpInstanceExtPortCfgDesSt OBJECT-TYPE SYNTAX INTEGER { na(0), - x(1) - --????-- + initializing(1), + faulty(2), + disabled(3), + listening(4), + preMaster(5), + master(6), + passive(7), + uncalibrated(8), + slave(9) } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "DesiredState to be used if/when externalPortConfiguration feature is enabled" ::= { wrsPtpInstanceEntry 9 } wrsPtpInstanceMechanism OBJECT-TYPE - SYNTAX INTEGER { + SYNTAX INTEGER { --- see ppsi/include/ppsi/ieee1588_types.h na(0), - x(1) - --????-- + e2e(1), + p2p(2), + commonP2P(3), + special(4), + noMechanism(254) } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "Delay Mechanism type used by PTP Instance" ::= { wrsPtpInstanceEntry 10 } wrsPtpInstanceProfile OBJECT-TYPE - SYNTAX INTEGER { + SYNTAX INTEGER { -- ppsi/include/ppsi/ppsi.h na(0), - x(1) - --????-- + defaultPTP(1), -- PPSI_PROFILE_PTP + whiteRabbit(2), -- PPSI_PROFILE_WR + highAccuracy(3), -- PPSI_PROFILE_HA + custom(4) -- PPSI_PROFILE_CUSTOM } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "Profile/Extension configured on a PTP Instance" ::= { wrsPtpInstanceEntry 11 } wrsPtpInstanceExtension OBJECT-TYPE - SYNTAX INTEGER { + SYNTAX INTEGER { --ppsi/include/ppsi/ppsi.h na(0), - x(1) - --????-- + none(1), -- PPSI_EXT_NONE + whiteRabbit(2), -- PPSI_EXT_WR + l1Sync(3) -- PPSI_EXT_L1S } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "Extension used on the PTP Instance" ::= { wrsPtpInstanceEntry 12 } wrsPtpInstanceAsymEnabled OBJECT-TYPE SYNTAX INTEGER { na(0), - x(1) - --????-- + disabled(1), + enabled(2) } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "Asymmetry Corrections enabled/disabled on the PTP Instance" ::= { wrsPtpInstanceEntry 13 } wrsPtpInstanceAsymConstAsym OBJECT-TYPE - SYNTAX INTEGER { - na(0), - x(1) - --????-- - } + SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "Constant Asymmetry in scaled nanoseconds" ::= { wrsPtpInstanceEntry 14 } -wrsPtpInstanceAsymScDelayCoef OBJECT-TYPE +wrsPtpInstanceAsymConstAsymPS OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "Constant Asymmetry in picoseconds" ::= { wrsPtpInstanceEntry 15 } +wrsPtpInstanceAsymScDelayCoef OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Scaled Relative Delay Coefficient" + ::= { wrsPtpInstanceEntry 16 } + wrsPtpInstanceAsymScDelayCoefHR OBJECT-TYPE - SYNTAX DisplayString --size-- + SYNTAX DisplayString (SIZE (0..64)) MAX-ACCESS read-only STATUS current DESCRIPTION - "The software version, as returned from 'git describe' at build time" - ::= { wrsPtpInstanceEntry 16 } + "Relative Delay Coefficient in a floating form" + ::= { wrsPtpInstanceEntry 17 } wrsPtpInstanceTSCorrEgressLat OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" - ::= { wrsPtpInstanceEntry 17 } + "Egress Latency (Tx Fixed Delay) in scaled nanoseconds" + ::= { wrsPtpInstanceEntry 18 } wrsPtpInstanceTSCorrEgressLatPS OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" - ::= { wrsPtpInstanceEntry 18 } + "Egress Latency (Tx Fixed Delay) in picoseconds" + ::= { wrsPtpInstanceEntry 19 } wrsPtpInstanceTSCorrIngLat OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" - ::= { wrsPtpInstanceEntry 19 } + "Ingress Latency (Rx Fixed Delay) in scaled nanoseconds" + ::= { wrsPtpInstanceEntry 20 } wrsPtpInstanceTSCorrIngLatPS OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" - ::= { wrsPtpInstanceEntry 20 } + "Ingress Latency (Rx Fixed Delay) in picoseconds" + ::= { wrsPtpInstanceEntry 21 } wrsPtpInstanceTSCorrSemistLat OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" - ::= { wrsPtpInstanceEntry 21 } + "Semi-static latency (bitslide) in scaled nanoseconds" + ::= { wrsPtpInstanceEntry 22 } wrsPtpInstanceTSCorrSemistLatPS OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION - "????" - ::= { wrsPtpInstanceEntry 22 } - -wrsPtpInstancePtpSupport OBJECT-TYPE - SYNTAX INTEGER { - na(0), - x(1) - --????-- - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "????" + "Semi-static latency (bitslide) in picoseconds" ::= { wrsPtpInstanceEntry 23 } -wrsPtpInstanceExtEnabled OBJECT-TYPE - SYNTAX INTEGER { +wrsPtpInstanceProtoDetectState OBJECT-TYPE + SYNTAX INTEGER { -- ppsi/include/ppsi/pp-instance.h na(0), - x(1) - --????-- + none(1), -- PP_PDSTATE_NONE + pWaitMsg(2), -- PP_PDSTATE_WAIT_MSG + pDetection(3), -- PP_PDSTATE_PDETECTION + pDetected(4), -- PP_PDSTATE_PDETECTED + pFailure(5) -- PP_PDSTATE_FAILURE } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "Protocol detection state" ::= { wrsPtpInstanceEntry 24 } -wrsPtpInstanceProtoDetectState OBJECT-TYPE - SYNTAX INTEGER { + wrsPtpInstanceExtState OBJECT-TYPE + SYNTAX INTEGER { -- ppsi/include/ppsi/pp-instance.h na(0), - x(1) - --????-- + disabled(1), -- PP_EXSTATE_DISABLE + active(2), -- PP_EXSTATE_ACTIVE + ptp(3) -- PP_EXSTATE_PTP } MAX-ACCESS read-only STATUS current DESCRIPTION - "????" + "State of PTP extension (more than one are allowed per 1 physical port)" ::= { wrsPtpInstanceEntry 25 } @@ -2939,7 +2930,7 @@ wrsPtpInstancePeerMac OBJECT-TYPE MAX-ACCESS read-only STATUS current DESCRIPTION - "VID used by an instance" + "MAC used by an instance" ::= { wrsPtpInstanceEntry 26 } wrsPtpInstancePeerVid OBJECT-TYPE @@ -2959,7 +2950,7 @@ wrsPtpInstanceVlanNum OBJECT-TYPE ::= { wrsPtpInstanceEntry 28 } wrsPtpInstanceVlanListStr OBJECT-TYPE - SYNTAX DisplayString --size?-- + SYNTAX DisplayString (SIZE (0..160)) --32*5- MAX-ACCESS read-only STATUS current DESCRIPTION diff --git a/userspace/snmpd/wrsPtpInstanceTable.c b/userspace/snmpd/wrsPtpInstanceTable.c index b014da6084875252d7d553895f22b7fee5468499..69e0b4229cfe56c12f10723b259f90aeaca9c3ae 100644 --- a/userspace/snmpd/wrsPtpInstanceTable.c +++ b/userspace/snmpd/wrsPtpInstanceTable.c @@ -25,7 +25,8 @@ static struct pickinfo wrsPtpInstanceTable_pickinfo[] = { FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceExtension), FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceAsymEnabled), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceAsymConstAsym), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceAsymConstAsym), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceAsymConstAsymPS), FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceAsymScDelayCoef), FIELD(wrsPtpInstanceTable_s, ASN_OCTET_STR, wrsPtpInstanceAsymScDelayCoefHR), FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrEgressLat), @@ -35,8 +36,7 @@ static struct pickinfo wrsPtpInstanceTable_pickinfo[] = { FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrSemistLat), FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrSemistLatPS), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePtpSupport), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceExtEnabled), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceExtState), FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceProtoDetectState), FIELD(wrsPtpInstanceTable_s, ASN_OCTET_STR, wrsPtpInstancePeerMac), FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePeerVid), @@ -72,6 +72,7 @@ time_t wrsPtpInstanceTable_data_fill(unsigned int *n_rows) int instance_on_port = 0; char *tmpstr_p; int vlan_i; + float tmp_f; /* number of rows does not change for wrsPortStatusTable */ if (n_rows) @@ -143,25 +144,31 @@ time_t wrsPtpInstanceTable_data_fill(unsigned int *n_rows) portDS_i = (portDS_t *) wrs_shm_follow(ppsi_head, ppsi_i->portDS); if (portDS_i) - i_a[i].wrsPtpInstanceMasterOnly = portDS_i->masterOnly; + i_a[i].wrsPtpInstanceMasterOnly = portDS_i->masterOnly ? 2 : 1 ; + else + i_a[i].wrsPtpInstanceMasterOnly = 0; i_a[i].wrsPtpInstanceExtPortCfgDesSt = ppsi_i->externalPortConfigurationPortDS.desiredState; i_a[i].wrsPtpInstanceMechanism = ppsi_i->delayMechanism; - i_a[i].wrsPtpInstanceProfile = ppsi_i->cfg.profile; - i_a[i].wrsPtpInstanceExtension = ppsi_i->protocol_extension; + i_a[i].wrsPtpInstanceProfile = ppsi_i->cfg.profile + 1; + i_a[i].wrsPtpInstanceExtension = ppsi_i->protocol_extension+1; i_a[i].wrsPtpInstanceAsymEnabled = ppsi_i->asymmetryCorrectionPortDS.enable + 1; i_a[i].wrsPtpInstanceAsymConstAsym = ppsi_i->asymmetryCorrectionPortDS.constantAsymmetry; + i_a[i].wrsPtpInstanceAsymConstAsymPS = (int64_t)((((float)ppsi_i->asymmetryCorrectionPortDS.constantAsymmetry)/(1<<16))*1000); i_a[i].wrsPtpInstanceAsymScDelayCoef = ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient; - //i_a[i].wrsPtpInstanceAsymScDelayCoefHR = ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient (string) + tmpstr_p = i_a[i].wrsPtpInstanceAsymScDelayCoefHR; + tmp_f = ((float)ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient)/((1<<62)); + snprintf(tmpstr_p, 64, "%f,", tmp_f); + i_a[i].wrsPtpInstanceTSCorrEgressLat = ppsi_i->timestampCorrectionPortDS.egressLatency; -// i_a[i].wrsPtpInstanceTSCorrEgressLatPS = ppsi_i->timestampCorrectionPortDS.egressLatency (ps) + i_a[i].wrsPtpInstanceTSCorrEgressLatPS =(int64_t)((((float)ppsi_i->timestampCorrectionPortDS.egressLatency)/(1<<16))*1000); i_a[i].wrsPtpInstanceTSCorrIngLat = ppsi_i->timestampCorrectionPortDS.ingressLatency; -// i_a[i].wrsPtpInstanceTSCorrIngLatPS = ppsi_i->timestampCorrectionPortDS.ingressLatency (ps) + i_a[i].wrsPtpInstanceTSCorrIngLatPS = (int64_t)((((float)ppsi_i->timestampCorrectionPortDS.ingressLatency)/(1<<16))*1000); i_a[i].wrsPtpInstanceTSCorrSemistLat = ppsi_i->timestampCorrectionPortDS.semistaticLatency; -// i_a[i].wrsPtpInstanceTSCorrSemistLatPS = ppsi_i->timestampCorrectionPortDS.semistaticLatency (ps)(bitslide) - i_a[i].wrsPtpInstancePtpSupport = ppsi_i->ptp_support; - i_a[i].wrsPtpInstanceExtEnabled = ppsi_i->extState; - i_a[i].wrsPtpInstanceProtoDetectState = ppsi_i->pdstate; + i_a[i].wrsPtpInstanceTSCorrSemistLatPS =(int64_t)((((float)ppsi_i->timestampCorrectionPortDS.semistaticLatency)/(1<<16))*1000); + + i_a[i].wrsPtpInstanceProtoDetectState = ppsi_i->pdstate+1; + i_a[i].wrsPtpInstanceExtState = ppsi_i->extState+1; memcpy(i_a[i].wrsPtpInstancePeerMac, ppsi_i->peer, ETH_ALEN); i_a[i].wrsPtpInstancePeerVid = ppsi_i->peer_vid; diff --git a/userspace/snmpd/wrsPtpInstanceTable.h b/userspace/snmpd/wrsPtpInstanceTable.h index 5d65afd7204db7454783847d3ed2684cc1cd01be..f5b106fe6cdeb50b12f792c6c8e5bf8ee8dce333 100644 --- a/userspace/snmpd/wrsPtpInstanceTable.h +++ b/userspace/snmpd/wrsPtpInstanceTable.h @@ -20,13 +20,15 @@ struct wrsPtpInstanceTable_s { char wrsPtpInstancePortName[16];/* port name on which ptp instance is running (wriX) */ int wrsPtpInstanceState; int wrsPtpInstanceMasterOnly; + int wrsPtpInstanceExtPortCfg; int wrsPtpInstanceExtPortCfgDesSt; int wrsPtpInstanceMechanism; /* ENDelayMechanism */ int wrsPtpInstanceProfile; int wrsPtpInstanceExtension; int wrsPtpInstanceAsymEnabled; - int wrsPtpInstanceAsymConstAsym; - int wrsPtpInstanceAsymScDelayCoef; + int64_t wrsPtpInstanceAsymConstAsym; + int64_t wrsPtpInstanceAsymConstAsymPS; + int64_t wrsPtpInstanceAsymScDelayCoef; char wrsPtpInstanceAsymScDelayCoefHR[64]; int64_t wrsPtpInstanceTSCorrEgressLat; int64_t wrsPtpInstanceTSCorrEgressLatPS; @@ -34,8 +36,7 @@ struct wrsPtpInstanceTable_s { int64_t wrsPtpInstanceTSCorrIngLatPS; int64_t wrsPtpInstanceTSCorrSemistLat; int64_t wrsPtpInstanceTSCorrSemistLatPS; - int wrsPtpInstancePtpSupport; - int wrsPtpInstanceExtEnabled; + int wrsPtpInstanceExtState; int wrsPtpInstanceProtoDetectState; char wrsPtpInstancePeerMac[ETH_ALEN]; int wrsPtpInstancePeerVid;