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.