[PATCH net v4 5/5] net: phy: postpone PHY interrupts during sleep with MAC-managed PM

Igor Velkov iav at iav.lv
Sun Nov 1 11:09:52 PST 2026


Path 1 is real for a PHY that keeps its link interrupt enabled while
armed for WoL. phylink_suspend() calls phylink_stop() before
phylink_speed_down(), so the driver's suspend runs first. RTL8211F and
AN8801R mask the link interrupt there; on Helios64 (stmmac + RTL8211F,
wakeup-source) WoL suspend passed 4/4, though I did not log the link
speed. Of the wakeup-capable PHYs in drivers/net/phy, BCM54210E leaves
it enabled. Before this series, the link-up after the downshift could
arrive after stmmac gated its clocks, and phy_interrupt() would read the
PHY over a dead MDIO bus: the hang this series fixes. An aborted suspend
is the safer failure.

Path 2: phy_stop() with wol_enabled leaves the copper link up
(rtl821x_suspend() skips genphy_suspend()), so the MAC causes no link
interrupt. Counting netdev->ethtool->wol_enabled as a system wakeup is
what phy_interrupt() already does for PHYs without mac_managed_pm.



More information about the linux-arm-kernel mailing list