aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2009-08-26 04:18:13 -0400
committerDavid S. Miller <davem@davemloft.net>2009-08-26 20:38:59 -0400
commit5c8af3b9aa4d19fba7f5a9224636fc70e476eb4f (patch)
treeed8c829409ae4d48787d2424fef6e8dcb2b6ea0f /drivers/net/sfc
parentcc11763b3510e4942bfece052ccf329a7b086a32 (diff)
sfc: Improve reliability of RX queue flushing
Reconfiguring the port requires us to flush all DMA queues. In repeated testing we have found that RX flushes would sometimes fail because the RX DMA engine was not properly isolated from the MACs. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc')
-rw-r--r--drivers/net/sfc/efx.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index d4dc92042d77..07a7e4b8f8fc 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -1179,6 +1179,8 @@ static void efx_stop_all(struct efx_nic *efx)
1179 1179
1180 /* Isolate the MAC from the TX and RX engines, so that queue 1180 /* Isolate the MAC from the TX and RX engines, so that queue
1181 * flushes will complete in a timely fashion. */ 1181 * flushes will complete in a timely fashion. */
1182 falcon_deconfigure_mac_wrapper(efx);
1183 msleep(10); /* Let the Rx FIFO drain */
1182 falcon_drain_tx_fifo(efx); 1184 falcon_drain_tx_fifo(efx);
1183 1185
1184 /* Stop the kernel transmit interface late, so the watchdog 1186 /* Stop the kernel transmit interface late, so the watchdog