ixgbe: wait for link after copper MAC setup
After setting up the link on x552/X557-AT 10GBASE-T NICs, sometimes the link does not get set up properly and as a result all the subsequent calls to ixgbe_check_link() from ixgbe_dev_link_update_share() fail. Introduce a delay time of 1s in ixgbe_setup_mac_link_t_X550em() before beginning to set up the external PHY link speed to ensure that the controller can acquire the link. Signed-off-by: Ashijeet Acharya <ashijeet.acharya@6wind.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com> Approved by: imp Obtained from: DPDK (d31b95860d8e9dd7c6e242bd08baaac00a9714f0) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31621
This commit is contained in:
parent
c1a56b6f5f
commit
d5bbb5500c
@ -4464,6 +4464,8 @@ s32 ixgbe_setup_mac_link_t_X550em(struct ixgbe_hw *hw,
|
||||
{
|
||||
s32 status;
|
||||
ixgbe_link_speed force_speed;
|
||||
u32 i;
|
||||
bool link_up = false;
|
||||
|
||||
DEBUGFUNC("ixgbe_setup_mac_link_t_X550em");
|
||||
|
||||
@ -4483,6 +4485,19 @@ s32 ixgbe_setup_mac_link_t_X550em(struct ixgbe_hw *hw,
|
||||
|
||||
if (status != IXGBE_SUCCESS)
|
||||
return status;
|
||||
|
||||
/* Wait for the controller to acquire link */
|
||||
for (i = 0; i < 10; i++) {
|
||||
msec_delay(100);
|
||||
|
||||
status = ixgbe_check_link(hw, &force_speed, &link_up,
|
||||
false);
|
||||
if (status != IXGBE_SUCCESS)
|
||||
return status;
|
||||
|
||||
if (link_up)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return hw->phy.ops.setup_link_speed(hw, speed, autoneg_wait_to_complete);
|
||||
|
Loading…
Reference in New Issue
Block a user