Hi,
We found a tricky scenario is that after port goes from SLAVE->MASTER state, it
still sends out DELAY_REQ continuously by default interval. Given that we are
running interval as -6, the delay interval is random(0, 2*2pow interval), the
timer could be short.
Could the reason be like this?
1. Event we cancel the FD_DELAY_TIMER?
static void port_e2e_transition(struct port *p, enum port_state next)
{
port_clr_tmo(p->fda.fd[FD_ANNOUNCE_TIMER]);
port_clr_tmo(p->fda.fd[FD_SYNC_RX_TIMER]);
port_clr_tmo(p->fda.fd[FD_DELAY_TIMER]);
1. But there is already timeout event on epoll?
2. Soon epoll event comes, we re-arm the FD_DELAY_TIMER again.
enum fsm_event port_event(struct port *p, int fd_index)
{
...
case FD_DELAY_TIMER:
pr_debug("port %hu: delay timeout",
portnum(p));
port_set_delay_tmo(p);
return port_delay_request(p) ?
EV_FAULT_DETECTED : EV_NONE;
1. Then it repeats.
BR,
Vincent
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel