Commit cbd006cb authored by Bruce Allan's avatar Bruce Allan Committed by Jeff Kirsher

e1000e: 82577/8 must acquire h/w semaphore before workaround

The workaround function e1000_configure_k1_pchlan() assumes the h/w
semaphore is already acquired.  This was originally missed when setting up
the part for the ethtool loopback test.
Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
Tested-by: default avatarJeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent ed5c2b0b
...@@ -1249,6 +1249,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter) ...@@ -1249,6 +1249,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
u32 ctrl_reg = 0; u32 ctrl_reg = 0;
u32 stat_reg = 0; u32 stat_reg = 0;
u16 phy_reg = 0; u16 phy_reg = 0;
s32 ret_val = 0;
hw->mac.autoneg = 0; hw->mac.autoneg = 0;
...@@ -1308,7 +1309,13 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter) ...@@ -1308,7 +1309,13 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
case e1000_phy_82577: case e1000_phy_82577:
case e1000_phy_82578: case e1000_phy_82578:
/* Workaround: K1 must be disabled for stable 1Gbps operation */ /* Workaround: K1 must be disabled for stable 1Gbps operation */
ret_val = hw->phy.ops.acquire(hw);
if (ret_val) {
e_err("Cannot setup 1Gbps loopback.\n");
return ret_val;
}
e1000_configure_k1_ich8lan(hw, false); e1000_configure_k1_ich8lan(hw, false);
hw->phy.ops.release(hw);
break; break;
case e1000_phy_82579: case e1000_phy_82579:
/* Disable PHY energy detect power down */ /* Disable PHY energy detect power down */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment