Hi Richard,
Very sorry for the late reply. There is something wrong with my offlineimap
and I didn't got the email until yesterday....
On Sat, May 14, 2022 at 02:35:05PM -0700, Richard Cochran wrote:
> > - }
> > + port_change_phc(p);
> > }
>
> ... alreadly improves the readability of the code. Please put that
> bit into its own patch.
OK, I will.
>
> > @@ -2802,7 +2815,12 @@ static enum fsm_event bc_event(struct port *p, int
> > fd_index)
> >
> > case FD_RTNL:
> > pr_debug("%s: received link status notification", p->log_name);
> > - rtnl_link_status(fd, p->name, port_link_status, p);
> > + if (!interface_get_tsinfo(p->iface) &&
> > + (p->phc_index != interface_phc_index(p->iface)))
> > + port_change_phc(p);
> > + else
> > + rtnl_link_status(fd, p->name, port_link_status, p);
>
> However this part will cause issues. When the RTNL event occurs,
> there can be multiple messages. The callback is invoked on each one:
>
> rtnl_link_status()
> {
> ...
> for ( ; NLMSG_OK(nh, len); nh = NLMSG_NEXT(nh, len)) {
> ...
> if (cb)
> cb(ctx, link_up, slave_index);
> }
> }
>
> You new logic will drop link up/down notifications (or anything else
> we might add later).
Ah, yes, you are right. Only failover or link down works correct.
If these 2 issue happens at the same time. We will miss the link down
event.
>
> In some cases, your change will only call port_change_phc() but will
> avoid the important other part of port_link_status():
>
> /*
> * A port going down can affect the BMCA result.
> * Force a state decision event.
> */
> if (p->link_status & LINK_DOWN)
> clock_set_sde(p->clock, 1);
>
> Why not simply remove the extra test and check
> (p->phc_index != interface_phc_index(p->iface))
> in the port_change_phc() helper function?
OK, I will.
Thanks
Hangbin
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel