On Mon, Dec 05, 2022 at 02:44:07AM EST, Geva, Erez wrote: >On Fri, 2022-12-02 at 15:33 -0500, vincent.cheng...@renesas.com wrote: >> From: Vincent Cheng <vincent.cheng...@renesas.com> >> >> In handle_state_decision_event(), the update of the clock's parent >> pid after >> best master change is non-deterministic. It depends on the port >> processing >> order and bmc_state_decision() results. >> >> +static void clock_update_parent_identity(struct clock *c) >> +{ >> + struct parentDS *pds = &c->dad.pds; >> + >> + if (c->best) { >> + pds->parentPortIdentity = c->best->dataset.sender; >> + } else { >> + pds->parentPortIdentity.clockIdentity = c- >> >dds.clockIdentity; >> + pds->parentPortIdentity.portNumber = 0; > >Why is the port 0? >It make sense that defaultDS do not have port as we work in the context >of the clock. >Is it make sense to use port ID here?
I would like to say it is port 0 because I consulted 1588-2019.pdf and found the requirement in "Table 30 - Updates for state decision code M1 and M2". parentDS.clockIdentity member set to the value of defaultDS.clockIdentity field. parentDS.parentPortIdentity.portNumber member is 0 However, realistically speaking, I copied the logic from clock_update_grandmaster() and clock_update_slave() first and then looked it up afterwards. > > >> + } >> +} >> + >> static int clock_utc_correct(struct clock *c, tmv_t ingress) >> { >> struct timespec offset; >> @@ -2015,6 +2027,8 @@ static void handle_state_decision_event(struct >> clock *c) >> c->best = best; >> c->best_id = best_id; >> >> + clock_update_parent_identity(c); >> + >> LIST_FOREACH(piter, &c->ports, list) { >> enum port_state ps; >> enum fsm_event event; > > >P.S. >All patches should be on top of master, no need to comment on obvious. Ok, will leave out commit next time if it's not needed. Thanks. Vincent _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel