diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2010-11-24 01:01:30 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2010-12-11 01:13:11 -0500 |
commit | cbd006cb7d4e7b76c6febf7f51e970bced132914 (patch) | |
tree | 4cd536bfbec78ea5efc7d67d2e328da367c0cf7b /drivers/net/e1000e | |
parent | ed5c2b0b78e5467f7948bef92b21f3c76823f392 (diff) |
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: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/e1000e')
-rw-r--r-- | drivers/net/e1000e/ethtool.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c index 5c6bc6ac069c..c10dc694d733 100644 --- a/drivers/net/e1000e/ethtool.c +++ b/drivers/net/e1000e/ethtool.c | |||
@@ -1249,6 +1249,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter) | |||
1249 | u32 ctrl_reg = 0; | 1249 | u32 ctrl_reg = 0; |
1250 | u32 stat_reg = 0; | 1250 | u32 stat_reg = 0; |
1251 | u16 phy_reg = 0; | 1251 | u16 phy_reg = 0; |
1252 | s32 ret_val = 0; | ||
1252 | 1253 | ||
1253 | hw->mac.autoneg = 0; | 1254 | hw->mac.autoneg = 0; |
1254 | 1255 | ||
@@ -1308,7 +1309,13 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter) | |||
1308 | case e1000_phy_82577: | 1309 | case e1000_phy_82577: |
1309 | case e1000_phy_82578: | 1310 | case e1000_phy_82578: |
1310 | /* Workaround: K1 must be disabled for stable 1Gbps operation */ | 1311 | /* Workaround: K1 must be disabled for stable 1Gbps operation */ |
1312 | ret_val = hw->phy.ops.acquire(hw); | ||
1313 | if (ret_val) { | ||
1314 | e_err("Cannot setup 1Gbps loopback.\n"); | ||
1315 | return ret_val; | ||
1316 | } | ||
1311 | e1000_configure_k1_ich8lan(hw, false); | 1317 | e1000_configure_k1_ich8lan(hw, false); |
1318 | hw->phy.ops.release(hw); | ||
1312 | break; | 1319 | break; |
1313 | case e1000_phy_82579: | 1320 | case e1000_phy_82579: |
1314 | /* Disable PHY energy detect power down */ | 1321 | /* Disable PHY energy detect power down */ |