Patchwork [6/7] sfc: Improve reliability of RX queue flushing

login
register
mail settings
Submitter Ben Hutchings
Date Aug. 26, 2009, 6:18 p.m.
Message ID <1251310693.27345.19.camel@achroite>
Download mbox | patch
Permalink /patch/32199/
State Accepted
Delegated to: David Miller
Headers show

Comments

Ben Hutchings - Aug. 26, 2009, 6:18 p.m.
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>
---
 drivers/net/sfc/efx.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
David Miller - Aug. 27, 2009, 1:04 a.m.
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Wed, 26 Aug 2009 19:18:13 +0100

> 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>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

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