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

Reply via email to