} else
                ecmd->autoneg = AUTONEG_DISABLE;
 
-       /* If AN is enabled and complete, report best common mode */
-       if (ecmd->autoneg &&
-           (mdio_clause45_read(efx, phy_id, MDIO_MMD_AN, MDIO_MMDREG_STAT1) &
-            (1 << MDIO_AN_STATUS_AN_DONE_LBN))) {
-               u32 common, lpa;
-               lpa = mdio_clause45_get_an(efx, MDIO_AN_LPA, xnp_lpa);
-               common = ecmd->advertising & lpa;
+       if (ecmd->autoneg) {
+               /* If AN is complete, report best common mode,
+                * otherwise report best advertised mode. */
+               u32 common = ecmd->advertising;
+               if (mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,
+                                      MDIO_MMDREG_STAT1) &
+                   (1 << MDIO_AN_STATUS_AN_DONE_LBN)) {
+                       common &= mdio_clause45_get_an(efx, MDIO_AN_LPA,
+                                                      xnp_lpa);
+               }
                if (common & ADVERTISED_10000baseT_Full) {
                        ecmd->speed = SPEED_10000;
                        ecmd->duplex = DUPLEX_FULL;