Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: mii: Report advertised link capabilities when autonegotiation is off

Unify the set of information returned by mii_ethtool_get_link_ksettings(),
mii_ethtool_gset() and phy_ethtool_ksettings_get(). Make the mii_*()
functions report advertised settings when autonegotiation if disabled.

Suggested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20201027114317.8259-1-l.stelmach@samsung.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Łukasz Stelmach and committed by
Jakub Kicinski
8027c85c 6e2b243d

+11 -9
+11 -9
drivers/net/mii.c
··· 84 84 ctrl1000 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000); 85 85 stat1000 = mii->mdio_read(dev, mii->phy_id, MII_STAT1000); 86 86 } 87 + 88 + ecmd->advertising |= mii_get_an(mii, MII_ADVERTISE); 89 + if (mii->supports_gmii) 90 + ecmd->advertising |= 91 + mii_ctrl1000_to_ethtool_adv_t(ctrl1000); 92 + 87 93 if (bmcr & BMCR_ANENABLE) { 88 94 ecmd->advertising |= ADVERTISED_Autoneg; 89 95 ecmd->autoneg = AUTONEG_ENABLE; 90 - 91 - ecmd->advertising |= mii_get_an(mii, MII_ADVERTISE); 92 - if (mii->supports_gmii) 93 - ecmd->advertising |= 94 - mii_ctrl1000_to_ethtool_adv_t(ctrl1000); 95 96 96 97 if (bmsr & BMSR_ANEGCOMPLETE) { 97 98 ecmd->lp_advertising = mii_get_an(mii, MII_LPA); ··· 172 171 ctrl1000 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000); 173 172 stat1000 = mii->mdio_read(dev, mii->phy_id, MII_STAT1000); 174 173 } 174 + 175 + advertising |= mii_get_an(mii, MII_ADVERTISE); 176 + if (mii->supports_gmii) 177 + advertising |= mii_ctrl1000_to_ethtool_adv_t(ctrl1000); 178 + 175 179 if (bmcr & BMCR_ANENABLE) { 176 180 advertising |= ADVERTISED_Autoneg; 177 181 cmd->base.autoneg = AUTONEG_ENABLE; 178 - 179 - advertising |= mii_get_an(mii, MII_ADVERTISE); 180 - if (mii->supports_gmii) 181 - advertising |= mii_ctrl1000_to_ethtool_adv_t(ctrl1000); 182 182 183 183 if (bmsr & BMSR_ANEGCOMPLETE) { 184 184 lp_advertising = mii_get_an(mii, MII_LPA);