>> /* mask with MAC supported features */ >> - if (macb_is_gem(bp) && bp->caps & >MACB_CAPS_GIGABIT_MODE_AVAILABLE) >> - phy_set_max_speed(phydev, SPEED_1000); >> - else >> - phy_set_max_speed(phydev, SPEED_100); >> + if (macb_is_gem(bp)) { >> + linkmode_copy(phydev->supported, PHY_GBIT_FEATURES); >> + if (bp->caps & MACB_CAPS_TWO_PT_FIVE_GIG_SPEED) >> + > linkmode_set_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT, >> + phydev->supported); >> + } else { >> + linkmode_copy(phydev->supported, PHY_BASIC_FEATURES); >> + } >> + >> + linkmode_copy(phydev->advertising, phydev->supported); > >This is not correct. Just because the MAC can do 2.5G does not mean the PHY >can. So you should not be adding links modes. Also, somebody might be using a >PHY that can do 2.5G with a MAC which can only do 1G. > >The correct thing to do is call phy_set_max_speed() with the maximum speed the >MAC can do. Hi Andrew,
Ok, I think this should have been logical AND. I will modify to use phy_set_max_speed() instead of directly copying linkmodes. Regards, Parshuram Thombare