On Tue, Oct 10, 2023 at 12:29:22PM +0200, Paweł Modrzejewski wrote: > Make it possible to set timeout values bigger than 2.147 sec > and print error message in case port_set_sync_rx_tmo() fails.
I think this limitation was specific to 32-bit systems that don't use 64-bit time_t. > --- a/port.c > +++ b/port.c > @@ -245,12 +245,9 @@ int set_tmo_log(int fd, unsigned int scale, int > log_seconds) > for (i = 1, ns = scale * 500000000ULL; i < log_seconds; i++) { > ns >>= 1; > } > - tmo.it_value.tv_nsec = ns; > > - while (tmo.it_value.tv_nsec >= NS_PER_SEC) { > - tmo.it_value.tv_nsec -= NS_PER_SEC; > - tmo.it_value.tv_sec++; > - } > + tmo.it_value.tv_sec = ns / NS_PER_SEC; > + tmo.it_value.tv_nsec = ns % NS_PER_SEC; The fix looks good to me. Replacing the repeated subtraction with division also fixes a potential slowdown with large scales. -- Miroslav Lichvar _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel