Commit 23bdfdd3 authored by Steve Hodgson's avatar Steve Hodgson Committed by Jeff Garzik

sfc: Recover from RX queue flush failure

RX queue flush can fail if traffic continues to arrive.  Recover by
performing an invisible reset.
Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent bf4d5934
...@@ -733,8 +733,10 @@ void falcon_fini_rx(struct efx_rx_queue *rx_queue) ...@@ -733,8 +733,10 @@ void falcon_fini_rx(struct efx_rx_queue *rx_queue)
continue; continue;
break; break;
} }
if (rc) if (rc) {
EFX_ERR(efx, "failed to flush rx queue %d\n", rx_queue->queue); EFX_ERR(efx, "failed to flush rx queue %d\n", rx_queue->queue);
efx_schedule_reset(efx, RESET_TYPE_INVISIBLE);
}
/* Remove RX descriptor ring from card */ /* Remove RX descriptor ring from card */
EFX_ZERO_OWORD(rx_desc_ptr); EFX_ZERO_OWORD(rx_desc_ptr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment