net: stmmac: Calculate CDC error only once
authorKurt Kanzenbach <kurt@linutronix.de>
Mon, 22 Nov 2021 11:19:31 +0000 (12:19 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 24 Nov 2021 04:11:05 +0000 (20:11 -0800)
commitc6d5f1933085f9a92ed5c256a859ab31c7a35f88
tree652bed7110baf5cc643b18ddd9194180453423bd
parent2106efda785b55a8957efed9a52dfa28ee0d7280
net: stmmac: Calculate CDC error only once

The clock domain crossing error (CDC) is calculated at every fetch of Tx or Rx
timestamps. It includes a division. Especially on arm32 based systems it is
expensive. It also requires two conditionals in the hotpath.

Add a compensation value cache to struct plat_stmmacenet_data and subtract it
unconditionally in the RX/TX functions which spares the conditionals.

The value is initialized to 0 and if supported calculated in the PTP
initialization code.

Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Link: https://lore.kernel.org/r/20211122111931.135135-1-kurt@linutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c
include/linux/stmmac.h