fcb3a5a8a1
Driver support is only provided for ConnectX4/5. System-time timestamp is calculated based on the free-running counter timestamp provided by hardware. Driver periodically samples the counter to calibrate it against the system clock and uses linear interpolation to convert. Stability of the crystal which drives the clock is +-50 ppm at the operational temperature, which makes the algorithm good enough. The calculation is somewhat delicate because all values are 64bit and overflow the naive formula for linear interpolation. The calculation drops the least significant bits in advance, see the PREC shift in mlx5_mbuf_tstmp(). Hardware stamps can be turned off by 'ifconfig mceN -hwrxtsmp'. Buggy firmware might result in small but visible errors in the reported timestamps, detectable e.g. by nonsensical (negative) RTT values for LAN pings. Reviewed by: gallatin, hselasky Sponsored by: Mellanox Technologies Differential revision: https://reviews.freebsd.org/D12638