Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c8af3b9 authored by Ben Hutchings's avatar Ben Hutchings Committed by David S. Miller
Browse files

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: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cc11763b
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -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
	/* Isolate the MAC from the TX and RX engines, so that queue
	 * flushes will complete in a timely fashion. */
	 * flushes will complete in a timely fashion. */
	falcon_deconfigure_mac_wrapper(efx);
	msleep(10); /* Let the Rx FIFO drain */
	falcon_drain_tx_fifo(efx);
	falcon_drain_tx_fifo(efx);


	/* Stop the kernel transmit interface late, so the watchdog
	/* Stop the kernel transmit interface late, so the watchdog