net: dsa: sja1105: Restore PTP time after switch reset
The PTP time of the switch is not preserved when uploading a new static configuration. Work around this hardware oddity by reading its PTP time before a static config upload, and restoring it afterwards. Static config changes are expected to occur at runtime even in scenarios directly related to PTP, i.e. the Time-Aware Scheduler of the switch is programmed in this way. Perhaps the larger implication of this patch is that the PTP .gettimex64 and .settime functions need to be exposed to sja1105_main.c, where the PTP lock needs to be held during this entire process. So their core implementation needs to move to some common functions which get exposed in sja1105_ptp.h. Signed-off-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
34d76e9fa8
commit
6cf99c13ea
@@ -511,12 +511,6 @@ int sja1105_static_config_upload(struct sja1105_private *priv)
|
||||
dev_info(dev, "Succeeded after %d tried\n", RETRIES - retries);
|
||||
}
|
||||
|
||||
rc = sja1105_ptp_reset(priv->ds);
|
||||
if (rc < 0)
|
||||
dev_err(dev, "Failed to reset PTP clock: %d\n", rc);
|
||||
|
||||
dev_info(dev, "Reset switch and programmed static config\n");
|
||||
|
||||
out:
|
||||
kfree(config_buf);
|
||||
return rc;
|
||||
|
Reference in New Issue
Block a user