net: phylink: tidy up disable bit clearing
authorRussell King <rmk+kernel@armlinux.org.uk>
Tue, 30 Nov 2021 14:49:41 +0000 (14:49 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 Dec 2021 03:00:53 +0000 (19:00 -0800)
Tidy up the disable bit clearing where we clear a bit
and then run the link resolver.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Marek BehĂșn <kabel@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/E1ms4Rx-00EKEc-En@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/phylink.c

index eacbb0e..8e3861f 100644 (file)
@@ -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)
 {
        struct phylink *pl = container_of(t, struct phylink, link_poll);
@@ -1574,8 +1580,7 @@ void phylink_start(struct phylink *pl)
         */
        phylink_mac_initial_config(pl, true);
 
-       clear_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
-       phylink_run_resolve(pl);
+       phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_STOPPED);
 
        if (pl->cfg_link_an_mode == MLO_AN_FIXED && pl->link_gpio) {
                int irq = gpiod_to_irq(pl->link_gpio);
@@ -1715,8 +1720,7 @@ void phylink_resume(struct phylink *pl)
                phylink_mac_initial_config(pl, true);
 
                /* Re-enable and re-resolve the link parameters */
-               clear_bit(PHYLINK_DISABLE_MAC_WOL, &pl->phylink_disable_state);
-               phylink_run_resolve(pl);
+               phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_MAC_WOL);
        } else {
                phylink_start(pl);
        }
@@ -2645,8 +2649,7 @@ static void phylink_sfp_link_up(void *upstream)
 
        ASSERT_RTNL();
 
-       clear_bit(PHYLINK_DISABLE_LINK, &pl->phylink_disable_state);
-       phylink_run_resolve(pl);
+       phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_LINK);
 }
 
 /* The Broadcom BCM84881 in the Methode DM7052 is unable to provide a SGMII