netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH net-next] net: phy: force phy suspend when calling phy_stop
@ 2019-08-27  2:47 Jian Shen
  2019-08-27  5:51 ` Heiner Kallweit
  2019-08-27 10:11 ` Sergei Shtylyov
  0 siblings, 2 replies; 7+ messages in thread
From: Jian Shen @ 2019-08-27  2:47 UTC (permalink / raw)
  To: andrew, f.fainelli, hkallweit1, davem; +Cc: netdev, forest.zhouchang, linuxarm

Some ethernet drivers may call phy_start() and phy_stop() from
ndo_open and ndo_close() respectively.

When network cable is unconnected, and operate like below:
step 1: ifconfig ethX up -> ndo_open -> phy_start ->start
autoneg, and phy is no link.
step 2: ifconfig ethX down -> ndo_close -> phy_stop -> just stop
phy state machine.
step 3: plugin the network cable, and autoneg complete, then
LED for link status will be on.
step 4: ethtool ethX --> see the result of "Link detected" is no.

This patch forces phy suspend even phydev->link is off.

Signed-off-by: Jian Shen <shenjian15@huawei.com>
---
 drivers/net/phy/phy.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index f3adea9..0acd5b4 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -911,8 +911,8 @@ void phy_state_machine(struct work_struct *work)
 		if (phydev->link) {
 			phydev->link = 0;
 			phy_link_down(phydev, true);
-			do_suspend = true;
 		}
+		do_suspend = true;
 		break;
 	}
 
-- 
2.8.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-08-28  1:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-27  2:47 [RFC PATCH net-next] net: phy: force phy suspend when calling phy_stop Jian Shen
2019-08-27  5:51 ` Heiner Kallweit
2019-08-27  8:29   ` shenjian (K)
2019-08-27 19:41     ` Heiner Kallweit
2019-08-28  1:03       ` shenjian (K)
2019-08-27 10:11 ` Sergei Shtylyov
2019-08-27 11:36   ` shenjian (K)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).