if (amd_xgbe_phy_in_kr_mode(phydev)) {
                priv->kr_state = AMD_XGBE_RX_ERROR;
 
-               if (!(phydev->supported & SUPPORTED_1000baseKX_Full) &&
-                   !(phydev->supported & SUPPORTED_2500baseX_Full))
+               if (!(phydev->advertising & SUPPORTED_1000baseKX_Full) &&
+                   !(phydev->advertising & SUPPORTED_2500baseX_Full))
                        return AMD_XGBE_AN_NO_LINK;
 
                if (priv->kx_state != AMD_XGBE_RX_BPA)
        } else {
                priv->kx_state = AMD_XGBE_RX_ERROR;
 
-               if (!(phydev->supported & SUPPORTED_10000baseKR_Full))
+               if (!(phydev->advertising & SUPPORTED_10000baseKR_Full))
                        return AMD_XGBE_AN_NO_LINK;
 
                if (priv->kr_state != AMD_XGBE_RX_BPA)
        if (ret < 0)
                return ret;
 
-       if (phydev->supported & SUPPORTED_10000baseR_FEC)
+       if (phydev->advertising & SUPPORTED_10000baseR_FEC)
                ret |= 0xc000;
        else
                ret &= ~0xc000;
        if (ret < 0)
                return ret;
 
-       if (phydev->supported & SUPPORTED_10000baseKR_Full)
+       if (phydev->advertising & SUPPORTED_10000baseKR_Full)
                ret |= 0x80;
        else
                ret &= ~0x80;
 
-       if ((phydev->supported & SUPPORTED_1000baseKX_Full) ||
-           (phydev->supported & SUPPORTED_2500baseX_Full))
+       if ((phydev->advertising & SUPPORTED_1000baseKX_Full) ||
+           (phydev->advertising & SUPPORTED_2500baseX_Full))
                ret |= 0x20;
        else
                ret &= ~0x20;
        if (ret < 0)
                return ret;
 
-       if (phydev->supported & SUPPORTED_Pause)
+       if (phydev->advertising & SUPPORTED_Pause)
                ret |= 0x400;
        else
                ret &= ~0x400;
 
-       if (phydev->supported & SUPPORTED_Asym_Pause)
+       if (phydev->advertising & SUPPORTED_Asym_Pause)
                ret |= 0x800;
        else
                ret &= ~0x800;
                priv->an_irq_allocated = 1;
        }
 
-       ret = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_FEC_ABILITY);
-       if (ret < 0)
-               return ret;
-       priv->fec_ability = ret & XGBE_PHY_FEC_MASK;
-
-       /* Initialize supported features */
-       phydev->supported = SUPPORTED_Autoneg;
-       phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
-       phydev->supported |= SUPPORTED_Backplane;
-       phydev->supported |= SUPPORTED_10000baseKR_Full;
-       switch (priv->speed_set) {
-       case AMD_XGBE_PHY_SPEEDSET_1000_10000:
-               phydev->supported |= SUPPORTED_1000baseKX_Full;
-               break;
-       case AMD_XGBE_PHY_SPEEDSET_2500_10000:
-               phydev->supported |= SUPPORTED_2500baseX_Full;
-               break;
-       }
-
-       if (priv->fec_ability & XGBE_PHY_FEC_ENABLE)
-               phydev->supported |= SUPPORTED_10000baseR_FEC;
-
-       phydev->advertising = phydev->supported;
-
        /* Set initial mode - call the mode setting routines
         * directly to insure we are properly configured
         */
-       if (phydev->supported & SUPPORTED_10000baseKR_Full)
+       if (phydev->advertising & SUPPORTED_10000baseKR_Full)
                ret = amd_xgbe_phy_xgmii_mode(phydev);
-       else if (phydev->supported & SUPPORTED_1000baseKX_Full)
+       else if (phydev->advertising & SUPPORTED_1000baseKX_Full)
                ret = amd_xgbe_phy_gmii_mode(phydev);
-       else if (phydev->supported & SUPPORTED_2500baseX_Full)
+       else if (phydev->advertising & SUPPORTED_2500baseX_Full)
                ret = amd_xgbe_phy_gmii_2500_mode(phydev);
        else
                ret = -EINVAL;
        disable_irq(priv->an_irq);
 
        /* Start auto-negotiation in a supported mode */
-       if (phydev->supported & SUPPORTED_10000baseKR_Full)
+       if (phydev->advertising & SUPPORTED_10000baseKR_Full)
                ret = amd_xgbe_phy_set_mode(phydev, AMD_XGBE_MODE_KR);
-       else if ((phydev->supported & SUPPORTED_1000baseKX_Full) ||
-                (phydev->supported & SUPPORTED_2500baseX_Full))
+       else if ((phydev->advertising & SUPPORTED_1000baseKX_Full) ||
+                (phydev->advertising & SUPPORTED_2500baseX_Full))
                ret = amd_xgbe_phy_set_mode(phydev, AMD_XGBE_MODE_KX);
        else
                ret = -EINVAL;
                       sizeof(priv->serdes_dfe_tap_ena));
        }
 
+       /* Initialize supported features */
+       phydev->supported = SUPPORTED_Autoneg;
+       phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
+       phydev->supported |= SUPPORTED_Backplane;
+       phydev->supported |= SUPPORTED_10000baseKR_Full;
+       switch (priv->speed_set) {
+       case AMD_XGBE_PHY_SPEEDSET_1000_10000:
+               phydev->supported |= SUPPORTED_1000baseKX_Full;
+               break;
+       case AMD_XGBE_PHY_SPEEDSET_2500_10000:
+               phydev->supported |= SUPPORTED_2500baseX_Full;
+               break;
+       }
+
+       ret = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_FEC_ABILITY);
+       if (ret < 0)
+               return ret;
+       priv->fec_ability = ret & XGBE_PHY_FEC_MASK;
+       if (priv->fec_ability & XGBE_PHY_FEC_ENABLE)
+               phydev->supported |= SUPPORTED_10000baseR_FEC;
+
+       phydev->advertising = phydev->supported;
+
        phydev->priv = priv;
 
        if (!priv->adev || acpi_disabled)