>       /* 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.

      Andrew

Reply via email to