]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Jun 2023 07:27:17 +0000 (09:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Jun 2023 07:27:17 +0000 (09:27 +0200)
added patches:
net-sfp-fix-state-loss-when-updating-state_hw_mask.patch

queue-6.1/net-sfp-fix-state-loss-when-updating-state_hw_mask.patch [new file with mode: 0644]
queue-6.1/series

diff --git a/queue-6.1/net-sfp-fix-state-loss-when-updating-state_hw_mask.patch b/queue-6.1/net-sfp-fix-state-loss-when-updating-state_hw_mask.patch
new file mode 100644 (file)
index 0000000..4e847e7
--- /dev/null
@@ -0,0 +1,49 @@
+From 04361b8bb81819efb68bf39c276025e2250ac537 Mon Sep 17 00:00:00 2001
+From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
+Date: Fri, 17 Mar 2023 07:28:00 +0000
+Subject: net: sfp: fix state loss when updating state_hw_mask
+
+From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+
+commit 04361b8bb81819efb68bf39c276025e2250ac537 upstream.
+
+Andrew reports that the SFF modules on one of the ZII platforms do not
+indicate link up due to the SFP code believing that LOS indicating that
+there is no signal being received from the remote end, but in fact the
+LOS signal is showing that there is signal.
+
+What makes SFF modules different from SFPs is they typically have an
+inverted LOS, which uncovered this issue. When we read the hardware
+state, we mask it with state_hw_mask so we ignore anything we're not
+interested in. However, we don't re-read when state_hw_mask changes,
+leading to sfp->state being stale.
+
+Arrange for a software poll of the module state after we have parsed
+the EEPROM in sfp_sm_mod_probe() and updated state_*_mask. This will
+generate any necessary events for signal changes for the state
+machine as well as updating sfp->state.
+
+Reported-by: Andrew Lunn <andrew@lunn.ch>
+Tested-by: Andrew Lunn <andrew@lunn.ch>
+Fixes: 8475c4b70b04 ("net: sfp: re-implement soft state polling setup")
+Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/phy/sfp.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/net/phy/sfp.c
++++ b/drivers/net/phy/sfp.c
+@@ -2199,6 +2199,11 @@ static void sfp_sm_module(struct sfp *sf
+                       break;
+               }
++              /* Force a poll to re-read the hardware signal state after
++               * sfp_sm_mod_probe() changed state_hw_mask.
++               */
++              mod_delayed_work(system_wq, &sfp->poll, 1);
++
+               err = sfp_hwmon_insert(sfp);
+               if (err)
+                       dev_warn(sfp->dev, "hwmon probe failed: %pe\n",
index 446f5d7d099bfb37e62e589c8ac2cdca54258616..1abbc1a938c3719e2c910495c2c47f69d37e423d 100644 (file)
@@ -1,4 +1,5 @@
 scsi-megaraid_sas-add-flexible-array-member-for-sgls.patch
+net-sfp-fix-state-loss-when-updating-state_hw_mask.patch
 spi-mt65xx-make-sure-operations-completed-before-unl.patch
 platform-surface-aggregator-allow-completion-work-it.patch
 platform-surface-aggregator_tabletsw-add-support-for.patch