> @@ -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