]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: felix: update base time of time-aware shaper when adjusting PTP time
authorXiaoliang Yang <xiaoliang.yang_1@nxp.com>
Fri, 17 Jun 2022 03:24:23 +0000 (11:24 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 19 Jun 2022 08:53:59 +0000 (09:53 +0100)
commit3193e569078f59428062328b56442c3a1b9b4918
treeee153e88e10b3e41b0ace1474dd4e427597f66f1
parent017b97229edbb973aee7350b3051887e340b4a35
net: dsa: felix: update base time of time-aware shaper when adjusting PTP time

When adjusting the PTP clock, the base time of the TAS configuration
will become unreliable. We need reset the TAS configuration by using a
new base time.

For example, if the driver gets a base time 0 of Qbv configuration from
user, and current time is 20000. The driver will set the TAS base time
to be 20000. After the PTP clock adjustment, the current time becomes
10000. If the TAS base time is still 20000, it will be a future time,
and TAS entry list will stop running. Another example, if the current
time becomes to be 10000000 after PTP clock adjust, a large time offset
can cause the hardware to hang.

This patch introduces a tas_clock_adjust() function to reset the TAS
module by using a new base time after the PTP clock adjustment. This can
avoid issues above.

Due to PTP clock adjustment can occur at any time, it may conflict with
the TAS configuration. We introduce a new TAS lock to serialize the
access to the TAS registers.

Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/ocelot/felix_vsc9959.c
drivers/net/ethernet/mscc/ocelot.c
drivers/net/ethernet/mscc/ocelot_ptp.c
include/soc/mscc/ocelot.h