All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20100713101917.2835.76645.sendpatchset@danny.redhat>

diff --git a/a/1.txt b/N1/1.txt
index 8e8cb54..bd46af7 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -212,9 +212,3 @@ index c762c6a..5753b8b 100644
  	return skb;
 -- 
 1.7.1.1
-
---
-To unsubscribe, send a message with 'unsubscribe linux-mm' in
-the body to majordomo@kvack.org.  For more info on Linux MM,
-see: http://www.linux-mm.org/ .
-Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
diff --git a/a/content_digest b/N1/content_digest
index 79561fd..7c396f9 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -229,12 +229,6 @@
  " \t\tskb_put(skb, length);\n"
  " \treturn skb;\n"
  "-- \n"
- "1.7.1.1\n"
- "\n"
- "--\n"
- "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n"
- "the body to majordomo@kvack.org.  For more info on Linux MM,\n"
- "see: http://www.linux-mm.org/ .\n"
- "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>"
+ 1.7.1.1
 
-5b8ce02236239308f1894f3b69b80e1960bab7056eb5a3cbbb442f697b0c14bc
+196201d5706577c28c44e034a7cb530ac0b07efaf5212d3279178276f9c2b9c7

diff --git a/a/1.txt b/N2/1.txt
index 8e8cb54..8b13789 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -1,220 +1 @@
->From 8d908090b5314bed0c3318d82891b8c3bbf27815 Mon Sep 17 00:00:00 2001
-From: Xiaotian Feng <dfeng@redhat.com>
-Date: Tue, 13 Jul 2010 11:03:55 +0800
-Subject: [PATCH 13/30] net: packet split receive api
 
-Add some packet-split receive hooks.
-
-For one this allows to do NUMA node affine page allocs. Later on these hooks
-will be extended to do emergency reserve allocations for fragments.
-
-Thanks to Jiri Bohac for fixing a bug in bnx2.
-
-Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Signed-off-by: Jiri Bohac <jbohac@suse.cz>
-Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>
-Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
----
- drivers/net/bnx2.c             |    9 +++------
- drivers/net/e1000e/netdev.c    |    7 ++-----
- drivers/net/igb/igb_main.c     |    6 +-----
- drivers/net/ixgbe/ixgbe_main.c |   14 ++++++--------
- drivers/net/sky2.c             |   16 ++++++----------
- 5 files changed, 18 insertions(+), 34 deletions(-)
-
-diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
-index a5dd81f..f6f83d0 100644
---- a/drivers/net/bnx2.c
-+++ b/drivers/net/bnx2.c
-@@ -2670,7 +2670,7 @@ bnx2_alloc_rx_page(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, u16 index)
- 	struct sw_pg *rx_pg = &rxr->rx_pg_ring[index];
- 	struct rx_bd *rxbd =
- 		&rxr->rx_pg_desc_ring[RX_RING(index)][RX_IDX(index)];
--	struct page *page = alloc_page(GFP_ATOMIC);
-+	struct page *page = netdev_alloc_page(bp->dev);
- 
- 	if (!page)
- 		return -ENOMEM;
-@@ -2700,7 +2700,7 @@ bnx2_free_rx_page(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, u16 index)
- 	pci_unmap_page(bp->pdev, dma_unmap_addr(rx_pg, mapping), PAGE_SIZE,
- 		       PCI_DMA_FROMDEVICE);
- 
--	__free_page(page);
-+	netdev_free_page(bp->dev, page);
- 	rx_pg->page = NULL;
- }
- 
-@@ -3035,7 +3035,7 @@ bnx2_rx_skb(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, struct sk_buff *skb,
- 			if (i == pages - 1)
- 				frag_len -= 4;
- 
--			skb_fill_page_desc(skb, i, rx_pg->page, 0, frag_len);
-+			skb_add_rx_frag(skb, i, rx_pg->page, 0, frag_len);
- 			rx_pg->page = NULL;
- 
- 			err = bnx2_alloc_rx_page(bp, rxr,
-@@ -3052,9 +3052,6 @@ bnx2_rx_skb(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, struct sk_buff *skb,
- 				       PAGE_SIZE, PCI_DMA_FROMDEVICE);
- 
- 			frag_size -= frag_len;
--			skb->data_len += frag_len;
--			skb->truesize += frag_len;
--			skb->len += frag_len;
- 
- 			pg_prod = NEXT_RX_BD(pg_prod);
- 			pg_cons = RX_PG_RING_IDX(NEXT_RX_BD(pg_cons));
-diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
-index 20c5ecf..a381e18 100644
---- a/drivers/net/e1000e/netdev.c
-+++ b/drivers/net/e1000e/netdev.c
-@@ -604,7 +604,7 @@ static void e1000_alloc_rx_buffers_ps(struct e1000_adapter *adapter,
- 				continue;
- 			}
- 			if (!ps_page->page) {
--				ps_page->page = alloc_page(GFP_ATOMIC);
-+				ps_page->page = netdev_alloc_page(netdev);
- 				if (!ps_page->page) {
- 					adapter->alloc_rx_buff_failed++;
- 					goto no_buffers;
-@@ -1185,11 +1185,8 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
- 			dma_unmap_page(&pdev->dev, ps_page->dma, PAGE_SIZE,
- 				       DMA_FROM_DEVICE);
- 			ps_page->dma = 0;
--			skb_fill_page_desc(skb, j, ps_page->page, 0, length);
-+			skb_add_rx_frag(skb, j, ps_page->page, 0, length);
- 			ps_page->page = NULL;
--			skb->len += length;
--			skb->data_len += length;
--			skb->truesize += length;
- 		}
- 
- 		/* strip the ethernet crc, problem is we're using pages now so
-diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
-index 3881918..7361864 100644
---- a/drivers/net/igb/igb_main.c
-+++ b/drivers/net/igb/igb_main.c
-@@ -5574,7 +5574,7 @@ static bool igb_clean_rx_irq_adv(struct igb_q_vector *q_vector,
- 				       PAGE_SIZE / 2, DMA_FROM_DEVICE);
- 			buffer_info->page_dma = 0;
- 
--			skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,
-+			skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
- 						buffer_info->page,
- 						buffer_info->page_offset,
- 						length);
-@@ -5584,10 +5584,6 @@ static bool igb_clean_rx_irq_adv(struct igb_q_vector *q_vector,
- 				buffer_info->page = NULL;
- 			else
- 				get_page(buffer_info->page);
--
--			skb->len += length;
--			skb->data_len += length;
--			skb->truesize += length;
- 		}
- 
- 		if (!(staterr & E1000_RXD_STAT_EOP)) {
-diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
-index dd46345..60d789c 100644
---- a/drivers/net/ixgbe/ixgbe_main.c
-+++ b/drivers/net/ixgbe/ixgbe_main.c
-@@ -1037,6 +1037,7 @@ static void ixgbe_alloc_rx_buffers(struct ixgbe_adapter *adapter,
-                                    int cleaned_count)
- {
- 	struct pci_dev *pdev = adapter->pdev;
-+	struct net_device *netdev = adapter->netdev;
- 	union ixgbe_adv_rx_desc *rx_desc;
- 	struct ixgbe_rx_buffer *bi;
- 	unsigned int i;
-@@ -1050,7 +1051,7 @@ static void ixgbe_alloc_rx_buffers(struct ixgbe_adapter *adapter,
- 		if (!bi->page_dma &&
- 		    (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED)) {
- 			if (!bi->page) {
--				bi->page = alloc_page(GFP_ATOMIC);
-+				bi->page = netdev_alloc_page(netdev);
- 				if (!bi->page) {
- 					adapter->alloc_rx_page_failed++;
- 					goto no_buffers;
-@@ -1242,10 +1243,10 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
- 			dma_unmap_page(&pdev->dev, rx_buffer_info->page_dma,
- 				       PAGE_SIZE / 2, DMA_FROM_DEVICE);
- 			rx_buffer_info->page_dma = 0;
--			skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,
--			                   rx_buffer_info->page,
--			                   rx_buffer_info->page_offset,
--			                   upper_len);
-+			skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
-+					rx_buffer_info->page,
-+					rx_buffer_info->page_offset,
-+					upper_len);
- 
- 			if ((rx_ring->rx_buf_len > (PAGE_SIZE / 2)) ||
- 			    (page_count(rx_buffer_info->page) != 1))
-@@ -1253,9 +1254,6 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
- 			else
- 				get_page(rx_buffer_info->page);
- 
--			skb->len += upper_len;
--			skb->data_len += upper_len;
--			skb->truesize += upper_len;
- 		}
- 
- 		i++;
-diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
-index c762c6a..5753b8b 100644
---- a/drivers/net/sky2.c
-+++ b/drivers/net/sky2.c
-@@ -1394,7 +1394,7 @@ static struct sk_buff *sky2_rx_alloc(struct sky2_port *sky2)
- 		skb_reserve(skb, NET_IP_ALIGN);
- 
- 	for (i = 0; i < sky2->rx_nfrags; i++) {
--		struct page *page = alloc_page(GFP_ATOMIC);
-+		struct page *page = netdev_alloc_page(sky2->netdev);
- 
- 		if (!page)
- 			goto free_partial;
-@@ -2353,8 +2353,8 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,
- }
- 
- /* Adjust length of skb with fragments to match received data */
--static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space,
--			  unsigned int length)
-+static void skb_put_frags(struct sky2_port *sky2, struct sk_buff *skb,
-+			  unsigned int hdr_space, unsigned int length)
- {
- 	int i, num_frags;
- 	unsigned int size;
-@@ -2371,15 +2371,11 @@ static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space,
- 
- 		if (length == 0) {
- 			/* don't need this page */
--			__free_page(frag->page);
-+			netdev_free_page(sky2->netdev, frag->page);
- 			--skb_shinfo(skb)->nr_frags;
- 		} else {
- 			size = min(length, (unsigned) PAGE_SIZE);
--
--			frag->size = size;
--			skb->data_len += size;
--			skb->truesize += size;
--			skb->len += size;
-+			skb_add_rx_frag(skb, i, frag->page, 0, size);
- 			length -= size;
- 		}
- 	}
-@@ -2407,7 +2403,7 @@ static struct sk_buff *receive_new(struct sky2_port *sky2,
- 	*re = nre;
- 
- 	if (skb_shinfo(skb)->nr_frags)
--		skb_put_frags(skb, hdr_space, length);
-+		skb_put_frags(sky2, skb, hdr_space, length);
- 	else
- 		skb_put(skb, length);
- 	return skb;
--- 
-1.7.1.1
-
---
-To unsubscribe, send a message with 'unsubscribe linux-mm' in
-the body to majordomo@kvack.org.  For more info on Linux MM,
-see: http://www.linux-mm.org/ .
-Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
diff --git a/a/content_digest b/N2/content_digest
index 79561fd..8374a51 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -16,225 +16,5 @@
  " davem@davemloft.net\0"
  "\00:1\0"
  "b\0"
- ">From 8d908090b5314bed0c3318d82891b8c3bbf27815 Mon Sep 17 00:00:00 2001\n"
- "From: Xiaotian Feng <dfeng@redhat.com>\n"
- "Date: Tue, 13 Jul 2010 11:03:55 +0800\n"
- "Subject: [PATCH 13/30] net: packet split receive api\n"
- "\n"
- "Add some packet-split receive hooks.\n"
- "\n"
- "For one this allows to do NUMA node affine page allocs. Later on these hooks\n"
- "will be extended to do emergency reserve allocations for fragments.\n"
- "\n"
- "Thanks to Jiri Bohac for fixing a bug in bnx2.\n"
- "\n"
- "Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>\n"
- "Signed-off-by: Jiri Bohac <jbohac@suse.cz>\n"
- "Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>\n"
- "Signed-off-by: Xiaotian Feng <dfeng@redhat.com>\n"
- "---\n"
- " drivers/net/bnx2.c             |    9 +++------\n"
- " drivers/net/e1000e/netdev.c    |    7 ++-----\n"
- " drivers/net/igb/igb_main.c     |    6 +-----\n"
- " drivers/net/ixgbe/ixgbe_main.c |   14 ++++++--------\n"
- " drivers/net/sky2.c             |   16 ++++++----------\n"
- " 5 files changed, 18 insertions(+), 34 deletions(-)\n"
- "\n"
- "diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c\n"
- "index a5dd81f..f6f83d0 100644\n"
- "--- a/drivers/net/bnx2.c\n"
- "+++ b/drivers/net/bnx2.c\n"
- "@@ -2670,7 +2670,7 @@ bnx2_alloc_rx_page(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, u16 index)\n"
- " \tstruct sw_pg *rx_pg = &rxr->rx_pg_ring[index];\n"
- " \tstruct rx_bd *rxbd =\n"
- " \t\t&rxr->rx_pg_desc_ring[RX_RING(index)][RX_IDX(index)];\n"
- "-\tstruct page *page = alloc_page(GFP_ATOMIC);\n"
- "+\tstruct page *page = netdev_alloc_page(bp->dev);\n"
- " \n"
- " \tif (!page)\n"
- " \t\treturn -ENOMEM;\n"
- "@@ -2700,7 +2700,7 @@ bnx2_free_rx_page(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, u16 index)\n"
- " \tpci_unmap_page(bp->pdev, dma_unmap_addr(rx_pg, mapping), PAGE_SIZE,\n"
- " \t\t       PCI_DMA_FROMDEVICE);\n"
- " \n"
- "-\t__free_page(page);\n"
- "+\tnetdev_free_page(bp->dev, page);\n"
- " \trx_pg->page = NULL;\n"
- " }\n"
- " \n"
- "@@ -3035,7 +3035,7 @@ bnx2_rx_skb(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, struct sk_buff *skb,\n"
- " \t\t\tif (i == pages - 1)\n"
- " \t\t\t\tfrag_len -= 4;\n"
- " \n"
- "-\t\t\tskb_fill_page_desc(skb, i, rx_pg->page, 0, frag_len);\n"
- "+\t\t\tskb_add_rx_frag(skb, i, rx_pg->page, 0, frag_len);\n"
- " \t\t\trx_pg->page = NULL;\n"
- " \n"
- " \t\t\terr = bnx2_alloc_rx_page(bp, rxr,\n"
- "@@ -3052,9 +3052,6 @@ bnx2_rx_skb(struct bnx2 *bp, struct bnx2_rx_ring_info *rxr, struct sk_buff *skb,\n"
- " \t\t\t\t       PAGE_SIZE, PCI_DMA_FROMDEVICE);\n"
- " \n"
- " \t\t\tfrag_size -= frag_len;\n"
- "-\t\t\tskb->data_len += frag_len;\n"
- "-\t\t\tskb->truesize += frag_len;\n"
- "-\t\t\tskb->len += frag_len;\n"
- " \n"
- " \t\t\tpg_prod = NEXT_RX_BD(pg_prod);\n"
- " \t\t\tpg_cons = RX_PG_RING_IDX(NEXT_RX_BD(pg_cons));\n"
- "diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c\n"
- "index 20c5ecf..a381e18 100644\n"
- "--- a/drivers/net/e1000e/netdev.c\n"
- "+++ b/drivers/net/e1000e/netdev.c\n"
- "@@ -604,7 +604,7 @@ static void e1000_alloc_rx_buffers_ps(struct e1000_adapter *adapter,\n"
- " \t\t\t\tcontinue;\n"
- " \t\t\t}\n"
- " \t\t\tif (!ps_page->page) {\n"
- "-\t\t\t\tps_page->page = alloc_page(GFP_ATOMIC);\n"
- "+\t\t\t\tps_page->page = netdev_alloc_page(netdev);\n"
- " \t\t\t\tif (!ps_page->page) {\n"
- " \t\t\t\t\tadapter->alloc_rx_buff_failed++;\n"
- " \t\t\t\t\tgoto no_buffers;\n"
- "@@ -1185,11 +1185,8 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,\n"
- " \t\t\tdma_unmap_page(&pdev->dev, ps_page->dma, PAGE_SIZE,\n"
- " \t\t\t\t       DMA_FROM_DEVICE);\n"
- " \t\t\tps_page->dma = 0;\n"
- "-\t\t\tskb_fill_page_desc(skb, j, ps_page->page, 0, length);\n"
- "+\t\t\tskb_add_rx_frag(skb, j, ps_page->page, 0, length);\n"
- " \t\t\tps_page->page = NULL;\n"
- "-\t\t\tskb->len += length;\n"
- "-\t\t\tskb->data_len += length;\n"
- "-\t\t\tskb->truesize += length;\n"
- " \t\t}\n"
- " \n"
- " \t\t/* strip the ethernet crc, problem is we're using pages now so\n"
- "diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c\n"
- "index 3881918..7361864 100644\n"
- "--- a/drivers/net/igb/igb_main.c\n"
- "+++ b/drivers/net/igb/igb_main.c\n"
- "@@ -5574,7 +5574,7 @@ static bool igb_clean_rx_irq_adv(struct igb_q_vector *q_vector,\n"
- " \t\t\t\t       PAGE_SIZE / 2, DMA_FROM_DEVICE);\n"
- " \t\t\tbuffer_info->page_dma = 0;\n"
- " \n"
- "-\t\t\tskb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,\n"
- "+\t\t\tskb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,\n"
- " \t\t\t\t\t\tbuffer_info->page,\n"
- " \t\t\t\t\t\tbuffer_info->page_offset,\n"
- " \t\t\t\t\t\tlength);\n"
- "@@ -5584,10 +5584,6 @@ static bool igb_clean_rx_irq_adv(struct igb_q_vector *q_vector,\n"
- " \t\t\t\tbuffer_info->page = NULL;\n"
- " \t\t\telse\n"
- " \t\t\t\tget_page(buffer_info->page);\n"
- "-\n"
- "-\t\t\tskb->len += length;\n"
- "-\t\t\tskb->data_len += length;\n"
- "-\t\t\tskb->truesize += length;\n"
- " \t\t}\n"
- " \n"
- " \t\tif (!(staterr & E1000_RXD_STAT_EOP)) {\n"
- "diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c\n"
- "index dd46345..60d789c 100644\n"
- "--- a/drivers/net/ixgbe/ixgbe_main.c\n"
- "+++ b/drivers/net/ixgbe/ixgbe_main.c\n"
- "@@ -1037,6 +1037,7 @@ static void ixgbe_alloc_rx_buffers(struct ixgbe_adapter *adapter,\n"
- "                                    int cleaned_count)\n"
- " {\n"
- " \tstruct pci_dev *pdev = adapter->pdev;\n"
- "+\tstruct net_device *netdev = adapter->netdev;\n"
- " \tunion ixgbe_adv_rx_desc *rx_desc;\n"
- " \tstruct ixgbe_rx_buffer *bi;\n"
- " \tunsigned int i;\n"
- "@@ -1050,7 +1051,7 @@ static void ixgbe_alloc_rx_buffers(struct ixgbe_adapter *adapter,\n"
- " \t\tif (!bi->page_dma &&\n"
- " \t\t    (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED)) {\n"
- " \t\t\tif (!bi->page) {\n"
- "-\t\t\t\tbi->page = alloc_page(GFP_ATOMIC);\n"
- "+\t\t\t\tbi->page = netdev_alloc_page(netdev);\n"
- " \t\t\t\tif (!bi->page) {\n"
- " \t\t\t\t\tadapter->alloc_rx_page_failed++;\n"
- " \t\t\t\t\tgoto no_buffers;\n"
- "@@ -1242,10 +1243,10 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,\n"
- " \t\t\tdma_unmap_page(&pdev->dev, rx_buffer_info->page_dma,\n"
- " \t\t\t\t       PAGE_SIZE / 2, DMA_FROM_DEVICE);\n"
- " \t\t\trx_buffer_info->page_dma = 0;\n"
- "-\t\t\tskb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,\n"
- "-\t\t\t                   rx_buffer_info->page,\n"
- "-\t\t\t                   rx_buffer_info->page_offset,\n"
- "-\t\t\t                   upper_len);\n"
- "+\t\t\tskb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,\n"
- "+\t\t\t\t\trx_buffer_info->page,\n"
- "+\t\t\t\t\trx_buffer_info->page_offset,\n"
- "+\t\t\t\t\tupper_len);\n"
- " \n"
- " \t\t\tif ((rx_ring->rx_buf_len > (PAGE_SIZE / 2)) ||\n"
- " \t\t\t    (page_count(rx_buffer_info->page) != 1))\n"
- "@@ -1253,9 +1254,6 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,\n"
- " \t\t\telse\n"
- " \t\t\t\tget_page(rx_buffer_info->page);\n"
- " \n"
- "-\t\t\tskb->len += upper_len;\n"
- "-\t\t\tskb->data_len += upper_len;\n"
- "-\t\t\tskb->truesize += upper_len;\n"
- " \t\t}\n"
- " \n"
- " \t\ti++;\n"
- "diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c\n"
- "index c762c6a..5753b8b 100644\n"
- "--- a/drivers/net/sky2.c\n"
- "+++ b/drivers/net/sky2.c\n"
- "@@ -1394,7 +1394,7 @@ static struct sk_buff *sky2_rx_alloc(struct sky2_port *sky2)\n"
- " \t\tskb_reserve(skb, NET_IP_ALIGN);\n"
- " \n"
- " \tfor (i = 0; i < sky2->rx_nfrags; i++) {\n"
- "-\t\tstruct page *page = alloc_page(GFP_ATOMIC);\n"
- "+\t\tstruct page *page = netdev_alloc_page(sky2->netdev);\n"
- " \n"
- " \t\tif (!page)\n"
- " \t\t\tgoto free_partial;\n"
- "@@ -2353,8 +2353,8 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,\n"
- " }\n"
- " \n"
- " /* Adjust length of skb with fragments to match received data */\n"
- "-static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space,\n"
- "-\t\t\t  unsigned int length)\n"
- "+static void skb_put_frags(struct sky2_port *sky2, struct sk_buff *skb,\n"
- "+\t\t\t  unsigned int hdr_space, unsigned int length)\n"
- " {\n"
- " \tint i, num_frags;\n"
- " \tunsigned int size;\n"
- "@@ -2371,15 +2371,11 @@ static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space,\n"
- " \n"
- " \t\tif (length == 0) {\n"
- " \t\t\t/* don't need this page */\n"
- "-\t\t\t__free_page(frag->page);\n"
- "+\t\t\tnetdev_free_page(sky2->netdev, frag->page);\n"
- " \t\t\t--skb_shinfo(skb)->nr_frags;\n"
- " \t\t} else {\n"
- " \t\t\tsize = min(length, (unsigned) PAGE_SIZE);\n"
- "-\n"
- "-\t\t\tfrag->size = size;\n"
- "-\t\t\tskb->data_len += size;\n"
- "-\t\t\tskb->truesize += size;\n"
- "-\t\t\tskb->len += size;\n"
- "+\t\t\tskb_add_rx_frag(skb, i, frag->page, 0, size);\n"
- " \t\t\tlength -= size;\n"
- " \t\t}\n"
- " \t}\n"
- "@@ -2407,7 +2403,7 @@ static struct sk_buff *receive_new(struct sky2_port *sky2,\n"
- " \t*re = nre;\n"
- " \n"
- " \tif (skb_shinfo(skb)->nr_frags)\n"
- "-\t\tskb_put_frags(skb, hdr_space, length);\n"
- "+\t\tskb_put_frags(sky2, skb, hdr_space, length);\n"
- " \telse\n"
- " \t\tskb_put(skb, length);\n"
- " \treturn skb;\n"
- "-- \n"
- "1.7.1.1\n"
- "\n"
- "--\n"
- "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n"
- "the body to majordomo@kvack.org.  For more info on Linux MM,\n"
- "see: http://www.linux-mm.org/ .\n"
- "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>"
 
-5b8ce02236239308f1894f3b69b80e1960bab7056eb5a3cbbb442f697b0c14bc
+af5712c4d12321d5d7dad643f698d278c98fa1545cf4f6a7f5963ab970b49849

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.