aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/sfc')
-rw-r--r--drivers/net/sfc/selftest.c10
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,
545static int efx_wait_for_link(struct efx_nic *efx) 545static 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;