[RFC PATCH net] net: phy: fix the issue that netif always links up after resuming

From: Kunihiko Hayashi
Date: Thu Nov 29 2018 - 03:12:35 EST


Even though the link is down before entering hibernation,
there is an issue that the network interface always links up after resuming
from hibernation.

The phydev->state is PHY_READY before enabling the network interface, so
the link is down. After resuming from hibernation, the phydev->state is
forcibly set to PHY_UP in mdio_bus_phy_restore(), and the link becomes up.

This patch expects to solve the issue by changing phydev->state to PHY_UP
only when the link is up.

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@xxxxxxxxxxxxx>
---
drivers/net/phy/phy_device.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index ab33d17..d5bba0f 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -309,8 +309,10 @@ static int mdio_bus_phy_restore(struct device *dev)
return ret;

/* The PHY needs to renegotiate. */
- phydev->link = 0;
- phydev->state = PHY_UP;
+ if (phydev->link) {
+ phydev->link = 0;
+ phydev->state = PHY_UP;
+ }

phy_start_machine(phydev);

--
2.7.4