]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
ntp: convert HW timestamp even if PHC reading fails
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 8 Jun 2022 13:30:05 +0000 (15:30 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Wed, 8 Jun 2022 13:30:05 +0000 (15:30 +0200)
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

index 4d099cc9df5f94b81d9df54bfcfcb3c5775ebb64..acb41fa2872bbca436a2a87b9ee431e8dfb97928 100644 (file)
@@ -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;
-
-    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);
+    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);
+
+      update_interface_speed(iface);
+    }
   }
 
   /* We need to transpose RX timestamps as hardware timestamps are normally