aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-4.19/727-v5.5-net-sfp-control-TX_DISABLE-and-phy-only-from-main-st.patch
diff options
context:
space:
mode:
authorRussell King <linux@armlinux.org.uk>2019-11-27 11:45:25 +0000
committerJonas Gorski <jonas.gorski@gmail.com>2020-01-21 22:32:48 +0100
commit1c16b574c4f77a30a0268acee30be96ae0dc5948 (patch)
tree716fd94ee81e332ba19e1af7bf98371120ea1856 /target/linux/generic/backport-4.19/727-v5.5-net-sfp-control-TX_DISABLE-and-phy-only-from-main-st.patch
parenta07638eb24b8310a35ea6c3b09f6db59bb31cd68 (diff)
downloadupstream-1c16b574c4f77a30a0268acee30be96ae0dc5948.tar.gz
upstream-1c16b574c4f77a30a0268acee30be96ae0dc5948.tar.bz2
upstream-1c16b574c4f77a30a0268acee30be96ae0dc5948.zip
kernel: add backported phy/phylink/sfp patches
Backport the phy/phylink/sfp patches currently queued in netdev or in mainline necessary to support GPON popular modules, specifically to support Huawei and Nokia GPON modules. Signed-off-by: Russell King <linux@armlinux.org.uk> [jonas.gorski: include kernel version in file names, refresh patches] Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Diffstat (limited to 'target/linux/generic/backport-4.19/727-v5.5-net-sfp-control-TX_DISABLE-and-phy-only-from-main-st.patch')
-rw-r--r--target/linux/generic/backport-4.19/727-v5.5-net-sfp-control-TX_DISABLE-and-phy-only-from-main-st.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/target/linux/generic/backport-4.19/727-v5.5-net-sfp-control-TX_DISABLE-and-phy-only-from-main-st.patch b/target/linux/generic/backport-4.19/727-v5.5-net-sfp-control-TX_DISABLE-and-phy-only-from-main-st.patch
new file mode 100644
index 0000000000..0eac6abb88
--- /dev/null
+++ b/target/linux/generic/backport-4.19/727-v5.5-net-sfp-control-TX_DISABLE-and-phy-only-from-main-st.patch
@@ -0,0 +1,52 @@
+From df5c4d93c5a59cba0f7479a4cd4e22b50726ce88 Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@armlinux.org.uk>
+Date: Thu, 17 Oct 2019 11:12:42 +0100
+Subject: [PATCH 625/660] net: sfp: control TX_DISABLE and phy only from main
+ state machine
+
+We initialise TX_DISABLE when the sfp cage is probed, and then
+maintain its state in the main state machine. However, the module
+state machine:
+- negates it when detecting a newly inserted module when it's already
+ guaranteed to be negated.
+- negates it when the module is removed, but the main state machine
+ will do this anyway.
+
+Make TX_DISABLE entirely controlled by the main state machine.
+
+The main state machine also probes the module for a PHY, and removes
+the PHY when the the module is removed. Hence, removing the PHY in
+sfp_sm_module_remove() is also redundant, and is a left-over from
+when we tried to probe for the PHY from the module state machine.
+
+Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+---
+ drivers/net/phy/sfp.c | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+--- a/drivers/net/phy/sfp.c
++++ b/drivers/net/phy/sfp.c
+@@ -1492,11 +1492,6 @@ static void sfp_sm_mod_remove(struct sfp
+
+ sfp_hwmon_remove(sfp);
+
+- if (sfp->mod_phy)
+- sfp_sm_phy_detach(sfp);
+-
+- sfp_module_tx_disable(sfp);
+-
+ memset(&sfp->id, 0, sizeof(sfp->id));
+ sfp->module_power_mW = 0;
+
+@@ -1534,10 +1529,8 @@ static void sfp_sm_module(struct sfp *sf
+
+ switch (sfp->sm_mod_state) {
+ default:
+- if (event == SFP_E_INSERT && sfp->attached) {
+- sfp_module_tx_disable(sfp);
++ if (event == SFP_E_INSERT && sfp->attached)
+ sfp_sm_mod_next(sfp, SFP_MOD_PROBE, T_SERIAL);
+- }
+ break;
+
+ case SFP_MOD_PROBE: