igb: limit udelay for phy changes to 10000us
authorAndi Kleen <ak@linux.intel.com>
Mon, 22 Apr 2013 07:46:40 +0000 (07:46 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 26 Apr 2013 01:49:18 +0000 (18:49 -0700)
If you really want 100000us you should really use mdelay or so.

Found by the LTO kernel build

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/e1000_phy.c

index fd46add..115b0da 100644 (file)
@@ -1130,7 +1130,7 @@ s32 igb_phy_force_speed_duplex_igp(struct e1000_hw *hw)
        if (phy->autoneg_wait_to_complete) {
                hw_dbg("Waiting for forced speed/duplex link on IGP phy.\n");
 
-               ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 100000, &link);
+               ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 10000, &link);
                if (ret_val)
                        goto out;
 
@@ -1138,7 +1138,7 @@ s32 igb_phy_force_speed_duplex_igp(struct e1000_hw *hw)
                        hw_dbg("Link taking longer than expected.\n");
 
                /* Try once more */
-               ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 100000, &link);
+               ret_val = igb_phy_has_link(hw, PHY_FORCE_LIMIT, 10000, &link);
                if (ret_val)
                        goto out;
        }
@@ -1590,7 +1590,7 @@ s32 igb_phy_has_link(struct e1000_hw *hw, u32 iterations,
                 * it across the board.
                 */
                ret_val = hw->phy.ops.read_reg(hw, PHY_STATUS, &phy_status);
-               if (ret_val) {
+               if (ret_val && usec_interval > 0) {
                        /* If the first read fails, another entity may have
                         * ownership of the resources, wait and try again to
                         * see if they have relinquished the resources yet.