aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/nic.c
diff options
context:
space:
mode:
authorSteve Hodgson <shodgson@solarflare.com>2010-06-01 11:17:51 +0000
committerDavid S. Miller <davem@davemloft.net>2010-06-02 02:21:06 -0700
commitfd371e32fe53f137a0f940d61772bda92180007b (patch)
treec2ce5d564aae698ecc643d8af42696e374a60728 /drivers/net/sfc/nic.c
parent319ba649af30321ea221740833785b46e1fe6af3 (diff)
downloadkernel_samsung_aries-fd371e32fe53f137a0f940d61772bda92180007b.zip
kernel_samsung_aries-fd371e32fe53f137a0f940d61772bda92180007b.tar.gz
kernel_samsung_aries-fd371e32fe53f137a0f940d61772bda92180007b.tar.bz2
sfc: Workaround flush failures on Falcon B0
Under certain conditions a PHY may backpressure Falcon B0 in such a way that flushes timeout. In normal circumstances the phy poller would fix the PHY, and the flush could complete. But efx_nic_flush_queues() is always called after efx_stop_all(), so the poller has been stopped. Even if this weren't the case, how long would we have to wait for the poller to fix this? And several callers of efx_nic_flush_queues() are about to reset the device anyway - so we don't need to do anything. Work around this bug by scheduling a reset. Ensure that the MAC is never rewired back into the datapath before the reset runs (we already ignore all rx events anyway). Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc/nic.c')
-rw-r--r--drivers/net/sfc/nic.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/net/sfc/nic.c b/drivers/net/sfc/nic.c
index 5d3aaec..ec0bb80 100644
--- a/drivers/net/sfc/nic.c
+++ b/drivers/net/sfc/nic.c
@@ -1219,9 +1219,6 @@ int efx_nic_flush_queues(struct efx_nic *efx)
rx_queue->flushed = FLUSH_DONE;
}
- if (EFX_WORKAROUND_7803(efx))
- return 0;
-
return -ETIMEDOUT;
}