mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
d40756563c
Let's pick a bunch of useful phylink changes which allow us to keep drivers in sync with mainline Linux. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
45 lines
1.6 KiB
Diff
45 lines
1.6 KiB
Diff
From cc73de0411f7d3cdd157564a78f7a39058420ff8 Mon Sep 17 00:00:00 2001
|
|
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
|
|
Date: Sat, 13 May 2023 22:03:45 +0100
|
|
Subject: [PATCH 13/21] net: phylink: fix ksettings_set() ethtool call
|
|
|
|
While testing a Fiberstore SFP-10G-T module (which uses 10GBASE-R with
|
|
rate adaption) in a Clearfog platform (which can't do that) it was
|
|
found that the PHYs advertisement was not limited according to the
|
|
hosts capabilities when using ethtool to change it.
|
|
|
|
Fix this by ensuring that we mask the advertisement with the computed
|
|
support mask as the very first thing we do.
|
|
|
|
Fixes: cbc1bb1e4689 ("net: phylink: simplify phy case for ksettings_set method")
|
|
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/phy/phylink.c | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/net/phy/phylink.c
|
|
+++ b/drivers/net/phy/phylink.c
|
|
@@ -2226,6 +2226,10 @@ int phylink_ethtool_ksettings_set(struct
|
|
|
|
ASSERT_RTNL();
|
|
|
|
+ /* Mask out unsupported advertisements */
|
|
+ linkmode_and(config.advertising, kset->link_modes.advertising,
|
|
+ pl->supported);
|
|
+
|
|
if (pl->phydev) {
|
|
/* We can rely on phylib for this update; we also do not need
|
|
* to update the pl->link_config settings:
|
|
@@ -2250,10 +2254,6 @@ int phylink_ethtool_ksettings_set(struct
|
|
|
|
config = pl->link_config;
|
|
|
|
- /* Mask out unsupported advertisements */
|
|
- linkmode_and(config.advertising, kset->link_modes.advertising,
|
|
- pl->supported);
|
|
-
|
|
/* FIXME: should we reject autoneg if phy/mac does not support it? */
|
|
switch (kset->base.autoneg) {
|
|
case AUTONEG_DISABLE:
|