diff options
author | Rob Herring <rob.herring@calxeda.com> | 2012-07-09 14:16:07 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-10 23:25:47 -0700 |
commit | eb5e1b29a5ff4b782796ec9d17b443b5b38b7ffe (patch) | |
tree | e17591733262cc5a43bad2bf17e10d721a16c4da /drivers/net/ethernet/calxeda | |
parent | 0b43b9a7038609e038eb0329ec800e85d02dacbd (diff) | |
download | linux-eb5e1b29a5ff4b782796ec9d17b443b5b38b7ffe.tar.bz2 |
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')
-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) 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, |