Commit aa729c43 authored by Russell King's avatar Russell King Committed by Jakub Kicinski

net: phylink: tidy up disable bit clearing

Tidy up the disable bit clearing where we clear a bit
and then run the link resolver.
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarMarek Behún <kabel@kernel.org>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/E1ms4Rx-00EKEc-En@rmk-PC.armlinux.org.ukSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4a8e4640
...@@ -1090,6 +1090,12 @@ static void phylink_run_resolve_and_disable(struct phylink *pl, int bit) ...@@ -1090,6 +1090,12 @@ static void phylink_run_resolve_and_disable(struct phylink *pl, int bit)
} }
} }
static void phylink_enable_and_run_resolve(struct phylink *pl, int bit)
{
clear_bit(bit, &pl->phylink_disable_state);
phylink_run_resolve(pl);
}
static void phylink_fixed_poll(struct timer_list *t) static void phylink_fixed_poll(struct timer_list *t)
{ {
struct phylink *pl = container_of(t, struct phylink, link_poll); struct phylink *pl = container_of(t, struct phylink, link_poll);
...@@ -1574,8 +1580,7 @@ void phylink_start(struct phylink *pl) ...@@ -1574,8 +1580,7 @@ void phylink_start(struct phylink *pl)
*/ */
phylink_mac_initial_config(pl, true); phylink_mac_initial_config(pl, true);
clear_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state); phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_STOPPED);
phylink_run_resolve(pl);
if (pl->cfg_link_an_mode == MLO_AN_FIXED && pl->link_gpio) { if (pl->cfg_link_an_mode == MLO_AN_FIXED && pl->link_gpio) {
int irq = gpiod_to_irq(pl->link_gpio); int irq = gpiod_to_irq(pl->link_gpio);
...@@ -1715,8 +1720,7 @@ void phylink_resume(struct phylink *pl) ...@@ -1715,8 +1720,7 @@ void phylink_resume(struct phylink *pl)
phylink_mac_initial_config(pl, true); phylink_mac_initial_config(pl, true);
/* Re-enable and re-resolve the link parameters */ /* Re-enable and re-resolve the link parameters */
clear_bit(PHYLINK_DISABLE_MAC_WOL, &pl->phylink_disable_state); phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_MAC_WOL);
phylink_run_resolve(pl);
} else { } else {
phylink_start(pl); phylink_start(pl);
} }
...@@ -2645,8 +2649,7 @@ static void phylink_sfp_link_up(void *upstream) ...@@ -2645,8 +2649,7 @@ static void phylink_sfp_link_up(void *upstream)
ASSERT_RTNL(); ASSERT_RTNL();
clear_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state); phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_LINK);
phylink_run_resolve(pl);
} }
/* The Broadcom BCM84881 in the Methode DM7052 is unable to provide a SGMII /* The Broadcom BCM84881 in the Methode DM7052 is unable to provide a SGMII
......
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