[PATCH v2 10/46] net: jme: convert to generic DMA API
From: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Date: 2011-07-11 00:52:51
Subsystem:
networking drivers, the rest · Maintainers:
Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
This also fixes bad pci_dma_map_page() usage and missing RX unmaps. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> --- drivers/net/jme.c | 37 ++++++++++++------------------------- 1 files changed, 12 insertions(+), 25 deletions(-)
diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index 6b2a5e7..ad69dae 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c@@ -759,11 +759,8 @@ jme_make_new_rx_buf(struct jme_adapter *jme, int i) rxbi->skb = skb; rxbi->len = skb_tailroom(skb); - rxbi->mapping = pci_map_page(jme->pdev, - virt_to_page(skb->data), - offset_in_page(skb->data), - rxbi->len, - PCI_DMA_FROMDEVICE); + rxbi->mapping = dma_map_single(&jme->pdev->dev, skb->data, + rxbi->len, DMA_FROM_DEVICE); return 0; }
@@ -776,10 +773,10 @@ jme_free_rx_buf(struct jme_adapter *jme, int i) rxbi += i; if (rxbi->skb) { - pci_unmap_page(jme->pdev, + dma_unmap_single(&jme->pdev->dev, rxbi->mapping, rxbi->len, - PCI_DMA_FROMDEVICE); + DMA_FROM_DEVICE); dev_kfree_skb(rxbi->skb); rxbi->skb = NULL; rxbi->mapping = 0;
@@ -1022,17 +1019,12 @@ jme_alloc_and_feed_skb(struct jme_adapter *jme, int idx) rxbi += idx; skb = rxbi->skb; - pci_dma_sync_single_for_cpu(jme->pdev, - rxbi->mapping, - rxbi->len, - PCI_DMA_FROMDEVICE); + dma_unmap_single(&jme->pdev->dev, rxbi->mapping, rxbi->len, + DMA_FROM_DEVICE); if (unlikely(jme_make_new_rx_buf(jme, idx))) { - pci_dma_sync_single_for_device(jme->pdev, - rxbi->mapping, - rxbi->len, - PCI_DMA_FROMDEVICE); - + rxbi->mapping = dma_map_single(&jme->pdev->dev, skb->data, + rxbi->len, DMA_FROM_DEVICE); ++(NET_STAT(jme).rx_dropped); } else { framesize = le16_to_cpu(rxdesc->descwb.framesize)
@@ -1476,10 +1468,10 @@ jme_tx_clean_tasklet(unsigned long arg) ttxbi = txbi + ((i + j) & (mask)); txdesc[(i + j) & (mask)].dw[0] = 0; - pci_unmap_page(jme->pdev, + dma_unmap_page(&jme->pdev->dev, ttxbi->mapping, ttxbi->len, - PCI_DMA_TODEVICE); + DMA_TO_DEVICE); ttxbi->mapping = 0; ttxbi->len = 0;
@@ -1883,16 +1875,11 @@ jme_fill_tx_map(struct pci_dev *pdev, { dma_addr_t dmaaddr; - dmaaddr = pci_map_page(pdev, + dmaaddr = dma_map_page(&pdev->dev, page, page_offset, len, - PCI_DMA_TODEVICE); - - pci_dma_sync_single_for_device(pdev, - dmaaddr, - len, - PCI_DMA_TODEVICE); + DMA_TO_DEVICE); txdesc->dw[0] = 0; txdesc->dw[1] = 0;
--
1.7.5.4