Skip to content
Snippets Groups Projects
Commit 18796cd0 authored by Adam Wujek's avatar Adam Wujek
Browse files

userspace/snmpd/wrsPtpDataTable: export more values from servo


Add values that are displayed in wr_mon for servo.

Signed-off-by: default avatarAdam Wujek <dev_public@wujek.eu>
parent aa9ca1c2
Branches
Tags
No related merge requests found
...@@ -31,6 +31,15 @@ wrSwitchMIB MODULE-IDENTITY ...@@ -31,6 +31,15 @@ wrSwitchMIB MODULE-IDENTITY
"Updates for v7.0 WRS firmware release "Updates for v7.0 WRS firmware release
Added objects: Added objects:
- wrsPtpInstanceExtensionCfg - wrsPtpInstanceExtensionCfg
- wrsPtpMeanDelay
- wrsPtpDelayMS
- wrsPtpDelayMM
- wrsPtpDelayAsymmetryPS
- wrsPtpDelayCoefficientScaledH
- wrsPtpDelayCoefficientScaledL
- wrsPtpDelayCoefficientStr
- wrsPtpIngressLatency
- wrsPtpEgressLatency
Improved description of: Improved description of:
- wrsPtpRTT - wrsPtpRTT
- wrsPtpLinkLength - wrsPtpLinkLength
...@@ -38,6 +47,9 @@ wrSwitchMIB MODULE-IDENTITY ...@@ -38,6 +47,9 @@ wrSwitchMIB MODULE-IDENTITY
- wrsPtpDeltaRxM - wrsPtpDeltaRxM
- wrsPtpDeltaTxS - wrsPtpDeltaTxS
- wrsPtpDeltaRxS - wrsPtpDeltaRxS
- wrsPtpClockOffsetPsHR
- wrsPtpSkew
- wrsPortStatusConfiguredMode
" "
REVISION "202303260000Z" REVISION "202303260000Z"
...@@ -1991,7 +2003,16 @@ WrsPtpDataEntry ::= ...@@ -1991,7 +2003,16 @@ WrsPtpDataEntry ::=
wrsPtpClockOffsetErrCnt Counter32, wrsPtpClockOffsetErrCnt Counter32,
wrsPtpRTTErrCnt Counter32, wrsPtpRTTErrCnt Counter32,
wrsPtpServoUpdateTime Counter64, wrsPtpServoUpdateTime Counter64,
wrsPtpServoExt INTEGER wrsPtpServoExt INTEGER,
wrsPtpMeanDelay Integer32,
wrsPtpDelayMS Integer32,
wrsPtpDelayMM Integer32,
wrsPtpDelayAsymmetryPS Integer32,
wrsPtpDelayCoefficientScaledH Integer32,
wrsPtpDelayCoefficientScaledL Unsigned32,
wrsPtpDelayCoefficientStr DisplayString,
wrsPtpIngressLatency Integer32,
wrsPtpEgressLatency Integer32
} }
wrsPtpDataIndex OBJECT-TYPE wrsPtpDataIndex OBJECT-TYPE
...@@ -2096,7 +2117,8 @@ wrsPtpClockOffsetPsHR OBJECT-TYPE ...@@ -2096,7 +2117,8 @@ wrsPtpClockOffsetPsHR OBJECT-TYPE
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Human Readable current clock offset from master, in picoseconds with saturation to integer" "Human Readable current clock offset from master, in
picoseconds with saturation to MIN/MAX integer value."
::= { wrsPtpDataEntry 11 } ::= { wrsPtpDataEntry 11 }
wrsPtpSkew OBJECT-TYPE wrsPtpSkew OBJECT-TYPE
...@@ -2112,7 +2134,8 @@ wrsPtpRTT OBJECT-TYPE ...@@ -2112,7 +2134,8 @@ wrsPtpRTT OBJECT-TYPE
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"For WR extension the round-trip-time from master, in picoseconds. "For WR extension, the round-trip-time from master, in picoseconds.
No delta subtracted.
For l1Sync, read of this OID returns an error." For l1Sync, read of this OID returns an error."
::= { wrsPtpDataEntry 13 } ::= { wrsPtpDataEntry 13 }
...@@ -2215,6 +2238,103 @@ wrsPtpServoExt OBJECT-TYPE ...@@ -2215,6 +2238,103 @@ wrsPtpServoExt OBJECT-TYPE
"Extension with which the servo runs." "Extension with which the servo runs."
::= { wrsPtpDataEntry 24 } ::= { wrsPtpDataEntry 24 }
wrsPtpMeanDelay OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Mean delay between master and slave in picoseconds with
saturation to MIN/MAX integer value."
::= { wrsPtpDataEntry 25 }
wrsPtpDelayMS OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Delay from master to slave in picoseconds with saturation
to MIN/MAX integer value.
Deltas/ingress/egress latencies are already subtracted."
::= { wrsPtpDataEntry 26 }
wrsPtpDelayMM OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Delay from master to slave and slave to master in
picoseconds with saturation to MIN/MAX integer value.
Deltas/ingress/egress latencies are already subtracted."
::= { wrsPtpDataEntry 27 }
wrsPtpDelayAsymmetryPS OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Constant Asymmetry in picoseconds with saturation to
MIN/MAX integer value.
This value is similar to wrsPtpInstanceAsymConstAsymPS
for the port used as sync source (wrsPtpSyncSource)."
::= { wrsPtpDataEntry 28 }
wrsPtpDelayCoefficientScaledH OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Most (higher) significant part of Scaled Relative Delay
Coefficient.
Scaled Relative Delay Coefficient.
This value is similar to wrsPtpInstanceAsymScDelayCoef
for the port used as sync source (wrsPtpSyncSource)."
::= { wrsPtpDataEntry 29 }
wrsPtpDelayCoefficientScaledL OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Least (lower) significant part of Scaled Relative Delay
Coefficient.
Scaled Relative Delay Coefficient.
This value is similar to wrsPtpInstanceAsymScDelayCoef
for the port used as sync source (wrsPtpSyncSource)."
::= { wrsPtpDataEntry 30 }
wrsPtpDelayCoefficientStr OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..64))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Relative Delay Coefficient in a floating form as a string.
This value is similar to wrsPtpInstanceAsymScDelayCoefHR
for the port used as sync source (wrsPtpSyncSource)."
::= { wrsPtpDataEntry 31 }
wrsPtpIngressLatency OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Ingress Latency (RX Fixed Delay) in picoseconds with
saturation to MIN/MAX integer value.
This value is similar to wrsPtpInstanceTSCorrEgressLatPS
for the port used as sync source (wrsPtpSyncSource)."
::= { wrsPtpDataEntry 32 }
wrsPtpEgressLatency OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Egress Latency (TX Fixed Delay) in picoseconds with
saturation to MIN/MAX integer value.
This value is similar to wrsPtpInstanceTSCorrEgressLatPS
for the port used as sync source (wrsPtpSyncSource)."
::= { wrsPtpDataEntry 33 }
-- wrsPortStatusTable (.7.6) -- wrsPortStatusTable (.7.6)
wrsPortStatusTable OBJECT-TYPE wrsPortStatusTable OBJECT-TYPE
SYNTAX SEQUENCE OF WrsPortStatusEntry SYNTAX SEQUENCE OF WrsPortStatusEntry
...@@ -2300,7 +2420,7 @@ wrsPortStatusConfiguredMode OBJECT-TYPE ...@@ -2300,7 +2420,7 @@ wrsPortStatusConfiguredMode OBJECT-TYPE
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Whether the port is configured as master, slave, non-wr or auto" "Whether the port is configured as master, slave, non-wr (PTP) or auto"
::= { wrsPortStatusEntry 4 } ::= { wrsPortStatusEntry 4 }
wrsPortStatusLocked OBJECT-TYPE wrsPortStatusLocked OBJECT-TYPE
......
...@@ -213,6 +213,15 @@ ...@@ -213,6 +213,15 @@
"wrsPtpRTTErrCnt" "1.3.6.1.4.1.96.100.7.5.1.22" "wrsPtpRTTErrCnt" "1.3.6.1.4.1.96.100.7.5.1.22"
"wrsPtpServoUpdateTime" "1.3.6.1.4.1.96.100.7.5.1.23" "wrsPtpServoUpdateTime" "1.3.6.1.4.1.96.100.7.5.1.23"
"wrsPtpServoExt" "1.3.6.1.4.1.96.100.7.5.1.24" "wrsPtpServoExt" "1.3.6.1.4.1.96.100.7.5.1.24"
"wrsPtpMeanDelay" "1.3.6.1.4.1.96.100.7.5.1.25"
"wrsPtpDelayMS" "1.3.6.1.4.1.96.100.7.5.1.26"
"wrsPtpDelayMM" "1.3.6.1.4.1.96.100.7.5.1.27"
"wrsPtpDelayAsymmetryPS" "1.3.6.1.4.1.96.100.7.5.1.28"
"wrsPtpDelayCoefficientScaledH" "1.3.6.1.4.1.96.100.7.5.1.29"
"wrsPtpDelayCoefficientScaledL" "1.3.6.1.4.1.96.100.7.5.1.30"
"wrsPtpDelayCoefficientStr" "1.3.6.1.4.1.96.100.7.5.1.31"
"wrsPtpIngressLatency" "1.3.6.1.4.1.96.100.7.5.1.32"
"wrsPtpEgressLatency" "1.3.6.1.4.1.96.100.7.5.1.33"
"wrsPortStatusTable" "1.3.6.1.4.1.96.100.7.6" "wrsPortStatusTable" "1.3.6.1.4.1.96.100.7.6"
"wrsPortStatusEntry" "1.3.6.1.4.1.96.100.7.6.1" "wrsPortStatusEntry" "1.3.6.1.4.1.96.100.7.6.1"
"wrsPortStatusIndex" "1.3.6.1.4.1.96.100.7.6.1.1" "wrsPortStatusIndex" "1.3.6.1.4.1.96.100.7.6.1.1"
......
...@@ -43,9 +43,45 @@ static struct pickinfo wrsPtpDataTable_pickinfo[] = { ...@@ -43,9 +43,45 @@ static struct pickinfo wrsPtpDataTable_pickinfo[] = {
FIELD(wrsPtpDataTable_s, ASN_COUNTER, wrsPtpRTTErrCnt), FIELD(wrsPtpDataTable_s, ASN_COUNTER, wrsPtpRTTErrCnt),
FIELD(wrsPtpDataTable_s, ASN_COUNTER64, wrsPtpServoUpdateTime), FIELD(wrsPtpDataTable_s, ASN_COUNTER64, wrsPtpServoUpdateTime),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpServoExt), FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpServoExt),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpServoMeanDelay),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpServoDelayMS),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpServoDelayMM),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpDelayAsymmetryPS),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpDelayCoefficientScaledH),
FIELD(wrsPtpDataTable_s, ASN_UNSIGNED, wrsPtpDelayCoefficientScaledL),
FIELD(wrsPtpDataTable_s, ASN_OCTET_STR, wrsPtpDelayCoefficientStr),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpIngressLatency),
FIELD(wrsPtpDataTable_s, ASN_INTEGER, wrsPtpEgressLatency),
}; };
static char *relativeDifferenceToString(RelativeDifference time, char *buf)
{
char sign;
int32_t nsecs;
uint64_t sub_yocto = 0;
int64_t fraction;
uint64_t bitWeight = 500000000000000000;
uint64_t mask;
if (time < 0) {
time =- time;
sign ='-';
} else {
sign ='+';
}
nsecs=time >> REL_DIFF_FRACBITS;
fraction = time & REL_DIFF_FRACMASK;
for (mask = (uint64_t) 1 << (REL_DIFF_FRACBITS - 1); mask != 0; mask >>= 1) {
if (mask & fraction)
sub_yocto += bitWeight;
bitWeight /= 2;
}
sprintf(buf, "%c%" PRId32 ".%018" PRIu64, sign, nsecs, sub_yocto);
return buf;
}
time_t wrsPtpDataTable_data_fill(unsigned int *n_rows) time_t wrsPtpDataTable_data_fill(unsigned int *n_rows)
{ {
unsigned ii; unsigned ii;
...@@ -62,6 +98,7 @@ time_t wrsPtpDataTable_data_fill(unsigned int *n_rows) ...@@ -62,6 +98,7 @@ time_t wrsPtpDataTable_data_fill(unsigned int *n_rows)
struct l1e_data *l1e_d = NULL; struct l1e_data *l1e_d = NULL;
struct wr_servo_ext *wr_servo = NULL; struct wr_servo_ext *wr_servo = NULL;
struct wrh_servo_t *wrh_servo = NULL; struct wrh_servo_t *wrh_servo = NULL;
portDS_t *portDS;
char *tmp_name; char *tmp_name;
static int servoStateMapping[]={ static int servoStateMapping[]={
[WRH_UNINITIALIZED]= PTP_SERVO_STATE_N_UNINTIALIZED, [WRH_UNINITIALIZED]= PTP_SERVO_STATE_N_UNINTIALIZED,
...@@ -274,6 +311,34 @@ time_t wrsPtpDataTable_data_fill(unsigned int *n_rows) ...@@ -274,6 +311,34 @@ time_t wrsPtpDataTable_data_fill(unsigned int *n_rows)
/* wrsPtpRTT is not available */ /* wrsPtpRTT is not available */
*wrsPtpRTT_type_p = SNMP_NOSUCHINSTANCE; *wrsPtpRTT_type_p = SNMP_NOSUCHINSTANCE;
} }
/* wrsPtpServoMeanDelay */
ptp_a[si].wrsPtpServoMeanDelay = int_saturate(pp_time_to_picos(&ppsi_servo->meanDelay));
/* wrsPtpServoDelayMS */
ptp_a[si].wrsPtpServoDelayMS = int_saturate(pp_time_to_picos(&ppsi_servo->delayMS));
/* wrsPtpServoDelayMM */
ptp_a[si].wrsPtpServoDelayMM = int_saturate(pp_time_to_picos(&ppsi_servo->delayMM));
/* wrsPtpDelayAsymmetryPS */
if ((portDS = wrs_shm_follow(ppsi_head, ppsi_i->portDS)))
ptp_a[si].wrsPtpDelayAsymmetryPS = int_saturate(interval_to_picos(portDS->delayAsymmetry));
/* wrsPtpDelayCoefficientScaledH */
ptp_a[si].wrsPtpDelayCoefficientScaledH = ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient >> 32;
/* wrsPtpDelayCoefficientScaledL */
ptp_a[si].wrsPtpDelayCoefficientScaledL = ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient & 0xFFFFFFFF;
/* wrsPtpDelayCoefficientStr */
relativeDifferenceToString(ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient, ptp_a[si].wrsPtpDelayCoefficientStr);
/* wrsPtpIngressLatency */
ptp_a[si].wrsPtpIngressLatency = int_saturate(interval_to_picos(ppsi_i->timestampCorrectionPortDS.ingressLatency));
/* wrsPtpEgressLatency */
ptp_a[si].wrsPtpEgressLatency = int_saturate(interval_to_picos(ppsi_i->timestampCorrectionPortDS.egressLatency));
} else { } else {
memset(ptp_a[si].wrsPtpSyncSource, memset(ptp_a[si].wrsPtpSyncSource,
0, 32 * sizeof(char)); 0, 32 * sizeof(char));
......
...@@ -43,6 +43,15 @@ struct wrsPtpDataTable_s { ...@@ -43,6 +43,15 @@ struct wrsPtpDataTable_s {
uint32_t wrsPtpRTTErrCnt; uint32_t wrsPtpRTTErrCnt;
uint64_t wrsPtpServoUpdateTime; uint64_t wrsPtpServoUpdateTime;
int wrsPtpServoExt; int wrsPtpServoExt;
int32_t wrsPtpServoMeanDelay;
int32_t wrsPtpServoDelayMS;
int32_t wrsPtpServoDelayMM;
int32_t wrsPtpDelayAsymmetryPS;
int32_t wrsPtpDelayCoefficientScaledH;
uint32_t wrsPtpDelayCoefficientScaledL;
char wrsPtpDelayCoefficientStr[64];
int32_t wrsPtpIngressLatency;
int32_t wrsPtpEgressLatency;
}; };
extern struct wrsPtpDataTable_s wrsPtpDataTable_array[WRS_MAX_N_SERVO_INSTANCES]; extern struct wrsPtpDataTable_s wrsPtpDataTable_array[WRS_MAX_N_SERVO_INSTANCES];
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment