diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2018-11-07 20:47:53 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-11-09 00:02:06 +0100 |
commit | c8e977bab363006e5f5291ebf34ee5293cfb8515 (patch) | |
tree | 4ff3c142089c9966cb1bc30545c0808fed105f41 /drivers/net/phy/phy.c | |
parent | net: phy: remove state PHY_AN (diff) | |
download | linux-c8e977bab363006e5f5291ebf34ee5293cfb8515.tar.xz linux-c8e977bab363006e5f5291ebf34ee5293cfb8515.zip |
net: phy: use phy_check_link_status in more places in the state machine
Use phy_check_link_status in more places in the state machine.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r-- | drivers/net/phy/phy.c | 53 |
1 files changed, 5 insertions, 48 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 226824804208..dd5bff955128 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -945,17 +945,13 @@ void phy_state_machine(struct work_struct *work) break; case PHY_NOLINK: + case PHY_RUNNING: if (!phy_polling_mode(phydev)) break; - - err = phy_read_status(phydev); - if (err) - break; - - if (phydev->link) { - phydev->state = PHY_RUNNING; - phy_link_up(phydev); - } + /* fall through */ + case PHY_CHANGELINK: + case PHY_RESUMING: + err = phy_check_link_status(phydev); break; case PHY_FORCING: err = genphy_update_link(phydev); @@ -971,32 +967,6 @@ void phy_state_machine(struct work_struct *work) phy_link_down(phydev, false); } break; - case PHY_RUNNING: - if (!phy_polling_mode(phydev)) - break; - - err = phy_read_status(phydev); - if (err) - break; - - if (!phydev->link) { - phydev->state = PHY_NOLINK; - phy_link_down(phydev, true); - } - break; - case PHY_CHANGELINK: - err = phy_read_status(phydev); - if (err) - break; - - if (phydev->link) { - phydev->state = PHY_RUNNING; - phy_link_up(phydev); - } else { - phydev->state = PHY_NOLINK; - phy_link_down(phydev, true); - } - break; case PHY_HALTED: if (phydev->link) { phydev->link = 0; @@ -1004,19 +974,6 @@ void phy_state_machine(struct work_struct *work) do_suspend = true; } break; - case PHY_RESUMING: - err = phy_read_status(phydev); - if (err) - break; - - if (phydev->link) { - phydev->state = PHY_RUNNING; - phy_link_up(phydev); - } else { - phydev->state = PHY_NOLINK; - phy_link_down(phydev, true); - } - break; } mutex_unlock(&phydev->lock); |