diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2020-07-21 14:03:50 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-07-22 01:46:50 +0300 |
commit | b06e5cac213cffbbf642d7e46e06719e02c75a4b (patch) | |
tree | ec2a082e17ce71c834ef9950f9164ab925b25ccd /drivers/net/phy/phylink.c | |
parent | 1ceb7ee7a6e7a8195fd1fbc3c7d554305bc26607 (diff) | |
download | linux-b06e5cac213cffbbf642d7e46e06719e02c75a4b.tar.xz |
net: phylink: rejig link state tracking
Rejig the link state tracking, so that we can use the current state
in a future patch.
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy/phylink.c')
-rw-r--r-- | drivers/net/phy/phylink.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 0fd5a11966aa..b36e0315f0b1 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -578,9 +578,14 @@ static void phylink_resolve(struct work_struct *w) struct phylink *pl = container_of(w, struct phylink, resolve); struct phylink_link_state link_state; struct net_device *ndev = pl->netdev; - int link_changed; + bool cur_link_state; mutex_lock(&pl->state_mutex); + if (pl->netdev) + cur_link_state = netif_carrier_ok(ndev); + else + cur_link_state = pl->old_link_state; + if (pl->phylink_disable_state) { pl->mac_link_dropped = false; link_state.link = false; @@ -623,12 +628,7 @@ static void phylink_resolve(struct work_struct *w) } } - if (pl->netdev) - link_changed = (link_state.link != netif_carrier_ok(ndev)); - else - link_changed = (link_state.link != pl->old_link_state); - - if (link_changed) { + if (link_state.link != cur_link_state) { pl->old_link_state = link_state.link; if (!link_state.link) phylink_link_down(pl); |