diff options
author | Rob Herring <rob.herring@calxeda.com> | 2012-07-09 10:16:07 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-11 02:25:47 -0400 |
commit | eb5e1b29a5ff4b782796ec9d17b443b5b38b7ffe (patch) | |
tree | e17591733262cc5a43bad2bf17e10d721a16c4da /drivers/net/ethernet/calxeda/xgmac.c | |
parent | 0b43b9a7038609e038eb0329ec800e85d02dacbd (diff) |
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>
Diffstat (limited to 'drivers/net/ethernet/calxeda/xgmac.c')
-rw-r--r-- | drivers/net/ethernet/calxeda/xgmac.c | 1 |
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) | |||
933 | desc_init_tx_desc(priv->dma_tx, DMA_TX_RING_SZ); | 933 | desc_init_tx_desc(priv->dma_tx, DMA_TX_RING_SZ); |
934 | priv->tx_tail = 0; | 934 | priv->tx_tail = 0; |
935 | priv->tx_head = 0; | 935 | priv->tx_head = 0; |
936 | writel(priv->dma_tx_phy, priv->base + XGMAC_DMA_TX_BASE_ADDR); | ||
936 | writel(reg | DMA_CONTROL_ST, priv->base + XGMAC_DMA_CONTROL); | 937 | writel(reg | DMA_CONTROL_ST, priv->base + XGMAC_DMA_CONTROL); |
937 | 938 | ||
938 | writel(DMA_STATUS_TU | DMA_STATUS_TPS | DMA_STATUS_NIS | DMA_STATUS_AIS, | 939 | writel(DMA_STATUS_TU | DMA_STATUS_TPS | DMA_STATUS_NIS | DMA_STATUS_AIS, |