aqr115c_get_features() populates phydev->supported by ORing in phy_gbit_features and setting the 2.5G bit directly. This skips genphy_c45_read_eee_abilities(), which fills phydev->supported_eee. As a result, phy_probe() never populates supported_eee for AQR111, AQR111B0, AQR114C, AQR115, AQCS109 and AQR115C. The kernel then clears advertising_eee: linkmode_and(phydev->advertising_eee, phydev->supported_eee, phydev->advertising_eee); This means EEE advertisement registers cannot be changed via ethtool and ethtool --show-eee reports no supported modes. genphy_c45_pma_read_abilities() is not used to build the supported mask because these PHYs misreport PMA capabilities. The supported and advertised link modes are intentionally unchanged; only EEE discovery is restored. Fix this by calling genphy_c45_read_eee_abilities() at the end of aqr115c_get_features(), after the final supported mask is built so that 2500baseT_Full is already set when the EEE cap2 register is read. Also fix aqr111_get_features() to propagate the return value of aqr115c_get_features(). Fixes: 17cbfcdd85f6 ("net: phy: aquantia: AQR115c fix up PMA capabilities") Fixes: 8f61d73306c6 ("net: phy: aquantia: remove usage of phy_set_max_speed") Signed-off-by: Hongmei Xu --- drivers/net/phy/aquantia/aquantia_main.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aquantia/aquantia_main.c index e95d391a6dc2..099ee919de94 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -1079,15 +1079,17 @@ static int aqr115c_get_features(struct phy_device *phydev) linkmode_or(supported, supported, phy_gbit_features); linkmode_set_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT, supported); - return 0; + return genphy_c45_read_eee_abilities(phydev); } static int aqr111_get_features(struct phy_device *phydev) { - /* PHY supports speeds up to 5G with autoneg. PMA capabilities - * are not useful. - */ - aqr115c_get_features(phydev); + int ret; + + ret = aqr115c_get_features(phydev); + if (ret) + return ret; + linkmode_set_bit(ETHTOOL_LINK_MODE_5000baseT_Full_BIT, phydev->supported); -- 2.34.1