Re: [Linuxptp-users] Overflow issue for 32bit machines: ptp_clock_info.max_adj versus timex.freq
PTP IEEE 1588 stack for Linux
Brought to you by:
rcochran
From: Janusz U. <j.u...@el...> - 2022-10-05 22:27:09
|
More details: The type of "freq" field in "__kernel_timex" structure is fixed in mainline kernel to "long long" type. However "__kernel_long_t freq" in timex structure depends on machine. Eg. for some machines it see: include/uapi/asm-generic/posix_types.h:typedef long __kernel_long_t; arch/sparc/include/uapi/asm/posix_types.h: typedef long __kernel_long_t; best regards Janusz Uzycki W dniu 06/10/2022 o 00:11, Janusz Użycki pisze: > Hi. > > A lot of PTP/PHC drivers set max_adj value quite big. Howover due to > kernel's API limit of 32bit long type value (freq) and POSIX frequency > conversion it should limited to 32767999 ppb. > > It concerns the frequency limit check both for kernel, testptp and > ptp4linux servos. Simply 65.536 * 32767999 is almost 2^31... It is > also common for adjfreq() vs newer adjfine(). > Moreover such big frequency limits seem not practical (phase jump used > instead, 1000ppm is huge for any PTP oscillator application), even > driver or rather PHC hardware has ability to tune is such range. > > > best regards > Janusz Uzycki > > |