* [RFC 1/2] skbuff: use scatterlist
2007-07-05 23:14 [RFC 0/2] Convert skb to use scatterlist Stephen Hemminger
@ 2007-07-05 23:14 ` Stephen Hemminger
2007-07-05 23:14 ` [RFC 2/2] shrink size of scatterlist on common i386/x86-64 Stephen Hemminger
1 sibling, 0 replies; 16+ messages in thread
From: Stephen Hemminger @ 2007-07-05 23:14 UTC (permalink / raw)
To: David Miller; +Cc: netdev
[-- Attachment #1: skb-sg.patch --]
[-- Type: TEXT/PLAIN, Size: 60988 bytes --]
Replace the skb frag list with the common scatterlist definition.
This allows device drivers to use dma_scatter/gather operations which
may be faster on some platforms. As a side benefit, it is easier to
handle dma mapping error unwind.
This idea came up long ago, just never got implemented.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
---
drivers/atm/he.c | 2 -
drivers/infiniband/hw/amso1100/c2.c | 2 -
drivers/net/3c59x.c | 8 ++--
drivers/net/8139cp.c | 5 +-
drivers/net/acenic.c | 8 ++--
drivers/net/atl1/atl1_main.c | 8 ++--
drivers/net/bnx2.c | 8 ++--
drivers/net/cassini.c | 19 ++++-----
drivers/net/chelsio/sge.c | 8 ++--
drivers/net/cxgb3/adapter.h | 2 -
drivers/net/cxgb3/sge.c | 25 ++++++------
drivers/net/e1000/e1000_main.c | 8 ++--
drivers/net/ehea/ehea_main.c | 7 +--
drivers/net/forcedeth.c | 22 ++++++-----
drivers/net/ibm_emac/ibm_emac_core.c | 2 -
drivers/net/ibmveth.c | 2 -
drivers/net/ixgb/ixgb_main.c | 6 +--
drivers/net/mv643xx_eth.c | 2 -
drivers/net/myri10ge/myri10ge.c | 26 ++++++-------
drivers/net/netxen/netxen_nic_main.c | 6 +--
drivers/net/ns83820.c | 9 ++--
drivers/net/qla3xxx.c | 6 +--
drivers/net/r8169.c | 4 +-
drivers/net/s2io.c | 18 +++++----
drivers/net/sk98lin/skge.c | 8 ++--
drivers/net/skge.c | 8 ++--
drivers/net/sky2.c | 16 ++++----
drivers/net/starfire.c | 9 +++-
drivers/net/sungem.c | 4 +-
drivers/net/sunhme.c | 4 +-
drivers/net/tg3.c | 14 +++----
drivers/net/tsi108_eth.c | 2 -
drivers/net/typhoon.c | 2 -
drivers/net/via-velocity.c | 2 -
include/linux/skbuff.h | 21 ++++------
net/appletalk/ddp.c | 4 +-
net/core/datagram.c | 9 ++--
net/core/pktgen.c | 42 ++++++++++-----------
net/core/skbuff.c | 64 ++++++++++++++++----------------
net/core/sock.c | 8 ++--
net/core/user_dma.c | 2 -
net/ipv4/ip_fragment.c | 4 +-
net/ipv4/ip_output.c | 9 +++-
net/ipv4/tcp.c | 9 ++--
net/ipv4/tcp_output.c | 8 ++--
net/ipv6/ip6_output.c | 7 ++-
net/ipv6/netfilter/nf_conntrack_reasm.c | 2 -
net/ipv6/reassembly.c | 2 -
net/xfrm/xfrm_algo.c | 4 +-
49 files changed, 239 insertions(+), 238 deletions(-)
--- a/include/linux/skbuff.h 2007-07-05 14:21:36.000000000 -0700
+++ b/include/linux/skbuff.h 2007-07-05 14:53:11.000000000 -0700
@@ -21,6 +21,7 @@
#include <asm/atomic.h>
#include <asm/types.h>
+#include <asm/scatterlist.h>
#include <linux/spinlock.h>
#include <linux/net.h>
#include <linux/textsearch.h>
@@ -122,13 +123,7 @@ struct sk_buff;
/* To allow 64K frame to be packed as single skb without frag_list */
#define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2)
-typedef struct skb_frag_struct skb_frag_t;
-
-struct skb_frag_struct {
- struct page *page;
- __u16 page_offset;
- __u16 size;
-};
+typedef struct scatterlist skb_frag_t;
/* This data is invariant across clones and lives at
* the end of the header data, ie. at skb->end.
@@ -813,7 +808,7 @@ static inline int skb_pagelen(const stru
int i, len = 0;
for (i = (int)skb_shinfo(skb)->nr_frags - 1; i >= 0; i--)
- len += skb_shinfo(skb)->frags[i].size;
+ len += skb_shinfo(skb)->frags[i].length;
return len + skb_headlen(skb);
}
@@ -822,9 +817,9 @@ static inline void skb_fill_page_desc(st
{
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- frag->page = page;
- frag->page_offset = off;
- frag->size = size;
+ frag->page = page;
+ frag->offset = off;
+ frag->length = size;
skb_shinfo(skb)->nr_frags = i + 1;
}
@@ -1390,10 +1385,10 @@ static inline int skb_can_coalesce(struc
struct page *page, int off)
{
if (i) {
- struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1];
+ skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1];
return page == frag->page &&
- off == frag->page_offset + frag->size;
+ off == frag->offset + frag->length;
}
return 0;
}
--- a/drivers/atm/he.c 2007-06-05 13:27:30.000000000 -0700
+++ b/drivers/atm/he.c 2007-07-05 14:38:04.000000000 -0700
@@ -2803,7 +2803,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
}
tpd->iovec[slot].addr = pci_map_single(he_dev->pci_dev,
- (void *) page_address(frag->page) + frag->page_offset,
+ (void *) page_address(frag->page) + frag->offset,
frag->size, PCI_DMA_TODEVICE);
tpd->iovec[slot].len = frag->size;
++slot;
--- a/drivers/infiniband/hw/amso1100/c2.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/infiniband/hw/amso1100/c2.c 2007-07-05 14:38:04.000000000 -0700
@@ -801,7 +801,7 @@ static int c2_xmit_frame(struct sk_buff
maplen = frag->size;
mapaddr =
pci_map_page(c2dev->pcidev, frag->page,
- frag->page_offset, maplen,
+ frag->offset, maplen,
PCI_DMA_TODEVICE);
elem = elem->next;
--- a/drivers/net/3c59x.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/3c59x.c 2007-07-05 15:21:08.000000000 -0700
@@ -2102,13 +2102,13 @@ boomerang_start_xmit(struct sk_buff *skb
vp->tx_ring[entry].frag[i+1].addr =
cpu_to_le32(pci_map_single(VORTEX_PCI(vp),
- (void*)page_address(frag->page) + frag->page_offset,
- frag->size, PCI_DMA_TODEVICE));
+ (void*)page_address(frag->page) + frag->offset,
+ frag->length, PCI_DMA_TODEVICE));
if (i == skb_shinfo(skb)->nr_frags-1)
- vp->tx_ring[entry].frag[i+1].length = cpu_to_le32(frag->size|LAST_FRAG);
+ vp->tx_ring[entry].frag[i+1].length = cpu_to_le32(frag->length|LAST_FRAG);
else
- vp->tx_ring[entry].frag[i+1].length = cpu_to_le32(frag->size);
+ vp->tx_ring[entry].frag[i+1].length = cpu_to_le32(frag->length);
}
}
#else
--- a/drivers/net/8139cp.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/8139cp.c 2007-07-05 15:36:16.000000000 -0700
@@ -831,14 +831,13 @@ static int cp_start_xmit (struct sk_buff
for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) {
skb_frag_t *this_frag = &skb_shinfo(skb)->frags[frag];
- u32 len;
+ u32 len = this_frag->length;
u32 ctrl;
dma_addr_t mapping;
- len = this_frag->size;
mapping = pci_map_single(cp->pdev,
((void *) page_address(this_frag->page) +
- this_frag->page_offset),
+ this_frag->offset),
len, PCI_DMA_TODEVICE);
eor = (entry == (CP_TX_RING_SIZE - 1)) ? RingEnd : 0;
--- a/drivers/net/acenic.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/acenic.c 2007-07-05 15:23:30.000000000 -0700
@@ -2528,15 +2528,15 @@ restart:
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
struct tx_ring_info *info;
- len += frag->size;
+ len += frag->length;
info = ap->skb->tx_skbuff + idx;
desc = ap->tx_ring + idx;
mapping = pci_map_page(ap->pdev, frag->page,
- frag->page_offset, frag->size,
+ frag->offset, frag->length,
PCI_DMA_TODEVICE);
- flagsize = (frag->size << 16);
+ flagsize = (frag->length << 16);
if (skb->ip_summed == CHECKSUM_PARTIAL)
flagsize |= BD_FLG_TCP_UDP_SUM;
idx = (idx + 1) % ACE_TX_RING_ENTRIES(ap);
@@ -2555,7 +2555,7 @@ restart:
info->skb = NULL;
}
pci_unmap_addr_set(info, mapping, mapping);
- pci_unmap_len_set(info, maplen, frag->size);
+ pci_unmap_len_set(info, maplen, frag->length);
ace_load_tx_bd(ap, desc, mapping, flagsize, vlan_tag);
}
}
--- a/drivers/net/atl1/atl1_main.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/atl1/atl1_main.c 2007-07-05 15:01:22.000000000 -0700
@@ -1384,11 +1384,11 @@ static void atl1_tx_map(struct atl1_adap
}
for (f = 0; f < nr_frags; f++) {
- struct skb_frag_struct *frag;
+ skb_frag_t *frag;
u16 lenf, i, m;
frag = &skb_shinfo(skb)->frags[f];
- lenf = frag->size;
+ lenf = frag->length;
m = (lenf + MAX_TX_BUF_LEN - 1) / MAX_TX_BUF_LEN;
for (i = 0; i < m; i++) {
@@ -1401,7 +1401,7 @@ static void atl1_tx_map(struct atl1_adap
lenf -= buffer_info->length;
buffer_info->dma =
pci_map_page(adapter->pdev, frag->page,
- frag->page_offset + i * MAX_TX_BUF_LEN,
+ frag->offset + i * MAX_TX_BUF_LEN,
buffer_info->length, PCI_DMA_TODEVICE);
if (++tpd_next_to_use == tpd_ring->count)
@@ -1516,7 +1516,7 @@ static int atl1_xmit_frame(struct sk_buf
/* nr_frags will be nonzero if we're doing scatter/gather (SG) */
nr_frags = skb_shinfo(skb)->nr_frags;
for (f = 0; f < nr_frags; f++) {
- frag_size = skb_shinfo(skb)->frags[f].size;
+ frag_size = skb_shinfo(skb)->frags[f].length;
if (frag_size)
count +=
(frag_size + MAX_TX_BUF_LEN - 1) / MAX_TX_BUF_LEN;
--- a/drivers/net/bnx2.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/bnx2.c 2007-07-05 15:24:36.000000000 -0700
@@ -2038,7 +2038,7 @@ bnx2_tx_int(struct bnx2 *bp)
pci_unmap_addr(
&bp->tx_buf_ring[TX_RING_IDX(sw_cons)],
mapping),
- skb_shinfo(skb)->frags[i].size,
+ skb_shinfo(skb)->frags[i].length,
PCI_DMA_TODEVICE);
}
@@ -4001,7 +4001,7 @@ bnx2_free_tx_skbs(struct bnx2 *bp)
tx_buf = &bp->tx_buf_ring[i + j + 1];
pci_unmap_page(bp->pdev,
pci_unmap_addr(tx_buf, mapping),
- skb_shinfo(skb)->frags[j].size,
+ skb_shinfo(skb)->frags[j].length,
PCI_DMA_TODEVICE);
}
dev_kfree_skb(skb);
@@ -4922,8 +4922,8 @@ bnx2_start_xmit(struct sk_buff *skb, str
ring_prod = TX_RING_IDX(prod);
txbd = &bp->tx_desc_ring[ring_prod];
- len = frag->size;
- mapping = pci_map_page(bp->pdev, frag->page, frag->page_offset,
+ len = frag->length;
+ mapping = pci_map_page(bp->pdev, frag->page, frag->offset,
len, PCI_DMA_TODEVICE);
pci_unmap_addr_set(&bp->tx_buf_ring[ring_prod],
mapping, mapping);
--- a/drivers/net/cassini.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/cassini.c 2007-07-05 15:20:37.000000000 -0700
@@ -2067,8 +2067,8 @@ static int cas_rx_process_pkt(struct cas
get_page(page->buffer);
cas_buffer_inc(page);
frag->page = page->buffer;
- frag->page_offset = off;
- frag->size = hlen - swivel;
+ frag->offset = off;
+ frag->length = hlen - swivel;
/* any more data? */
if ((words[0] & RX_COMP1_SPLIT_PKT) && ((dlen -= hlen) > 0)) {
@@ -2092,8 +2092,8 @@ static int cas_rx_process_pkt(struct cas
get_page(page->buffer);
cas_buffer_inc(page);
frag->page = page->buffer;
- frag->page_offset = 0;
- frag->size = hlen;
+ frag->offset = 0;
+ frag->length = hlen;
RX_USED_ADD(page, hlen + cp->crc_size);
}
@@ -2860,12 +2860,11 @@ static inline int cas_xmit_tx_ringN(stru
for (frag = 0; frag < nr_frags; frag++) {
skb_frag_t *fragp = &skb_shinfo(skb)->frags[frag];
- len = fragp->size;
- mapping = pci_map_page(cp->pdev, fragp->page,
- fragp->page_offset, len,
- PCI_DMA_TODEVICE);
+ len = fragp->length;
+ mapping = pci_map_page(cp->pdev, fragp->page, fragp->offset,
+ len, PCI_DMA_TODEVICE);
- tabort = cas_calc_tabort(cp, fragp->page_offset, len);
+ tabort = cas_calc_tabort(cp, fragp->offset, len);
if (unlikely(tabort)) {
void *addr;
@@ -2876,7 +2875,7 @@ static inline int cas_xmit_tx_ringN(stru
addr = cas_page_map(fragp->page);
memcpy(tx_tiny_buf(cp, ring, entry),
- addr + fragp->page_offset + len - tabort,
+ addr + fragp->offset + len - tabort,
tabort);
cas_page_unmap(addr);
mapping = tx_tiny_map(cp, ring, entry, tentry);
--- a/drivers/net/chelsio/sge.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/chelsio/sge.c 2007-07-05 15:02:00.000000000 -0700
@@ -1130,7 +1130,7 @@ static inline unsigned int compute_large
}
for (i = 0; nfrags--; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- len = frag->size;
+ len = frag->length;
while (len > SGE_TX_DESC_MAX_PLEN) {
count++;
len -= SGE_TX_DESC_MAX_PLEN;
@@ -1272,10 +1272,10 @@ static inline void write_tx_descs(struct
}
mapping = pci_map_page(adapter->pdev, frag->page,
- frag->page_offset, frag->size,
+ frag->offset, frag->length,
PCI_DMA_TODEVICE);
desc_mapping = mapping;
- desc_len = frag->size;
+ desc_len = frag->length;
pidx = write_large_page_tx_descs(pidx, &e1, &ce, &gen,
&desc_mapping, &desc_len,
@@ -1285,7 +1285,7 @@ static inline void write_tx_descs(struct
nfrags == 0);
ce->skb = NULL;
pci_unmap_addr_set(ce, dma_addr, mapping);
- pci_unmap_len_set(ce, dma_len, frag->size);
+ pci_unmap_len_set(ce, dma_len, frag->length);
}
ce->skb = skb;
wmb();
--- a/drivers/net/cxgb3/sge.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/cxgb3/sge.c 2007-07-05 15:17:10.000000000 -0700
@@ -246,7 +246,7 @@ static inline void unmap_skb(struct sk_b
while (frag_idx < nfrags && curflit < WR_FLITS) {
pci_unmap_page(pdev, be64_to_cpu(sgp->addr[j]),
- skb_shinfo(skb)->frags[frag_idx].size,
+ skb_shinfo(skb)->frags[frag_idx].length,
PCI_DMA_TODEVICE);
j ^= 1;
if (j == 0) {
@@ -433,8 +433,8 @@ static void refill_fl(struct adapter *ad
q->alloc_failed++;
break;
} else {
- p->frag.size = RX_PAGE_SIZE;
- p->frag.page_offset = 0;
+ p->frag.length = RX_PAGE_SIZE;
+ p->frag.offset = 0;
p->va = page_address(p->frag.page);
}
}
@@ -442,10 +442,10 @@ static void refill_fl(struct adapter *ad
memcpy(&sd->t, p, sizeof(*p));
va = p->va;
- p->frag.page_offset += RX_PAGE_SIZE;
- BUG_ON(p->frag.page_offset > PAGE_SIZE);
+ p->frag.offset += RX_PAGE_SIZE;
+ BUG_ON(p->frag.offset > PAGE_SIZE);
p->va += RX_PAGE_SIZE;
- if (p->frag.page_offset == PAGE_SIZE)
+ if (p->frag.offset == PAGE_SIZE)
p->frag.page = NULL;
else
get_page(p->frag.page);
@@ -716,9 +716,9 @@ static inline unsigned int make_sgl(cons
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);
- sgp->len[j] = cpu_to_be32(frag->size);
+ mapping = pci_map_page(pdev, frag->page, frag->offset,
+ frag->length, PCI_DMA_TODEVICE);
+ sgp->len[j] = cpu_to_be32(frag->length);
sgp->addr[j] = cpu_to_be64(mapping);
j ^= 1;
if (j == 0)
@@ -1270,7 +1270,7 @@ static void deferred_unmap_destructor(st
si = skb_shinfo(skb);
for (i = 0; i < si->nr_frags; i++)
- pci_unmap_page(dui->pdev, *p++, si->frags[i].size,
+ pci_unmap_page(dui->pdev, *p++, si->frags[i].length,
PCI_DMA_TODEVICE);
}
@@ -1728,9 +1728,8 @@ static void skb_data_init(struct sk_buff
} else {
skb_copy_to_linear_data(skb, p->va, SKB_DATA_SIZE);
skb_shinfo(skb)->frags[0].page = p->frag.page;
- skb_shinfo(skb)->frags[0].page_offset =
- p->frag.page_offset + SKB_DATA_SIZE;
- skb_shinfo(skb)->frags[0].size = len - SKB_DATA_SIZE;
+ skb_shinfo(skb)->frags[0].offset = p->frag.offset + SKB_DATA_SIZE;
+ skb_shinfo(skb)->frags[0].length = len - SKB_DATA_SIZE;
skb_shinfo(skb)->nr_frags = 1;
skb->data_len = len - SKB_DATA_SIZE;
skb->tail += SKB_DATA_SIZE;
--- a/drivers/net/e1000/e1000_main.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/e1000/e1000_main.c 2007-07-05 15:17:16.000000000 -0700
@@ -3049,11 +3049,11 @@ e1000_tx_map(struct e1000_adapter *adapt
}
for (f = 0; f < nr_frags; f++) {
- struct skb_frag_struct *frag;
+ skb_frag_t *frag;
frag = &skb_shinfo(skb)->frags[f];
- len = frag->size;
- offset = frag->page_offset;
+ len = frag->length;
+ offset = frag->offset;
while (len) {
buffer_info = &tx_ring->buffer_info[i];
@@ -3358,7 +3358,7 @@ e1000_xmit_frame(struct sk_buff *skb, st
nr_frags = skb_shinfo(skb)->nr_frags;
for (f = 0; f < nr_frags; f++)
- count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size,
+ count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].length,
max_txd_pwr);
if (adapter->pcix_82544)
count += nr_frags;
--- a/drivers/net/ehea/ehea_main.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/ehea/ehea_main.c 2007-07-05 14:38:04.000000000 -0700
@@ -1390,7 +1390,7 @@ static inline void write_swqe2_data(stru
sg1entry->l_key = lkey;
sg1entry->len = frag->size;
tmp_addr = (u64)(page_address(frag->page)
- + frag->page_offset);
+ + frag->offset);
sg1entry->vaddr = tmp_addr;
swqe->descriptors++;
sg1entry_contains_frag_data = 1;
@@ -1404,8 +1404,7 @@ static inline void write_swqe2_data(stru
sgentry->l_key = lkey;
sgentry->len = frag->size;
- tmp_addr = (u64)(page_address(frag->page)
- + frag->page_offset);
+ tmp_addr = (u64)(page_address(frag->page) + frag->offset);
sgentry->vaddr = tmp_addr;
swqe->descriptors++;
}
@@ -1789,7 +1788,7 @@ static void ehea_xmit3(struct sk_buff *s
for (i = 0; i < nfrags; i++) {
frag = &skb_shinfo(skb)->frags[i];
memcpy(imm_data,
- page_address(frag->page) + frag->page_offset,
+ page_address(frag->page) + frag->offset,
frag->size);
imm_data += frag->size;
}
--- a/drivers/net/forcedeth.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/forcedeth.c 2007-07-05 15:35:30.000000000 -0700
@@ -1649,8 +1649,8 @@ static int nv_start_xmit(struct sk_buff
/* add fragments to entries count */
for (i = 0; i < fragments; i++) {
- entries += (skb_shinfo(skb)->frags[i].size >> NV_TX2_TSO_MAX_SHIFT) +
- ((skb_shinfo(skb)->frags[i].size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
+ entries += (skb_shinfo(skb)->frags[i].length >> NV_TX2_TSO_MAX_SHIFT) +
+ ((skb_shinfo(skb)->frags[i].length & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
}
empty_slots = nv_get_empty_tx_slots(np);
@@ -1687,15 +1687,16 @@ static int nv_start_xmit(struct sk_buff
/* setup the fragments */
for (i = 0; i < fragments; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- u32 size = frag->size;
+ u32 size = frag->length;
offset = 0;
do {
prev_tx = put_tx;
prev_tx_ctx = np->put_tx_ctx;
bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size;
- np->put_tx_ctx->dma = pci_map_page(np->pci_dev, frag->page, frag->page_offset+offset, bcnt,
- PCI_DMA_TODEVICE);
+ np->put_tx_ctx->dma = pci_map_page(np->pci_dev, frag->page,
+ frag->offset + offset,
+ bcnt, PCI_DMA_TODEVICE);
np->put_tx_ctx->dma_len = bcnt;
put_tx->buf = cpu_to_le32(np->put_tx_ctx->dma);
put_tx->flaglen = cpu_to_le32((bcnt-1) | tx_flags);
@@ -1765,8 +1766,8 @@ static int nv_start_xmit_optimized(struc
/* add fragments to entries count */
for (i = 0; i < fragments; i++) {
- entries += (skb_shinfo(skb)->frags[i].size >> NV_TX2_TSO_MAX_SHIFT) +
- ((skb_shinfo(skb)->frags[i].size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
+ entries += (skb_shinfo(skb)->frags[i].length >> NV_TX2_TSO_MAX_SHIFT) +
+ ((skb_shinfo(skb)->frags[i].length & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0);
}
empty_slots = nv_get_empty_tx_slots(np);
@@ -1804,15 +1805,16 @@ static int nv_start_xmit_optimized(struc
/* setup the fragments */
for (i = 0; i < fragments; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- u32 size = frag->size;
+ u32 size = frag->length;
offset = 0;
do {
prev_tx = put_tx;
prev_tx_ctx = np->put_tx_ctx;
bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size;
- np->put_tx_ctx->dma = pci_map_page(np->pci_dev, frag->page, frag->page_offset+offset, bcnt,
- PCI_DMA_TODEVICE);
+ np->put_tx_ctx->dma = pci_map_page(np->pci_dev, frag->page,
+ frag->offset + offset,
+ bcnt, PCI_DMA_TODEVICE);
np->put_tx_ctx->dma_len = bcnt;
put_tx->bufhigh = cpu_to_le64(np->put_tx_ctx->dma) >> 32;
put_tx->buflow = cpu_to_le64(np->put_tx_ctx->dma) & 0x0FFFFFFFF;
--- a/drivers/net/ibm_emac/ibm_emac_core.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/ibm_emac/ibm_emac_core.c 2007-07-05 14:38:04.000000000 -0700
@@ -1165,7 +1165,7 @@ static int emac_start_xmit_sg(struct sk_
if (unlikely(dev->tx_cnt + mal_tx_chunks(len) >= NUM_TX_BUFF))
goto undo_frame;
- pd = dma_map_page(dev->ldev, frag->page, frag->page_offset, len,
+ pd = dma_map_page(dev->ldev, frag->page, frag->offset, len,
DMA_TO_DEVICE);
slot = emac_xmit_split(dev, slot, pd, len, i == nr_frags - 1,
--- a/drivers/net/ibmveth.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/ibmveth.c 2007-07-05 14:38:04.000000000 -0700
@@ -698,7 +698,7 @@ static int ibmveth_start_xmit(struct sk_
skb_frag_t *frag = &skb_shinfo(skb)->frags[curfrag];
desc[curfrag+1].fields.address
= dma_map_single(&adapter->vdev->dev,
- page_address(frag->page) + frag->page_offset,
+ page_address(frag->page) + frag->offset,
frag->size, DMA_TO_DEVICE);
desc[curfrag+1].fields.length = frag->size;
desc[curfrag+1].fields.valid = 1;
--- a/drivers/net/ixgb/ixgb_main.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/ixgb/ixgb_main.c 2007-07-05 15:15:47.000000000 -0700
@@ -1314,10 +1314,10 @@ ixgb_tx_map(struct ixgb_adapter *adapter
}
for(f = 0; f < nr_frags; f++) {
- struct skb_frag_struct *frag;
+ skb_frag_t *frag;
frag = &skb_shinfo(skb)->frags[f];
- len = frag->size;
+ len = frag->length;
offset = 0;
while(len) {
@@ -1334,7 +1334,7 @@ ixgb_tx_map(struct ixgb_adapter *adapter
buffer_info->dma =
pci_map_page(adapter->pdev,
frag->page,
- frag->page_offset + offset,
+ frag->offset + offset,
size,
PCI_DMA_TODEVICE);
buffer_info->time_stamp = jiffies;
--- a/drivers/net/mv643xx_eth.c 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/mv643xx_eth.c 2007-07-05 14:38:04.000000000 -0700
@@ -1114,7 +1114,7 @@ static void eth_tx_fill_frag_descs(struc
desc->l4i_chk = 0;
desc->byte_cnt = this_frag->size;
desc->buf_ptr = dma_map_page(NULL, this_frag->page,
- this_frag->page_offset,
+ this_frag->offset,
this_frag->size,
DMA_TO_DEVICE);
}
--- a/drivers/net/myri10ge/myri10ge.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/myri10ge/myri10ge.c 2007-07-05 15:23:04.000000000 -0700
@@ -877,9 +877,9 @@ static inline void myri10ge_vlan_ip_csum
static inline void
myri10ge_rx_skb_build(struct sk_buff *skb, u8 * va,
- struct skb_frag_struct *rx_frags, int len, int hlen)
+ skb_frag_t *rx_frags, int len, int hlen)
{
- struct skb_frag_struct *skb_frags;
+ skb_frag_t *skb_frags;
skb->len = skb->data_len = len;
skb->truesize = len + sizeof(struct sk_buff);
@@ -888,7 +888,7 @@ myri10ge_rx_skb_build(struct sk_buff *sk
skb_frags = skb_shinfo(skb)->frags;
while (len > 0) {
memcpy(skb_frags, rx_frags, sizeof(*skb_frags));
- len -= rx_frags->size;
+ len -= rx_frags->length;
skb_frags++;
rx_frags++;
skb_shinfo(skb)->nr_frags++;
@@ -899,8 +899,8 @@ myri10ge_rx_skb_build(struct sk_buff *sk
* the beginning of the packet in skb_headlen(), move it
* manually */
skb_copy_to_linear_data(skb, va, hlen);
- skb_shinfo(skb)->frags[0].page_offset += hlen;
- skb_shinfo(skb)->frags[0].size -= hlen;
+ skb_shinfo(skb)->frags[0].offset += hlen;
+ skb_shinfo(skb)->frags[0].length -= hlen;
skb->data_len -= hlen;
skb->tail += hlen;
skb_pull(skb, MXGEFW_PAD);
@@ -994,7 +994,7 @@ myri10ge_rx_done(struct myri10ge_priv *m
int bytes, int len, __wsum csum)
{
struct sk_buff *skb;
- struct skb_frag_struct rx_frags[MYRI10GE_MAX_FRAGS_PER_FRAME];
+ skb_frag_t rx_frags[MYRI10GE_MAX_FRAGS_PER_FRAME];
int i, idx, hlen, remainder;
struct pci_dev *pdev = mgp->pdev;
struct net_device *dev = mgp->dev;
@@ -1008,11 +1008,11 @@ myri10ge_rx_done(struct myri10ge_priv *m
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;
- rx_frags[i].page_offset = rx->info[idx].page_offset;
+ rx_frags[i].offset = rx->info[idx].page_offset;
if (remainder < MYRI10GE_ALLOC_SIZE)
- rx_frags[i].size = remainder;
+ rx_frags[i].length = remainder;
else
- rx_frags[i].size = MYRI10GE_ALLOC_SIZE;
+ rx_frags[i].length = MYRI10GE_ALLOC_SIZE;
rx->cnt++;
idx = rx->cnt & rx->mask;
remainder -= MYRI10GE_ALLOC_SIZE;
@@ -1034,7 +1034,7 @@ myri10ge_rx_done(struct myri10ge_priv *m
/* 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) {
+ if (skb_shinfo(skb)->frags[0].length <= 0) {
put_page(skb_shinfo(skb)->frags[0].page);
skb_shinfo(skb)->nr_frags = 0;
}
@@ -2026,7 +2026,7 @@ static int myri10ge_xmit(struct sk_buff
struct myri10ge_priv *mgp = netdev_priv(dev);
struct mcp_kreq_ether_send *req;
struct myri10ge_tx_buf *tx = &mgp->tx;
- struct skb_frag_struct *frag;
+ skb_frag_t *frag;
dma_addr_t bus;
u32 low;
__be32 high_swapped;
@@ -2214,8 +2214,8 @@ again:
idx = (count + tx->req) & tx->mask;
frag = &skb_shinfo(skb)->frags[frag_idx];
frag_idx++;
- len = frag->size;
- bus = pci_map_page(mgp->pdev, frag->page, frag->page_offset,
+ len = frag->length;
+ bus = pci_map_page(mgp->pdev, frag->page, frag->offset,
len, PCI_DMA_TODEVICE);
pci_unmap_addr_set(&tx->info[idx], bus, bus);
pci_unmap_len_set(&tx->info[idx], len, len);
--- a/drivers/net/netxen/netxen_nic_main.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/netxen/netxen_nic_main.c 2007-07-05 15:17:32.000000000 -0700
@@ -996,7 +996,7 @@ static int netxen_nic_xmit_frame(struct
hwdesc->addr_buffer1 = cpu_to_le64(buffrag->dma);
for (i = 1, k = 1; i < frag_count; i++, k++) {
- struct skb_frag_struct *frag;
+ skb_frag_t *frag;
int len, temp_len;
unsigned long offset;
dma_addr_t temp_dma;
@@ -1010,8 +1010,8 @@ static int netxen_nic_xmit_frame(struct
memset(hwdesc, 0, sizeof(struct cmd_desc_type0));
}
frag = &skb_shinfo(skb)->frags[i - 1];
- len = frag->size;
- offset = frag->page_offset;
+ len = frag->length;
+ offset = frag->offset;
temp_len = len;
temp_dma = pci_map_page(adapter->pdev, frag->page, offset,
--- a/drivers/net/ns83820.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/ns83820.c 2007-07-05 15:23:47.000000000 -0700
@@ -1187,13 +1187,12 @@ again:
if (!nr_frags)
break;
- buf = pci_map_page(dev->pci_dev, frag->page,
- frag->page_offset,
- frag->size, PCI_DMA_TODEVICE);
+ buf = pci_map_page(dev->pci_dev, frag->page, frag->offset,
+ frag->length, PCI_DMA_TODEVICE);
dprintk("frag: buf=%08Lx page=%08lx offset=%08lx\n",
(long long)buf, (long) page_to_pfn(frag->page),
- frag->page_offset);
- len = frag->size;
+ frag->offset);
+ len = frag->length;
frag++;
nr_frags--;
}
--- a/drivers/net/qla3xxx.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/qla3xxx.c 2007-07-05 15:35:53.000000000 -0700
@@ -2548,7 +2548,7 @@ static int ql_send_map(struct ql3_adapte
map =
pci_map_page(qdev->pdev, frag->page,
- frag->page_offset, frag->size,
+ frag->offset, frag->length,
PCI_DMA_TODEVICE);
err = pci_dma_mapping_error(map);
@@ -2560,10 +2560,10 @@ static int ql_send_map(struct ql3_adapte
oal_entry->dma_lo = cpu_to_le32(LS_64BITS(map));
oal_entry->dma_hi = cpu_to_le32(MS_64BITS(map));
- oal_entry->len = cpu_to_le32(frag->size);
+ oal_entry->len = cpu_to_le32(frag->length);
pci_unmap_addr_set(&tx_cb->map[seg], mapaddr, map);
pci_unmap_len_set(&tx_cb->map[seg], maplen,
- frag->size);
+ frag->length);
}
/* Terminate the last segment. */
oal_entry->len =
--- a/drivers/net/r8169.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/r8169.c 2007-07-05 15:36:00.000000000 -0700
@@ -2243,8 +2243,8 @@ static int rtl8169_xmit_frags(struct rtl
entry = (entry + 1) % NUM_TX_DESC;
txd = tp->TxDescArray + entry;
- len = frag->size;
- addr = ((void *) page_address(frag->page)) + frag->page_offset;
+ len = frag->length;
+ addr = ((void *) page_address(frag->page)) + frag->offset;
mapping = pci_map_single(tp->pci_dev, addr, len, PCI_DMA_TODEVICE);
/* anti gcc 2.95.3 bugware (sic) */
--- a/drivers/net/s2io.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/s2io.c 2007-07-05 15:36:39.000000000 -0700
@@ -2141,9 +2141,9 @@ static struct sk_buff *s2io_txdl_getskb(
skb_frag_t *frag = &skb_shinfo(skb)->frags[j];
if (!txds->Buffer_Pointer)
break;
- pci_unmap_page(nic->pdev, (dma_addr_t)
- txds->Buffer_Pointer,
- frag->size, PCI_DMA_TODEVICE);
+ pci_unmap_page(nic->pdev,
+ (dma_addr_t) txds->Buffer_Pointer,
+ frag->length, PCI_DMA_TODEVICE);
}
}
memset(txdlp,0, (sizeof(struct TxD) * fifo_data->max_txds));
@@ -4087,13 +4087,15 @@ static int s2io_xmit(struct sk_buff *skb
for (i = 0; i < frg_cnt; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
/* A '0' length fragment will be ignored */
- if (!frag->size)
+ if (!frag->length)
continue;
txdp++;
- txdp->Buffer_Pointer = (u64) pci_map_page
- (sp->pdev, frag->page, frag->page_offset,
- frag->size, PCI_DMA_TODEVICE);
- txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size);
+ txdp->Buffer_Pointer = (u64) pci_map_page(sp->pdev,
+ frag->page,
+ frag->offset,
+ frag->length,
+ PCI_DMA_TODEVICE);
+ txdp->Control_1 = TXD_BUFFER0_SIZE(frag->length);
if (offload_type == SKB_GSO_UDP)
txdp->Control_1 |= TXD_UFO_EN;
}
--- a/drivers/net/sk98lin/skge.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/sk98lin/skge.c 2007-07-05 15:23:10.000000000 -0700
@@ -1721,15 +1721,15 @@ struct sk_buff *pMessage) /* pointer to
*/
PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
sk_frag->page,
- sk_frag->page_offset,
- sk_frag->size,
+ sk_frag->offset,
+ sk_frag->length,
PCI_DMA_TODEVICE);
pTxd->VDataLow = (SK_U32) (PhysAddr & 0xffffffff);
pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
pTxd->pMBuf = pMessage;
- pTxd->TBControl = Control | BMU_OWN | sk_frag->size;
+ pTxd->TBControl = Control | BMU_OWN | sk_frag->length;
/*
** Do we have the last fragment?
@@ -1745,7 +1745,7 @@ struct sk_buff *pMessage) /* pointer to
pTxdLst = pTxd;
pTxd = pTxd->pNextTxd;
pTxPort->TxdRingFree--;
- BytesSend += sk_frag->size;
+ BytesSend += sk_frag->length;
}
/*
--- a/drivers/net/skge.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/skge.c 2007-07-05 15:33:23.000000000 -0700
@@ -2684,8 +2684,8 @@ static int skge_xmit_frame(struct sk_buf
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- map = pci_map_page(hw->pdev, frag->page, frag->page_offset,
- frag->size, PCI_DMA_TODEVICE);
+ map = pci_map_page(hw->pdev, frag->page, frag->offset,
+ frag->length, PCI_DMA_TODEVICE);
e = e->next;
e->skb = skb;
@@ -2695,9 +2695,9 @@ static int skge_xmit_frame(struct sk_buf
tf->dma_lo = map;
tf->dma_hi = (u64) map >> 32;
pci_unmap_addr_set(e, mapaddr, map);
- pci_unmap_len_set(e, maplen, frag->size);
+ pci_unmap_len_set(e, maplen, frag->length);
- tf->control = BMU_OWN | BMU_SW | control | frag->size;
+ tf->control = BMU_OWN | BMU_SW | control | frag->length;
}
tf->control |= BMU_EOF | BMU_IRQ_EOF;
}
--- a/drivers/net/sky2.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/sky2.c 2007-07-05 15:34:18.000000000 -0700
@@ -912,8 +912,8 @@ static void sky2_rx_map_skb(struct pci_d
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
re->frag_addr[i] = pci_map_page(pdev,
skb_shinfo(skb)->frags[i].page,
- skb_shinfo(skb)->frags[i].page_offset,
- skb_shinfo(skb)->frags[i].size,
+ skb_shinfo(skb)->frags[i].offset,
+ skb_shinfo(skb)->frags[i].length,
PCI_DMA_FROMDEVICE);
}
@@ -927,7 +927,7 @@ static void sky2_rx_unmap_skb(struct pci
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
pci_unmap_page(pdev, re->frag_addr[i],
- skb_shinfo(skb)->frags[i].size,
+ skb_shinfo(skb)->frags[i].length,
PCI_DMA_FROMDEVICE);
}
@@ -1457,8 +1457,8 @@ static int sky2_xmit_frame(struct sk_buf
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- mapping = pci_map_page(hw->pdev, frag->page, frag->page_offset,
- frag->size, PCI_DMA_TODEVICE);
+ mapping = pci_map_page(hw->pdev, frag->page, frag->offset,
+ frag->length, PCI_DMA_TODEVICE);
addr64 = high32(mapping);
if (addr64 != sky2->tx_addr64) {
le = get_tx_le(sky2);
@@ -1470,14 +1470,14 @@ static int sky2_xmit_frame(struct sk_buf
le = get_tx_le(sky2);
le->addr = cpu_to_le32((u32) mapping);
- le->length = cpu_to_le16(frag->size);
+ le->length = cpu_to_le16(frag->length);
le->ctrl = ctrl;
le->opcode = OP_BUFFER | HW_OWNER;
re = tx_le_re(sky2, le);
re->skb = skb;
pci_unmap_addr_set(re, mapaddr, mapping);
- pci_unmap_len_set(re, maplen, frag->size);
+ pci_unmap_len_set(re, maplen, frag->length);
}
le->ctrl |= EOP;
@@ -2002,7 +2002,7 @@ static void skb_put_frags(struct sk_buff
} else {
size = min(length, (unsigned) PAGE_SIZE);
- frag->size = size;
+ frag->length = size;
skb->data_len += size;
skb->truesize += size;
skb->len += size;
--- a/drivers/net/starfire.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/starfire.c 2007-07-05 15:34:54.000000000 -0700
@@ -1262,9 +1262,12 @@ static int start_tx(struct sk_buff *skb,
pci_map_single(np->pci_dev, skb->data, skb_first_frag_len(skb), PCI_DMA_TODEVICE);
} else {
skb_frag_t *this_frag = &skb_shinfo(skb)->frags[i - 1];
- status |= this_frag->size;
+ status |= this_frag->length;
np->tx_info[entry].mapping =
- pci_map_single(np->pci_dev, page_address(this_frag->page) + this_frag->page_offset, this_frag->size, PCI_DMA_TODEVICE);
+ pci_map_single(np->pci_dev,
+ page_address(this_frag->page) + this_frag->offset,
+ this_frag->length,
+ PCI_DMA_TODEVICE);
}
np->tx_ring[entry].addr = cpu_to_dma(np->tx_info[entry].mapping);
@@ -1362,7 +1365,7 @@ static irqreturn_t intr_handler(int irq,
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
pci_unmap_single(np->pci_dev,
np->tx_info[entry].mapping,
- skb_shinfo(skb)->frags[i].size,
+ skb_shinfo(skb)->frags[i].length,
PCI_DMA_TODEVICE);
np->dirty_tx++;
entry++;
--- a/drivers/net/sungem.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/sungem.c 2007-07-05 15:19:49.000000000 -0700
@@ -1101,10 +1101,10 @@ static int gem_start_xmit(struct sk_buff
dma_addr_t mapping;
u64 this_ctrl;
- len = this_frag->size;
+ len = this_frag->length;
mapping = pci_map_page(gp->pdev,
this_frag->page,
- this_frag->page_offset,
+ this_frag->offset,
len, PCI_DMA_TODEVICE);
this_ctrl = ctrl;
if (frag == skb_shinfo(skb)->nr_frags - 1)
--- a/drivers/net/sunhme.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/sunhme.c 2007-07-05 15:16:45.000000000 -0700
@@ -2313,10 +2313,10 @@ static int happy_meal_start_xmit(struct
skb_frag_t *this_frag = &skb_shinfo(skb)->frags[frag];
u32 len, mapping, this_txflags;
- len = this_frag->size;
+ len = this_frag->length;
mapping = hme_dma_map(hp,
((void *) page_address(this_frag->page) +
- this_frag->page_offset),
+ this_frag->offset),
len, DMA_TODEVICE);
this_txflags = tx_flags;
if (frag == skb_shinfo(skb)->nr_frags - 1)
--- a/drivers/net/tg3.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/tg3.c 2007-07-05 15:24:11.000000000 -0700
@@ -3095,7 +3095,7 @@ static void tg3_tx(struct tg3 *tp)
pci_unmap_page(tp->pdev,
pci_unmap_addr(ri, mapping),
- skb_shinfo(skb)->frags[i].size,
+ skb_shinfo(skb)->frags[i].length,
PCI_DMA_TODEVICE);
sw_idx = NEXT_TX(sw_idx);
@@ -3835,7 +3835,7 @@ static int tigon3_dma_hwbug_workaround(s
if (i == 0)
len = skb_headlen(skb);
else
- len = skb_shinfo(skb)->frags[i-1].size;
+ len = skb_shinfo(skb)->frags[i-1].length;
pci_unmap_single(tp->pdev,
pci_unmap_addr(&tp->tx_buffers[entry], mapping),
len, PCI_DMA_TODEVICE);
@@ -3962,10 +3962,10 @@ static int tg3_start_xmit(struct sk_buff
for (i = 0; i <= last; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- len = frag->size;
+ len = frag->length;
mapping = pci_map_page(tp->pdev,
frag->page,
- frag->page_offset,
+ frag->offset,
len, PCI_DMA_TODEVICE);
tp->tx_buffers[entry].skb = NULL;
@@ -4144,10 +4144,10 @@ static int tg3_start_xmit_dma_bug(struct
for (i = 0; i <= last; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- len = frag->size;
+ len = frag->length;
mapping = pci_map_page(tp->pdev,
frag->page,
- frag->page_offset,
+ frag->offset,
len, PCI_DMA_TODEVICE);
tp->tx_buffers[entry].skb = NULL;
@@ -4321,7 +4321,7 @@ static void tg3_free_rings(struct tg3 *t
txp = &tp->tx_buffers[i & (TG3_TX_RING_SIZE - 1)];
pci_unmap_page(tp->pdev,
pci_unmap_addr(txp, mapping),
- skb_shinfo(skb)->frags[j].size,
+ skb_shinfo(skb)->frags[j].length,
PCI_DMA_TODEVICE);
i++;
}
--- a/drivers/net/tsi108_eth.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/tsi108_eth.c 2007-07-05 14:38:04.000000000 -0700
@@ -715,7 +715,7 @@ static int tsi108_send_packet(struct sk_
skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1];
data->txring[tx].buf0 =
- dma_map_page(NULL, frag->page, frag->page_offset,
+ dma_map_page(NULL, frag->page, frag->offset,
frag->size, DMA_TO_DEVICE);
data->txring[tx].len = frag->size;
}
--- a/drivers/net/typhoon.c 2007-06-05 13:27:36.000000000 -0700
+++ b/drivers/net/typhoon.c 2007-07-05 14:38:04.000000000 -0700
@@ -874,7 +874,7 @@ typhoon_start_tx(struct sk_buff *skb, st
len = frag->size;
frag_addr = (void *) page_address(frag->page) +
- frag->page_offset;
+ frag->offset;
skb_dma = pci_map_single(tp->tx_pdev, frag_addr, len,
PCI_DMA_TODEVICE);
txd->flags = TYPHOON_FRAG_DESC | TYPHOON_DESC_VALID;
--- a/drivers/net/via-velocity.c 2007-07-05 14:21:36.000000000 -0700
+++ b/drivers/net/via-velocity.c 2007-07-05 14:38:04.000000000 -0700
@@ -1966,7 +1966,7 @@ static int velocity_xmit(struct sk_buff
for (i = 0; i < nfrags; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
- void *addr = ((void *) page_address(frag->page + frag->page_offset));
+ void *addr = ((void *) page_address(frag->page + frag->offset));
tdinfo->skb_dma[i + 1] = pci_map_single(vptr->pdev, addr, frag->size, PCI_DMA_TODEVICE);
--- a/net/appletalk/ddp.c 2007-06-05 13:27:45.000000000 -0700
+++ b/net/appletalk/ddp.c 2007-07-05 15:01:28.000000000 -0700
@@ -957,7 +957,7 @@ static unsigned long atalk_sum_skb(const
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
u8 *vaddr;
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
@@ -965,7 +965,7 @@ static unsigned long atalk_sum_skb(const
if (copy > len)
copy = len;
vaddr = kmap_skb_frag(frag);
- sum = atalk_sum_partial(vaddr + frag->page_offset +
+ sum = atalk_sum_partial(vaddr + frag->offset +
offset - start, copy, sum);
kunmap_skb_frag(vaddr);
--- a/net/core/datagram.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/core/datagram.c 2007-07-05 15:07:51.000000000 -0700
@@ -267,7 +267,7 @@ int skb_copy_datagram_iovec(const struct
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
int err;
u8 *vaddr;
@@ -277,7 +277,7 @@ int skb_copy_datagram_iovec(const struct
if (copy > len)
copy = len;
vaddr = kmap(page);
- err = memcpy_toiovec(to, vaddr + frag->page_offset +
+ err = memcpy_toiovec(to, vaddr + frag->offset +
offset - start, copy);
kunmap(page);
if (err)
@@ -348,7 +348,7 @@ static int skb_copy_and_csum_datagram(co
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
__wsum csum2;
int err = 0;
@@ -359,8 +359,7 @@ static int skb_copy_and_csum_datagram(co
if (copy > len)
copy = len;
vaddr = kmap(page);
- csum2 = csum_and_copy_to_user(vaddr +
- frag->page_offset +
+ csum2 = csum_and_copy_to_user(vaddr + frag->offset +
offset - start,
to, copy, 0, &err);
kunmap(page);
--- a/net/core/skbuff.c 2007-07-05 14:21:36.000000000 -0700
+++ b/net/core/skbuff.c 2007-07-05 15:10:06.000000000 -0700
@@ -837,14 +837,14 @@ int ___pskb_trim(struct sk_buff *skb, un
goto drop_pages;
for (; i < nfrags; i++) {
- int end = offset + skb_shinfo(skb)->frags[i].size;
+ int end = offset + skb_shinfo(skb)->frags[i].length;
if (end < len) {
offset = end;
continue;
}
- skb_shinfo(skb)->frags[i++].size = len - offset;
+ skb_shinfo(skb)->frags[i++].length = len - offset;
drop_pages:
skb_shinfo(skb)->nr_frags = i;
@@ -952,9 +952,9 @@ unsigned char *__pskb_pull_tail(struct s
/* Estimate size of pulled pages. */
eat = delta;
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
- if (skb_shinfo(skb)->frags[i].size >= eat)
+ if (skb_shinfo(skb)->frags[i].length >= eat)
goto pull_pages;
- eat -= skb_shinfo(skb)->frags[i].size;
+ eat -= skb_shinfo(skb)->frags[i].length;
}
/* If we need update frag list, we are in troubles.
@@ -1018,14 +1018,14 @@ pull_pages:
eat = delta;
k = 0;
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
- if (skb_shinfo(skb)->frags[i].size <= eat) {
+ if (skb_shinfo(skb)->frags[i].length <= eat) {
put_page(skb_shinfo(skb)->frags[i].page);
- eat -= skb_shinfo(skb)->frags[i].size;
+ eat -= skb_shinfo(skb)->frags[i].length;
} else {
skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i];
if (eat) {
- skb_shinfo(skb)->frags[k].page_offset += eat;
- skb_shinfo(skb)->frags[k].size -= eat;
+ skb_shinfo(skb)->frags[k].offset += eat;
+ skb_shinfo(skb)->frags[k].length -= eat;
eat = 0;
}
k++;
@@ -1065,7 +1065,7 @@ int skb_copy_bits(const struct sk_buff *
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
u8 *vaddr;
@@ -1074,7 +1074,7 @@ int skb_copy_bits(const struct sk_buff *
vaddr = kmap_skb_frag(&skb_shinfo(skb)->frags[i]);
memcpy(to,
- vaddr + skb_shinfo(skb)->frags[i].page_offset+
+ vaddr + skb_shinfo(skb)->frags[i].offset +
offset - start, copy);
kunmap_skb_frag(vaddr);
@@ -1152,7 +1152,7 @@ int skb_store_bits(struct sk_buff *skb,
BUG_TRAP(start <= offset + len);
- end = start + frag->size;
+ end = start + frag->length;
if ((copy = end - offset) > 0) {
u8 *vaddr;
@@ -1160,7 +1160,7 @@ int skb_store_bits(struct sk_buff *skb,
copy = len;
vaddr = kmap_skb_frag(frag);
- memcpy(vaddr + frag->page_offset + offset - start,
+ memcpy(vaddr + frag->offset + offset - start,
from, copy);
kunmap_skb_frag(vaddr);
@@ -1229,7 +1229,7 @@ __wsum skb_checksum(const struct sk_buff
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
__wsum csum2;
u8 *vaddr;
@@ -1238,7 +1238,7 @@ __wsum skb_checksum(const struct sk_buff
if (copy > len)
copy = len;
vaddr = kmap_skb_frag(frag);
- csum2 = csum_partial(vaddr + frag->page_offset +
+ csum2 = csum_partial(vaddr + frag->offset +
offset - start, copy, 0);
kunmap_skb_frag(vaddr);
csum = csum_block_add(csum, csum2, pos);
@@ -1306,7 +1306,7 @@ __wsum skb_copy_and_csum_bits(const stru
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
__wsum csum2;
u8 *vaddr;
@@ -1316,7 +1316,7 @@ __wsum skb_copy_and_csum_bits(const stru
copy = len;
vaddr = kmap_skb_frag(frag);
csum2 = csum_partial_copy_nocheck(vaddr +
- frag->page_offset +
+ frag->offset +
offset - start, to,
copy, 0);
kunmap_skb_frag(vaddr);
@@ -1574,7 +1574,7 @@ static inline void skb_split_no_header(s
skb->data_len = len - pos;
for (i = 0; i < nfrags; i++) {
- int size = skb_shinfo(skb)->frags[i].size;
+ int size = skb_shinfo(skb)->frags[i].length;
if (pos + size > len) {
skb_shinfo(skb1)->frags[k] = skb_shinfo(skb)->frags[i];
@@ -1589,9 +1589,9 @@ static inline void skb_split_no_header(s
* 2. Split is accurately. We make this.
*/
get_page(skb_shinfo(skb)->frags[i].page);
- skb_shinfo(skb1)->frags[0].page_offset += len - pos;
- skb_shinfo(skb1)->frags[0].size -= len - pos;
- skb_shinfo(skb)->frags[i].size = len - pos;
+ skb_shinfo(skb1)->frags[0].offset += len - pos;
+ skb_shinfo(skb1)->frags[0].length -= len - pos;
+ skb_shinfo(skb)->frags[i].length = len - pos;
skb_shinfo(skb)->nr_frags++;
}
k++;
@@ -1685,13 +1685,13 @@ next_skb:
while (st->frag_idx < skb_shinfo(st->cur_skb)->nr_frags) {
frag = &skb_shinfo(st->cur_skb)->frags[st->frag_idx];
- block_limit = frag->size + st->stepped_offset;
+ block_limit = frag->length + st->stepped_offset;
if (abs_offset < block_limit) {
if (!st->frag_data)
st->frag_data = kmap_skb_frag(frag);
- *data = (u8 *) st->frag_data + frag->page_offset +
+ *data = (u8 *) st->frag_data + frag->offset +
(abs_offset - st->stepped_offset);
return block_limit - abs_offset;
@@ -1703,7 +1703,7 @@ next_skb:
}
st->frag_idx++;
- st->stepped_offset += frag->size;
+ st->stepped_offset += frag->length;
}
if (st->frag_data) {
@@ -1829,18 +1829,18 @@ int skb_append_datato_frags(struct sock
frag = &skb_shinfo(skb)->frags[frg_cnt - 1];
/* copy the user data to page */
- left = PAGE_SIZE - frag->page_offset;
+ left = PAGE_SIZE - frag->offset;
copy = (length > left)? left : length;
ret = getfrag(from, (page_address(frag->page) +
- frag->page_offset + frag->size),
+ frag->offset + frag->length),
offset, copy, 0, skb);
if (ret < 0)
return -EFAULT;
/* copy was successful so update the size parameters */
sk->sk_sndmsg_off += copy;
- frag->size += copy;
+ frag->length += copy;
skb->len += copy;
skb->data_len += copy;
offset += copy;
@@ -1964,11 +1964,11 @@ struct sk_buff *skb_segment(struct sk_bu
*frag = skb_shinfo(skb)->frags[i];
get_page(frag->page);
- size = frag->size;
+ size = frag->length;
if (pos < offset) {
- frag->page_offset += offset - pos;
- frag->size -= offset - pos;
+ frag->offset += offset - pos;
+ frag->length -= offset - pos;
}
k++;
@@ -1977,7 +1977,7 @@ struct sk_buff *skb_segment(struct sk_bu
i++;
pos += size;
} else {
- frag->size -= pos + size - (offset + len);
+ frag->length -= pos + size - (offset + len);
break;
}
@@ -2051,14 +2051,14 @@ skb_to_sgvec(struct sk_buff *skb, struct
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
if (copy > len)
copy = len;
sg[elt].page = frag->page;
- sg[elt].offset = frag->page_offset+offset-start;
+ sg[elt].offset = frag->offset+offset-start;
sg[elt].length = copy;
elt++;
if (!(len -= copy))
--- a/net/core/sock.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/core/sock.c 2007-07-05 15:03:43.000000000 -0700
@@ -1215,10 +1215,10 @@ static struct sk_buff *sock_alloc_send_p
frag = &skb_shinfo(skb)->frags[i];
frag->page = page;
- frag->page_offset = 0;
- frag->size = (data_len >= PAGE_SIZE ?
- PAGE_SIZE :
- data_len);
+ frag->offset = 0;
+ frag->length = (data_len >= PAGE_SIZE ?
+ PAGE_SIZE :
+ data_len);
data_len -= PAGE_SIZE;
}
--- a/net/core/user_dma.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/core/user_dma.c 2007-07-05 14:38:04.000000000 -0700
@@ -83,7 +83,7 @@ int dma_skb_copy_datagram_iovec(struct d
copy = len;
cookie = dma_memcpy_pg_to_iovec(chan, to, pinned_list, page,
- frag->page_offset + offset - start, copy);
+ frag->offset + offset - start, copy);
if (cookie < 0)
goto fault;
len -= copy;
--- a/drivers/net/cxgb3/adapter.h 2007-06-05 13:27:35.000000000 -0700
+++ b/drivers/net/cxgb3/adapter.h 2007-07-05 15:02:48.000000000 -0700
@@ -75,7 +75,7 @@ struct rx_desc;
struct rx_sw_desc;
struct sge_fl_page {
- struct skb_frag_struct frag;
+ skb_frag_t frag;
unsigned char *va;
};
--- a/net/core/pktgen.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/core/pktgen.c 2007-07-05 15:12:00.000000000 -0700
@@ -6,7 +6,7 @@
*
* Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
* Ben Greear <greearb@candelatech.com>
- * Jens Låås <jens.laas@data.slu.se>
+ * Jens Låås <jens.laas@data.slu.se>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -2415,12 +2415,12 @@ static struct sk_buff *fill_packet_ipv4(
while (datalen > 0) {
struct page *page = alloc_pages(GFP_KERNEL, 0);
skb_shinfo(skb)->frags[i].page = page;
- skb_shinfo(skb)->frags[i].page_offset = 0;
- skb_shinfo(skb)->frags[i].size =
+ skb_shinfo(skb)->frags[i].offset = 0;
+ skb_shinfo(skb)->frags[i].length =
(datalen < PAGE_SIZE ? datalen : PAGE_SIZE);
- datalen -= skb_shinfo(skb)->frags[i].size;
- skb->len += skb_shinfo(skb)->frags[i].size;
- skb->data_len += skb_shinfo(skb)->frags[i].size;
+ datalen -= skb_shinfo(skb)->frags[i].length;
+ skb->len += skb_shinfo(skb)->frags[i].length;
+ skb->data_len += skb_shinfo(skb)->frags[i].length;
i++;
skb_shinfo(skb)->nr_frags = i;
}
@@ -2431,20 +2431,20 @@ static struct sk_buff *fill_packet_ipv4(
if (i == 0)
break;
- rem = skb_shinfo(skb)->frags[i - 1].size / 2;
+ rem = skb_shinfo(skb)->frags[i - 1].length / 2;
if (rem == 0)
break;
- skb_shinfo(skb)->frags[i - 1].size -= rem;
+ skb_shinfo(skb)->frags[i - 1].length -= rem;
skb_shinfo(skb)->frags[i] =
skb_shinfo(skb)->frags[i - 1];
get_page(skb_shinfo(skb)->frags[i].page);
skb_shinfo(skb)->frags[i].page =
skb_shinfo(skb)->frags[i - 1].page;
- skb_shinfo(skb)->frags[i].page_offset +=
- skb_shinfo(skb)->frags[i - 1].size;
- skb_shinfo(skb)->frags[i].size = rem;
+ skb_shinfo(skb)->frags[i].offset +=
+ skb_shinfo(skb)->frags[i - 1].length;
+ skb_shinfo(skb)->frags[i].length = rem;
i++;
skb_shinfo(skb)->nr_frags = i;
}
@@ -2763,12 +2763,12 @@ static struct sk_buff *fill_packet_ipv6(
while (datalen > 0) {
struct page *page = alloc_pages(GFP_KERNEL, 0);
skb_shinfo(skb)->frags[i].page = page;
- skb_shinfo(skb)->frags[i].page_offset = 0;
- skb_shinfo(skb)->frags[i].size =
+ skb_shinfo(skb)->frags[i].offset = 0;
+ skb_shinfo(skb)->frags[i].length =
(datalen < PAGE_SIZE ? datalen : PAGE_SIZE);
- datalen -= skb_shinfo(skb)->frags[i].size;
- skb->len += skb_shinfo(skb)->frags[i].size;
- skb->data_len += skb_shinfo(skb)->frags[i].size;
+ datalen -= skb_shinfo(skb)->frags[i].length;
+ skb->len += skb_shinfo(skb)->frags[i].length;
+ skb->data_len += skb_shinfo(skb)->frags[i].length;
i++;
skb_shinfo(skb)->nr_frags = i;
}
@@ -2779,20 +2779,20 @@ static struct sk_buff *fill_packet_ipv6(
if (i == 0)
break;
- rem = skb_shinfo(skb)->frags[i - 1].size / 2;
+ rem = skb_shinfo(skb)->frags[i - 1].length / 2;
if (rem == 0)
break;
- skb_shinfo(skb)->frags[i - 1].size -= rem;
+ skb_shinfo(skb)->frags[i - 1].length -= rem;
skb_shinfo(skb)->frags[i] =
skb_shinfo(skb)->frags[i - 1];
get_page(skb_shinfo(skb)->frags[i].page);
skb_shinfo(skb)->frags[i].page =
skb_shinfo(skb)->frags[i - 1].page;
- skb_shinfo(skb)->frags[i].page_offset +=
- skb_shinfo(skb)->frags[i - 1].size;
- skb_shinfo(skb)->frags[i].size = rem;
+ skb_shinfo(skb)->frags[i].offset +=
+ skb_shinfo(skb)->frags[i - 1].length;
+ skb_shinfo(skb)->frags[i].length = rem;
i++;
skb_shinfo(skb)->nr_frags = i;
}
--- a/net/ipv4/ip_fragment.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/ipv4/ip_fragment.c 2007-07-05 15:04:38.000000000 -0700
@@ -647,8 +647,8 @@ static struct sk_buff *ip_frag_reasm(str
head->next = clone;
skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list;
skb_shinfo(head)->frag_list = NULL;
- for (i=0; i<skb_shinfo(head)->nr_frags; i++)
- plen += skb_shinfo(head)->frags[i].size;
+ for (i = 0; i < skb_shinfo(head)->nr_frags; i++)
+ plen += skb_shinfo(head)->frags[i].length;
clone->len = clone->data_len = head->data_len - plen;
head->data_len -= clone->len;
head->len -= clone->len;
--- a/net/ipv4/ip_output.c 2007-07-05 14:21:36.000000000 -0700
+++ b/net/ipv4/ip_output.c 2007-07-05 15:36:39.000000000 -0700
@@ -1019,12 +1019,15 @@ alloc_new_skb:
err = -EMSGSIZE;
goto error;
}
- if (getfrag(from, page_address(frag->page)+frag->page_offset+frag->size, offset, copy, skb->len, skb) < 0) {
+ if (getfrag(from,
+ page_address(frag->page)
+ + frag->offset + frag->length,
+ offset, copy, skb->len, skb) < 0) {
err = -EFAULT;
goto error;
}
sk->sk_sndmsg_off += copy;
- frag->size += copy;
+ frag->length += copy;
skb->len += copy;
skb->data_len += copy;
}
@@ -1152,7 +1155,7 @@ ssize_t ip_append_page(struct sock *sk,
if (len > size)
len = size;
if (skb_can_coalesce(skb, i, page, offset)) {
- skb_shinfo(skb)->frags[i-1].size += len;
+ skb_shinfo(skb)->frags[i-1].length += len;
} else if (i < MAX_SKB_FRAGS) {
get_page(page);
skb_fill_page_desc(skb, i, page, offset, len);
--- a/net/ipv4/tcp.c 2007-07-05 14:21:36.000000000 -0700
+++ b/net/ipv4/tcp.c 2007-07-05 15:13:23.000000000 -0700
@@ -558,7 +558,7 @@ new_segment:
goto wait_for_memory;
if (can_coalesce) {
- skb_shinfo(skb)->frags[i - 1].size += copy;
+ skb_shinfo(skb)->frags[i - 1].length += copy;
} else {
get_page(page);
skb_fill_page_desc(skb, i, page, offset, copy);
@@ -799,10 +799,9 @@ new_segment:
}
/* Update the skb. */
- if (merge) {
- skb_shinfo(skb)->frags[i - 1].size +=
- copy;
- } else {
+ if (merge)
+ skb_shinfo(skb)->frags[i - 1].length += copy;
+ else {
skb_fill_page_desc(skb, i, page, off, copy);
if (TCP_PAGE(sk)) {
get_page(page);
--- a/net/ipv4/tcp_output.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/ipv4/tcp_output.c 2007-07-05 15:21:44.000000000 -0700
@@ -720,14 +720,14 @@ static void __pskb_trim_head(struct sk_b
eat = len;
k = 0;
for (i=0; i<skb_shinfo(skb)->nr_frags; i++) {
- if (skb_shinfo(skb)->frags[i].size <= eat) {
+ if (skb_shinfo(skb)->frags[i].length <= eat) {
put_page(skb_shinfo(skb)->frags[i].page);
- eat -= skb_shinfo(skb)->frags[i].size;
+ eat -= skb_shinfo(skb)->frags[i].length;
} else {
skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i];
if (eat) {
- skb_shinfo(skb)->frags[k].page_offset += eat;
- skb_shinfo(skb)->frags[k].size -= eat;
+ skb_shinfo(skb)->frags[k].offset += eat;
+ skb_shinfo(skb)->frags[k].length -= eat;
eat = 0;
}
k++;
--- a/net/ipv6/ip6_output.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/ipv6/ip6_output.c 2007-07-05 15:36:39.000000000 -0700
@@ -1314,12 +1314,15 @@ alloc_new_skb:
err = -EMSGSIZE;
goto error;
}
- if (getfrag(from, page_address(frag->page)+frag->page_offset+frag->size, offset, copy, skb->len, skb) < 0) {
+ if (getfrag(from,
+ page_address(frag->page)
+ + frag->offset + frag->length,
+ offset, copy, skb->len, skb) < 0) {
err = -EFAULT;
goto error;
}
sk->sk_sndmsg_off += copy;
- frag->size += copy;
+ frag->length += copy;
skb->len += copy;
skb->data_len += copy;
}
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c 2007-07-05 15:13:29.000000000 -0700
@@ -612,7 +612,7 @@ nf_ct_frag6_reasm(struct nf_ct_frag6_que
skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list;
skb_shinfo(head)->frag_list = NULL;
for (i=0; i<skb_shinfo(head)->nr_frags; i++)
- plen += skb_shinfo(head)->frags[i].size;
+ plen += skb_shinfo(head)->frags[i].length;
clone->len = clone->data_len = head->data_len - plen;
head->data_len -= clone->len;
head->len -= clone->len;
--- a/net/ipv6/reassembly.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/ipv6/reassembly.c 2007-07-05 15:22:18.000000000 -0700
@@ -634,7 +634,7 @@ static int ip6_frag_reasm(struct frag_qu
skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list;
skb_shinfo(head)->frag_list = NULL;
for (i=0; i<skb_shinfo(head)->nr_frags; i++)
- plen += skb_shinfo(head)->frags[i].size;
+ plen += skb_shinfo(head)->frags[i].length;
clone->len = clone->data_len = head->data_len - plen;
head->data_len -= clone->len;
head->len -= clone->len;
--- a/net/xfrm/xfrm_algo.c 2007-06-05 13:27:46.000000000 -0700
+++ b/net/xfrm/xfrm_algo.c 2007-07-05 15:36:47.000000000 -0700
@@ -570,7 +570,7 @@ int skb_icv_walk(const struct sk_buff *s
BUG_TRAP(start <= offset + len);
- end = start + skb_shinfo(skb)->frags[i].size;
+ end = start + skb_shinfo(skb)->frags[i].length;
if ((copy = end - offset) > 0) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
@@ -578,7 +578,7 @@ int skb_icv_walk(const struct sk_buff *s
copy = len;
sg.page = frag->page;
- sg.offset = frag->page_offset + offset-start;
+ sg.offset = frag->offset + offset-start;
sg.length = copy;
err = icv_update(desc, &sg, copy);
--
Stephen Hemminger <shemminger@linux-foundation.org>
^ permalink raw reply [flat|nested] 16+ messages in thread