aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000
diff options
context:
space:
mode:
authorNicolas Schichan <nschichan@freebox.fr>2011-07-08 20:24:18 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2011-07-22 01:53:41 -0400
commit6d9e5130b96daa1656966f7271e8a0928b3906c4 (patch)
treead6b50802e9e59106b16afd53f17db4ae2115684 /drivers/net/e1000
parent61463a30f65225e19e68f59dbd7b888bb308ec99 (diff)
e1000: always call e1000_check_for_link() on e1000_ce4100 MACs.
Interrupts about link lost or rx sequence errors are not reported by the ce4100 hardware, leading to transitions from link UP to link DOWN never being reported. Signed-off-by: Nicolas Schichan <nschichan@freebox.fr> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r--drivers/net/e1000/e1000_main.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index acaebecf0ca7..f97afda941d7 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -2402,13 +2402,16 @@ bool e1000_has_link(struct e1000_adapter *adapter)
2402 struct e1000_hw *hw = &adapter->hw; 2402 struct e1000_hw *hw = &adapter->hw;
2403 bool link_active = false; 2403 bool link_active = false;
2404 2404
2405 /* get_link_status is set on LSC (link status) interrupt or 2405 /* get_link_status is set on LSC (link status) interrupt or rx
2406 * rx sequence error interrupt. get_link_status will stay 2406 * sequence error interrupt (except on intel ce4100).
2407 * false until the e1000_check_for_link establishes link 2407 * get_link_status will stay false until the
2408 * for copper adapters ONLY 2408 * e1000_check_for_link establishes link for copper adapters
2409 * ONLY
2409 */ 2410 */
2410 switch (hw->media_type) { 2411 switch (hw->media_type) {
2411 case e1000_media_type_copper: 2412 case e1000_media_type_copper:
2413 if (hw->mac_type == e1000_ce4100)
2414 hw->get_link_status = 1;
2412 if (hw->get_link_status) { 2415 if (hw->get_link_status) {
2413 e1000_check_for_link(hw); 2416 e1000_check_for_link(hw);
2414 link_active = !hw->get_link_status; 2417 link_active = !hw->get_link_status;