The actual ptp4l implementation rearms timers after the expiration. This 
approach doesn't permit to have a precise TX SYNC message scheduling.
During my test the TX SYNC frequency is slightly lower the expectation (eg 
15.99Hz vs 16Hz).

The following patchset uses non blocking timers and only for TX SYNC timer 
implements a precise periodic timer.
Before to enable the periodic timer we have to:
 - read the timer file descriptors after the expiration in order to have the 
expirations counter (useful for debug also);
 - avoid to touch timers with a timerfd_settime() before the read() call, this 
required to rearrange the fd array and split the announce and rx sync code;
 - remove timerfd_settime() on tx sync expiration.

Luigi Mantellini (6):
  Use FD_EVENT and FD_GENERAL instead numeric values.
  Rearrange the fdarray in order to serve timers before sockets fds.
  Flush timer file descriptors after expiration.
  Split announce/sync_rx timer rearm on expiration.
  Use Non-blocking timer file descriptors.
  Use periodic timer for TX SYNC timeout.

 e2e_tc.c |  28 +++++++++++----
 fd.h     |   4 +--
 p2p_tc.c |  28 +++++++++++----
 port.c   | 102 +++++++++++++++++++++++++++++++++++++++----------------
 port.h   |  10 ++++++
 raw.c    |   4 +--
 udp.c    |   4 +--
 udp6.c   |   4 +--
 8 files changed, 132 insertions(+), 52 deletions(-)

-- 
2.40.0



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to