aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-5.4/751-net-phylink-make-Broadcom-BCM84881-based-SFPs-work.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/pending-5.4/751-net-phylink-make-Broadcom-BCM84881-based-SFPs-work.patch')
-rw-r--r--target/linux/generic/pending-5.4/751-net-phylink-make-Broadcom-BCM84881-based-SFPs-work.patch59
1 files changed, 0 insertions, 59 deletions
diff --git a/target/linux/generic/pending-5.4/751-net-phylink-make-Broadcom-BCM84881-based-SFPs-work.patch b/target/linux/generic/pending-5.4/751-net-phylink-make-Broadcom-BCM84881-based-SFPs-work.patch
deleted file mode 100644
index d58304410a..0000000000
--- a/target/linux/generic/pending-5.4/751-net-phylink-make-Broadcom-BCM84881-based-SFPs-work.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 7adb5b2126bc013f0964ddaefad6ad1b132e86c3 Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel@armlinux.org.uk>
-Date: Wed, 11 Dec 2019 10:56:50 +0000
-Subject: [PATCH] net: phylink: make Broadcom BCM84881 based SFPs work
-
-The Broadcom BCM84881 does not appear to send the SGMII control word
-when operating in SGMII mode, which causes network adapters to fail
-to link with the PHY, or decide to operate at fixed 1G speed, even if
-the PHY negotiated 100M.
-
-Work around this by detecting the Broadcom BCM84881 and switch to phy
-mode rather than inband mode.
-
-Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/phy/phylink.c | 18 ++++++++++++++++--
- 1 file changed, 16 insertions(+), 2 deletions(-)
-
---- a/drivers/net/phy/phylink.c
-+++ b/drivers/net/phy/phylink.c
-@@ -1842,10 +1842,20 @@ static void phylink_sfp_link_up(void *up
- phylink_run_resolve(pl);
- }
-
-+/* The Broadcom BCM84881 in the Methode DM7052 is unable to provide a SGMII
-+ * or 802.3z control word, so inband will not work.
-+ */
-+static bool phylink_phy_no_inband(struct phy_device *phy)
-+{
-+ return phy->is_c45 &&
-+ (phy->c45_ids.device_ids[1] & 0xfffffff0) == 0xae025150;
-+}
-+
- static int phylink_sfp_connect_phy(void *upstream, struct phy_device *phy)
- {
- struct phylink *pl = upstream;
- phy_interface_t interface;
-+ u8 mode;
- int ret;
-
- /*
-@@ -1857,9 +1867,13 @@ static int phylink_sfp_connect_phy(void
- */
- phy_support_asym_pause(phy);
-
-+ if (phylink_phy_no_inband(phy))
-+ mode = MLO_AN_PHY;
-+ else
-+ mode = MLO_AN_INBAND;
-+
- /* Do the initial configuration */
-- ret = phylink_sfp_config(pl, MLO_AN_INBAND, phy->supported,
-- phy->advertising);
-+ ret = phylink_sfp_config(pl, mode, phy->supported, phy->advertising);
- if (ret < 0)
- return ret;
-