e1000e: 82571 check for link fix on 82571 serdes
Check for link test does not work properly for 82571 parts in a blade environment with an unterminated serdes link partner. Make the test more robust by checking the invalid bit. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5aa49c8211
commit
63dcf3d353
|
@ -575,20 +575,42 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)
|
|||
*/
|
||||
/* SYNCH bit and IV bit are sticky. */
|
||||
udelay(10);
|
||||
if (E1000_RXCW_SYNCH & er32(RXCW)) {
|
||||
rxcw = er32(RXCW);
|
||||
if (rxcw & E1000_RXCW_SYNCH) {
|
||||
if (!(rxcw & E1000_RXCW_IV)) {
|
||||
mac->serdes_has_link = 1;
|
||||
hw_dbg(hw, "SERDES: Link is up.\n");
|
||||
mac->serdes_has_link = true;
|
||||
hw_dbg(hw, "SERDES: Link up - forced.\n");
|
||||
}
|
||||
} else {
|
||||
mac->serdes_has_link = 0;
|
||||
hw_dbg(hw, "SERDES: Link is down.\n");
|
||||
mac->serdes_has_link = false;
|
||||
hw_dbg(hw, "SERDES: Link down - force failed.\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (E1000_TXCW_ANE & er32(TXCW)) {
|
||||
status = er32(STATUS);
|
||||
mac->serdes_has_link = (status & E1000_STATUS_LU);
|
||||
if (status & E1000_STATUS_LU) {
|
||||
/* SYNCH bit and IV bit are sticky, so reread rxcw. */
|
||||
udelay(10);
|
||||
rxcw = er32(RXCW);
|
||||
if (rxcw & E1000_RXCW_SYNCH) {
|
||||
if (!(rxcw & E1000_RXCW_IV)) {
|
||||
mac->serdes_has_link = true;
|
||||
hw_dbg(hw, "SERDES: Link up - autoneg "
|
||||
"completed sucessfully.\n");
|
||||
} else {
|
||||
mac->serdes_has_link = false;
|
||||
hw_dbg(hw, "SERDES: Link down - invalid"
|
||||
"codewords detected in autoneg.\n");
|
||||
}
|
||||
} else {
|
||||
mac->serdes_has_link = false;
|
||||
hw_dbg(hw, "SERDES: Link down - no sync.\n");
|
||||
}
|
||||
} else {
|
||||
mac->serdes_has_link = false;
|
||||
hw_dbg(hw, "SERDES: Link down - autoneg failed\n");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue