aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Herring <rob.herring@calxeda.com>2012-07-09 14:16:07 +0000
committerDavid S. Miller <davem@davemloft.net>2012-07-10 23:25:47 -0700
commiteb5e1b29a5ff4b782796ec9d17b443b5b38b7ffe (patch)
treee17591733262cc5a43bad2bf17e10d721a16c4da
parentll_temac: remove unnecessary setting of skb->dev (diff)
downloadlinux-dev-eb5e1b29a5ff4b782796ec9d17b443b5b38b7ffe.tar.xz
linux-dev-eb5e1b29a5ff4b782796ec9d17b443b5b38b7ffe.zip
net: calxedaxgmac: fix net timeout recovery
Fix net tx watchdog timeout recovery. The descriptor ring was reset, but the DMA engine was not reset to the beginning of the ring. Signed-off-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/calxeda/xgmac.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c
index 11f667f6131a..c4fd2e3600c7 100644
--- a/drivers/net/ethernet/calxeda/xgmac.c
+++ b/drivers/net/ethernet/calxeda/xgmac.c
@@ -933,6 +933,7 @@ static void xgmac_tx_err(struct xgmac_priv *priv)
desc_init_tx_desc(priv->dma_tx, DMA_TX_RING_SZ);
priv->tx_tail = 0;
priv->tx_head = 0;
+ writel(priv->dma_tx_phy, priv->base + XGMAC_DMA_TX_BASE_ADDR);
writel(reg | DMA_CONTROL_ST, priv->base + XGMAC_DMA_CONTROL);
writel(DMA_STATUS_TU | DMA_STATUS_TPS | DMA_STATUS_NIS | DMA_STATUS_AIS,