Message ID | E1tnf1c-0056LO-DN@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:08PM +0000, Russell King (Oracle) wrote: > The Synopsys Designwavre GMAC core databook requires all clocks to be > active in order to complete software reset. > > This means if the PHY receive clock has been stopped due to the media > being in EEE low-power state, and the PHY being permitted to stop its > clock, then software reset will not complete. > > Phylink now provides a way to work around this by calling > phylink_prepare_resume() before attempting to issue a reset. This will > prepare any attached PHY by disabling its permission to stop the clock. > phylink_resume() will restore the receive clock stop setting according > to the configuration passed from the netdev driver. > > 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 23c610f7c779..13796b1c8d7c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -7925,6 +7925,8 @@ int stmmac_resume(struct device *dev) } rtnl_lock(); + phylink_prepare_resume(priv->phylink); + mutex_lock(&priv->lock); stmmac_reset_queues_param(priv);
The Synopsys Designwavre GMAC core databook requires all clocks to be active in order to complete software reset. This means if the PHY receive clock has been stopped due to the media being in EEE low-power state, and the PHY being permitted to stop its clock, then software reset will not complete. Phylink now provides a way to work around this by calling phylink_prepare_resume() before attempting to issue a reset. This will prepare any attached PHY by disabling its permission to stop the clock. phylink_resume() will restore the receive clock stop setting according to the configuration passed from the netdev driver. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 ++ 1 file changed, 2 insertions(+)