提交 aabc5649 编写于 作者: B Ben Hutchings 提交者: David S. Miller

sfc: Wait at most 10ms for the MC to finish reading out MAC statistics

The original code would wait indefinitely if MAC stats DMA failed.
Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
Cc: stable@kernel.org
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 c0786693
...@@ -456,8 +456,17 @@ static int siena_try_update_nic_stats(struct efx_nic *efx) ...@@ -456,8 +456,17 @@ static int siena_try_update_nic_stats(struct efx_nic *efx)
static void siena_update_nic_stats(struct efx_nic *efx) static void siena_update_nic_stats(struct efx_nic *efx)
{ {
while (siena_try_update_nic_stats(efx) == -EAGAIN) int retry;
cpu_relax();
/* If we're unlucky enough to read statistics wduring the DMA, wait
* up to 10ms for it to finish (typically takes <500us) */
for (retry = 0; retry < 100; ++retry) {
if (siena_try_update_nic_stats(efx) == 0)
return;
udelay(100);
}
/* Use the old values instead */
} }
static void siena_start_nic_stats(struct efx_nic *efx) static void siena_start_nic_stats(struct efx_nic *efx)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册