aboutsummaryrefslogtreecommitdiff
path: root/pkgs/patches-linux-5.15/782-v5.17-1-net-phylink-tidy-up-disable-bit-clearing.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/patches-linux-5.15/782-v5.17-1-net-phylink-tidy-up-disable-bit-clearing.patch')
-rw-r--r--pkgs/patches-linux-5.15/782-v5.17-1-net-phylink-tidy-up-disable-bit-clearing.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/pkgs/patches-linux-5.15/782-v5.17-1-net-phylink-tidy-up-disable-bit-clearing.patch b/pkgs/patches-linux-5.15/782-v5.17-1-net-phylink-tidy-up-disable-bit-clearing.patch
new file mode 100644
index 0000000..07fbe0f
--- /dev/null
+++ b/pkgs/patches-linux-5.15/782-v5.17-1-net-phylink-tidy-up-disable-bit-clearing.patch
@@ -0,0 +1,70 @@
+From 219b507f5c0a08507c17ecf4df80eaa1ccb0f3b7 Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@armlinux.org.uk>
+Date: Tue, 30 Nov 2021 14:49:41 +0000
+Subject: [PATCH 1/2] net: phylink: tidy up disable bit clearing
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+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 | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
+index 3e1d7dea616d..e95c6086d811 100644
+--- a/drivers/net/phy/phylink.c
++++ b/drivers/net/phy/phylink.c
+@@ -1149,6 +1149,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);
+@@ -1636,8 +1642,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);
+@@ -1777,8 +1782,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);
+ }
+@@ -2817,8 +2821,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
+--
+2.35.1
+