diff options
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.patch | 43 |
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); /** |