> @@ -302,6 +357,48 @@ static int dp83822_config_init(struct phy_device *phydev)
>               }
>       }
>  
> +     if (dp83822->fx_enabled) {
> +             err = phy_modify(phydev, MII_DP83822_CTRL_2,
> +                              DP83822_FX_ENABLE, 1);
> +             if (err < 0)
> +                     return err;
> +
> +             linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
> +                              phydev->supported);
> +             linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
> +                              phydev->advertising);
> +
> +             /* Auto neg is not supported in fiber mode */
> +             bmcr = phy_read(phydev, MII_BMCR);
> +             if (bmcr < 0)
> +                     return bmcr;
> +
> +             if (bmcr & BMCR_ANENABLE) {
> +                     err =  phy_modify(phydev, MII_BMCR, BMCR_ANENABLE, 0);
> +                     if (err < 0)
> +                             return err;
> +             }
> +             phydev->autoneg = AUTONEG_DISABLE;

You should also be removing ETHTOOL_LINK_MODE_Autoneg_BIT from
phydev->supported, to make it clear autoneg is not supported. Assuming
genphy_read_abilities() cannot figure this out for itself.

                        Andrew

Reply via email to