sfc: Fix polling for slow MCDI operations
When the interface is down and we are using polled mode for MCDI operations, we busy-wait for completion for approximately 1 jiffy using udelay() and then back off to schedule(). But the completion will not wake the task, since we are using polled mode! We must use schedule_timeout_uninterruptible() instead. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
baf86c9d36
Коммит
55029c1d65
|
@ -142,8 +142,9 @@ static int efx_mcdi_poll(struct efx_nic *efx)
|
|||
if (spins != 0) {
|
||||
--spins;
|
||||
udelay(1);
|
||||
} else
|
||||
schedule();
|
||||
} else {
|
||||
schedule_timeout_uninterruptible(1);
|
||||
}
|
||||
|
||||
time = get_seconds();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче