]> 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)
commit342922e2617376c94b0ab9dd3476fdf842e20766
treeee153e88e10b3e41b0ace1474dd4e427597f66f1
parent18e37a33787dc65174dba5b431c4482ef1e24abf
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