diff options
Diffstat (limited to 'drivers/net/sfc')
-rw-r--r-- | drivers/net/sfc/selftest.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c index 371e86cc090f..52ac14af83a4 100644 --- a/drivers/net/sfc/selftest.c +++ b/drivers/net/sfc/selftest.c | |||
@@ -545,7 +545,7 @@ efx_test_loopback(struct efx_tx_queue *tx_queue, | |||
545 | static int efx_wait_for_link(struct efx_nic *efx) | 545 | static int efx_wait_for_link(struct efx_nic *efx) |
546 | { | 546 | { |
547 | struct efx_link_state *link_state = &efx->link_state; | 547 | struct efx_link_state *link_state = &efx->link_state; |
548 | int count; | 548 | int count, link_up_count = 0; |
549 | bool link_up; | 549 | bool link_up; |
550 | 550 | ||
551 | for (count = 0; count < 40; count++) { | 551 | for (count = 0; count < 40; count++) { |
@@ -567,8 +567,12 @@ static int efx_wait_for_link(struct efx_nic *efx) | |||
567 | link_up = !efx->mac_op->check_fault(efx); | 567 | link_up = !efx->mac_op->check_fault(efx); |
568 | mutex_unlock(&efx->mac_lock); | 568 | mutex_unlock(&efx->mac_lock); |
569 | 569 | ||
570 | if (link_up) | 570 | if (link_up) { |
571 | return 0; | 571 | if (++link_up_count == 2) |
572 | return 0; | ||
573 | } else { | ||
574 | link_up_count = 0; | ||
575 | } | ||
572 | } | 576 | } |
573 | 577 | ||
574 | return -ETIMEDOUT; | 578 | return -ETIMEDOUT; |