Commit e059c6f3 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by David S. Miller

tulip: switch from 'pci_' to 'dma_' API

The wrappers in include/linux/pci-dma-compat.h should go away.

The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.

When memory is allocated in 'tulip_init_one()' GFP_KERNEL can be used
because it is a probe function and no lock is taken in the between.

@@
@@
-    PCI_DMA_BIDIRECTIONAL
+    DMA_BIDIRECTIONAL

@@
@@
-    PCI_DMA_TODEVICE
+    DMA_TO_DEVICE

@@
@@
-    PCI_DMA_FROMDEVICE
+    DMA_FROM_DEVICE

@@
@@
-    PCI_DMA_NONE
+    DMA_NONE

@@
expression e1, e2, e3;
@@
-    pci_alloc_consistent(e1, e2, e3)
+    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)

@@
expression e1, e2, e3;
@@
-    pci_zalloc_consistent(e1, e2, e3)
+    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)

@@
expression e1, e2, e3, e4;
@@
-    pci_free_consistent(e1, e2, e3, e4)
+    dma_free_coherent(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_map_single(e1, e2, e3, e4)
+    dma_map_single(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_single(e1, e2, e3, e4)
+    dma_unmap_single(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4, e5;
@@
-    pci_map_page(e1, e2, e3, e4, e5)
+    dma_map_page(&e1->dev, e2, e3, e4, e5)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_page(e1, e2, e3, e4)
+    dma_unmap_page(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_map_sg(e1, e2, e3, e4)
+    dma_map_sg(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_unmap_sg(e1, e2, e3, e4)
+    dma_unmap_sg(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+    dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_single_for_device(e1, e2, e3, e4)
+    dma_sync_single_for_device(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+    dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
-    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+    dma_sync_sg_for_device(&e1->dev, e2, e3, e4)

@@
expression e1, e2;
@@
-    pci_dma_mapping_error(e1, e2)
+    dma_mapping_error(&e1->dev, e2)

@@
expression e1, e2;
@@
-    pci_set_dma_mask(e1, e2)
+    dma_set_mask(&e1->dev, e2)

@@
expression e1, e2;
@@
-    pci_set_consistent_dma_mask(e1, e2)
+    dma_set_coherent_mask(&e1->dev, e2)
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7a1fe380
...@@ -74,8 +74,8 @@ int tulip_refill_rx(struct net_device *dev) ...@@ -74,8 +74,8 @@ int tulip_refill_rx(struct net_device *dev)
if (skb == NULL) if (skb == NULL)
break; break;
mapping = pci_map_single(tp->pdev, skb->data, PKT_BUF_SZ, mapping = dma_map_single(&tp->pdev->dev, skb->data,
PCI_DMA_FROMDEVICE); PKT_BUF_SZ, DMA_FROM_DEVICE);
if (dma_mapping_error(&tp->pdev->dev, mapping)) { if (dma_mapping_error(&tp->pdev->dev, mapping)) {
dev_kfree_skb(skb); dev_kfree_skb(skb);
tp->rx_buffers[entry].skb = NULL; tp->rx_buffers[entry].skb = NULL;
...@@ -210,9 +210,10 @@ int tulip_poll(struct napi_struct *napi, int budget) ...@@ -210,9 +210,10 @@ int tulip_poll(struct napi_struct *napi, int budget)
if (pkt_len < tulip_rx_copybreak && if (pkt_len < tulip_rx_copybreak &&
(skb = netdev_alloc_skb(dev, pkt_len + 2)) != NULL) { (skb = netdev_alloc_skb(dev, pkt_len + 2)) != NULL) {
skb_reserve(skb, 2); /* 16 byte align the IP header */ skb_reserve(skb, 2); /* 16 byte align the IP header */
pci_dma_sync_single_for_cpu(tp->pdev, dma_sync_single_for_cpu(&tp->pdev->dev,
tp->rx_buffers[entry].mapping, tp->rx_buffers[entry].mapping,
pkt_len, PCI_DMA_FROMDEVICE); pkt_len,
DMA_FROM_DEVICE);
#if ! defined(__alpha__) #if ! defined(__alpha__)
skb_copy_to_linear_data(skb, tp->rx_buffers[entry].skb->data, skb_copy_to_linear_data(skb, tp->rx_buffers[entry].skb->data,
pkt_len); pkt_len);
...@@ -222,9 +223,10 @@ int tulip_poll(struct napi_struct *napi, int budget) ...@@ -222,9 +223,10 @@ int tulip_poll(struct napi_struct *napi, int budget)
tp->rx_buffers[entry].skb->data, tp->rx_buffers[entry].skb->data,
pkt_len); pkt_len);
#endif #endif
pci_dma_sync_single_for_device(tp->pdev, dma_sync_single_for_device(&tp->pdev->dev,
tp->rx_buffers[entry].mapping, tp->rx_buffers[entry].mapping,
pkt_len, PCI_DMA_FROMDEVICE); pkt_len,
DMA_FROM_DEVICE);
} else { /* Pass up the skb already on the Rx ring. */ } else { /* Pass up the skb already on the Rx ring. */
char *temp = skb_put(skb = tp->rx_buffers[entry].skb, char *temp = skb_put(skb = tp->rx_buffers[entry].skb,
pkt_len); pkt_len);
...@@ -240,8 +242,10 @@ int tulip_poll(struct napi_struct *napi, int budget) ...@@ -240,8 +242,10 @@ int tulip_poll(struct napi_struct *napi, int budget)
} }
#endif #endif
pci_unmap_single(tp->pdev, tp->rx_buffers[entry].mapping, dma_unmap_single(&tp->pdev->dev,
PKT_BUF_SZ, PCI_DMA_FROMDEVICE); tp->rx_buffers[entry].mapping,
PKT_BUF_SZ,
DMA_FROM_DEVICE);
tp->rx_buffers[entry].skb = NULL; tp->rx_buffers[entry].skb = NULL;
tp->rx_buffers[entry].mapping = 0; tp->rx_buffers[entry].mapping = 0;
...@@ -436,9 +440,10 @@ static int tulip_rx(struct net_device *dev) ...@@ -436,9 +440,10 @@ static int tulip_rx(struct net_device *dev)
if (pkt_len < tulip_rx_copybreak && if (pkt_len < tulip_rx_copybreak &&
(skb = netdev_alloc_skb(dev, pkt_len + 2)) != NULL) { (skb = netdev_alloc_skb(dev, pkt_len + 2)) != NULL) {
skb_reserve(skb, 2); /* 16 byte align the IP header */ skb_reserve(skb, 2); /* 16 byte align the IP header */
pci_dma_sync_single_for_cpu(tp->pdev, dma_sync_single_for_cpu(&tp->pdev->dev,
tp->rx_buffers[entry].mapping, tp->rx_buffers[entry].mapping,
pkt_len, PCI_DMA_FROMDEVICE); pkt_len,
DMA_FROM_DEVICE);
#if ! defined(__alpha__) #if ! defined(__alpha__)
skb_copy_to_linear_data(skb, tp->rx_buffers[entry].skb->data, skb_copy_to_linear_data(skb, tp->rx_buffers[entry].skb->data,
pkt_len); pkt_len);
...@@ -448,9 +453,10 @@ static int tulip_rx(struct net_device *dev) ...@@ -448,9 +453,10 @@ static int tulip_rx(struct net_device *dev)
tp->rx_buffers[entry].skb->data, tp->rx_buffers[entry].skb->data,
pkt_len); pkt_len);
#endif #endif
pci_dma_sync_single_for_device(tp->pdev, dma_sync_single_for_device(&tp->pdev->dev,
tp->rx_buffers[entry].mapping, tp->rx_buffers[entry].mapping,
pkt_len, PCI_DMA_FROMDEVICE); pkt_len,
DMA_FROM_DEVICE);
} else { /* Pass up the skb already on the Rx ring. */ } else { /* Pass up the skb already on the Rx ring. */
char *temp = skb_put(skb = tp->rx_buffers[entry].skb, char *temp = skb_put(skb = tp->rx_buffers[entry].skb,
pkt_len); pkt_len);
...@@ -466,8 +472,9 @@ static int tulip_rx(struct net_device *dev) ...@@ -466,8 +472,9 @@ static int tulip_rx(struct net_device *dev)
} }
#endif #endif
pci_unmap_single(tp->pdev, tp->rx_buffers[entry].mapping, dma_unmap_single(&tp->pdev->dev,
PKT_BUF_SZ, PCI_DMA_FROMDEVICE); tp->rx_buffers[entry].mapping,
PKT_BUF_SZ, DMA_FROM_DEVICE);
tp->rx_buffers[entry].skb = NULL; tp->rx_buffers[entry].skb = NULL;
tp->rx_buffers[entry].mapping = 0; tp->rx_buffers[entry].mapping = 0;
...@@ -597,10 +604,10 @@ irqreturn_t tulip_interrupt(int irq, void *dev_instance) ...@@ -597,10 +604,10 @@ irqreturn_t tulip_interrupt(int irq, void *dev_instance)
if (tp->tx_buffers[entry].skb == NULL) { if (tp->tx_buffers[entry].skb == NULL) {
/* test because dummy frames not mapped */ /* test because dummy frames not mapped */
if (tp->tx_buffers[entry].mapping) if (tp->tx_buffers[entry].mapping)
pci_unmap_single(tp->pdev, dma_unmap_single(&tp->pdev->dev,
tp->tx_buffers[entry].mapping, tp->tx_buffers[entry].mapping,
sizeof(tp->setup_frame), sizeof(tp->setup_frame),
PCI_DMA_TODEVICE); DMA_TO_DEVICE);
continue; continue;
} }
...@@ -629,9 +636,10 @@ irqreturn_t tulip_interrupt(int irq, void *dev_instance) ...@@ -629,9 +636,10 @@ irqreturn_t tulip_interrupt(int irq, void *dev_instance)
dev->stats.tx_packets++; dev->stats.tx_packets++;
} }
pci_unmap_single(tp->pdev, tp->tx_buffers[entry].mapping, dma_unmap_single(&tp->pdev->dev,
tp->tx_buffers[entry].mapping,
tp->tx_buffers[entry].skb->len, tp->tx_buffers[entry].skb->len,
PCI_DMA_TODEVICE); DMA_TO_DEVICE);
/* Free the original skb. */ /* Free the original skb. */
dev_kfree_skb_irq(tp->tx_buffers[entry].skb); dev_kfree_skb_irq(tp->tx_buffers[entry].skb);
......
...@@ -350,9 +350,9 @@ static void tulip_up(struct net_device *dev) ...@@ -350,9 +350,9 @@ static void tulip_up(struct net_device *dev)
*setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1];
*setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2];
mapping = pci_map_single(tp->pdev, tp->setup_frame, mapping = dma_map_single(&tp->pdev->dev, tp->setup_frame,
sizeof(tp->setup_frame), sizeof(tp->setup_frame),
PCI_DMA_TODEVICE); DMA_TO_DEVICE);
tp->tx_buffers[tp->cur_tx].skb = NULL; tp->tx_buffers[tp->cur_tx].skb = NULL;
tp->tx_buffers[tp->cur_tx].mapping = mapping; tp->tx_buffers[tp->cur_tx].mapping = mapping;
...@@ -630,8 +630,8 @@ static void tulip_init_ring(struct net_device *dev) ...@@ -630,8 +630,8 @@ static void tulip_init_ring(struct net_device *dev)
tp->rx_buffers[i].skb = skb; tp->rx_buffers[i].skb = skb;
if (skb == NULL) if (skb == NULL)
break; break;
mapping = pci_map_single(tp->pdev, skb->data, mapping = dma_map_single(&tp->pdev->dev, skb->data,
PKT_BUF_SZ, PCI_DMA_FROMDEVICE); PKT_BUF_SZ, DMA_FROM_DEVICE);
tp->rx_buffers[i].mapping = mapping; tp->rx_buffers[i].mapping = mapping;
tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */ tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */
tp->rx_ring[i].buffer1 = cpu_to_le32(mapping); tp->rx_ring[i].buffer1 = cpu_to_le32(mapping);
...@@ -664,8 +664,8 @@ tulip_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -664,8 +664,8 @@ tulip_start_xmit(struct sk_buff *skb, struct net_device *dev)
entry = tp->cur_tx % TX_RING_SIZE; entry = tp->cur_tx % TX_RING_SIZE;
tp->tx_buffers[entry].skb = skb; tp->tx_buffers[entry].skb = skb;
mapping = pci_map_single(tp->pdev, skb->data, mapping = dma_map_single(&tp->pdev->dev, skb->data, skb->len,
skb->len, PCI_DMA_TODEVICE); DMA_TO_DEVICE);
tp->tx_buffers[entry].mapping = mapping; tp->tx_buffers[entry].mapping = mapping;
tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping); tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping);
...@@ -716,16 +716,17 @@ static void tulip_clean_tx_ring(struct tulip_private *tp) ...@@ -716,16 +716,17 @@ static void tulip_clean_tx_ring(struct tulip_private *tp)
if (tp->tx_buffers[entry].skb == NULL) { if (tp->tx_buffers[entry].skb == NULL) {
/* test because dummy frames not mapped */ /* test because dummy frames not mapped */
if (tp->tx_buffers[entry].mapping) if (tp->tx_buffers[entry].mapping)
pci_unmap_single(tp->pdev, dma_unmap_single(&tp->pdev->dev,
tp->tx_buffers[entry].mapping, tp->tx_buffers[entry].mapping,
sizeof(tp->setup_frame), sizeof(tp->setup_frame),
PCI_DMA_TODEVICE); DMA_TO_DEVICE);
continue; continue;
} }
pci_unmap_single(tp->pdev, tp->tx_buffers[entry].mapping, dma_unmap_single(&tp->pdev->dev,
tp->tx_buffers[entry].skb->len, tp->tx_buffers[entry].mapping,
PCI_DMA_TODEVICE); tp->tx_buffers[entry].skb->len,
DMA_TO_DEVICE);
/* Free the original skb. */ /* Free the original skb. */
dev_kfree_skb_irq(tp->tx_buffers[entry].skb); dev_kfree_skb_irq(tp->tx_buffers[entry].skb);
...@@ -795,8 +796,8 @@ static void tulip_free_ring (struct net_device *dev) ...@@ -795,8 +796,8 @@ static void tulip_free_ring (struct net_device *dev)
/* An invalid address. */ /* An invalid address. */
tp->rx_ring[i].buffer1 = cpu_to_le32(0xBADF00D0); tp->rx_ring[i].buffer1 = cpu_to_le32(0xBADF00D0);
if (skb) { if (skb) {
pci_unmap_single(tp->pdev, mapping, PKT_BUF_SZ, dma_unmap_single(&tp->pdev->dev, mapping, PKT_BUF_SZ,
PCI_DMA_FROMDEVICE); DMA_FROM_DEVICE);
dev_kfree_skb (skb); dev_kfree_skb (skb);
} }
} }
...@@ -805,8 +806,9 @@ static void tulip_free_ring (struct net_device *dev) ...@@ -805,8 +806,9 @@ static void tulip_free_ring (struct net_device *dev)
struct sk_buff *skb = tp->tx_buffers[i].skb; struct sk_buff *skb = tp->tx_buffers[i].skb;
if (skb != NULL) { if (skb != NULL) {
pci_unmap_single(tp->pdev, tp->tx_buffers[i].mapping, dma_unmap_single(&tp->pdev->dev,
skb->len, PCI_DMA_TODEVICE); tp->tx_buffers[i].mapping, skb->len,
DMA_TO_DEVICE);
dev_kfree_skb (skb); dev_kfree_skb (skb);
} }
tp->tx_buffers[i].skb = NULL; tp->tx_buffers[i].skb = NULL;
...@@ -1149,9 +1151,10 @@ static void set_rx_mode(struct net_device *dev) ...@@ -1149,9 +1151,10 @@ static void set_rx_mode(struct net_device *dev)
tp->tx_buffers[entry].skb = NULL; tp->tx_buffers[entry].skb = NULL;
tp->tx_buffers[entry].mapping = tp->tx_buffers[entry].mapping =
pci_map_single(tp->pdev, tp->setup_frame, dma_map_single(&tp->pdev->dev,
tp->setup_frame,
sizeof(tp->setup_frame), sizeof(tp->setup_frame),
PCI_DMA_TODEVICE); DMA_TO_DEVICE);
/* Put the setup frame on the Tx list. */ /* Put the setup frame on the Tx list. */
if (entry == TX_RING_SIZE-1) if (entry == TX_RING_SIZE-1)
tx_flags |= DESC_RING_WRAP; /* Wrap ring. */ tx_flags |= DESC_RING_WRAP; /* Wrap ring. */
...@@ -1422,10 +1425,10 @@ static int tulip_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1422,10 +1425,10 @@ static int tulip_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
tp = netdev_priv(dev); tp = netdev_priv(dev);
tp->dev = dev; tp->dev = dev;
tp->rx_ring = pci_alloc_consistent(pdev, tp->rx_ring = dma_alloc_coherent(&pdev->dev,
sizeof(struct tulip_rx_desc) * RX_RING_SIZE + sizeof(struct tulip_rx_desc) * RX_RING_SIZE +
sizeof(struct tulip_tx_desc) * TX_RING_SIZE, sizeof(struct tulip_tx_desc) * TX_RING_SIZE,
&tp->rx_ring_dma); &tp->rx_ring_dma, GFP_KERNEL);
if (!tp->rx_ring) if (!tp->rx_ring)
goto err_out_mtable; goto err_out_mtable;
tp->tx_ring = (struct tulip_tx_desc *)(tp->rx_ring + RX_RING_SIZE); tp->tx_ring = (struct tulip_tx_desc *)(tp->rx_ring + RX_RING_SIZE);
...@@ -1757,10 +1760,10 @@ static int tulip_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1757,10 +1760,10 @@ static int tulip_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
return 0; return 0;
err_out_free_ring: err_out_free_ring:
pci_free_consistent (pdev, dma_free_coherent(&pdev->dev,
sizeof (struct tulip_rx_desc) * RX_RING_SIZE + sizeof(struct tulip_rx_desc) * RX_RING_SIZE +
sizeof (struct tulip_tx_desc) * TX_RING_SIZE, sizeof(struct tulip_tx_desc) * TX_RING_SIZE,
tp->rx_ring, tp->rx_ring_dma); tp->rx_ring, tp->rx_ring_dma);
err_out_mtable: err_out_mtable:
kfree (tp->mtable); kfree (tp->mtable);
...@@ -1878,10 +1881,10 @@ static void tulip_remove_one(struct pci_dev *pdev) ...@@ -1878,10 +1881,10 @@ static void tulip_remove_one(struct pci_dev *pdev)
tp = netdev_priv(dev); tp = netdev_priv(dev);
unregister_netdev(dev); unregister_netdev(dev);
pci_free_consistent (pdev, dma_free_coherent(&pdev->dev,
sizeof (struct tulip_rx_desc) * RX_RING_SIZE + sizeof(struct tulip_rx_desc) * RX_RING_SIZE +
sizeof (struct tulip_tx_desc) * TX_RING_SIZE, sizeof(struct tulip_tx_desc) * TX_RING_SIZE,
tp->rx_ring, tp->rx_ring_dma); tp->rx_ring, tp->rx_ring_dma);
kfree (tp->mtable); kfree (tp->mtable);
pci_iounmap(pdev, tp->base_addr); pci_iounmap(pdev, tp->base_addr);
free_netdev (dev); free_netdev (dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment