net: micrel: Change to receive timestamp in the frame for lan8841
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Thu, 15 Jun 2023 09:47:40 +0000 (11:47 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 21 Jun 2023 14:05:46 +0000 (15:05 +0100)
commitcc75549548482ed653c23f212544e58cb38ea980
tree44747966812c5ccfdddd681aecc49010d24fcc6a
parent4cb13ff1437e21a698cae15154e75f1825f9394b
net: micrel: Change to receive timestamp in the frame for lan8841

Currently for each timestamp frame, the SW needs to go and read the
received timestamp over the MDIO bus. But the HW has the capability
to store the received nanoseconds part and the least significant two
bits of the seconds in the reserved field of the PTP header. In this
way we could save few MDIO transactions (actually a little more
transactions because the access to the PTP registers are indirect)
for each received frame.

Instead of reading the rest of seconds part of the timestamp of the
frame using MDIO transactions schedule PTP worker thread to read the
seconds part every 500ms and then for each of the received frames use
this information. Because if for example running with 512 frames per
second, there is no point to read 512 times the second part.

Doing all these changes will give a great CPU usage performance.
Running ptp4l with logSyncInterval of -9 will give a ~60% CPU
improvement.

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/micrel.c