mirror of
https://github.com/openwrt/openwrt.git
synced 2025-03-03 12:54:38 +00:00
ath79: ag71xx: pass correct device pointer to dma functions
linux 4.19 doesn't accept a NULL device for these functions. It also complains that the device struct in net_device doesn't have a dma_mask set. Pass the device struct from platform_device for these functions. Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
This commit is contained in:
parent
8d3af284e0
commit
4eaa3626a8
@ -162,7 +162,7 @@ static void ag71xx_ring_rx_clean(struct ag71xx *ag)
|
|||||||
|
|
||||||
for (i = 0; i < ring_size; i++)
|
for (i = 0; i < ring_size; i++)
|
||||||
if (ring->buf[i].rx_buf) {
|
if (ring->buf[i].rx_buf) {
|
||||||
dma_unmap_single(&ag->dev->dev, ring->buf[i].dma_addr,
|
dma_unmap_single(&ag->pdev->dev, ring->buf[i].dma_addr,
|
||||||
ag->rx_buf_size, DMA_FROM_DEVICE);
|
ag->rx_buf_size, DMA_FROM_DEVICE);
|
||||||
skb_free_frag(ring->buf[i].rx_buf);
|
skb_free_frag(ring->buf[i].rx_buf);
|
||||||
}
|
}
|
||||||
@ -187,7 +187,7 @@ static bool ag71xx_fill_rx_buf(struct ag71xx *ag, struct ag71xx_buf *buf,
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
buf->rx_buf = data;
|
buf->rx_buf = data;
|
||||||
buf->dma_addr = dma_map_single(&ag->dev->dev, data, ag->rx_buf_size,
|
buf->dma_addr = dma_map_single(&ag->pdev->dev, data, ag->rx_buf_size,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
desc->data = (u32) buf->dma_addr + offset;
|
desc->data = (u32) buf->dma_addr + offset;
|
||||||
return true;
|
return true;
|
||||||
@ -276,7 +276,7 @@ static int ag71xx_rings_init(struct ag71xx *ag)
|
|||||||
if (!tx->buf)
|
if (!tx->buf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
tx->descs_cpu = dma_alloc_coherent(NULL, ring_size * AG71XX_DESC_SIZE,
|
tx->descs_cpu = dma_alloc_coherent(&ag->pdev->dev, ring_size * AG71XX_DESC_SIZE,
|
||||||
&tx->descs_dma, GFP_ATOMIC);
|
&tx->descs_dma, GFP_ATOMIC);
|
||||||
if (!tx->descs_cpu) {
|
if (!tx->descs_cpu) {
|
||||||
kfree(tx->buf);
|
kfree(tx->buf);
|
||||||
@ -299,7 +299,7 @@ static void ag71xx_rings_free(struct ag71xx *ag)
|
|||||||
int ring_size = BIT(tx->order) + BIT(rx->order);
|
int ring_size = BIT(tx->order) + BIT(rx->order);
|
||||||
|
|
||||||
if (tx->descs_cpu)
|
if (tx->descs_cpu)
|
||||||
dma_free_coherent(NULL, ring_size * AG71XX_DESC_SIZE,
|
dma_free_coherent(&ag->pdev->dev, ring_size * AG71XX_DESC_SIZE,
|
||||||
tx->descs_cpu, tx->descs_dma);
|
tx->descs_cpu, tx->descs_dma);
|
||||||
|
|
||||||
kfree(tx->buf);
|
kfree(tx->buf);
|
||||||
@ -892,7 +892,7 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct sk_buff *skb,
|
|||||||
goto err_drop;
|
goto err_drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
dma_addr = dma_map_single(&dev->dev, skb->data, skb->len,
|
dma_addr = dma_map_single(&ag->pdev->dev, skb->data, skb->len,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
i = ring->curr & ring_mask;
|
i = ring->curr & ring_mask;
|
||||||
@ -934,7 +934,7 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct sk_buff *skb,
|
|||||||
return NETDEV_TX_OK;
|
return NETDEV_TX_OK;
|
||||||
|
|
||||||
err_drop_unmap:
|
err_drop_unmap:
|
||||||
dma_unmap_single(&dev->dev, dma_addr, skb->len, DMA_TO_DEVICE);
|
dma_unmap_single(&ag->pdev->dev, dma_addr, skb->len, DMA_TO_DEVICE);
|
||||||
|
|
||||||
err_drop:
|
err_drop:
|
||||||
dev->stats.tx_dropped++;
|
dev->stats.tx_dropped++;
|
||||||
@ -1147,7 +1147,7 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
|
|||||||
pktlen = desc->ctrl & pktlen_mask;
|
pktlen = desc->ctrl & pktlen_mask;
|
||||||
pktlen -= ETH_FCS_LEN;
|
pktlen -= ETH_FCS_LEN;
|
||||||
|
|
||||||
dma_unmap_single(&dev->dev, ring->buf[i].dma_addr,
|
dma_unmap_single(&ag->pdev->dev, ring->buf[i].dma_addr,
|
||||||
ag->rx_buf_size, DMA_FROM_DEVICE);
|
ag->rx_buf_size, DMA_FROM_DEVICE);
|
||||||
|
|
||||||
dev->stats.rx_packets++;
|
dev->stats.rx_packets++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user