net: stmmac: address non-LPI resume failures properly
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 20 Mar 2025 22:11:12 +0000 (22:11 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 25 Mar 2025 14:58:03 +0000 (07:58 -0700)
commitef43e5132895ad59b45e38855d32e966bb7434d9
treea7e8b65281b3614c18b5c216bfa014266b75e098
parent367f1854d442b33c4a0305b068ae40d67ccd7d6a
net: stmmac: address non-LPI resume failures properly

The Synopsys Designware GMAC core databook requires all clocks to be
active in order to complete software reset, which we perform during
resume.

However, IEEE 802.3 allows a PHY to stop its clocks when placed in
low-power mode, which happens when the system is suspended and WoL
is not enabled.

As an attempt to work around this, commit 36d18b5664ef ("net: stmmac:
start phylink instance before stmmac_hw_setup()") started phylink
early, but this has the side effect that the mac_link_up() method may
be called before or during the initialisation of GMAC hardware.

We also have the socfpga glue driver directly calling phy_resume()
also as an attempt to work around this.

In a previous commit, phylink_prepare_resume() has been introduced
to give MAC drivers a way to ensure that the PHY is resumed prior to
their initialisation of their MAC hardware. This commit adds the call,
and moves the phylink_resume() call back to where it should be before
the aforementioned commit.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1tvO6a-008Vjh-FG@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c