summaryrefslogtreecommitdiff
path: root/drivers/net/sfc
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2009-08-26 08:18:13 (GMT)
committerDavid S. Miller <davem@davemloft.net>2009-08-27 00:38:59 (GMT)
commit5c8af3b9aa4d19fba7f5a9224636fc70e476eb4f (patch)
treeed8c829409ae4d48787d2424fef6e8dcb2b6ea0f /drivers/net/sfc
parentcc11763b3510e4942bfece052ccf329a7b086a32 (diff)
downloadlinux-fsl-qoriq-5c8af3b9aa4d19fba7f5a9224636fc70e476eb4f.tar.xz
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 d4dc920..07a7e4b 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)
/* Isolate the MAC from the TX and RX engines, so that queue
* flushes will complete in a timely fashion. */
+ falcon_deconfigure_mac_wrapper(efx);
+ msleep(10); /* Let the Rx FIFO drain */
falcon_drain_tx_fifo(efx);
/* Stop the kernel transmit interface late, so the watchdog