• Xiaoliang Yang's avatar
    net: dsa: felix: update base time of time-aware shaper when adjusting PTP time · 8670dc33
    Xiaoliang Yang authored
    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: default avatarXiaoliang Yang <xiaoliang.yang_1@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8670dc33
felix_vsc9959.c 69.9 KB