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>
This commit is contained in:
parent
0b43b9a703
commit
eb5e1b29a5
@ -933,6 +933,7 @@ static void xgmac_tx_err(struct xgmac_priv *priv)
|
|||||||
desc_init_tx_desc(priv->dma_tx, DMA_TX_RING_SZ);
|
desc_init_tx_desc(priv->dma_tx, DMA_TX_RING_SZ);
|
||||||
priv->tx_tail = 0;
|
priv->tx_tail = 0;
|
||||||
priv->tx_head = 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(reg | DMA_CONTROL_ST, priv->base + XGMAC_DMA_CONTROL);
|
||||||
|
|
||||||
writel(DMA_STATUS_TU | DMA_STATUS_TPS | DMA_STATUS_NIS | DMA_STATUS_AIS,
|
writel(DMA_STATUS_TU | DMA_STATUS_TPS | DMA_STATUS_NIS | DMA_STATUS_AIS,
|
||||||
|
Loading…
Reference in New Issue
Block a user