diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2019-01-17 20:08:39 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-01-18 14:12:25 -0800 |
commit | cbfd12b3e8c3542e8142aa041714ed614d3f67b0 (patch) | |
tree | 36ae59a5707738b23beadf3d4f19b351ade7ef33 /drivers/net | |
parent | 472115d9834cd3a194a14269f28d8b146ad26c11 (diff) |
net: phy: ensure phylib state machine is stopped after calling phy_stop
The call to the phylib state machine in phy_stop() just ensures that
the state machine isn't re-triggered, but a state machine call may
be scheduled already. So lets's call phy_stop_machine().
This also allows to get rid of the call to phy_stop_machine() in
phy_disconnect().
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/phy/phy.c | 1 | ||||
-rw-r--r-- | drivers/net/phy/phy_device.c | 2 |
2 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index b0632e859564..37cf39fdcc91 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -858,6 +858,7 @@ void phy_stop(struct phy_device *phydev) mutex_unlock(&phydev->lock); phy_state_machine(&phydev->state_queue.work); + phy_stop_machine(phydev); /* Cannot call flush_scheduled_work() here as desired because * of rtnl_lock(), but PHY_HALTED shall guarantee irq handler diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 616a5fe47f56..e269a355012d 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1005,8 +1005,6 @@ void phy_disconnect(struct phy_device *phydev) if (phydev->irq > 0) phy_stop_interrupts(phydev); - phy_stop_machine(phydev); - phydev->adjust_link = NULL; phy_detach(phydev); |