Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[firefly-linux-kernel-4.4.55.git] / drivers / net / phy / phy.c
index 298b4c201733cb5c0e43490d3cc9b6363d39f534..c14f14741b3f7a8c4a6634d2f8b4b0b9c254d5df 100644 (file)
@@ -462,33 +462,6 @@ void phy_stop_machine(struct phy_device *phydev)
        phydev->adjust_state = NULL;
 }
 
-/**
- * phy_force_reduction - reduce PHY speed/duplex settings by one step
- * @phydev: target phy_device struct
- *
- * Description: Reduces the speed/duplex settings by one notch,
- *   in this order--
- *   1000/FULL, 1000/HALF, 100/FULL, 100/HALF, 10/FULL, 10/HALF.
- *   The function bottoms out at 10/HALF.
- */
-static void phy_force_reduction(struct phy_device *phydev)
-{
-       int idx;
-
-       idx = phy_find_setting(phydev->speed, phydev->duplex);
-       
-       idx++;
-
-       idx = phy_find_valid(idx, phydev->supported);
-
-       phydev->speed = settings[idx].speed;
-       phydev->duplex = settings[idx].duplex;
-
-       pr_info("Trying %d/%s\n",
-               phydev->speed, DUPLEX_FULL == phydev->duplex ? "FULL" : "HALF");
-}
-
-
 /**
  * phy_error - enter HALTED state for this PHY device
  * @phydev: target phy_device struct
@@ -818,30 +791,11 @@ void phy_state_machine(struct work_struct *work)
                                phydev->adjust_link(phydev->attached_dev);
 
                        } else if (0 == phydev->link_timeout--) {
-                               int idx;
-
                                needs_aneg = 1;
                                /* If we have the magic_aneg bit,
                                 * we try again */
                                if (phydev->drv->flags & PHY_HAS_MAGICANEG)
                                        break;
-
-                               /* The timer expired, and we still
-                                * don't have a setting, so we try
-                                * forcing it until we find one that
-                                * works, starting from the fastest speed,
-                                * and working our way down */
-                               idx = phy_find_valid(0, phydev->supported);
-
-                               phydev->speed = settings[idx].speed;
-                               phydev->duplex = settings[idx].duplex;
-
-                               phydev->autoneg = AUTONEG_DISABLE;
-
-                               pr_info("Trying %d/%s\n",
-                                       phydev->speed,
-                                       DUPLEX_FULL == phydev->duplex ?
-                                       "FULL" : "HALF");
                        }
                        break;
                case PHY_NOLINK:
@@ -866,10 +820,8 @@ void phy_state_machine(struct work_struct *work)
                                phydev->state = PHY_RUNNING;
                                netif_carrier_on(phydev->attached_dev);
                        } else {
-                               if (0 == phydev->link_timeout--) {
-                                       phy_force_reduction(phydev);
+                               if (0 == phydev->link_timeout--)
                                        needs_aneg = 1;
-                               }
                        }
 
                        phydev->adjust_link(phydev->attached_dev);