diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2010-11-24 01:01:20 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2010-12-11 01:13:05 -0500 |
commit | a82a14f4cdcfedb27eacec8eb4d9e47d42c10d43 (patch) | |
tree | f8d40b95aa42bbb4d8c338657139a4027631fe79 /drivers/net/e1000e/82571.c | |
parent | 9633e63bb1d82c02950983d5d3317e6656b11c8e (diff) |
e1000e: 82571-based mezzanine card can fail ethtool link test
On certain 82571-based mezzanine NICs in some blade servers, the ethtool
link test can fail due to the serdes_has_link flag not set correctly.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Emil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/e1000e/82571.c')
-rw-r--r-- | drivers/net/e1000e/82571.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c index 9333921010cc..6942e2f86eac 100644 --- a/drivers/net/e1000e/82571.c +++ b/drivers/net/e1000e/82571.c | |||
@@ -1523,8 +1523,10 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw) | |||
1523 | e1000_serdes_link_autoneg_progress; | 1523 | e1000_serdes_link_autoneg_progress; |
1524 | mac->serdes_has_link = false; | 1524 | mac->serdes_has_link = false; |
1525 | e_dbg("AN_UP -> AN_PROG\n"); | 1525 | e_dbg("AN_UP -> AN_PROG\n"); |
1526 | } else { | ||
1527 | mac->serdes_has_link = true; | ||
1526 | } | 1528 | } |
1527 | break; | 1529 | break; |
1528 | 1530 | ||
1529 | case e1000_serdes_link_forced_up: | 1531 | case e1000_serdes_link_forced_up: |
1530 | /* | 1532 | /* |
@@ -1543,6 +1545,8 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw) | |||
1543 | e1000_serdes_link_autoneg_progress; | 1545 | e1000_serdes_link_autoneg_progress; |
1544 | mac->serdes_has_link = false; | 1546 | mac->serdes_has_link = false; |
1545 | e_dbg("FORCED_UP -> AN_PROG\n"); | 1547 | e_dbg("FORCED_UP -> AN_PROG\n"); |
1548 | } else { | ||
1549 | mac->serdes_has_link = true; | ||
1546 | } | 1550 | } |
1547 | break; | 1551 | break; |
1548 | 1552 | ||
@@ -1598,6 +1602,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw) | |||
1598 | ew32(CTRL, (ctrl & ~E1000_CTRL_SLU)); | 1602 | ew32(CTRL, (ctrl & ~E1000_CTRL_SLU)); |
1599 | mac->serdes_link_state = | 1603 | mac->serdes_link_state = |
1600 | e1000_serdes_link_autoneg_progress; | 1604 | e1000_serdes_link_autoneg_progress; |
1605 | mac->serdes_has_link = false; | ||
1601 | e_dbg("DOWN -> AN_PROG\n"); | 1606 | e_dbg("DOWN -> AN_PROG\n"); |
1602 | break; | 1607 | break; |
1603 | } | 1608 | } |