diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2010-09-22 13:15:54 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-22 23:41:19 -0400 |
commit | 5f3eed6fe0e36e4b56c8dd9160241a868ee0de2a (patch) | |
tree | aacb2e72721946e1c5f060f0f4989bf553d796df | |
parent | 87fb7410cd8d4396dee0155526568645adba3b99 (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.c | 7 |
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 | **/ |
933 | static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw) | 933 | static 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: |