aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-5.4/747-net-phylink-support-Clause-45-PHYs-on-SFP-modules.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/pending-5.4/747-net-phylink-support-Clause-45-PHYs-on-SFP-modules.patch')
-rw-r--r--target/linux/generic/pending-5.4/747-net-phylink-support-Clause-45-PHYs-on-SFP-modules.patch89
1 files changed, 0 insertions, 89 deletions
diff --git a/target/linux/generic/pending-5.4/747-net-phylink-support-Clause-45-PHYs-on-SFP-modules.patch b/target/linux/generic/pending-5.4/747-net-phylink-support-Clause-45-PHYs-on-SFP-modules.patch
deleted file mode 100644
index 673de1005a..0000000000
--- a/target/linux/generic/pending-5.4/747-net-phylink-support-Clause-45-PHYs-on-SFP-modules.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From caf32f96f13df7d3ae6cb8bf8001c88ae22025ca Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel@armlinux.org.uk>
-Date: Fri, 8 Nov 2019 15:28:22 +0000
-Subject: [PATCH 650/660] net: phylink: support Clause 45 PHYs on SFP+ modules
-
-Some SFP+ modules have Clause 45 PHYs embedded on them, which need a
-little more handling in order to ensure that they are correctly setup,
-as they switch the PHY link mode according to the negotiated speed.
-
-With Clause 22 PHYs, we assumed that they would operate in SGMII mode,
-but this assumption is now false. Adapt phylink to support Clause 45
-PHYs on SFP+ modules.
-
-Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
----
- drivers/net/phy/phylink.c | 21 ++++++++++++++++-----
- 1 file changed, 16 insertions(+), 5 deletions(-)
-
---- a/drivers/net/phy/phylink.c
-+++ b/drivers/net/phy/phylink.c
-@@ -712,7 +712,8 @@ static void phylink_phy_change(struct ph
- phy_duplex_to_str(phydev->duplex));
- }
-
--static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy)
-+static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy,
-+ phy_interface_t interface)
- {
- struct phylink_link_state config;
- __ETHTOOL_DECLARE_LINK_MODE_MASK(supported);
-@@ -730,7 +731,7 @@ static int phylink_bringup_phy(struct ph
- memset(&config, 0, sizeof(config));
- linkmode_copy(supported, phy->supported);
- linkmode_copy(config.advertising, phy->advertising);
-- config.interface = pl->link_config.interface;
-+ config.interface = interface;
-
- ret = phylink_validate(pl, supported, &config);
- if (ret)
-@@ -746,6 +747,7 @@ static int phylink_bringup_phy(struct ph
- mutex_lock(&phy->lock);
- mutex_lock(&pl->state_mutex);
- pl->phydev = phy;
-+ pl->phy_state.interface = interface;
- linkmode_copy(pl->supported, supported);
- linkmode_copy(pl->link_config.advertising, config.advertising);
-
-@@ -808,7 +810,7 @@ int phylink_connect_phy(struct phylink *
- if (ret < 0)
- return ret;
-
-- ret = phylink_bringup_phy(pl, phy);
-+ ret = phylink_bringup_phy(pl, phy, pl->link_config.interface);
- if (ret)
- phy_detach(phy);
-
-@@ -861,7 +863,7 @@ int phylink_of_phy_connect(struct phylin
- if (!phy_dev)
- return -ENODEV;
-
-- ret = phylink_bringup_phy(pl, phy_dev);
-+ ret = phylink_bringup_phy(pl, phy_dev, pl->link_config.interface);
- if (ret)
- phy_detach(phy_dev);
-
-@@ -1814,13 +1816,22 @@ static void phylink_sfp_link_up(void *up
- static int phylink_sfp_connect_phy(void *upstream, struct phy_device *phy)
- {
- struct phylink *pl = upstream;
-+ phy_interface_t interface = pl->link_config.interface;
- int ret;
-
- ret = phylink_attach_phy(pl, phy, pl->link_config.interface);
- if (ret < 0)
- return ret;
-
-- ret = phylink_bringup_phy(pl, phy);
-+ /* Clause 45 PHYs switch their Serdes lane between several different
-+ * modes, normally 10GBASE-R, SGMII. Some use 2500BASE-X for 2.5G
-+ * speeds. We really need to know which interface modes the PHY and
-+ * MAC supports to properly work out which linkmodes can be supported.
-+ */
-+ if (phy->is_c45)
-+ interface = PHY_INTERFACE_MODE_NA;
-+
-+ ret = phylink_bringup_phy(pl, phy, interface);
- if (ret)
- phy_detach(phy);
-