|
@@ -744,8 +744,14 @@ s32 e1000_write_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 data)
|
|
|
* Enable/disable EEE based on setting in dev_spec structure, the duplex of
|
|
|
* the link and the EEE capabilities of the link partner. The LPI Control
|
|
|
* register bits will remain set only if/when link is up.
|
|
|
+ *
|
|
|
+ * EEE LPI must not be asserted earlier than one second after link is up.
|
|
|
+ * On 82579, EEE LPI should not be enabled until such time otherwise there
|
|
|
+ * can be link issues with some switches. Other devices can have EEE LPI
|
|
|
+ * enabled immediately upon link up since they have a timer in hardware which
|
|
|
+ * prevents LPI from being asserted too early.
|
|
|
**/
|
|
|
-static s32 e1000_set_eee_pchlan(struct e1000_hw *hw)
|
|
|
+s32 e1000_set_eee_pchlan(struct e1000_hw *hw)
|
|
|
{
|
|
|
struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan;
|
|
|
s32 ret_val;
|
|
@@ -1126,9 +1132,11 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
|
|
|
e1000e_check_downshift(hw);
|
|
|
|
|
|
/* Enable/Disable EEE after link up */
|
|
|
- ret_val = e1000_set_eee_pchlan(hw);
|
|
|
- if (ret_val)
|
|
|
- return ret_val;
|
|
|
+ if (hw->phy.type > e1000_phy_82579) {
|
|
|
+ ret_val = e1000_set_eee_pchlan(hw);
|
|
|
+ if (ret_val)
|
|
|
+ return ret_val;
|
|
|
+ }
|
|
|
|
|
|
/* If we are forcing speed/duplex, then we simply return since
|
|
|
* we have already determined whether we have link or not.
|