aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/e1000e/82571.c4
-rw-r--r--drivers/net/e1000e/defines.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c
index 7236f1a53ba0..235856375ff3 100644
--- a/drivers/net/e1000e/82571.c
+++ b/drivers/net/e1000e/82571.c
@@ -1431,8 +1431,10 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
1431 * auto-negotiation in the TXCW register and disable 1431 * auto-negotiation in the TXCW register and disable
1432 * forced link in the Device Control register in an 1432 * forced link in the Device Control register in an
1433 * attempt to auto-negotiate with our link partner. 1433 * attempt to auto-negotiate with our link partner.
1434 * If the partner code word is null, stop forcing
1435 * and restart auto negotiation.
1434 */ 1436 */
1435 if (rxcw & E1000_RXCW_C) { 1437 if ((rxcw & E1000_RXCW_C) || !(rxcw & E1000_RXCW_CW)) {
1436 /* Enable autoneg, and unforce link up */ 1438 /* Enable autoneg, and unforce link up */
1437 ew32(TXCW, mac->txcw); 1439 ew32(TXCW, mac->txcw);
1438 ew32(CTRL, (ctrl & ~E1000_CTRL_SLU)); 1440 ew32(CTRL, (ctrl & ~E1000_CTRL_SLU));
diff --git a/drivers/net/e1000e/defines.h b/drivers/net/e1000e/defines.h
index d3f7a9c3f973..016ea383145a 100644
--- a/drivers/net/e1000e/defines.h
+++ b/drivers/net/e1000e/defines.h
@@ -516,6 +516,7 @@
516#define E1000_TXCW_ANE 0x80000000 /* Auto-neg enable */ 516#define E1000_TXCW_ANE 0x80000000 /* Auto-neg enable */
517 517
518/* Receive Configuration Word */ 518/* Receive Configuration Word */
519#define E1000_RXCW_CW 0x0000ffff /* RxConfigWord mask */
519#define E1000_RXCW_IV 0x08000000 /* Receive config invalid */ 520#define E1000_RXCW_IV 0x08000000 /* Receive config invalid */
520#define E1000_RXCW_C 0x20000000 /* Receive config */ 521#define E1000_RXCW_C 0x20000000 /* Receive config */
521#define E1000_RXCW_SYNCH 0x40000000 /* Receive config synch */ 522#define E1000_RXCW_SYNCH 0x40000000 /* Receive config synch */