diff options
-rw-r--r-- | drivers/net/e1000e/e1000.h | 1 | ||||
-rw-r--r-- | drivers/net/e1000e/ethtool.c | 4 | ||||
-rw-r--r-- | drivers/net/e1000e/ich8lan.c | 3 |
3 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h index 00989c5534c1..a6c68039e8d9 100644 --- a/drivers/net/e1000e/e1000.h +++ b/drivers/net/e1000e/e1000.h | |||
@@ -485,6 +485,7 @@ extern void e1000e_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw, | |||
485 | extern void e1000e_igp3_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw); | 485 | extern void e1000e_igp3_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw); |
486 | extern void e1000e_gig_downshift_workaround_ich8lan(struct e1000_hw *hw); | 486 | extern void e1000e_gig_downshift_workaround_ich8lan(struct e1000_hw *hw); |
487 | extern void e1000e_disable_gig_wol_ich8lan(struct e1000_hw *hw); | 487 | extern void e1000e_disable_gig_wol_ich8lan(struct e1000_hw *hw); |
488 | extern s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable); | ||
488 | 489 | ||
489 | extern s32 e1000e_check_for_copper_link(struct e1000_hw *hw); | 490 | extern s32 e1000e_check_for_copper_link(struct e1000_hw *hw); |
490 | extern s32 e1000e_check_for_fiber_link(struct e1000_hw *hw); | 491 | extern s32 e1000e_check_for_fiber_link(struct e1000_hw *hw); |
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c index 67e06fd9fc45..fd7921482d2b 100644 --- a/drivers/net/e1000e/ethtool.c +++ b/drivers/net/e1000e/ethtool.c | |||
@@ -1260,6 +1260,10 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter) | |||
1260 | 1260 | ||
1261 | hw->mac.autoneg = 0; | 1261 | hw->mac.autoneg = 0; |
1262 | 1262 | ||
1263 | /* Workaround: K1 must be disabled for stable 1Gbps operation */ | ||
1264 | if (hw->mac.type == e1000_pchlan) | ||
1265 | e1000_configure_k1_ich8lan(hw, false); | ||
1266 | |||
1263 | if (hw->phy.type == e1000_phy_m88) { | 1267 | if (hw->phy.type == e1000_phy_m88) { |
1264 | /* Auto-MDI/MDIX Off */ | 1268 | /* Auto-MDI/MDIX Off */ |
1265 | e1e_wphy(hw, M88E1000_PHY_SPEC_CTRL, 0x0808); | 1269 | e1e_wphy(hw, M88E1000_PHY_SPEC_CTRL, 0x0808); |
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c index 51ddb04ab195..bd9002e72cb6 100644 --- a/drivers/net/e1000e/ich8lan.c +++ b/drivers/net/e1000e/ich8lan.c | |||
@@ -224,7 +224,6 @@ static s32 e1000_led_off_pchlan(struct e1000_hw *hw); | |||
224 | static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active); | 224 | static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active); |
225 | static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw); | 225 | static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw); |
226 | static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link); | 226 | static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link); |
227 | static s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable); | ||
228 | 227 | ||
229 | static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg) | 228 | static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg) |
230 | { | 229 | { |
@@ -1023,7 +1022,7 @@ out: | |||
1023 | * | 1022 | * |
1024 | * Success returns 0, Failure returns -E1000_ERR_PHY (-2) | 1023 | * Success returns 0, Failure returns -E1000_ERR_PHY (-2) |
1025 | **/ | 1024 | **/ |
1026 | static s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable) | 1025 | s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable) |
1027 | { | 1026 | { |
1028 | s32 ret_val = 0; | 1027 | s32 ret_val = 0; |
1029 | u32 ctrl_reg = 0; | 1028 | u32 ctrl_reg = 0; |