aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch')
-rw-r--r--target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch43
1 files changed, 20 insertions, 23 deletions
diff --git a/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch b/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch
index 358b9a1082..667170a398 100644
--- a/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch
+++ b/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch
@@ -1,8 +1,7 @@
-From eb514428f75bc67d12ff019c44a8f8ca9f33c54c Mon Sep 17 00:00:00 2001
+From 52c956003a9d5bcae1f445f9dfd42b624adb6e87 Mon Sep 17 00:00:00 2001
From: Russell King <rmk+kernel@armlinux.org.uk>
-Date: Thu, 21 Nov 2019 17:42:49 +0000
-Subject: [PATCH 653/660] net: phylink: delay MAC configuration for copper SFP
- modules
+Date: Wed, 11 Dec 2019 10:56:45 +0000
+Subject: [PATCH] net: phylink: delay MAC configuration for copper SFP modules
Knowing whether we need to delay the MAC configuration because a module
may have a PHY is useful to phylink to allow NBASE-T modules to work on
@@ -17,12 +16,14 @@ We move the PHY-based setup a little later, and use the PHYs support
capabilities rather than the EEPROM parsed capabilities to determine
whether we can support the PHY.
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
---
- drivers/net/phy/phylink.c | 59 +++++++++++++++++++++++++++++++--------
- drivers/net/phy/sfp-bus.c | 28 +++++++++++++++++++
- include/linux/sfp.h | 7 +++++
- 3 files changed, 83 insertions(+), 11 deletions(-)
+ drivers/net/phy/phylink.c | 53 +++++++++++++++++++++++++++++++--------
+ drivers/net/phy/sfp-bus.c | 28 +++++++++++++++++++++
+ include/linux/sfp.h | 7 ++++++
+ 3 files changed, 78 insertions(+), 10 deletions(-)
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -35,8 +36,8 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+ u8 sfp_port;
};
- static inline void linkmode_zero(unsigned long *dst)
-@@ -1633,7 +1636,7 @@ static void phylink_sfp_detach(void *ups
+ #define phylink_printk(level, pl, fmt, ...) \
+@@ -1688,7 +1691,7 @@ static void phylink_sfp_detach(void *ups
pl->netdev->sfp_bus = NULL;
}
@@ -45,8 +46,8 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
const unsigned long *supported,
const unsigned long *advertising)
{
-@@ -1707,7 +1710,7 @@ static int phylink_sfp_config(struct phy
- phy_modes(config.interface));
+@@ -1762,7 +1765,7 @@ static int phylink_sfp_config(struct phy
+ phy_modes(config.interface));
}
- pl->link_port = port;
@@ -54,7 +55,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
if (changed && !test_bit(PHYLINK_DISABLE_STOPPED,
&pl->phylink_disable_state))
-@@ -1720,15 +1723,20 @@ static int phylink_sfp_module_insert(voi
+@@ -1775,15 +1778,20 @@ static int phylink_sfp_module_insert(voi
const struct sfp_eeprom_id *id)
{
struct phylink *pl = upstream;
@@ -79,7 +80,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
}
static int phylink_sfp_module_start(void *upstream)
-@@ -1736,10 +1744,19 @@ static int phylink_sfp_module_start(void
+@@ -1791,10 +1799,19 @@ static int phylink_sfp_module_start(void
struct phylink *pl = upstream;
/* If this SFP module has a PHY, start the PHY now. */
@@ -102,13 +103,11 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
}
static void phylink_sfp_module_stop(void *upstream)
-@@ -1773,10 +1790,30 @@ static void phylink_sfp_link_up(void *up
+@@ -1828,10 +1845,26 @@ 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;
-+ __ETHTOOL_DECLARE_LINK_MODE_MASK(supported);
-+ __ETHTOOL_DECLARE_LINK_MODE_MASK(advertising);
+ phy_interface_t interface;
int ret;
@@ -122,11 +121,9 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+ */
+ phy_support_asym_pause(phy);
+
-+ ethtool_convert_legacy_u32_to_link_mode(supported, phy->supported);
-+ ethtool_convert_legacy_u32_to_link_mode(advertising, phy->advertising);
-+
+ /* Do the initial configuration */
-+ ret = phylink_sfp_config(pl, ML_AN_INBAND, supported, advertising);
++ ret = phylink_sfp_config(pl, MLO_AN_INBAND, phy->supported,
++ phy->advertising);
+ if (ret < 0)
+ return ret;
+
@@ -137,7 +134,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
--- a/drivers/net/phy/sfp-bus.c
+++ b/drivers/net/phy/sfp-bus.c
-@@ -102,6 +102,7 @@ static const struct sfp_quirk *sfp_looku
+@@ -103,6 +103,7 @@ static const struct sfp_quirk *sfp_looku
return NULL;
}
@@ -145,7 +142,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
/**
* sfp_parse_port() - Parse the EEPROM base ID, setting the port type
* @bus: a pointer to the &struct sfp_bus structure for the sfp module
-@@ -178,6 +179,33 @@ int sfp_parse_port(struct sfp_bus *bus,
+@@ -179,6 +180,33 @@ int sfp_parse_port(struct sfp_bus *bus,
EXPORT_SYMBOL_GPL(sfp_parse_port);
/**