diff options
author | Russell King (Oracle) <[email protected]> | 2023-09-14 16:35:41 +0100 |
---|---|---|
committer | David S. Miller <[email protected]> | 2023-09-17 14:31:23 +0100 |
commit | ea5968cd7d6e6f237cfc6d00aa29ff1dc9230b2f (patch) | |
tree | ddf139ec477223205c1105aa58494ea23240c11a | |
parent | ef113a60d0a901c28c1b844bf967c180528155c5 (diff) |
net: phy: move call to start aneg
Move the call to start auto-negotiation inside the lock in the PHYLIB
state machine, calling the locked variant _phy_start_aneg(). This
avoids unnecessarily releasing and re-acquiring the lock.
Tested-by: Jijie Shao <[email protected]>
Signed-off-by: Russell King (Oracle) <[email protected]>
Reviewed-by: Florian Fainelli <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
-rw-r--r-- | drivers/net/phy/phy.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 990d387b31bd..5bb33af2a4cb 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1489,14 +1489,15 @@ void phy_state_machine(struct work_struct *work) break; } + if (needs_aneg) { + err = _phy_start_aneg(phydev); + func = &_phy_start_aneg; + } + mutex_unlock(&phydev->lock); - if (needs_aneg) { - err = phy_start_aneg(phydev); - func = &phy_start_aneg; - } else if (do_suspend) { + if (do_suspend) phy_suspend(phydev); - } if (err == -ENODEV) return; |