From c23c0b84841e2710a8cd04746ef8cc3a0697903c Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Wed, 8 Jun 2022 15:30:05 +0200 Subject: [PATCH] ntp: convert HW timestamp even if PHC reading fails Reading of PHC can fail occasionally on some hardware. If that happens, don't abort the conversion of the timestamp that triggered the reading. --- ntp_io_linux.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ntp_io_linux.c b/ntp_io_linux.c index 4d099cc..acb41fa 100644 --- a/ntp_io_linux.c +++ b/ntp_io_linux.c @@ -569,16 +569,15 @@ process_hw_timestamp(struct Interface *iface, struct timespec *hw_ts, double rx_correction, ts_delay, phc_err, local_err; if (HCL_NeedsNewSample(iface->clock, &local_ts->ts)) { - if (!SYS_Linux_GetPHCSample(iface->phc_fd, iface->phc_nocrossts, iface->precision, - &iface->phc_mode, &sample_phc_ts, &sample_sys_ts, - &phc_err)) - return; + if (SYS_Linux_GetPHCSample(iface->phc_fd, iface->phc_nocrossts, iface->precision, + &iface->phc_mode, &sample_phc_ts, &sample_sys_ts, + &phc_err)) { + LCL_CookTime(&sample_sys_ts, &sample_local_ts, &local_err); + HCL_AccumulateSample(iface->clock, &sample_phc_ts, &sample_local_ts, + phc_err + local_err); - LCL_CookTime(&sample_sys_ts, &sample_local_ts, &local_err); - HCL_AccumulateSample(iface->clock, &sample_phc_ts, &sample_local_ts, - phc_err + local_err); - - update_interface_speed(iface); + update_interface_speed(iface); + } } /* We need to transpose RX timestamps as hardware timestamps are normally