Commit 2f5b29aa authored by Jean-Claude BAU's avatar Jean-Claude BAU

[BUG: 2] ptpdump wrongly shows Announce Msg parameters

- Change the Quality structure to make it compliant with the standard
- Fix network to host conversion to display offsetScaledLogVariance
parent 9be8a71d
...@@ -107,10 +107,10 @@ typedef struct PortAdress { /* page 13 (33) */ ...@@ -107,10 +107,10 @@ typedef struct PortAdress { /* page 13 (33) */
Octet *adressField; Octet *adressField;
} PortAdress; } PortAdress;
typedef struct ClockQuality { /* page 14 (34) -- int because of lib/config.c */ typedef struct ClockQuality { /* page 14 (34) */
int clockClass; UInteger8 clockClass;
int clockAccuracy; Enumeration8 clockAccuracy;
int offsetScaledLogVariance; UInteger16 offsetScaledLogVariance;
} ClockQuality; } ClockQuality;
struct TLV { /* page 14 (34) -- never used */ struct TLV { /* page 14 (34) -- never used */
......
...@@ -16,7 +16,9 @@ ...@@ -16,7 +16,9 @@
*/ */
struct pp_runtime_opts { struct pp_runtime_opts {
uint32_t updated_fields_mask; uint32_t updated_fields_mask;
ClockQuality clock_quality; int clock_quality_clockClass; // ClockQuality.clockClass
int clock_quality_clockAccuracy; // ClockQuality.clockAccuracy
int clock_quality_offsetScaledLogVariance; // ClockQuality.offsetScaledLogVariance
Integer32 ttl; Integer32 ttl;
int flags; /* see below */ int flags; /* see below */
Integer16 ap, ai; Integer16 ap, ai;
......
...@@ -364,11 +364,11 @@ static struct pp_argline pp_global_arglines[] = { ...@@ -364,11 +364,11 @@ static struct pp_argline pp_global_arglines[] = {
PP_MIN_DELAY_COEFFICIENT_AS_RELDIFF,PP_MAX_DELAY_COEFFICIENT_AS_RELDIFF), PP_MIN_DELAY_COEFFICIENT_AS_RELDIFF,PP_MAX_DELAY_COEFFICIENT_AS_RELDIFF),
INST_OPTION_DOUBLE_RANGE("delayCoefficient", ARG_DOUBLE, NULL,cfg.delayCoefficient, INST_OPTION_DOUBLE_RANGE("delayCoefficient", ARG_DOUBLE, NULL,cfg.delayCoefficient,
PP_MIN_DELAY_COEFFICIENT_AS_DOUBLE,PP_MAX_DELAY_COEFFICIENT_AS_DOUBLE), PP_MIN_DELAY_COEFFICIENT_AS_DOUBLE,PP_MAX_DELAY_COEFFICIENT_AS_DOUBLE),
RT_OPTION_INT_RANGE("clock-class", ARG_INT, NULL, clock_quality.clockClass, RT_OPTION_INT_RANGE("clock-class", ARG_INT, NULL, clock_quality_clockClass,
PP_MIN_CLOCK_CLASS,PP_MAX_CLOCK_CLASS), PP_MIN_CLOCK_CLASS,PP_MAX_CLOCK_CLASS),
RT_OPTION_INT_RANGE("clock-accuracy", ARG_INT, NULL,clock_quality.clockAccuracy, RT_OPTION_INT_RANGE("clock-accuracy", ARG_INT, NULL,clock_quality_clockAccuracy,
PP_MIN_CLOCK_ACCURACY,PP_MAX_CLOCK_ACCURACY), PP_MIN_CLOCK_ACCURACY,PP_MAX_CLOCK_ACCURACY),
RT_OPTION_INT_RANGE("clock-allan-variance", ARG_INT, NULL,clock_quality.offsetScaledLogVariance, RT_OPTION_INT_RANGE("clock-allan-variance", ARG_INT, NULL,clock_quality_offsetScaledLogVariance,
PP_MIN_CLOCK_VARIANCE,PP_MAX_CLOCK_VARIANCE), PP_MIN_CLOCK_VARIANCE,PP_MAX_CLOCK_VARIANCE),
RT_OPTION_INT_RANGE("domain-number", ARG_INT, NULL, domainNumber, RT_OPTION_INT_RANGE("domain-number", ARG_INT, NULL, domainNumber,
PP_MIN_DOMAIN_NUMBER,PP_MAX_DOMAIN_NUMBER), PP_MIN_DOMAIN_NUMBER,PP_MAX_DOMAIN_NUMBER),
......
...@@ -1320,7 +1320,7 @@ static void bmc_update_clock_quality(struct pp_globals *ppg) ...@@ -1320,7 +1320,7 @@ static void bmc_update_clock_quality(struct pp_globals *ppg)
{ {
char *pp_diag_msg; char *pp_diag_msg;
struct pp_runtime_opts *rt_opts = ppg->rt_opts; struct pp_runtime_opts *rt_opts = ppg->rt_opts;
int rt_opts_clock_quality_clockClass=rt_opts->clock_quality.clockClass; int rt_opts_clock_quality_clockClass=rt_opts->clock_quality_clockClass;
int defaultDS_clock_quality_clockClass=ppg->defaultDS->clockQuality.clockClass; int defaultDS_clock_quality_clockClass=ppg->defaultDS->clockQuality.clockClass;
timing_mode_state_t timing_mode_state; timing_mode_state_t timing_mode_state;
......
...@@ -12,11 +12,9 @@ ...@@ -12,11 +12,9 @@
* need to change some values in there. * need to change some values in there.
*/ */
struct pp_runtime_opts __pp_default_rt_opts = { struct pp_runtime_opts __pp_default_rt_opts = {
.clock_quality = { .clock_quality_clockClass = PP_CLASS_DEFAULT,
.clockClass = PP_CLASS_DEFAULT, .clock_quality_clockAccuracy = PP_ACCURACY_DEFAULT,
.clockAccuracy = PP_ACCURACY_DEFAULT, .clock_quality_offsetScaledLogVariance = PP_VARIANCE_DEFAULT,
.offsetScaledLogVariance = PP_VARIANCE_DEFAULT,
},
.flags = PP_DEFAULT_FLAGS, .flags = PP_DEFAULT_FLAGS,
.ap = PP_DEFAULT_AP, .ap = PP_DEFAULT_AP,
.ai = PP_DEFAULT_AI, .ai = PP_DEFAULT_AI,
...@@ -89,8 +87,10 @@ int pp_init_globals(struct pp_globals *ppg, struct pp_runtime_opts *pp_rt_opts) ...@@ -89,8 +87,10 @@ int pp_init_globals(struct pp_globals *ppg, struct pp_runtime_opts *pp_rt_opts)
rt_opts = ppg->rt_opts; rt_opts = ppg->rt_opts;
memcpy(&def->clockQuality, &rt_opts->clock_quality, // Copy clock quality
sizeof(ClockQuality)); def->clockQuality.clockClass=rt_opts->clock_quality_clockClass;
def->clockQuality.clockAccuracy=rt_opts->clock_quality_clockAccuracy;
def->clockQuality.offsetScaledLogVariance=rt_opts->clock_quality_offsetScaledLogVariance;
/* Clause 17.6.5.3 : Clause 9.2.2 shall not be in effect. If implemented, defaultDS.slaveOnly should be FALSE, and /* Clause 17.6.5.3 : Clause 9.2.2 shall not be in effect. If implemented, defaultDS.slaveOnly should be FALSE, and
* portDS.masterOnly should be FALSE on all PTP Ports of the PTP Instance. * portDS.masterOnly should be FALSE on all PTP Ports of the PTP Instance.
...@@ -127,7 +127,7 @@ int pp_init_globals(struct pp_globals *ppg, struct pp_runtime_opts *pp_rt_opts) ...@@ -127,7 +127,7 @@ int pp_init_globals(struct pp_globals *ppg, struct pp_runtime_opts *pp_rt_opts)
} }
if ( is_slaveOnly(def) ) { if ( is_slaveOnly(def) ) {
/* Configured clockClass must be also changed to avoid to be set by BMCA bmc_update_clock_quality() */ /* Configured clockClass must be also changed to avoid to be set by BMCA bmc_update_clock_quality() */
rt_opts->clock_quality.clockClass = rt_opts->clock_quality_clockClass =
def->clockQuality.clockClass = PP_CLASS_SLAVE_ONLY; def->clockQuality.clockClass = PP_CLASS_SLAVE_ONLY;
pp_printf("Slave Only, clock class set to %d\n", def->clockQuality.clockClass); pp_printf("Slave Only, clock class set to %d\n", def->clockQuality.clockClass);
} }
...@@ -167,7 +167,7 @@ int pp_init_globals(struct pp_globals *ppg, struct pp_runtime_opts *pp_rt_opts) ...@@ -167,7 +167,7 @@ int pp_init_globals(struct pp_globals *ppg, struct pp_runtime_opts *pp_rt_opts)
if ( def->clockQuality.clockClass < 128 && isSlavePresent) { if ( def->clockQuality.clockClass < 128 && isSlavePresent) {
/* clockClass cannot be < 128 if a port is configured as slave */ /* clockClass cannot be < 128 if a port is configured as slave */
/* Configured clockClass must be also changed to avoid to be set by BMCA bmc_update_clock_quality() */ /* Configured clockClass must be also changed to avoid to be set by BMCA bmc_update_clock_quality() */
rt_opts->clock_quality.clockClass = rt_opts->clock_quality_clockClass =
def->clockQuality.clockClass=PP_CLASS_DEFAULT; def->clockQuality.clockClass=PP_CLASS_DEFAULT;
pp_printf("PPSi: GM clock set but slave present. Clock class set to %d\n", def->clockQuality.clockClass); pp_printf("PPSi: GM clock set but slave present. Clock class set to %d\n", def->clockQuality.clockClass);
} }
......
...@@ -113,8 +113,8 @@ static void dump_1stamp(char *prefix, char *s, struct stamp *t) ...@@ -113,8 +113,8 @@ static void dump_1stamp(char *prefix, char *s, struct stamp *t)
static void dump_1quality(char *prefix, char *s, ClockQuality *q) static void dump_1quality(char *prefix, char *s, ClockQuality *q)
{ {
printf("%s%s%02x-%02x-%04x\n", prefix, s, q->clockClass, printf("%s%s%02x-%02x-%04x\n", prefix, s, (unsigned int) q->clockClass,
q->clockAccuracy, q->offsetScaledLogVariance); (unsigned int) q->clockAccuracy, (unsigned int) q->offsetScaledLogVariance);
} }
static void dump_1clockid(char *prefix, char *s, ClockIdentity i) static void dump_1clockid(char *prefix, char *s, ClockIdentity i)
...@@ -135,10 +135,15 @@ static void dump_1port(char *prefix, char *s, unsigned char *p) ...@@ -135,10 +135,15 @@ static void dump_1port(char *prefix, char *s, unsigned char *p)
/* Helpers for each message types */ /* Helpers for each message types */
static void dump_msg_announce(char *prefix, struct ptp_announce *p) static void dump_msg_announce(char *prefix, struct ptp_announce *p)
{ {
ClockQuality grandmasterClockQuality;
memcpy( &grandmasterClockQuality,&p->grandmasterClockQuality, sizeof(ClockQuality));
grandmasterClockQuality.offsetScaledLogVariance=ntohs(grandmasterClockQuality.offsetScaledLogVariance);
dump_1stamp(prefix, "MSG-ANNOUNCE: stamp ", dump_1stamp(prefix, "MSG-ANNOUNCE: stamp ",
&p->originTimestamp); &p->originTimestamp);
dump_1quality(prefix, "MSG-ANNOUNCE: grandmaster-quality ", dump_1quality(prefix, "MSG-ANNOUNCE: grandmaster-quality ",
&p->grandmasterClockQuality); &grandmasterClockQuality);
printf("%sMSG-ANNOUNCE: grandmaster-prio %i %i\n", prefix, printf("%sMSG-ANNOUNCE: grandmaster-prio %i %i\n", prefix,
p->grandmasterPriority1, p->grandmasterPriority2); p->grandmasterPriority1, p->grandmasterPriority2);
dump_1clockid(prefix, "MSG-ANNOUNCE: grandmaster-id ", dump_1clockid(prefix, "MSG-ANNOUNCE: grandmaster-id ",
......
Markdown is supported
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