Message ID | E1tnf1X-0056LI-9i@rmk-PC.armlinux.org.uk (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | net: stmmac: fix resume failures due to RX clock | expand |
On Thu, Feb 27, 2025 at 02:38:03PM +0000, Russell King (Oracle) wrote: > Move phylink_resume() to be after the setup in stmmac_resume() has > completed, as phylink_resume() may result in an immediate call to the > .mac_link_up method, which will enable the transmitter and receiver, > and enable the transmit queues. > > This behaviour has been witnessed by Jon Hunter on the Jetson TX2 > platform (Tegra 186). > > Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index fbcba6c71f12..23c610f7c779 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -7924,12 +7924,6 @@ int stmmac_resume(struct device *dev) return ret; } - rtnl_lock(); - phylink_resume(priv->phylink); - if (device_may_wakeup(priv->device) && !priv->plat->pmt) - phylink_speed_up(priv->phylink); - rtnl_unlock(); - rtnl_lock(); mutex_lock(&priv->lock); @@ -7948,6 +7942,11 @@ int stmmac_resume(struct device *dev) stmmac_enable_all_dma_irq(priv); mutex_unlock(&priv->lock); + + phylink_resume(priv->phylink); + if (device_may_wakeup(priv->device) && !priv->plat->pmt) + phylink_speed_up(priv->phylink); + rtnl_unlock(); netif_device_attach(ndev);
Move phylink_resume() to be after the setup in stmmac_resume() has completed, as phylink_resume() may result in an immediate call to the .mac_link_up method, which will enable the transmitter and receiver, and enable the transmit queues. This behaviour has been witnessed by Jon Hunter on the Jetson TX2 platform (Tegra 186). Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)