|
@@ -1817,7 +1817,7 @@ static int mtk_open(struct net_device *dev)
|
|
|
struct mtk_eth *eth = mac->hw;
|
|
|
|
|
|
/* we run 2 netdevs on the same dma ring so we only bring it up once */
|
|
|
- if (!atomic_read(ð->dma_refcnt)) {
|
|
|
+ if (!refcount_read(ð->dma_refcnt)) {
|
|
|
int err = mtk_start_dma(eth);
|
|
|
|
|
|
if (err)
|
|
@@ -1827,8 +1827,10 @@ static int mtk_open(struct net_device *dev)
|
|
|
napi_enable(ð->rx_napi);
|
|
|
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
|
|
|
mtk_rx_irq_enable(eth, MTK_RX_DONE_INT);
|
|
|
+ refcount_set(ð->dma_refcnt, 1);
|
|
|
}
|
|
|
- atomic_inc(ð->dma_refcnt);
|
|
|
+ else
|
|
|
+ refcount_inc(ð->dma_refcnt);
|
|
|
|
|
|
phy_start(dev->phydev);
|
|
|
netif_start_queue(dev);
|
|
@@ -1868,7 +1870,7 @@ static int mtk_stop(struct net_device *dev)
|
|
|
phy_stop(dev->phydev);
|
|
|
|
|
|
/* only shutdown DMA if this is the last user */
|
|
|
- if (!atomic_dec_and_test(ð->dma_refcnt))
|
|
|
+ if (!refcount_dec_and_test(ð->dma_refcnt))
|
|
|
return 0;
|
|
|
|
|
|
mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
|