On Mon, Dec 05, 2022 at 02:44:07AM EST, Geva, Erez wrote:
>On Fri, 2022-12-02 at 15:33 -0500, [email protected] wrote:
>> From: Vincent Cheng <[email protected]>
>>
>> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel