net/e1000/base: modify flow control setup
authorGuinan Sun <guinanx.sun@intel.com>
Mon, 6 Jul 2020 08:12:14 +0000 (08:12 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 7 Jul 2020 21:38:27 +0000 (23:38 +0200)
Customers had a problem with large pings after connected standby.
This is due to the requirement of maintaining link after CS - the driver
blocks resets during "AdapterStart" and skips flow control setup.
Added condition in e1000_setup_link_ich8lan.c function that always setup
flow control, and setup physical interface only when no need to block
resets.

Signed-off-by: Nir Efrati <nir.efrati@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>
drivers/net/e1000/base/e1000_ich8lan.c

index 9b9cc7d..85344eb 100644 (file)
@@ -5200,9 +5200,6 @@ STATIC s32 e1000_setup_link_ich8lan(struct e1000_hw *hw)
 
        DEBUGFUNC("e1000_setup_link_ich8lan");
 
-       if (hw->phy.ops.check_reset_block(hw))
-               return E1000_SUCCESS;
-
        /* ICH parts do not have a word in the NVM to determine
         * the default flow control setting, so we explicitly
         * set it to full.
@@ -5218,10 +5215,12 @@ STATIC s32 e1000_setup_link_ich8lan(struct e1000_hw *hw)
        DEBUGOUT1("After fix-ups FlowControl is now = %x\n",
                hw->fc.current_mode);
 
-       /* Continue to configure the copper link. */
-       ret_val = hw->mac.ops.setup_physical_interface(hw);
-       if (ret_val)
-               return ret_val;
+       if (!hw->phy.ops.check_reset_block(hw)) {
+               /* Continue to configure the copper link. */
+               ret_val = hw->mac.ops.setup_physical_interface(hw);
+               if (ret_val)
+                       return ret_val;
+       }
 
        E1000_WRITE_REG(hw, E1000_FCTTV, hw->fc.pause_time);
        if ((hw->phy.type == e1000_phy_82578) ||