aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Allan <bruce.w.allan@intel.com>2010-09-22 13:15:54 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-22 23:41:19 -0400
commit5f3eed6fe0e36e4b56c8dd9160241a868ee0de2a (patch)
treeaacb2e72721946e1c5f060f0f4989bf553d796df
parent87fb7410cd8d4396dee0155526568645adba3b99 (diff)
e1000e: 82566DC fails to get link
Two recent patches to cleanup the reset[1] and initial PHY configuration[2] code paths for ICH/PCH devices inadvertently left out a 10msec delay and device ID check respectively which are necessary for the 82566DC (device id 0x104b) to be configured properly, otherwise it will not get link. [1] commit e98cac447cc1cc418dff1d610a5c79c4f2bdec7f [2] commit 3f0c16e84438d657d29446f85fe375794a93f159 CC: stable@kernel.org 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> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/e1000e/ich8lan.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c
index fc8c3cef0526..6f9cb0d44d3a 100644
--- a/drivers/net/e1000e/ich8lan.c
+++ b/drivers/net/e1000e/ich8lan.c
@@ -932,7 +932,6 @@ out:
932 **/ 932 **/
933static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw) 933static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw)
934{ 934{
935 struct e1000_adapter *adapter = hw->adapter;
936 struct e1000_phy_info *phy = &hw->phy; 935 struct e1000_phy_info *phy = &hw->phy;
937 u32 i, data, cnf_size, cnf_base_addr, sw_cfg_mask; 936 u32 i, data, cnf_size, cnf_base_addr, sw_cfg_mask;
938 s32 ret_val = 0; 937 s32 ret_val = 0;
@@ -950,7 +949,8 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw)
950 if (phy->type != e1000_phy_igp_3) 949 if (phy->type != e1000_phy_igp_3)
951 return ret_val; 950 return ret_val;
952 951
953 if (adapter->pdev->device == E1000_DEV_ID_ICH8_IGP_AMT) { 952 if ((hw->adapter->pdev->device == E1000_DEV_ID_ICH8_IGP_AMT) ||
953 (hw->adapter->pdev->device == E1000_DEV_ID_ICH8_IGP_C)) {
954 sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG; 954 sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG;
955 break; 955 break;
956 } 956 }
@@ -1626,6 +1626,9 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw)
1626 if (e1000_check_reset_block(hw)) 1626 if (e1000_check_reset_block(hw))
1627 goto out; 1627 goto out;
1628 1628
1629 /* Allow time for h/w to get to quiescent state after reset */
1630 msleep(10);
1631
1629 /* Perform any necessary post-reset workarounds */ 1632 /* Perform any necessary post-reset workarounds */
1630 switch (hw->mac.type) { 1633 switch (hw->mac.type) {
1631 case e1000_pchlan: 1634 case e1000_pchlan: