netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] skb fragment API: convert network drivers (part IV)
@ 2011-10-05 10:28 Ian Campbell
  2011-10-05 10:28 ` [PATCH 1/8] vxge: convert to SKB paged frag API Ian Campbell
                   ` (9 more replies)
  0 siblings, 10 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Greg Kroah-Hartman

The following series converts a forth batch of network drivers to the
SKB pages fragment API introduced in 131ea6675c76.

There are two drivers/staging patches in here. I'm not sure who normally
takes these, I'm sure you guys know though.

After this batch there are ~4 drivers which need a little more thought
(the inevitable fifth out of four series...). Specifically these drivers
will switch from skb_frag_t -> struct subpage (which I am going to
introduce shortly) in their internal data structures, this will isolate
them from changes to skb_frag_t coming from the network core.

This is part of my series to enable visibility into SKB paged fragment's
lifecycles, [0] contains some more background and rationale but
basically the completed series will allow entities which inject pages
into the networking stack to receive a notification when the stack has
really finished with those pages (i.e. including retransmissions,
clones, pull-ups etc) and not just when the original skb is finished
with, which is beneficial to many subsystems which wish to inject pages
into the network stack without giving up full ownership of those page's
lifecycle. It implements something broadly along the lines of what was
described in [1].

Cheers,
Ian.

[0] http://marc.info/?l=linux-netdev&m=131072801125521&w=2
[1] http://marc.info/?l=linux-netdev&m=130925719513084&w=2

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 21:03   ` Michał Mirosław
  2011-10-05 10:28 ` [PATCH 2/8] xen: netback: " Ian Campbell
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Ian Campbell, Jon Mason

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Jon Mason <jdmason@kudzu.us>
Cc: netdev@vger.kernel.org
---
 drivers/net/ethernet/neterion/vxge/vxge-main.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index ef1ba204..7420e19 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -923,9 +923,9 @@ vxge_xmit(struct sk_buff *skb, struct net_device *dev)
 		if (!frag->size)
 			continue;
 
-		dma_pointer = (u64) pci_map_page(fifo->pdev, frag->page,
-				frag->page_offset, frag->size,
-				PCI_DMA_TODEVICE);
+		dma_pointer = (u64)skb_frag_dma_map(&fifo->pdev->dev, frag,
+						    0, frag->size,
+						    PCI_DMA_TODEVICE);
 
 		if (unlikely(pci_dma_mapping_error(fifo->pdev, dma_pointer)))
 			goto _exit2;
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 2/8] xen: netback: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
  2011-10-05 10:28 ` [PATCH 1/8] vxge: convert to SKB paged frag API Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 10:28 ` [PATCH 3/8] xen: netfront: " Ian Campbell
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Ian Campbell, xen-devel

netback currently uses frag->page to store a temporary index reference while
processing incoming requests. Since frag->page is to become opaque switch
instead to using page_offset. Add a wrapper to tidy this up and propagate the
fact that the indexes are only u16 through the code (this was already true in
practice but unsigned long and in were inconsistently used as variable and
parameter types)

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: xen-devel@lists.xensource.com
Cc: netdev@vger.kernel.org
---
 drivers/net/xen-netback/netback.c |   54 ++++++++++++++++++++++--------------
 1 files changed, 33 insertions(+), 21 deletions(-)

diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index fd00f25..8d70b44 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -60,6 +60,9 @@ struct netbk_rx_meta {
 
 #define MAX_PENDING_REQS 256
 
+/* Discriminate from any valid pending_idx value. */
+#define INVALID_PENDING_IDX 0xFFFF
+
 #define MAX_BUFFER_OFFSET PAGE_SIZE
 
 /* extra field used in struct page */
@@ -155,13 +158,13 @@ static struct xen_netif_rx_response *make_rx_response(struct xenvif *vif,
 					     u16      flags);
 
 static inline unsigned long idx_to_pfn(struct xen_netbk *netbk,
-				       unsigned int idx)
+				       u16 idx)
 {
 	return page_to_pfn(netbk->mmap_pages[idx]);
 }
 
 static inline unsigned long idx_to_kaddr(struct xen_netbk *netbk,
-					 unsigned int idx)
+					 u16 idx)
 {
 	return (unsigned long)pfn_to_kaddr(idx_to_pfn(netbk, idx));
 }
@@ -215,6 +218,16 @@ static int get_page_ext(struct page *pg,
 			 sizeof(struct iphdr) + MAX_IPOPTLEN + \
 			 sizeof(struct tcphdr) + MAX_TCP_OPTION_SPACE)
 
+static u16 frag_get_pending_idx(skb_frag_t *frag)
+{
+	return (u16)frag->page_offset;
+}
+
+static void frag_set_pending_idx(skb_frag_t *frag, u16 pending_idx)
+{
+	frag->page_offset = pending_idx;
+}
+
 static inline pending_ring_idx_t pending_index(unsigned i)
 {
 	return i & (MAX_PENDING_REQS-1);
@@ -512,7 +525,7 @@ static int netbk_gop_skb(struct sk_buff *skb,
 
 	for (i = 0; i < nr_frags; i++) {
 		netbk_gop_frag_copy(vif, skb, npo,
-				    skb_shinfo(skb)->frags[i].page,
+				    skb_frag_page(&skb_shinfo(skb)->frags[i]),
 				    skb_shinfo(skb)->frags[i].size,
 				    skb_shinfo(skb)->frags[i].page_offset,
 				    &head);
@@ -890,7 +903,7 @@ static int netbk_count_requests(struct xenvif *vif,
 
 static struct page *xen_netbk_alloc_page(struct xen_netbk *netbk,
 					 struct sk_buff *skb,
-					 unsigned long pending_idx)
+					 u16 pending_idx)
 {
 	struct page *page;
 	page = alloc_page(GFP_KERNEL|__GFP_COLD);
@@ -909,11 +922,11 @@ static struct gnttab_copy *xen_netbk_get_requests(struct xen_netbk *netbk,
 {
 	struct skb_shared_info *shinfo = skb_shinfo(skb);
 	skb_frag_t *frags = shinfo->frags;
-	unsigned long pending_idx = *((u16 *)skb->data);
+	u16 pending_idx = *((u16 *)skb->data);
 	int i, start;
 
 	/* Skip first skb fragment if it is on same page as header fragment. */
-	start = ((unsigned long)shinfo->frags[0].page == pending_idx);
+	start = (frag_get_pending_idx(&shinfo->frags[0]) == pending_idx);
 
 	for (i = start; i < shinfo->nr_frags; i++, txp++) {
 		struct page *page;
@@ -945,7 +958,7 @@ static struct gnttab_copy *xen_netbk_get_requests(struct xen_netbk *netbk,
 		memcpy(&pending_tx_info[pending_idx].req, txp, sizeof(*txp));
 		xenvif_get(vif);
 		pending_tx_info[pending_idx].vif = vif;
-		frags[i].page = (void *)pending_idx;
+		frag_set_pending_idx(&frags[i], pending_idx);
 	}
 
 	return gop;
@@ -956,7 +969,7 @@ static int xen_netbk_tx_check_gop(struct xen_netbk *netbk,
 				  struct gnttab_copy **gopp)
 {
 	struct gnttab_copy *gop = *gopp;
-	int pending_idx = *((u16 *)skb->data);
+	u16 pending_idx = *((u16 *)skb->data);
 	struct pending_tx_info *pending_tx_info = netbk->pending_tx_info;
 	struct xenvif *vif = pending_tx_info[pending_idx].vif;
 	struct xen_netif_tx_request *txp;
@@ -976,13 +989,13 @@ static int xen_netbk_tx_check_gop(struct xen_netbk *netbk,
 	}
 
 	/* Skip first skb fragment if it is on same page as header fragment. */
-	start = ((unsigned long)shinfo->frags[0].page == pending_idx);
+	start = (frag_get_pending_idx(&shinfo->frags[0]) == pending_idx);
 
 	for (i = start; i < nr_frags; i++) {
 		int j, newerr;
 		pending_ring_idx_t index;
 
-		pending_idx = (unsigned long)shinfo->frags[i].page;
+		pending_idx = frag_get_pending_idx(&shinfo->frags[i]);
 
 		/* Check error status: if okay then remember grant handle. */
 		newerr = (++gop)->status;
@@ -1008,7 +1021,7 @@ static int xen_netbk_tx_check_gop(struct xen_netbk *netbk,
 		pending_idx = *((u16 *)skb->data);
 		xen_netbk_idx_release(netbk, pending_idx);
 		for (j = start; j < i; j++) {
-			pending_idx = (unsigned long)shinfo->frags[i].page;
+			pending_idx = frag_get_pending_idx(&shinfo->frags[i]);
 			xen_netbk_idx_release(netbk, pending_idx);
 		}
 
@@ -1029,15 +1042,14 @@ static void xen_netbk_fill_frags(struct xen_netbk *netbk, struct sk_buff *skb)
 	for (i = 0; i < nr_frags; i++) {
 		skb_frag_t *frag = shinfo->frags + i;
 		struct xen_netif_tx_request *txp;
-		unsigned long pending_idx;
+		struct page *page;
+		u16 pending_idx;
 
-		pending_idx = (unsigned long)frag->page;
+		pending_idx = frag_get_pending_idx(frag);
 
 		txp = &netbk->pending_tx_info[pending_idx].req;
-		frag->page = virt_to_page(idx_to_kaddr(netbk, pending_idx));
-		frag->size = txp->size;
-		frag->page_offset = txp->offset;
-
+		page = virt_to_page(idx_to_kaddr(netbk, pending_idx));
+		__skb_fill_page_desc(skb, i, page, txp->offset, txp->size);
 		skb->len += txp->size;
 		skb->data_len += txp->size;
 		skb->truesize += txp->size;
@@ -1349,11 +1361,11 @@ static unsigned xen_netbk_tx_build_gops(struct xen_netbk *netbk)
 		skb_shinfo(skb)->nr_frags = ret;
 		if (data_len < txreq.size) {
 			skb_shinfo(skb)->nr_frags++;
-			skb_shinfo(skb)->frags[0].page =
-				(void *)(unsigned long)pending_idx;
+			frag_set_pending_idx(&skb_shinfo(skb)->frags[0],
+					     pending_idx);
 		} else {
-			/* Discriminate from any valid pending_idx value. */
-			skb_shinfo(skb)->frags[0].page = (void *)~0UL;
+			frag_set_pending_idx(&skb_shinfo(skb)->frags[0],
+					     INVALID_PENDING_IDX);
 		}
 
 		__skb_queue_tail(&netbk->tx_queue, skb);
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 3/8] xen: netfront: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
  2011-10-05 10:28 ` [PATCH 1/8] vxge: convert to SKB paged frag API Ian Campbell
  2011-10-05 10:28 ` [PATCH 2/8] xen: netback: " Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 10:28 ` [PATCH 4/8] et131x: " Ian Campbell
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Ian Campbell, Jeremy Fitzhardinge, Konrad Rzeszutek Wilk,
	xen-devel

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: xen-devel@lists.xensource.com
Cc: netdev@vger.kernel.org
---
 drivers/net/xen-netfront.c |   34 +++++++++++++++++++---------------
 1 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index d7c8a98..6e5d4c0 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -275,7 +275,7 @@ no_skb:
 			break;
 		}
 
-		skb_shinfo(skb)->frags[0].page = page;
+		__skb_fill_page_desc(skb, 0, page, 0, 0);
 		skb_shinfo(skb)->nr_frags = 1;
 		__skb_queue_tail(&np->rx_batch, skb);
 	}
@@ -309,8 +309,8 @@ no_skb:
 		BUG_ON((signed short)ref < 0);
 		np->grant_rx_ref[id] = ref;
 
-		pfn = page_to_pfn(skb_shinfo(skb)->frags[0].page);
-		vaddr = page_address(skb_shinfo(skb)->frags[0].page);
+		pfn = page_to_pfn(skb_frag_page(&skb_shinfo(skb)->frags[0]));
+		vaddr = page_address(skb_frag_page(&skb_shinfo(skb)->frags[0]));
 
 		req = RING_GET_REQUEST(&np->rx, req_prod + i);
 		gnttab_grant_foreign_access_ref(ref,
@@ -461,7 +461,7 @@ static void xennet_make_frags(struct sk_buff *skb, struct net_device *dev,
 		ref = gnttab_claim_grant_reference(&np->gref_tx_head);
 		BUG_ON((signed short)ref < 0);
 
-		mfn = pfn_to_mfn(page_to_pfn(frag->page));
+		mfn = pfn_to_mfn(page_to_pfn(skb_frag_page(frag)));
 		gnttab_grant_foreign_access_ref(ref, np->xbdev->otherend_id,
 						mfn, GNTMAP_readonly);
 
@@ -762,23 +762,22 @@ static RING_IDX xennet_fill_frags(struct netfront_info *np,
 	struct skb_shared_info *shinfo = skb_shinfo(skb);
 	int nr_frags = shinfo->nr_frags;
 	RING_IDX cons = np->rx.rsp_cons;
-	skb_frag_t *frag = shinfo->frags + nr_frags;
 	struct sk_buff *nskb;
 
 	while ((nskb = __skb_dequeue(list))) {
 		struct xen_netif_rx_response *rx =
 			RING_GET_RESPONSE(&np->rx, ++cons);
+		skb_frag_t *nfrag = &skb_shinfo(nskb)->frags[0];
 
-		frag->page = skb_shinfo(nskb)->frags[0].page;
-		frag->page_offset = rx->offset;
-		frag->size = rx->status;
+		__skb_fill_page_desc(skb, nr_frags,
+				     skb_frag_page(nfrag),
+				     rx->offset, rx->status);
 
 		skb->data_len += rx->status;
 
 		skb_shinfo(nskb)->nr_frags = 0;
 		kfree_skb(nskb);
 
-		frag++;
 		nr_frags++;
 	}
 
@@ -873,7 +872,7 @@ static int handle_incoming_queue(struct net_device *dev,
 		memcpy(skb->data, vaddr + offset,
 		       skb_headlen(skb));
 
-		if (page != skb_shinfo(skb)->frags[0].page)
+		if (page != skb_frag_page(&skb_shinfo(skb)->frags[0]))
 			__free_page(page);
 
 		/* Ethernet work: Delayed to here as it peeks the header. */
@@ -954,7 +953,8 @@ err:
 			}
 		}
 
-		NETFRONT_SKB_CB(skb)->page = skb_shinfo(skb)->frags[0].page;
+		NETFRONT_SKB_CB(skb)->page =
+			skb_frag_page(&skb_shinfo(skb)->frags[0]);
 		NETFRONT_SKB_CB(skb)->offset = rx->offset;
 
 		len = rx->status;
@@ -968,7 +968,7 @@ err:
 			skb_shinfo(skb)->frags[0].size = rx->status - len;
 			skb->data_len = rx->status - len;
 		} else {
-			skb_shinfo(skb)->frags[0].page = NULL;
+			__skb_fill_page_desc(skb, 0, NULL, 0, 0);
 			skb_shinfo(skb)->nr_frags = 0;
 		}
 
@@ -1143,7 +1143,8 @@ static void xennet_release_rx_bufs(struct netfront_info *np)
 
 		if (!xen_feature(XENFEAT_auto_translated_physmap)) {
 			/* Remap the page. */
-			struct page *page = skb_shinfo(skb)->frags[0].page;
+			const struct page *page =
+				skb_frag_page(&skb_shinfo(skb)->frags[0]);
 			unsigned long pfn = page_to_pfn(page);
 			void *vaddr = page_address(page);
 
@@ -1650,6 +1651,8 @@ static int xennet_connect(struct net_device *dev)
 
 	/* Step 2: Rebuild the RX buffer freelist and the RX ring itself. */
 	for (requeue_idx = 0, i = 0; i < NET_RX_RING_SIZE; i++) {
+		skb_frag_t *frag;
+		const struct page *page;
 		if (!np->rx_skbs[i])
 			continue;
 
@@ -1657,10 +1660,11 @@ static int xennet_connect(struct net_device *dev)
 		ref = np->grant_rx_ref[requeue_idx] = xennet_get_rx_ref(np, i);
 		req = RING_GET_REQUEST(&np->rx, requeue_idx);
 
+		frag = &skb_shinfo(skb)->frags[0];
+		page = skb_frag_page(frag);
 		gnttab_grant_foreign_access_ref(
 			ref, np->xbdev->otherend_id,
-			pfn_to_mfn(page_to_pfn(skb_shinfo(skb)->
-					       frags->page)),
+			pfn_to_mfn(page_to_pfn(page)),
 			0);
 		req->gref = ref;
 		req->id   = requeue_idx;
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 4/8] et131x: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
                   ` (2 preceding siblings ...)
  2011-10-05 10:28 ` [PATCH 3/8] xen: netfront: " Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 10:28 ` [PATCH 5/8] hv: netvsc: " Ian Campbell
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Ian Campbell, Greg Kroah-Hartman, Mark Einon, devel

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: Mark Einon <mark.einon@gmail.com>
Cc: devel@driverdev.osuosl.org
Cc: netdev@vger.kernel.org
---
 drivers/staging/et131x/et1310_tx.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/et131x/et1310_tx.c b/drivers/staging/et131x/et1310_tx.c
index 8fb3051..03e7a4e 100644
--- a/drivers/staging/et131x/et1310_tx.c
+++ b/drivers/staging/et131x/et1310_tx.c
@@ -519,12 +519,12 @@ static int nic_send_packet(struct et131x_adapter *etdev, struct tcb *tcb)
 			 * returned by pci_map_page() is always 32-bit
 			 * addressable (as defined by the pci/dma subsystem)
 			 */
-			desc[frag++].addr_lo =
-			    pci_map_page(etdev->pdev,
-					 frags[i - 1].page,
-					 frags[i - 1].page_offset,
-					 frags[i - 1].size,
-					 PCI_DMA_TODEVICE);
+			desc[frag++].addr_lo = skb_frag_dma_map(
+							&etdev->pdev->dev,
+							&frags[i - 1],
+							0,
+							frags[i - 1].size,
+							PCI_DMA_TODEVICE);
 		}
 	}
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 5/8] hv: netvsc: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
                   ` (3 preceding siblings ...)
  2011-10-05 10:28 ` [PATCH 4/8] et131x: " Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 10:28 ` [PATCH 6/8] myri10ge: " Ian Campbell
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev
  Cc: Ian Campbell, Hank Janssen, Haiyang Zhang, Greg Kroah-Hartman,
	K. Y. Srinivasan, Abhishek Kane, devel

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Hank Janssen <hjanssen@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Abhishek Kane <v-abkane@microsoft.com>
Cc: devel@driverdev.osuosl.org
Cc: netdev@vger.kernel.org
---
 drivers/staging/hv/netvsc_drv.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index bfd4c81..58792ae 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -171,7 +171,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
 		skb_frag_t *f = &skb_shinfo(skb)->frags[i];
 
-		packet->page_buf[i+2].pfn = page_to_pfn(f->page);
+		packet->page_buf[i+2].pfn = page_to_pfn(skb_frag_page(f));
 		packet->page_buf[i+2].offset = f->page_offset;
 		packet->page_buf[i+2].len = f->size;
 	}
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 6/8] myri10ge: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
                   ` (4 preceding siblings ...)
  2011-10-05 10:28 ` [PATCH 5/8] hv: netvsc: " Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 10:28 ` [PATCH 7/8] cxgb3: " Ian Campbell
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Ian Campbell, Jon Mason, Andrew Gallatin

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Jon Mason <mason@myri.com>
Cc: Andrew Gallatin <gallatin@myri.com>
Cc: netdev@vger.kernel.org
---
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index 81c1700..8bf6034 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -1342,7 +1342,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum,
 	/* Fill skb_frag_struct(s) with data from our receive */
 	for (i = 0, remainder = len; remainder > 0; i++) {
 		myri10ge_unmap_rx_page(pdev, &rx->info[idx], bytes);
-		rx_frags[i].page = rx->info[idx].page;
+		__skb_frag_set_page(&rx_frags[i], rx->info[idx].page);
 		rx_frags[i].page_offset = rx->info[idx].page_offset;
 		if (remainder < MYRI10GE_ALLOC_SIZE)
 			rx_frags[i].size = remainder;
@@ -1375,7 +1375,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum,
 		ss->stats.rx_dropped++;
 		do {
 			i--;
-			put_page(rx_frags[i].page);
+			__skb_frag_unref(&rx_frags[i]);
 		} while (i != 0);
 		return 0;
 	}
@@ -1383,7 +1383,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum,
 	/* Attach the pages to the skb, and trim off any padding */
 	myri10ge_rx_skb_build(skb, va, rx_frags, len, hlen);
 	if (skb_shinfo(skb)->frags[0].size <= 0) {
-		put_page(skb_shinfo(skb)->frags[0].page);
+		skb_frag_unref(skb, 0);
 		skb_shinfo(skb)->nr_frags = 0;
 	}
 	skb->protocol = eth_type_trans(skb, dev);
@@ -2284,7 +2284,7 @@ myri10ge_get_frag_header(struct skb_frag_struct *frag, void **mac_hdr,
 	struct ethhdr *eh;
 	struct vlan_ethhdr *veh;
 	struct iphdr *iph;
-	u8 *va = page_address(frag->page) + frag->page_offset;
+	u8 *va = skb_frag_address(frag);
 	unsigned long ll_hlen;
 	/* passed opaque through lro_receive_frags() */
 	__wsum csum = (__force __wsum) (unsigned long)priv;
@@ -2927,8 +2927,8 @@ again:
 		frag = &skb_shinfo(skb)->frags[frag_idx];
 		frag_idx++;
 		len = frag->size;
-		bus = pci_map_page(mgp->pdev, frag->page, frag->page_offset,
-				   len, PCI_DMA_TODEVICE);
+		bus = skb_frag_dma_map(&mgp->pdev->dev, frag, 0, len,
+				       PCI_DMA_TODEVICE);
 		dma_unmap_addr_set(&tx->info[idx], bus, bus);
 		dma_unmap_len_set(&tx->info[idx], len, len);
 	}
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 7/8] cxgb3: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
                   ` (5 preceding siblings ...)
  2011-10-05 10:28 ` [PATCH 6/8] myri10ge: " Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 10:28 ` [PATCH 8/8] chelsio: " Ian Campbell
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Ian Campbell, Divy Le Ray

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Divy Le Ray <divy@chelsio.com>
Cc: netdev@vger.kernel.org
---
 drivers/net/ethernet/chelsio/cxgb3/sge.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
index d6fa177..a0baaa0 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
@@ -979,8 +979,8 @@ static inline unsigned int make_sgl(const struct sk_buff *skb,
 	for (i = 0; i < nfrags; i++) {
 		skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
 
-		mapping = pci_map_page(pdev, frag->page, frag->page_offset,
-				       frag->size, PCI_DMA_TODEVICE);
+		mapping = skb_frag_dma_map(&pdev->dev, frag, 0, frag->size,
+					   PCI_DMA_TODEVICE);
 		sgp->len[j] = cpu_to_be32(frag->size);
 		sgp->addr[j] = cpu_to_be64(mapping);
 		j ^= 1;
@@ -2116,7 +2116,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
 	len -= offset;
 
 	rx_frag += nr_frags;
-	rx_frag->page = sd->pg_chunk.page;
+	__skb_frag_set_page(rx_frag, sd->pg_chunk.page);
 	rx_frag->page_offset = sd->pg_chunk.offset + offset;
 	rx_frag->size = len;
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 8/8] chelsio: convert to SKB paged frag API.
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
                   ` (6 preceding siblings ...)
  2011-10-05 10:28 ` [PATCH 7/8] cxgb3: " Ian Campbell
@ 2011-10-05 10:28 ` Ian Campbell
  2011-10-05 19:17 ` [PATCH 0/8] skb fragment API: convert network drivers (part IV) Greg KH
  2011-10-05 21:36 ` David Miller
  9 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-05 10:28 UTC (permalink / raw)
  To: netdev; +Cc: Ian Campbell, Divy Le Ray, Dimitris Michailidis, Casey Leedom

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Divy Le Ray <divy@chelsio.com>
Cc: Dimitris Michailidis <dm@chelsio.com>
Cc: Casey Leedom <leedom@chelsio.com>
Cc: netdev@vger.kernel.org
---
 drivers/net/ethernet/chelsio/cxgb/sge.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c
index e9a03ff..7cde425 100644
--- a/drivers/net/ethernet/chelsio/cxgb/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb/sge.c
@@ -1277,9 +1277,8 @@ static inline void write_tx_descs(struct adapter *adapter, struct sk_buff *skb,
 			ce = q->centries;
 		}
 
-		mapping = pci_map_page(adapter->pdev, frag->page,
-				       frag->page_offset, frag->size,
-				       PCI_DMA_TODEVICE);
+		mapping = skb_frag_dma_map(&adapter->pdev->dev, frag, 0,
+					   frag->size, PCI_DMA_TODEVICE);
 		desc_mapping = mapping;
 		desc_len = frag->size;
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH 0/8] skb fragment API: convert network drivers (part IV)
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
                   ` (7 preceding siblings ...)
  2011-10-05 10:28 ` [PATCH 8/8] chelsio: " Ian Campbell
@ 2011-10-05 19:17 ` Greg KH
  2011-10-05 20:13   ` David Miller
  2011-10-05 21:36 ` David Miller
  9 siblings, 1 reply; 28+ messages in thread
From: Greg KH @ 2011-10-05 19:17 UTC (permalink / raw)
  To: Ian Campbell; +Cc: netdev

On Wed, Oct 05, 2011 at 11:28:30AM +0100, Ian Campbell wrote:
> The following series converts a forth batch of network drivers to the
> SKB pages fragment API introduced in 131ea6675c76.
> 
> There are two drivers/staging patches in here. I'm not sure who normally
> takes these, I'm sure you guys know though.

I take them.  As I don't have commit 131ea6675c76 in my tree
(staging-next), I'd have to wait until that patch gets merged into
Linus's tree, which should be after 3.2-rc1, right?  Mind if I hold off
in taking them until then?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 0/8] skb fragment API: convert network drivers (part IV)
  2011-10-05 19:17 ` [PATCH 0/8] skb fragment API: convert network drivers (part IV) Greg KH
@ 2011-10-05 20:13   ` David Miller
  2011-10-05 20:25     ` Greg KH
  0 siblings, 1 reply; 28+ messages in thread
From: David Miller @ 2011-10-05 20:13 UTC (permalink / raw)
  To: gregkh; +Cc: Ian.Campbell, netdev

From: Greg KH <gregkh@suse.de>
Date: Wed, 5 Oct 2011 12:17:17 -0700

> On Wed, Oct 05, 2011 at 11:28:30AM +0100, Ian Campbell wrote:
>> The following series converts a forth batch of network drivers to the
>> SKB pages fragment API introduced in 131ea6675c76.
>> 
>> There are two drivers/staging patches in here. I'm not sure who normally
>> takes these, I'm sure you guys know though.
> 
> I take them.  As I don't have commit 131ea6675c76 in my tree
> (staging-next), I'd have to wait until that patch gets merged into
> Linus's tree, which should be after 3.2-rc1, right?  Mind if I hold off
> in taking them until then?

We're trying to change all the driver accesses so we can change
the datastructures underneath this stuff.

If we have to wait until after 3.2-rc1, then we won't be able to
make the datastructure change this merge window.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 0/8] skb fragment API: convert network drivers (part IV)
  2011-10-05 20:13   ` David Miller
@ 2011-10-05 20:25     ` Greg KH
  2011-10-05 20:49       ` David Miller
  0 siblings, 1 reply; 28+ messages in thread
From: Greg KH @ 2011-10-05 20:25 UTC (permalink / raw)
  To: David Miller; +Cc: Ian.Campbell, netdev

On Wed, Oct 05, 2011 at 04:13:41PM -0400, David Miller wrote:
> From: Greg KH <gregkh@suse.de>
> Date: Wed, 5 Oct 2011 12:17:17 -0700
> 
> > On Wed, Oct 05, 2011 at 11:28:30AM +0100, Ian Campbell wrote:
> >> The following series converts a forth batch of network drivers to the
> >> SKB pages fragment API introduced in 131ea6675c76.
> >> 
> >> There are two drivers/staging patches in here. I'm not sure who normally
> >> takes these, I'm sure you guys know though.
> > 
> > I take them.  As I don't have commit 131ea6675c76 in my tree
> > (staging-next), I'd have to wait until that patch gets merged into
> > Linus's tree, which should be after 3.2-rc1, right?  Mind if I hold off
> > in taking them until then?
> 
> We're trying to change all the driver accesses so we can change
> the datastructures underneath this stuff.
> 
> If we have to wait until after 3.2-rc1, then we won't be able to
> make the datastructure change this merge window.

Then feel free to take these changes through your tree, I have no
objection to that.  I'll handle any merge issues on my side that might
happen, but given the size of these patches (i.e. almost trivial), I
doubt that would happen.

So feel free to add my:
	Acked-by: Greg Kroah-Hartman <gregkh@suse.de>

to these patches and take them through the networking tree.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 0/8] skb fragment API: convert network drivers (part IV)
  2011-10-05 20:25     ` Greg KH
@ 2011-10-05 20:49       ` David Miller
  0 siblings, 0 replies; 28+ messages in thread
From: David Miller @ 2011-10-05 20:49 UTC (permalink / raw)
  To: gregkh; +Cc: Ian.Campbell, netdev

From: Greg KH <gregkh@suse.de>
Date: Wed, 5 Oct 2011 13:25:58 -0700

> Then feel free to take these changes through your tree, I have no
> objection to that.  I'll handle any merge issues on my side that might
> happen, but given the size of these patches (i.e. almost trivial), I
> doubt that would happen.
> 
> So feel free to add my:
> 	Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
> 
> to these patches and take them through the networking tree.

Perfect, thanks a lot Greg.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-05 10:28 ` [PATCH 1/8] vxge: convert to SKB paged frag API Ian Campbell
@ 2011-10-05 21:03   ` Michał Mirosław
  2011-10-05 21:32     ` David Miller
  2011-10-06  7:05     ` Ian Campbell
  0 siblings, 2 replies; 28+ messages in thread
From: Michał Mirosław @ 2011-10-05 21:03 UTC (permalink / raw)
  To: Ian Campbell; +Cc: netdev, Jon Mason

2011/10/5 Ian Campbell <ian.campbell@citrix.com>:
[...]
> --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
> +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
> @@ -923,9 +923,9 @@ vxge_xmit(struct sk_buff *skb, struct net_device *dev)
>                if (!frag->size)
>                        continue;
>
> -               dma_pointer = (u64) pci_map_page(fifo->pdev, frag->page,
> -                               frag->page_offset, frag->size,
> -                               PCI_DMA_TODEVICE);
> +               dma_pointer = (u64)skb_frag_dma_map(&fifo->pdev->dev, frag,
> +                                                   0, frag->size,
> +                                                   PCI_DMA_TODEVICE);

This should be DMA_TO_DEVICE instead of PCI_DMA_TODEVICE.

>
>                if (unlikely(pci_dma_mapping_error(fifo->pdev, dma_pointer)))
>                        goto _exit2;

I would also change this to dma_mapping_error() in one go.

Just a random patch check.

Best Regards,
Michał Mirosław

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-05 21:03   ` Michał Mirosław
@ 2011-10-05 21:32     ` David Miller
  2011-10-06  7:05     ` Ian Campbell
  1 sibling, 0 replies; 28+ messages in thread
From: David Miller @ 2011-10-05 21:32 UTC (permalink / raw)
  To: mirqus; +Cc: ian.campbell, netdev, jdmason

From: Michał Mirosław <mirqus@gmail.com>
Date: Wed, 5 Oct 2011 23:03:27 +0200

> 2011/10/5 Ian Campbell <ian.campbell@citrix.com>:
> [...]
>> --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
>> +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
>> @@ -923,9 +923,9 @@ vxge_xmit(struct sk_buff *skb, struct net_device *dev)
>>                if (!frag->size)
>>                        continue;
>>
>> -               dma_pointer = (u64) pci_map_page(fifo->pdev, frag->page,
>> -                               frag->page_offset, frag->size,
>> -                               PCI_DMA_TODEVICE);
>> +               dma_pointer = (u64)skb_frag_dma_map(&fifo->pdev->dev, frag,
>> +                                                   0, frag->size,
>> +                                                   PCI_DMA_TODEVICE);
> 
> This should be DMA_TO_DEVICE instead of PCI_DMA_TODEVICE.
> 
>>
>>                if (unlikely(pci_dma_mapping_error(fifo->pdev, dma_pointer)))
>>                        goto _exit2;
> 
> I would also change this to dma_mapping_error() in one go.
> 
> Just a random patch check.

I'll make these adjustments when I apply this patch, thanks.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 0/8] skb fragment API: convert network drivers (part IV)
  2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
                   ` (8 preceding siblings ...)
  2011-10-05 19:17 ` [PATCH 0/8] skb fragment API: convert network drivers (part IV) Greg KH
@ 2011-10-05 21:36 ` David Miller
  9 siblings, 0 replies; 28+ messages in thread
From: David Miller @ 2011-10-05 21:36 UTC (permalink / raw)
  To: Ian.Campbell; +Cc: netdev, gregkh

From: Ian Campbell <Ian.Campbell@citrix.com>
Date: Wed, 5 Oct 2011 11:28:30 +0100

> The following series converts a forth batch of network drivers to the
> SKB pages fragment API introduced in 131ea6675c76.
> 
> There are two drivers/staging patches in here. I'm not sure who normally
> takes these, I'm sure you guys know though.
> 
> After this batch there are ~4 drivers which need a little more thought
> (the inevitable fifth out of four series...). Specifically these drivers
> will switch from skb_frag_t -> struct subpage (which I am going to
> introduce shortly) in their internal data structures, this will isolate
> them from changes to skb_frag_t coming from the network core.

All applied with the mentioned vxge adjustments, thanks Ian.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-05 21:03   ` Michał Mirosław
  2011-10-05 21:32     ` David Miller
@ 2011-10-06  7:05     ` Ian Campbell
  2011-10-06 16:00       ` Ian Campbell
  1 sibling, 1 reply; 28+ messages in thread
From: Ian Campbell @ 2011-10-06  7:05 UTC (permalink / raw)
  To: Michał Mirosław; +Cc: netdev@vger.kernel.org, Jon Mason

On Wed, 2011-10-05 at 22:03 +0100, Michał Mirosław wrote:
> 2011/10/5 Ian Campbell <ian.campbell@citrix.com>:
> [...]
> > --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
> > +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
> > @@ -923,9 +923,9 @@ vxge_xmit(struct sk_buff *skb, struct net_device *dev)
> >                if (!frag->size)
> >                        continue;
> >
> > -               dma_pointer = (u64) pci_map_page(fifo->pdev, frag->page,
> > -                               frag->page_offset, frag->size,
> > -                               PCI_DMA_TODEVICE);
> > +               dma_pointer = (u64)skb_frag_dma_map(&fifo->pdev->dev, frag,
> > +                                                   0, frag->size,
> > +                                                   PCI_DMA_TODEVICE);
> 
> This should be DMA_TO_DEVICE instead of PCI_DMA_TODEVICE.
> 
> >
> >                if (unlikely(pci_dma_mapping_error(fifo->pdev, dma_pointer)))
> >                        goto _exit2;
> 
> I would also change this to dma_mapping_error() in one go.
> 
> Just a random patch check.

Thanks Michał.

I'm sure I must have made the same mistakes in a whole bunch of patches
which have already been applied. I'll knock up a fixup patch.

Cheers,
Ian.

> 
> Best Regards,
> Michał Mirosław

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06  7:05     ` Ian Campbell
@ 2011-10-06 16:00       ` Ian Campbell
  2011-10-06 20:00         ` David Miller
  2011-10-06 20:45         ` Michał Mirosław
  0 siblings, 2 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-06 16:00 UTC (permalink / raw)
  To: Michał Mirosław, David Miller; +Cc: netdev@vger.kernel.org, Jon Mason

On Thu, 2011-10-06 at 08:05 +0100, Ian Campbell wrote:
> On Wed, 2011-10-05 at 22:03 +0100, Michał Mirosław wrote:
> > 2011/10/5 Ian Campbell <ian.campbell@citrix.com>:
> > [...]
> > > --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
> > > +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
> > > @@ -923,9 +923,9 @@ vxge_xmit(struct sk_buff *skb, struct net_device *dev)
> > >                if (!frag->size)
> > >                        continue;
> > >
> > > -               dma_pointer = (u64) pci_map_page(fifo->pdev, frag->page,
> > > -                               frag->page_offset, frag->size,
> > > -                               PCI_DMA_TODEVICE);
> > > +               dma_pointer = (u64)skb_frag_dma_map(&fifo->pdev->dev, frag,
> > > +                                                   0, frag->size,
> > > +                                                   PCI_DMA_TODEVICE);
> > 
> > This should be DMA_TO_DEVICE instead of PCI_DMA_TODEVICE.
> > 
> > >
> > >                if (unlikely(pci_dma_mapping_error(fifo->pdev, dma_pointer)))
> > >                        goto _exit2;
> > 
> > I would also change this to dma_mapping_error() in one go.
> > 
> > Just a random patch check.
> 
> Thanks Michał.
> 
> I'm sure I must have made the same mistakes in a whole bunch of patches
> which have already been applied. I'll knock up a fixup patch.

Here it is. David, if you want N separate patches (or a git pull
request?) let me know.

8<---------------------------------------------

From 755028af197868cc63ac71248742b3bc3eefaf37 Mon Sep 17 00:00:00 2001
From: Ian Campbell <ian.campbell@citrix.com>
Date: Thu, 6 Oct 2011 11:10:48 +0100
Subject: [PATCH] net: use DMA_x_DEVICE and dma_mapping_error with skb_frag_dma_map

When I converted some drivers from pci_map_page to skb_frag_dma_map I
neglected to convert PCI_DMA_xDEVICE into DMA_x_DEVICE and
pci_dma_mapping_error into dma_mapping_error.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
 drivers/infiniband/hw/amso1100/c2.c                |    3 +--
 drivers/infiniband/hw/nes/nes_nic.c                |    4 ++--
 drivers/net/ethernet/alteon/acenic.c               |    2 +-
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c    |    2 +-
 drivers/net/ethernet/atheros/atl1e/atl1e_main.c    |    2 +-
 drivers/net/ethernet/atheros/atlx/atl1.c           |    2 +-
 drivers/net/ethernet/broadcom/bnx2.c               |    2 +-
 drivers/net/ethernet/broadcom/tg3.c                |    4 ++--
 drivers/net/ethernet/chelsio/cxgb/sge.c            |    2 +-
 drivers/net/ethernet/chelsio/cxgb3/sge.c           |    2 +-
 drivers/net/ethernet/cisco/enic/enic_main.c        |    4 ++--
 drivers/net/ethernet/marvell/skge.c                |    2 +-
 drivers/net/ethernet/marvell/sky2.c                |    8 ++++----
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c   |    2 +-
 drivers/net/ethernet/natsemi/ns83820.c             |    2 +-
 drivers/net/ethernet/neterion/s2io.c               |    2 +-
 drivers/net/ethernet/nvidia/forcedeth.c            |    4 ++--
 drivers/net/ethernet/pasemi/pasemi_mac.c           |    4 ++--
 .../net/ethernet/qlogic/netxen/netxen_nic_main.c   |    4 ++--
 drivers/net/ethernet/qlogic/qla3xxx.c              |    4 ++--
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |    4 ++--
 drivers/net/ethernet/qlogic/qlge/qlge_main.c       |    4 ++--
 drivers/net/ethernet/sfc/tx.c                      |    6 +++---
 drivers/net/ethernet/sun/cassini.c                 |    2 +-
 drivers/net/ethernet/sun/sungem.c                  |    2 +-
 drivers/net/ethernet/tehuti/tehuti.c               |    2 +-
 drivers/net/ethernet/via/via-velocity.c            |    2 +-
 drivers/net/vmxnet3/vmxnet3_drv.c                  |    2 +-
 drivers/staging/et131x/et1310_tx.c                 |    2 +-
 29 files changed, 43 insertions(+), 44 deletions(-)

diff --git a/drivers/infiniband/hw/amso1100/c2.c b/drivers/infiniband/hw/amso1100/c2.c
index 6a8f36e..6e85a75 100644
--- a/drivers/infiniband/hw/amso1100/c2.c
+++ b/drivers/infiniband/hw/amso1100/c2.c
@@ -803,8 +803,7 @@ static int c2_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
 			skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
 			maplen = frag->size;
 			mapaddr = skb_frag_dma_map(&c2dev->pcidev->dev, frag,
-						   0, maplen,
-						   PCI_DMA_TODEVICE);
+						   0, maplen, DMA_TO_DEVICE);
 			elem = elem->next;
 			elem->skb = NULL;
 			elem->mapaddr = mapaddr;
diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
index 96cb35a..7cb7f29 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -445,7 +445,7 @@ static int nes_nic_send(struct sk_buff *skb, struct net_device *netdev)
 				&skb_shinfo(skb)->frags[skb_fragment_index];
 			bus_address = skb_frag_dma_map(&nesdev->pcidev->dev,
 						       frag, 0, frag->size,
-						       PCI_DMA_TODEVICE);
+						       DMA_TO_DEVICE);
 			wqe_fragment_length[wqe_fragment_index] =
 					cpu_to_le16(skb_shinfo(skb)->frags[skb_fragment_index].size);
 			set_wqe_64bit_value(nic_sqe->wqe_words, NES_NIC_SQ_WQE_FRAG0_LOW_IDX+(2*wqe_fragment_index),
@@ -566,7 +566,7 @@ tso_sq_no_longer_full:
 				tso_bus_address[tso_frag_count] =
 					skb_frag_dma_map(&nesdev->pcidev->dev,
 							 frag, 0, frag->size,
-							 PCI_DMA_TODEVICE);
+							 DMA_TO_DEVICE);
 			}
 
 			tso_frag_index = 0;
diff --git a/drivers/net/ethernet/alteon/acenic.c b/drivers/net/ethernet/alteon/acenic.c
index 8794cf8..b1a4e82 100644
--- a/drivers/net/ethernet/alteon/acenic.c
+++ b/drivers/net/ethernet/alteon/acenic.c
@@ -2487,7 +2487,7 @@ restart:
 
 			mapping = skb_frag_dma_map(&ap->pdev->dev, frag, 0,
 						   frag->size,
-						   PCI_DMA_TODEVICE);
+						   DMA_TO_DEVICE);
 
 			flagsize = (frag->size << 16);
 			if (skb->ip_summed == CHECKSUM_PARTIAL)
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index 2b9f925..12a0b30 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -2183,7 +2183,7 @@ static void atl1c_tx_map(struct atl1c_adapter *adapter,
 		buffer_info->dma = skb_frag_dma_map(&adapter->pdev->dev,
 						    frag, 0,
 						    buffer_info->length,
-						    PCI_DMA_TODEVICE);
+						    DMA_TO_DEVICE);
 		ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY);
 		ATL1C_SET_PCIMAP_TYPE(buffer_info, ATL1C_PCIMAP_PAGE,
 			ATL1C_PCIMAP_TODEVICE);
diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
index 7e27eb3..97c45a4b 100644
--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
@@ -1769,7 +1769,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter,
 							  frag,
 							  (i * MAX_TX_BUF_LEN),
 							  tx_buffer->length,
-							  PCI_DMA_TODEVICE);
+							  DMA_TO_DEVICE);
 			ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_PAGE);
 			use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma);
 			use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) |
diff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c
index edf826a..43511ab 100644
--- a/drivers/net/ethernet/atheros/atlx/atl1.c
+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
@@ -2285,7 +2285,7 @@ static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
 			buf_len -= buffer_info->length;
 			buffer_info->dma = skb_frag_dma_map(&adapter->pdev->dev,
 				frag, i * ATL1_MAX_TX_BUF_LEN,
-				buffer_info->length, PCI_DMA_TODEVICE);
+				buffer_info->length, DMA_TO_DEVICE);
 
 			if (++next_to_use == tpd_ring->count)
 				next_to_use = 0;
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 21bdda3..ad24d8c 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -6539,7 +6539,7 @@ bnx2_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 		len = frag->size;
 		mapping = skb_frag_dma_map(&bp->pdev->dev, frag, 0, len,
-					   PCI_DMA_TODEVICE);
+					   DMA_TO_DEVICE);
 		if (dma_mapping_error(&bp->pdev->dev, mapping))
 			goto dma_error;
 		dma_unmap_addr_set(&txr->tx_buf_ring[ring_prod], mapping,
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 26c6bd4..3abcb4d 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -6779,12 +6779,12 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 			len = frag->size;
 			mapping = skb_frag_dma_map(&tp->pdev->dev, frag, 0,
-						   len, PCI_DMA_TODEVICE);
+						   len, DMA_TO_DEVICE);
 
 			tnapi->tx_buffers[entry].skb = NULL;
 			dma_unmap_addr_set(&tnapi->tx_buffers[entry], mapping,
 					   mapping);
-			if (pci_dma_mapping_error(tp->pdev, mapping))
+			if (dma_mapping_error(tp->pdev, mapping))
 				goto dma_error;
 
 			if (tg3_tx_frag_set(tnapi, &entry, &budget, mapping,
diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c
index 7cde425..0a511c4a 100644
--- a/drivers/net/ethernet/chelsio/cxgb/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb/sge.c
@@ -1278,7 +1278,7 @@ static inline void write_tx_descs(struct adapter *adapter, struct sk_buff *skb,
 		}
 
 		mapping = skb_frag_dma_map(&adapter->pdev->dev, frag, 0,
-					   frag->size, PCI_DMA_TODEVICE);
+					   frag->size, DMA_TO_DEVICE);
 		desc_mapping = mapping;
 		desc_len = frag->size;
 
diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
index a0baaa0..2f46b37 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
@@ -980,7 +980,7 @@ static inline unsigned int make_sgl(const struct sk_buff *skb,
 		skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
 
 		mapping = skb_frag_dma_map(&pdev->dev, frag, 0, frag->size,
-					   PCI_DMA_TODEVICE);
+					   DMA_TO_DEVICE);
 		sgp->len[j] = cpu_to_be32(frag->size);
 		sgp->addr[j] = cpu_to_be64(mapping);
 		j ^= 1;
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index aeab6cd..1bc908f 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -607,7 +607,7 @@ static inline void enic_queue_wq_skb_cont(struct enic *enic,
 		enic_queue_wq_desc_cont(wq, skb,
 			skb_frag_dma_map(&enic->pdev->dev,
 					 frag, 0, frag->size,
-					 PCI_DMA_TODEVICE),
+					 DMA_TO_DEVICE),
 			frag->size,
 			(len_left == 0),	/* EOP? */
 			loopback);
@@ -726,7 +726,7 @@ static inline void enic_queue_wq_skb_tso(struct enic *enic,
 				(unsigned int)WQ_ENET_MAX_DESC_LEN);
 			dma_addr = skb_frag_dma_map(&enic->pdev->dev, frag,
 						    offset, len,
-						    PCI_DMA_TODEVICE);
+						    DMA_TO_DEVICE);
 			enic_queue_wq_desc_cont(wq, skb,
 				dma_addr,
 				len,
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
index a0a6471..32db4c8 100644
--- a/drivers/net/ethernet/marvell/skge.c
+++ b/drivers/net/ethernet/marvell/skge.c
@@ -2777,7 +2777,7 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb,
 			skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
 
 			map = skb_frag_dma_map(&hw->pdev->dev, frag, 0,
-					       frag->size, PCI_DMA_TODEVICE);
+					       frag->size, DMA_TO_DEVICE);
 
 			e = e->next;
 			e->skb = skb;
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 338b10c..7baff3e 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -1229,9 +1229,9 @@ static int sky2_rx_map_skb(struct pci_dev *pdev, struct rx_ring_info *re,
 
 		re->frag_addr[i] = skb_frag_dma_map(&pdev->dev, frag, 0,
 						    frag->size,
-						    PCI_DMA_FROMDEVICE);
+						    DMA_FROM_DEVICE);
 
-		if (pci_dma_mapping_error(pdev, re->frag_addr[i]))
+		if (dma_mapping_error(pdev, re->frag_addr[i]))
 			goto map_page_error;
 	}
 	return 0;
@@ -1936,9 +1936,9 @@ static netdev_tx_t sky2_xmit_frame(struct sk_buff *skb,
 		const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
 
 		mapping = skb_frag_dma_map(&hw->pdev->dev, frag, 0,
-					   frag->size, PCI_DMA_TODEVICE);
+					   frag->size, DMA_TO_DEVICE);
 
-		if (pci_dma_mapping_error(hw->pdev, mapping))
+		if (dma_mapping_error(hw->pdev, mapping))
 			goto mapping_unwind;
 
 		upper = upper_32_bits(mapping);
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index 8bf6034..2663727 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -2928,7 +2928,7 @@ again:
 		frag_idx++;
 		len = frag->size;
 		bus = skb_frag_dma_map(&mgp->pdev->dev, frag, 0, len,
-				       PCI_DMA_TODEVICE);
+				       DMA_TO_DEVICE);
 		dma_unmap_addr_set(&tx->info[idx], bus, bus);
 		dma_unmap_len_set(&tx->info[idx], len, len);
 	}
diff --git a/drivers/net/ethernet/natsemi/ns83820.c b/drivers/net/ethernet/natsemi/ns83820.c
index e0895e4..73616b9 100644
--- a/drivers/net/ethernet/natsemi/ns83820.c
+++ b/drivers/net/ethernet/natsemi/ns83820.c
@@ -1161,7 +1161,7 @@ again:
 			break;
 
 		buf = skb_frag_dma_map(&dev->pci_dev->dev, frag, 0,
-				       frag->size, PCI_DMA_TODEVICE);
+				       frag->size, DMA_TO_DEVICE);
 		dprintk("frag: buf=%08Lx  page=%08lx offset=%08lx\n",
 			(long long)buf, (long) page_to_pfn(frag->page),
 			frag->page_offset);
diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
index ef5b825..4ec7e3f 100644
--- a/drivers/net/ethernet/neterion/s2io.c
+++ b/drivers/net/ethernet/neterion/s2io.c
@@ -4193,7 +4193,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev)
 		txdp->Buffer_Pointer = (u64)skb_frag_dma_map(&sp->pdev->dev,
 							     frag, 0,
 							     frag->size,
-							     PCI_DMA_TODEVICE);
+							     DMA_TO_DEVICE);
 		txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size);
 		if (offload_type == SKB_GSO_UDP)
 			txdp->Control_1 |= TXD_UFO_EN;
diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 4e39b8c..84baa59 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -2150,7 +2150,7 @@ static netdev_tx_t nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
 							&np->pci_dev->dev,
 							frag, offset,
 							bcnt,
-							PCI_DMA_TODEVICE);
+							DMA_TO_DEVICE);
 			np->put_tx_ctx->dma_len = bcnt;
 			np->put_tx_ctx->dma_single = 0;
 			put_tx->buf = cpu_to_le32(np->put_tx_ctx->dma);
@@ -2264,7 +2264,7 @@ static netdev_tx_t nv_start_xmit_optimized(struct sk_buff *skb,
 							&np->pci_dev->dev,
 							frag, offset,
 							bcnt,
-							PCI_DMA_TODEVICE);
+							DMA_TO_DEVICE);
 			np->put_tx_ctx->dma_len = bcnt;
 			np->put_tx_ctx->dma_single = 0;
 			put_tx->bufhigh = cpu_to_le32(dma_high(np->put_tx_ctx->dma));
diff --git a/drivers/net/ethernet/pasemi/pasemi_mac.c b/drivers/net/ethernet/pasemi/pasemi_mac.c
index 5322095..d247030 100644
--- a/drivers/net/ethernet/pasemi/pasemi_mac.c
+++ b/drivers/net/ethernet/pasemi/pasemi_mac.c
@@ -1506,9 +1506,9 @@ static int pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev)
 		skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
 
 		map[i + 1] = skb_frag_dma_map(&mac->dma_pdev->dev, frag, 0,
-					      frag->size, PCI_DMA_TODEVICE);
+					      frag->size, DMA_TO_DEVICE);
 		map_size[i+1] = frag->size;
-		if (pci_dma_mapping_error(mac->dma_pdev, map[i+1])) {
+		if (dma_mapping_error(mac->dma_pdev, map[i + 1])) {
 			nfrags = i;
 			goto out_err_nolock;
 		}
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index dc9e21a..b061c07 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -1906,8 +1906,8 @@ netxen_map_tx_skb(struct pci_dev *pdev,
 		nf = &pbuf->frag_array[i+1];
 
 		map = skb_frag_dma_map(&pdev->dev, frag, 0, frag->size,
-				       PCI_DMA_TODEVICE);
-		if (pci_dma_mapping_error(pdev, map))
+				       DMA_TO_DEVICE);
+		if (dma_mapping_error(pdev, map))
 			goto unwind;
 
 		nf->dma = map;
diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c
index 1871d88..8932265 100644
--- a/drivers/net/ethernet/qlogic/qla3xxx.c
+++ b/drivers/net/ethernet/qlogic/qla3xxx.c
@@ -2389,9 +2389,9 @@ static int ql_send_map(struct ql3_adapter *qdev,
 		}
 
 		map = skb_frag_dma_map(&qdev->pdev->dev, frag, 0, frag->size,
-				       PCI_DMA_TODEVICE);
+				       DMA_TO_DEVICE);
 
-		err = pci_dma_mapping_error(qdev->pdev, map);
+		err = dma_mapping_error(qdev->pdev, map);
 		if (err) {
 			netdev_err(qdev->ndev,
 				   "PCI mapping frags failed with error: %d\n",
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 445956e..c9756e7 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -2136,8 +2136,8 @@ qlcnic_map_tx_skb(struct pci_dev *pdev,
 		nf = &pbuf->frag_array[i+1];
 
 		map = skb_frag_dma_map(&pdev->dev, frag, 0, frag->size,
-				       PCI_DMA_TODEVICE);
-		if (pci_dma_mapping_error(pdev, map))
+				       DMA_TO_DEVICE);
+		if (dma_mapping_error(pdev, map))
 			goto unwind;
 
 		nf->dma = map;
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index ce6c6fe..094ac22 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -1432,9 +1432,9 @@ static int ql_map_send(struct ql_adapter *qdev,
 		}
 
 		map = skb_frag_dma_map(&qdev->pdev->dev, frag, 0, frag->size,
-				       PCI_DMA_TODEVICE);
+				       DMA_TO_DEVICE);
 
-		err = pci_dma_mapping_error(qdev->pdev, map);
+		err = dma_mapping_error(qdev->pdev, map);
 		if (err) {
 			netif_err(qdev, tx_queued, qdev->ndev,
 				  "PCI mapping frags failed with error: %d.\n",
diff --git a/drivers/net/ethernet/sfc/tx.c b/drivers/net/ethernet/sfc/tx.c
index f2467a1..7f47efc 100644
--- a/drivers/net/ethernet/sfc/tx.c
+++ b/drivers/net/ethernet/sfc/tx.c
@@ -243,7 +243,7 @@ netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb)
 		/* Map for DMA */
 		unmap_single = false;
 		dma_addr = skb_frag_dma_map(&pci_dev->dev, fragment, 0, len,
-					    PCI_DMA_TODEVICE);
+					    DMA_TO_DEVICE);
 	}
 
 	/* Transfer ownership of the skb to the final buffer */
@@ -926,8 +926,8 @@ static int tso_get_fragment(struct tso_state *st, struct efx_nic *efx,
 			    skb_frag_t *frag)
 {
 	st->unmap_addr = skb_frag_dma_map(&efx->pci_dev->dev, frag, 0,
-					  frag->size, PCI_DMA_TODEVICE);
-	if (likely(!pci_dma_mapping_error(efx->pci_dev, st->unmap_addr))) {
+					  frag->size, DMA_TO_DEVICE);
+	if (likely(!dma_mapping_error(efx->pci_dev, st->unmap_addr))) {
 		st->unmap_single = false;
 		st->unmap_len = frag->size;
 		st->in_len = frag->size;
diff --git a/drivers/net/ethernet/sun/cassini.c b/drivers/net/ethernet/sun/cassini.c
index 1206821..d9460d8 100644
--- a/drivers/net/ethernet/sun/cassini.c
+++ b/drivers/net/ethernet/sun/cassini.c
@@ -2830,7 +2830,7 @@ static inline int cas_xmit_tx_ringN(struct cas *cp, int ring,
 
 		len = fragp->size;
 		mapping = skb_frag_dma_map(&cp->pdev->dev, fragp, 0, len,
-					   PCI_DMA_TODEVICE);
+					   DMA_TO_DEVICE);
 
 		tabort = cas_calc_tabort(cp, fragp->page_offset, len);
 		if (unlikely(tabort)) {
diff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c
index 2bfa171..6b62a73 100644
--- a/drivers/net/ethernet/sun/sungem.c
+++ b/drivers/net/ethernet/sun/sungem.c
@@ -1072,7 +1072,7 @@ static netdev_tx_t gem_start_xmit(struct sk_buff *skb,
 
 			len = this_frag->size;
 			mapping = skb_frag_dma_map(&gp->pdev->dev, this_frag,
-						   0, len, PCI_DMA_TODEVICE);
+						   0, len, DMA_TO_DEVICE);
 			this_ctrl = ctrl;
 			if (frag == skb_shinfo(skb)->nr_frags - 1)
 				this_ctrl |= TXDCTRL_EOF;
diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
index 1151cf9..c77e3bf 100644
--- a/drivers/net/ethernet/tehuti/tehuti.c
+++ b/drivers/net/ethernet/tehuti/tehuti.c
@@ -1499,7 +1499,7 @@ bdx_tx_map_skb(struct bdx_priv *priv, struct sk_buff *skb,
 		db->wptr->len = frag->size;
 		db->wptr->addr.dma = skb_frag_dma_map(&priv->pdev->dev, frag,
 						      0, frag->size,
-						      PCI_DMA_TODEVICE);
+						      DMA_TO_DEVICE);
 
 		pbl++;
 		pbl->len = CPU_CHIP_SWAP32(db->wptr->len);
diff --git a/drivers/net/ethernet/via/via-velocity.c b/drivers/net/ethernet/via/via-velocity.c
index 1ec32c4..b47bce1 100644
--- a/drivers/net/ethernet/via/via-velocity.c
+++ b/drivers/net/ethernet/via/via-velocity.c
@@ -2559,7 +2559,7 @@ static netdev_tx_t velocity_xmit(struct sk_buff *skb,
 		tdinfo->skb_dma[i + 1] = skb_frag_dma_map(&vptr->pdev->dev,
 							  frag, 0,
 							  frag->size,
-							  PCI_DMA_TODEVICE);
+							  DMA_TO_DEVICE);
 
 		td_ptr->td_buf[i + 1].pa_low = cpu_to_le32(tdinfo->skb_dma[i + 1]);
 		td_ptr->td_buf[i + 1].pa_high = 0;
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 57e7c66..1694038 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -750,7 +750,7 @@ vmxnet3_map_pkt(struct sk_buff *skb, struct vmxnet3_tx_ctx *ctx,
 		tbi->map_type = VMXNET3_MAP_PAGE;
 		tbi->dma_addr = skb_frag_dma_map(&adapter->pdev->dev, frag,
 						 0, frag->size,
-						 PCI_DMA_TODEVICE);
+						 DMA_TO_DEVICE);
 
 		tbi->len = frag->size;
 
diff --git a/drivers/staging/et131x/et1310_tx.c b/drivers/staging/et131x/et1310_tx.c
index 03e7a4e..e4f51e6 100644
--- a/drivers/staging/et131x/et1310_tx.c
+++ b/drivers/staging/et131x/et1310_tx.c
@@ -524,7 +524,7 @@ static int nic_send_packet(struct et131x_adapter *etdev, struct tcb *tcb)
 							&frags[i - 1],
 							0,
 							frags[i - 1].size,
-							PCI_DMA_TODEVICE);
+							DMA_TO_DEVICE);
 		}
 	}
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 16:00       ` Ian Campbell
@ 2011-10-06 20:00         ` David Miller
  2011-10-06 20:45         ` Michał Mirosław
  1 sibling, 0 replies; 28+ messages in thread
From: David Miller @ 2011-10-06 20:00 UTC (permalink / raw)
  To: Ian.Campbell; +Cc: mirqus, netdev, jdmason

From: Ian Campbell <Ian.Campbell@citrix.com>
Date: Thu, 6 Oct 2011 17:00:22 +0100

> Here it is. David, if you want N separate patches (or a git pull
> request?) let me know.

No, this is fine, applied.

Thanks.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 16:00       ` Ian Campbell
  2011-10-06 20:00         ` David Miller
@ 2011-10-06 20:45         ` Michał Mirosław
  2011-10-06 21:08           ` Ian Campbell
  2011-10-06 21:15           ` David Miller
  1 sibling, 2 replies; 28+ messages in thread
From: Michał Mirosław @ 2011-10-06 20:45 UTC (permalink / raw)
  To: Ian Campbell; +Cc: David Miller, netdev@vger.kernel.org, Jon Mason

W dniu 6 października 2011 18:00 użytkownik Ian Campbell
<Ian.Campbell@citrix.com> napisał:
> On Thu, 2011-10-06 at 08:05 +0100, Ian Campbell wrote:
>> On Wed, 2011-10-05 at 22:03 +0100, Michał Mirosław wrote:
>> > 2011/10/5 Ian Campbell <ian.campbell@citrix.com>:
>> > [...]
>> > > --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
>> > > +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
>> > > @@ -923,9 +923,9 @@ vxge_xmit(struct sk_buff *skb, struct net_device *dev)
>> > >                if (!frag->size)
>> > >                        continue;
>> > >
>> > > -               dma_pointer = (u64) pci_map_page(fifo->pdev, frag->page,
>> > > -                               frag->page_offset, frag->size,
>> > > -                               PCI_DMA_TODEVICE);
>> > > +               dma_pointer = (u64)skb_frag_dma_map(&fifo->pdev->dev, frag,
>> > > +                                                   0, frag->size,
>> > > +                                                   PCI_DMA_TODEVICE);
>> >
>> > This should be DMA_TO_DEVICE instead of PCI_DMA_TODEVICE.
>> > >                if (unlikely(pci_dma_mapping_error(fifo->pdev, dma_pointer)))
>> > >                        goto _exit2;
>> > I would also change this to dma_mapping_error() in one go.
>> > Just a random patch check.
>> Thanks Michał.
>> I'm sure I must have made the same mistakes in a whole bunch of patches
>> which have already been applied. I'll knock up a fixup patch.
> Here it is. David, if you want N separate patches (or a git pull
> request?) let me know.

There's a catch there, though:

[...]
>                        mapping = skb_frag_dma_map(&tp->pdev->dev, frag, 0,
> -                                                  len, PCI_DMA_TODEVICE);
> +                                                  len, DMA_TO_DEVICE);
>
>                        tnapi->tx_buffers[entry].skb = NULL;
>                        dma_unmap_addr_set(&tnapi->tx_buffers[entry], mapping,
>                                           mapping);
> -                       if (pci_dma_mapping_error(tp->pdev, mapping))
> +                       if (dma_mapping_error(tp->pdev, mapping))

dma_mapping_error() takes struct device *, so those changes should be:

dma_mapping_error(&tp->pdev->dev, mapping)

(Like skb_frag_dma_map()'s first argument).

Best Regards,
Michał Mirosław

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 20:45         ` Michał Mirosław
@ 2011-10-06 21:08           ` Ian Campbell
  2011-10-06 21:16             ` David Miller
  2011-10-06 21:15           ` David Miller
  1 sibling, 1 reply; 28+ messages in thread
From: Ian Campbell @ 2011-10-06 21:08 UTC (permalink / raw)
  To: Michał Mirosław; +Cc: David Miller, netdev@vger.kernel.org, Jon Mason

On Thu, 2011-10-06 at 21:45 +0100, Michał Mirosław wrote:
> W dniu 6 października 2011 18:00 użytkownik Ian Campbell
> <Ian.Campbell@citrix.com> napisał:
> > On Thu, 2011-10-06 at 08:05 +0100, Ian Campbell wrote:
> >> On Wed, 2011-10-05 at 22:03 +0100, Michał Mirosław wrote:
> >> > 2011/10/5 Ian Campbell <ian.campbell@citrix.com>:
> >> > [...]
> >> > > --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
> >> > > +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
> >> > > @@ -923,9 +923,9 @@ vxge_xmit(struct sk_buff *skb, struct net_device *dev)
> >> > >                if (!frag->size)
> >> > >                        continue;
> >> > >
> >> > > -               dma_pointer = (u64) pci_map_page(fifo->pdev, frag->page,
> >> > > -                               frag->page_offset, frag->size,
> >> > > -                               PCI_DMA_TODEVICE);
> >> > > +               dma_pointer = (u64)skb_frag_dma_map(&fifo->pdev->dev, frag,
> >> > > +                                                   0, frag->size,
> >> > > +                                                   PCI_DMA_TODEVICE);
> >> >
> >> > This should be DMA_TO_DEVICE instead of PCI_DMA_TODEVICE.
> >> > >                if (unlikely(pci_dma_mapping_error(fifo->pdev, dma_pointer)))
> >> > >                        goto _exit2;
> >> > I would also change this to dma_mapping_error() in one go.
> >> > Just a random patch check.
> >> Thanks Michał.
> >> I'm sure I must have made the same mistakes in a whole bunch of patches
> >> which have already been applied. I'll knock up a fixup patch.
> > Here it is. David, if you want N separate patches (or a git pull
> > request?) let me know.
> 
> There's a catch there, though:
> 
> [...]
> >                        mapping = skb_frag_dma_map(&tp->pdev->dev, frag, 0,
> > -                                                  len, PCI_DMA_TODEVICE);
> > +                                                  len, DMA_TO_DEVICE);
> >
> >                        tnapi->tx_buffers[entry].skb = NULL;
> >                        dma_unmap_addr_set(&tnapi->tx_buffers[entry], mapping,
> >                                           mapping);
> > -                       if (pci_dma_mapping_error(tp->pdev, mapping))
> > +                       if (dma_mapping_error(tp->pdev, mapping))
> 
> dma_mapping_error() takes struct device *, so those changes should be:
> 
> dma_mapping_error(&tp->pdev->dev, mapping)
> 
> (Like skb_frag_dma_map()'s first argument).

You are absolutely right, I've no idea how I missed the very obvious
warning this produces. Incremental patch is below, sorry about this!

8<-------------------------------------------------------

From 5be2edc6eec5c66b58f4287f1d3ba3637afa7ad6 Mon Sep 17 00:00:00 2001
From: Ian Campbell <ian.campbell@citrix.com>
Date: Thu, 6 Oct 2011 22:05:41 +0100
Subject: [PATCH] net: fix argument to dma_mapping_error after conversion to skb_frag_dma_map

The recent conversion from pci_dma_mapping_error to dma_mapping_error missed
the change in the exact parameter, which needs to be the struct device * not
the struct pci_device *.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
 drivers/net/ethernet/broadcom/tg3.c                |    2 +-
 drivers/net/ethernet/marvell/sky2.c                |    4 ++--
 drivers/net/ethernet/pasemi/pasemi_mac.c           |    2 +-
 .../net/ethernet/qlogic/netxen/netxen_nic_main.c   |    2 +-
 drivers/net/ethernet/qlogic/qla3xxx.c              |    2 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |    2 +-
 drivers/net/ethernet/qlogic/qlge/qlge_main.c       |    2 +-
 drivers/net/ethernet/sfc/tx.c                      |    2 +-
 8 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 3abcb4d..9dbd1af 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -6784,7 +6784,7 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
 			tnapi->tx_buffers[entry].skb = NULL;
 			dma_unmap_addr_set(&tnapi->tx_buffers[entry], mapping,
 					   mapping);
-			if (dma_mapping_error(tp->pdev, mapping))
+			if (dma_mapping_error(&tp->pdev->dev, mapping))
 				goto dma_error;
 
 			if (tg3_tx_frag_set(tnapi, &entry, &budget, mapping,
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 7baff3e..a3ce9b6 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -1231,7 +1231,7 @@ static int sky2_rx_map_skb(struct pci_dev *pdev, struct rx_ring_info *re,
 						    frag->size,
 						    DMA_FROM_DEVICE);
 
-		if (dma_mapping_error(pdev, re->frag_addr[i]))
+		if (dma_mapping_error(&pdev->dev, re->frag_addr[i]))
 			goto map_page_error;
 	}
 	return 0;
@@ -1938,7 +1938,7 @@ static netdev_tx_t sky2_xmit_frame(struct sk_buff *skb,
 		mapping = skb_frag_dma_map(&hw->pdev->dev, frag, 0,
 					   frag->size, DMA_TO_DEVICE);
 
-		if (dma_mapping_error(hw->pdev, mapping))
+		if (dma_mapping_error(&hw->pdev->dev, mapping))
 			goto mapping_unwind;
 
 		upper = upper_32_bits(mapping);
diff --git a/drivers/net/ethernet/pasemi/pasemi_mac.c b/drivers/net/ethernet/pasemi/pasemi_mac.c
index d247030..c6f0056 100644
--- a/drivers/net/ethernet/pasemi/pasemi_mac.c
+++ b/drivers/net/ethernet/pasemi/pasemi_mac.c
@@ -1508,7 +1508,7 @@ static int pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev)
 		map[i + 1] = skb_frag_dma_map(&mac->dma_pdev->dev, frag, 0,
 					      frag->size, DMA_TO_DEVICE);
 		map_size[i+1] = frag->size;
-		if (dma_mapping_error(mac->dma_pdev, map[i + 1])) {
+		if (dma_mapping_error(&mac->dma_pdev->dev, map[i + 1])) {
 			nfrags = i;
 			goto out_err_nolock;
 		}
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index b061c07..e2ba78b 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -1907,7 +1907,7 @@ netxen_map_tx_skb(struct pci_dev *pdev,
 
 		map = skb_frag_dma_map(&pdev->dev, frag, 0, frag->size,
 				       DMA_TO_DEVICE);
-		if (dma_mapping_error(pdev, map))
+		if (dma_mapping_error(&pdev->dev, map))
 			goto unwind;
 
 		nf->dma = map;
diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c
index 8932265..46f9b64 100644
--- a/drivers/net/ethernet/qlogic/qla3xxx.c
+++ b/drivers/net/ethernet/qlogic/qla3xxx.c
@@ -2391,7 +2391,7 @@ static int ql_send_map(struct ql3_adapter *qdev,
 		map = skb_frag_dma_map(&qdev->pdev->dev, frag, 0, frag->size,
 				       DMA_TO_DEVICE);
 
-		err = dma_mapping_error(qdev->pdev, map);
+		err = dma_mapping_error(&qdev->pdev->dev, map);
 		if (err) {
 			netdev_err(qdev->ndev,
 				   "PCI mapping frags failed with error: %d\n",
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index c9756e7..eac19e7d 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -2137,7 +2137,7 @@ qlcnic_map_tx_skb(struct pci_dev *pdev,
 
 		map = skb_frag_dma_map(&pdev->dev, frag, 0, frag->size,
 				       DMA_TO_DEVICE);
-		if (dma_mapping_error(pdev, map))
+		if (dma_mapping_error(&pdev->dev, map))
 			goto unwind;
 
 		nf->dma = map;
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index 094ac22..f2d9bb7 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -1434,7 +1434,7 @@ static int ql_map_send(struct ql_adapter *qdev,
 		map = skb_frag_dma_map(&qdev->pdev->dev, frag, 0, frag->size,
 				       DMA_TO_DEVICE);
 
-		err = dma_mapping_error(qdev->pdev, map);
+		err = dma_mapping_error(&qdev->pdev->dev, map);
 		if (err) {
 			netif_err(qdev, tx_queued, qdev->ndev,
 				  "PCI mapping frags failed with error: %d.\n",
diff --git a/drivers/net/ethernet/sfc/tx.c b/drivers/net/ethernet/sfc/tx.c
index 7f47efc..3964a62 100644
--- a/drivers/net/ethernet/sfc/tx.c
+++ b/drivers/net/ethernet/sfc/tx.c
@@ -927,7 +927,7 @@ static int tso_get_fragment(struct tso_state *st, struct efx_nic *efx,
 {
 	st->unmap_addr = skb_frag_dma_map(&efx->pci_dev->dev, frag, 0,
 					  frag->size, DMA_TO_DEVICE);
-	if (likely(!dma_mapping_error(efx->pci_dev, st->unmap_addr))) {
+	if (likely(!dma_mapping_error(&efx->pci_dev->dev, st->unmap_addr))) {
 		st->unmap_single = false;
 		st->unmap_len = frag->size;
 		st->in_len = frag->size;
-- 
1.7.2.5



Ian.

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 20:45         ` Michał Mirosław
  2011-10-06 21:08           ` Ian Campbell
@ 2011-10-06 21:15           ` David Miller
  2011-10-06 21:19             ` Ian Campbell
  2011-10-06 21:28             ` Michał Mirosław
  1 sibling, 2 replies; 28+ messages in thread
From: David Miller @ 2011-10-06 21:15 UTC (permalink / raw)
  To: mirqus; +Cc: Ian.Campbell, netdev, jdmason

From: Michał Mirosław <mirqus@gmail.com>
Date: Thu, 6 Oct 2011 22:45:57 +0200

> There's a catch there, though:
 ..
> dma_mapping_error() takes struct device *, so those changes should be:
> 
> dma_mapping_error(&tp->pdev->dev, mapping)
> 
> (Like skb_frag_dma_map()'s first argument).

Why don't you take a look at what I committed and pushed out
(hint: I fixed it up when I saw the build warnings)?

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 21:08           ` Ian Campbell
@ 2011-10-06 21:16             ` David Miller
  2011-10-06 21:25               ` Ian Campbell
  0 siblings, 1 reply; 28+ messages in thread
From: David Miller @ 2011-10-06 21:16 UTC (permalink / raw)
  To: Ian.Campbell; +Cc: mirqus, netdev, jdmason

From: Ian Campbell <Ian.Campbell@eu.citrix.com>
Date: Thu, 6 Oct 2011 22:08:30 +0100

> You are absolutely right, I've no idea how I missed the very obvious
> warning this produces. Incremental patch is below, sorry about this!

Would really love to know what your patch is against, since I
fixed this problem when I commited your original patch.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 21:15           ` David Miller
@ 2011-10-06 21:19             ` Ian Campbell
  2011-10-06 21:28             ` Michał Mirosław
  1 sibling, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-06 21:19 UTC (permalink / raw)
  To: David Miller; +Cc: mirqus@gmail.com, netdev@vger.kernel.org, jdmason@kudzu.us

On Thu, 2011-10-06 at 22:15 +0100, David Miller wrote:
> From: Michał Mirosław <mirqus@gmail.com>
> Date: Thu, 6 Oct 2011 22:45:57 +0200
> 
> > There's a catch there, though:
>  ..
> > dma_mapping_error() takes struct device *, so those changes should be:
> > 
> > dma_mapping_error(&tp->pdev->dev, mapping)
> > 
> > (Like skb_frag_dma_map()'s first argument).
> 
> Why don't you take a look at what I committed and pushed out
> (hint: I fixed it up when I saw the build warnings)?

I pulled your tree and it wasn't there yet and it still isn't, I guess
it's delayed in mirroring?

Ian.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 21:16             ` David Miller
@ 2011-10-06 21:25               ` Ian Campbell
  2011-10-06 21:56                 ` David Miller
  0 siblings, 1 reply; 28+ messages in thread
From: Ian Campbell @ 2011-10-06 21:25 UTC (permalink / raw)
  To: David Miller; +Cc: mirqus@gmail.com, netdev@vger.kernel.org, jdmason@kudzu.us

On Thu, 2011-10-06 at 22:16 +0100, David Miller wrote:
> From: Ian Campbell <Ian.Campbell@eu.citrix.com>
> Date: Thu, 6 Oct 2011 22:08:30 +0100
> 
> > You are absolutely right, I've no idea how I missed the very obvious
> > warning this produces. Incremental patch is below, sorry about this!
> 
> Would really love to know what your patch is against, since I
> fixed this problem when I commited your original patch.

It was against e878d78b9a74 + the original bad patch, i.e.:

$ git log --pretty=oneline net-next/master^..HEAD
80f4b53b3d2c009689178d12de0bc108ddd580cd net: fix argument to dma_mapping_error after conversion to skb_frag_dma_map
669b1ce22eedd0f7bac048299feb06c67804ed83 net: use DMA_x_DEVICE and dma_mapping_error with skb_frag_dma_map
e878d78b9a7403fabc89ecc93c56928b74d14f01 virtio-net: Verify page list size before fitting into skb

AFAICT e878d78b9a7403fabc89ecc93c56928b74d14f01 is still the head of the
public git://github.com/davem330/net-next master.

Ian.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 21:15           ` David Miller
  2011-10-06 21:19             ` Ian Campbell
@ 2011-10-06 21:28             ` Michał Mirosław
  1 sibling, 0 replies; 28+ messages in thread
From: Michał Mirosław @ 2011-10-06 21:28 UTC (permalink / raw)
  To: David Miller; +Cc: Ian.Campbell, netdev, jdmason

2011/10/6 David Miller <davem@davemloft.net>:
> From: Michał Mirosław <mirqus@gmail.com>
> Date: Thu, 6 Oct 2011 22:45:57 +0200
>> There's a catch there, though:
>  ..
>> dma_mapping_error() takes struct device *, so those changes should be:
>>
>> dma_mapping_error(&tp->pdev->dev, mapping)
>>
>> (Like skb_frag_dma_map()'s first argument).
> Why don't you take a look at what I committed and pushed out
> (hint: I fixed it up when I saw the build warnings)?

You were just quicker than me or Ian on this one. We'll be faster next time.

Best Regards,
Michał Mirosław

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 21:25               ` Ian Campbell
@ 2011-10-06 21:56                 ` David Miller
  2011-10-07  5:29                   ` Ian Campbell
  0 siblings, 1 reply; 28+ messages in thread
From: David Miller @ 2011-10-06 21:56 UTC (permalink / raw)
  To: Ian.Campbell; +Cc: mirqus, netdev, jdmason

From: Ian Campbell <Ian.Campbell@eu.citrix.com>
Date: Thu, 6 Oct 2011 22:25:02 +0100

> On Thu, 2011-10-06 at 22:16 +0100, David Miller wrote:
>> From: Ian Campbell <Ian.Campbell@eu.citrix.com>
>> Date: Thu, 6 Oct 2011 22:08:30 +0100
>> 
>> > You are absolutely right, I've no idea how I missed the very obvious
>> > warning this produces. Incremental patch is below, sorry about this!
>> 
>> Would really love to know what your patch is against, since I
>> fixed this problem when I commited your original patch.
> 
> It was against e878d78b9a74 + the original bad patch, i.e.:
> 
> $ git log --pretty=oneline net-next/master^..HEAD
> 80f4b53b3d2c009689178d12de0bc108ddd580cd net: fix argument to dma_mapping_error after conversion to skb_frag_dma_map
> 669b1ce22eedd0f7bac048299feb06c67804ed83 net: use DMA_x_DEVICE and dma_mapping_error with skb_frag_dma_map
> e878d78b9a7403fabc89ecc93c56928b74d14f01 virtio-net: Verify page list size before fitting into skb
> 
> AFAICT e878d78b9a7403fabc89ecc93c56928b74d14f01 is still the head of the
> public git://github.com/davem330/net-next master.

I'm and idiot, I didn't push it out when I left the office :-/

Sorry.

But when your commit appears it will have the dma_mapping_error() stuff
fixed up, so don't worry about it. :-)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH 1/8] vxge: convert to SKB paged frag API.
  2011-10-06 21:56                 ` David Miller
@ 2011-10-07  5:29                   ` Ian Campbell
  0 siblings, 0 replies; 28+ messages in thread
From: Ian Campbell @ 2011-10-07  5:29 UTC (permalink / raw)
  To: David Miller; +Cc: mirqus@gmail.com, netdev@vger.kernel.org, jdmason@kudzu.us

On Thu, 2011-10-06 at 22:56 +0100, David Miller wrote:
> From: Ian Campbell <Ian.Campbell@eu.citrix.com>
> Date: Thu, 6 Oct 2011 22:25:02 +0100
> 
> > On Thu, 2011-10-06 at 22:16 +0100, David Miller wrote:
> >> From: Ian Campbell <Ian.Campbell@eu.citrix.com>
> >> Date: Thu, 6 Oct 2011 22:08:30 +0100
> >> 
> >> > You are absolutely right, I've no idea how I missed the very obvious
> >> > warning this produces. Incremental patch is below, sorry about this!
> >> 
> >> Would really love to know what your patch is against, since I
> >> fixed this problem when I commited your original patch.
> > 
> > It was against e878d78b9a74 + the original bad patch, i.e.:
> > 
> > $ git log --pretty=oneline net-next/master^..HEAD
> > 80f4b53b3d2c009689178d12de0bc108ddd580cd net: fix argument to dma_mapping_error after conversion to skb_frag_dma_map
> > 669b1ce22eedd0f7bac048299feb06c67804ed83 net: use DMA_x_DEVICE and dma_mapping_error with skb_frag_dma_map
> > e878d78b9a7403fabc89ecc93c56928b74d14f01 virtio-net: Verify page list size before fitting into skb
> > 
> > AFAICT e878d78b9a7403fabc89ecc93c56928b74d14f01 is still the head of the
> > public git://github.com/davem330/net-next master.
> 
> I'm and idiot, I didn't push it out when I left the office :-/
> 
> Sorry.

No problem.

> But when your commit appears it will have the dma_mapping_error() stuff
> fixed up, so don't worry about it. :-)

Thanks!

Ian.

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2011-10-07  5:29 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-05 10:28 [PATCH 0/8] skb fragment API: convert network drivers (part IV) Ian Campbell
2011-10-05 10:28 ` [PATCH 1/8] vxge: convert to SKB paged frag API Ian Campbell
2011-10-05 21:03   ` Michał Mirosław
2011-10-05 21:32     ` David Miller
2011-10-06  7:05     ` Ian Campbell
2011-10-06 16:00       ` Ian Campbell
2011-10-06 20:00         ` David Miller
2011-10-06 20:45         ` Michał Mirosław
2011-10-06 21:08           ` Ian Campbell
2011-10-06 21:16             ` David Miller
2011-10-06 21:25               ` Ian Campbell
2011-10-06 21:56                 ` David Miller
2011-10-07  5:29                   ` Ian Campbell
2011-10-06 21:15           ` David Miller
2011-10-06 21:19             ` Ian Campbell
2011-10-06 21:28             ` Michał Mirosław
2011-10-05 10:28 ` [PATCH 2/8] xen: netback: " Ian Campbell
2011-10-05 10:28 ` [PATCH 3/8] xen: netfront: " Ian Campbell
2011-10-05 10:28 ` [PATCH 4/8] et131x: " Ian Campbell
2011-10-05 10:28 ` [PATCH 5/8] hv: netvsc: " Ian Campbell
2011-10-05 10:28 ` [PATCH 6/8] myri10ge: " Ian Campbell
2011-10-05 10:28 ` [PATCH 7/8] cxgb3: " Ian Campbell
2011-10-05 10:28 ` [PATCH 8/8] chelsio: " Ian Campbell
2011-10-05 19:17 ` [PATCH 0/8] skb fragment API: convert network drivers (part IV) Greg KH
2011-10-05 20:13   ` David Miller
2011-10-05 20:25     ` Greg KH
2011-10-05 20:49       ` David Miller
2011-10-05 21:36 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).