ixgbe(4): Filter out spurious link up indication
Extend SFP+ cage crosstalk fix by re-checking link state after 5ms delay to filter out spurious link up indication by transceiver with no fiber cable connected. Signed-off-by: Krzysztof Galazka <krzysztof.galazka@intel.com> Signed-off-by: Eric Joyner <erj@FreeBSD.org> Reviewed by: erj@ Tested by: Gowtham Kumar Ks <gowtham.kumar.ks@intel.com> MFC after: 3 days Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D38395
This commit is contained in:
parent
1d02c6b1b8
commit
04a5e6d7ca
@ -4232,10 +4232,25 @@ s32 ixgbe_check_mac_link_generic(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
|
||||
links_reg = IXGBE_READ_REG(hw, IXGBE_LINKS);
|
||||
}
|
||||
} else {
|
||||
if (links_reg & IXGBE_LINKS_UP)
|
||||
if (links_reg & IXGBE_LINKS_UP) {
|
||||
if (ixgbe_need_crosstalk_fix(hw)) {
|
||||
/* Check the link state again after a delay
|
||||
* to filter out spurious link up
|
||||
* notifications.
|
||||
*/
|
||||
msec_delay(5);
|
||||
links_reg = IXGBE_READ_REG(hw, IXGBE_LINKS);
|
||||
if (!(links_reg & IXGBE_LINKS_UP)) {
|
||||
*link_up = false;
|
||||
*speed = IXGBE_LINK_SPEED_UNKNOWN;
|
||||
return IXGBE_SUCCESS;
|
||||
}
|
||||
|
||||
}
|
||||
*link_up = true;
|
||||
else
|
||||
} else {
|
||||
*link_up = false;
|
||||
}
|
||||
}
|
||||
|
||||
switch (links_reg & IXGBE_LINKS_SPEED_82599) {
|
||||
|
Loading…
Reference in New Issue
Block a user