[PATCH net-next] net: phy: call phy_init_hw() in phy resume path
From: Biju
Date: Fri Apr 10 2026 - 10:29:16 EST
From: Ovidiu Panait <ovidiu.panait.rb@xxxxxxxxxxx>
When mac_managed_pm flag is set, mdio_bus_phy_resume() is skipped, so
phy_init_hw(), which performs soft_reset and config_init, is not called
during resume.
This is inconsistent with the non-mac_managed_pm path, where
mdio_bus_phy_resume() calls phy_init_hw() before phy_resume() on every
resume.
To align both paths, add a phy_init_hw() call at the top of
__phy_resume(), before invoking the driver's resume callback. This
guarantees the PHY undergoes soft reset and re-initialization regardless
of whether PM is managed by the MAC or the MDIO bus.
Signed-off-by: Ovidiu Panait <ovidiu.panait.rb@xxxxxxxxxxx>
Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
---
drivers/net/phy/phy_device.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 0edff47478c2..8255f4208d66 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -2008,6 +2008,10 @@ int __phy_resume(struct phy_device *phydev)
if (!phydrv || !phydrv->resume)
return 0;
+ ret = phy_init_hw(phydev);
+ if (ret)
+ return ret;
+
ret = phydrv->resume(phydev);
if (!ret)
phydev->suspended = false;
--
2.43.0