From: Rob Herring <rob.herring@calxeda.com>
Date: Mon, 9 Jul 2012 14:16:07 +0000 (+0000)
Subject: net: calxedaxgmac: fix net timeout recovery
X-Git-Tag: firefly_0821_release~3680^2~2381^2~232
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=eb5e1b29a5ff4b782796ec9d17b443b5b38b7ffe;p=firefly-linux-kernel-4.4.55.git

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

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,