1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- From cc73de0411f7d3cdd157564a78f7a39058420ff8 Mon Sep 17 00:00:00 2001
- From: "Russell King (Oracle)" <[email protected]>
- 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) <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- 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:
|