Commit f46f33a6 authored by David S. Miller's avatar David S. Miller

Merge branch 'phy_stop-synchronous'

Heiner Kallweit says:

====================
net: phy: make phy_stop() synchronous

There have been few not that successful attempts in the past to make
phy_stop() a synchronous call instead of just changing the state.
Patch 1 of this series addresses an issue which prevented this change.
At least for me it works fine now. Would appreciate if Geert could
re-test as well that suspend doesn't throw an error.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 822143ac e8cfd9d6
...@@ -861,6 +861,8 @@ void phy_stop(struct phy_device *phydev) ...@@ -861,6 +861,8 @@ void phy_stop(struct phy_device *phydev)
out_unlock: out_unlock:
mutex_unlock(&phydev->lock); mutex_unlock(&phydev->lock);
phy_state_machine(&phydev->state_queue.work);
/* Cannot call flush_scheduled_work() here as desired because /* Cannot call flush_scheduled_work() here as desired because
* of rtnl_lock(), but PHY_HALTED shall guarantee phy_change() * of rtnl_lock(), but PHY_HALTED shall guarantee phy_change()
* will not reenable interrupts. * will not reenable interrupts.
......
...@@ -155,7 +155,7 @@ static void linkwatch_do_dev(struct net_device *dev) ...@@ -155,7 +155,7 @@ static void linkwatch_do_dev(struct net_device *dev)
clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state); clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state);
rfc2863_policy(dev); rfc2863_policy(dev);
if (dev->flags & IFF_UP) { if (dev->flags & IFF_UP && netif_device_present(dev)) {
if (netif_carrier_ok(dev)) if (netif_carrier_ok(dev))
dev_activate(dev); dev_activate(dev);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment