]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
net/mlx4_en: Choose time-stamping shift value according to HW frequency
authorEugenia Emantayev <eugenia@mellanox.com>
Wed, 17 Feb 2016 15:24:23 +0000 (17:24 +0200)
committerSasha Levin <sasha.levin@oracle.com>
Fri, 4 Mar 2016 15:25:50 +0000 (10:25 -0500)
commit5c72a2dd6fedf29368fa67b15c7c076dd93cf3dd
tree0d763b57b789dc73cea13a132a91ebd27f5be1e7
parent7a9a967fa8bd958586896bb89f5d44ebbbbeaec3
net/mlx4_en: Choose time-stamping shift value according to HW frequency

[ Upstream commit 31c128b66e5b28f468076e4f3ca3025c35342041 ]

Previously, the shift value used for time-stamping was constant and didn't
depend on the HW chip frequency. Change that to take the frequency into account
and calculate the maximal value in cycles per wraparound of ten seconds. This
time slot was chosen since it gives a good accuracy in time synchronization.

Algorithm for shift value calculation:
 * Round up the maximal value in cycles to nearest power of two

 * Calculate maximal multiplier by division of all 64 bits set
   to above result

 * Then, invert the function clocksource_khz2mult() to get the shift from
   maximal mult value

Fixes: ec693d47010e ('net/mlx4_en: Add HW timestamping (TS) support')
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Reviewed-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/net/ethernet/mellanox/mlx4/en_clock.c