提交 d4dc35f2 编写于 作者: L Lars Persson 提交者: David S. Miller

dwc_eth_qos: release descriptors outside netif_tx_lock

To prepare for using the CMA, we can not be in atomic context when
de-allocating DMA buffers.

The tx lock was needed only to protect the hw reset against the xmit
handler. Now we briefly grab the tx lock while stopping the queue to
make sure no thread is inside or will enter the xmit handler.
Signed-off-by: NLars Persson <larper@axis.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 8afb6c47
......@@ -1918,15 +1918,17 @@ static int dwceqos_stop(struct net_device *ndev)
phy_stop(lp->phy_dev);
tasklet_disable(&lp->tx_bdreclaim_tasklet);
netif_stop_queue(ndev);
napi_disable(&lp->napi);
dwceqos_drain_dma(lp);
/* Stop all tx before we drain the tx dma. */
netif_tx_lock_bh(lp->ndev);
netif_stop_queue(ndev);
netif_tx_unlock_bh(lp->ndev);
netif_tx_lock(lp->ndev);
dwceqos_drain_dma(lp);
dwceqos_reset_hw(lp);
dwceqos_descriptor_free(lp);
netif_tx_unlock(lp->ndev);
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册