return __raw_readl(ramips_fe_base + reg);
}
+static void
+ramips_cleanup_dma(struct net_device *dev)
+{
+ struct raeth_priv *priv = netdev_priv(dev);
+
+ dma_free_coherent(NULL, NUM_RX_DESC * sizeof(struct ramips_rx_dma),
+ priv->rx, priv->phy_rx);
+
+ dma_free_coherent(NULL, NUM_TX_DESC * sizeof(struct ramips_tx_dma),
+ priv->tx, priv->phy_tx);
+}
+
static int
ramips_alloc_dma(struct net_device *dev)
{
netif_stop_queue(dev);
tasklet_kill(&priv->tx_housekeeping_tasklet);
tasklet_kill(&priv->rx_tasklet);
- dma_free_coherent(NULL, NUM_TX_DESC * sizeof(struct ramips_tx_dma),
- priv->tx, priv->phy_tx);
- dma_free_coherent(NULL, NUM_RX_DESC * sizeof(struct ramips_rx_dma),
- priv->rx, priv->phy_rx);
+ ramips_cleanup_dma(dev);
printk(KERN_DEBUG "ramips_eth: stopped\n");
return 0;
}