aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-4.19/728-v5.5-net-sfp-split-the-PHY-probe-from-sfp_sm_mod_init.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/728-v5.5-net-sfp-split-the-PHY-probe-from-sfp_sm_mod_init.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/728-v5.5-net-sfp-split-the-PHY-probe-from-sfp_sm_mod_init.patch')
-rw-r--r--target/linux/generic/backport-4.19/728-v5.5-net-sfp-split-the-PHY-probe-from-sfp_sm_mod_init.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/target/linux/generic/backport-4.19/728-v5.5-net-sfp-split-the-PHY-probe-from-sfp_sm_mod_init.patch b/target/linux/generic/backport-4.19/728-v5.5-net-sfp-split-the-PHY-probe-from-sfp_sm_mod_init.patch
new file mode 100644
index 0000000000..7830b9268f
--- /dev/null
+++ b/target/linux/generic/backport-4.19/728-v5.5-net-sfp-split-the-PHY-probe-from-sfp_sm_mod_init.patch
@@ -0,0 +1,53 @@
+From 5ed0bd49b2d3ac4439c2d7f44e5a82b7cf6f409a Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@armlinux.org.uk>
+Date: Fri, 18 Oct 2019 10:09:02 +0100
+Subject: [PATCH 626/660] net: sfp: split the PHY probe from sfp_sm_mod_init()
+
+Move the PHY probe into a separate function, splitting it from
+sfp_sm_mod_init(). This will allow us to eliminate the 50ms mdelay()
+inside the state machine.
+
+Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+---
+ drivers/net/phy/sfp.c | 21 +++++++++++++--------
+ 1 file changed, 13 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/phy/sfp.c
++++ b/drivers/net/phy/sfp.c
+@@ -1288,14 +1288,10 @@ static void sfp_sm_fault(struct sfp *sfp
+ static void sfp_sm_mod_init(struct sfp *sfp)
+ {
+ sfp_module_tx_enable(sfp);
++}
+
+- /* Wait t_init before indicating that the link is up, provided the
+- * current state indicates no TX_FAULT. If TX_FAULT clears before
+- * this time, that's fine too.
+- */
+- sfp_sm_next(sfp, SFP_S_INIT, T_INIT_JIFFIES);
+- sfp->sm_retries = 5;
+-
++static void sfp_sm_probe_for_phy(struct sfp *sfp)
++{
+ /* Setting the serdes link mode is guesswork: there's no
+ * field in the EEPROM which indicates what mode should
+ * be used.
+@@ -1580,8 +1576,17 @@ static void sfp_sm_main(struct sfp *sfp,
+ switch (sfp->sm_state) {
+ case SFP_S_DOWN:
+ if (sfp->sm_mod_state == SFP_MOD_PRESENT &&
+- sfp->sm_dev_state == SFP_DEV_UP)
++ sfp->sm_dev_state == SFP_DEV_UP) {
+ sfp_sm_mod_init(sfp);
++ sfp_sm_probe_for_phy(sfp);
++
++ /* Wait t_init before indicating that the link is up,
++ * provided the current state indicates no TX_FAULT. If
++ * TX_FAULT clears before this time, that's fine too.
++ */
++ sfp_sm_next(sfp, SFP_S_INIT, T_INIT_JIFFIES);
++ sfp->sm_retries = 5;
++ }
+ break;
+
+ case SFP_S_INIT: