lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20071005174322.0a13c173@freepuppy.rosehill>
Date:	Fri, 5 Oct 2007 17:43:22 -0700
From:	Stephen Hemminger <shemminger@...ux-foundation.org>
To:	"David S. Miller" <davem@...emloft.net>
Cc:	netdev@...r.kernel.org
Subject: [RFC net-2.6.24] skbuff: change skb_frag_struct to scatterlist

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.
Reimplemented against net-2.6.24.  This version is for comment, not
tested yet.

Signed-off-by: Stephen Hemminger <shemminger@...ux-foundation.org>

---
 drivers/atm/he.c                        |    2 -
 drivers/infiniband/hw/amso1100/c2.c     |    4 +-
 drivers/net/3c59x.c                     |    8 ++--
 drivers/net/8139cp.c                    |    4 +-
 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/sge.c                 |   10 ++---
 drivers/net/e1000/e1000_main.c          |    8 ++--
 drivers/net/e1000e/netdev.c             |    8 ++--
 drivers/net/ehea/ehea_main.c            |   14 +++----
 drivers/net/forcedeth.c                 |   22 ++++++-----
 drivers/net/ibm_emac/ibm_emac_core.c    |    6 +--
 drivers/net/ibm_newemac/core.c          |    4 +-
 drivers/net/ixgb/ixgb_main.c            |    6 +--
 drivers/net/ixgbe/ixgbe_main.c          |    8 ++--
 drivers/net/mv643xx_eth.c               |    2 -
 drivers/net/myri10ge/myri10ge.c         |   34 ++++++++---------
 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/tehuti.c                    |    8 ++--
 drivers/net/tg3.c                       |   14 +++----
 drivers/net/tsi108_eth.c                |    2 -
 drivers/net/typhoon.c                   |    4 +-
 drivers/net/via-velocity.c              |    2 -
 drivers/s390/net/qeth_eddp.c            |    6 +--
 drivers/s390/net/qeth_tso.h             |    6 +--
 include/linux/inet_lro.h                |    8 ++--
 include/linux/skbuff.h                  |   21 ++++------
 net/appletalk/ddp.c                     |    4 +-
 net/core/datagram.c                     |    9 ++--
 net/core/pktgen.c                       |   40 ++++++++++----------
 net/core/skbuff.c                       |   64 ++++++++++++++++----------------
 net/core/sock.c                         |    8 ++--
 net/core/user_dma.c                     |    2 -
 net/ipv4/inet_lro.c                     |   26 ++++++-------
 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 +-
 55 files changed, 278 insertions(+), 274 deletions(-)

--- a/include/linux/skbuff.h	2007-10-05 17:38:50.000000000 -0700
+++ b/include/linux/skbuff.h	2007-10-05 17:39:15.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>
@@ -130,13 +131,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;
-	__u32 page_offset;
-	__u32 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.
@@ -830,7 +825,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);
 }
 
@@ -839,9 +834,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;
 }
 
@@ -1443,10 +1438,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/atm/he.c	2007-10-05 17:39:15.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-10-05 17:38:50.000000000 -0700
+++ b/drivers/infiniband/hw/amso1100/c2.c	2007-10-05 17:39:15.000000000 -0700
@@ -798,10 +798,10 @@ static int c2_xmit_frame(struct sk_buff 
 	if (skb_shinfo(skb)->nr_frags) {
 		for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
 			skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
-			maplen = frag->size;
+			maplen = frag->length;
 			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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/3c59x.c	2007-10-05 17:39:15.000000000 -0700
@@ -2113,13 +2113,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/8139cp.c	2007-10-05 17:39:15.000000000 -0700
@@ -826,10 +826,10 @@ static int cp_start_xmit (struct sk_buff
 			u32 ctrl;
 			dma_addr_t mapping;
 
-			len = this_frag->size;
+			len = this_frag->length;
 			mapping = dma_map_single(&cp->pdev->dev,
 						 ((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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/acenic.c	2007-10-05 17:39:15.000000000 -0700
@@ -2523,15 +2523,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);
@@ -2550,7 +2550,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/atl1/atl1_main.c	2007-10-05 17:39:15.000000000 -0700
@@ -1573,11 +1573,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 + ATL1_MAX_TX_BUF_LEN - 1) / ATL1_MAX_TX_BUF_LEN;
 		for (i = 0; i < m; i++) {
@@ -1590,7 +1590,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 * ATL1_MAX_TX_BUF_LEN),
+				frag->offset + (i * ATL1_MAX_TX_BUF_LEN),
 				buffer_info->length, PCI_DMA_TODEVICE);
 
 			if (++tpd_next_to_use == tpd_ring->count)
@@ -1680,7 +1680,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 + ATL1_MAX_TX_BUF_LEN - 1) /
 				ATL1_MAX_TX_BUF_LEN;
--- a/drivers/net/bnx2.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/bnx2.c	2007-10-05 17:39:15.000000000 -0700
@@ -2321,7 +2321,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);
 		}
 
@@ -4235,7 +4235,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);
@@ -5162,8 +5162,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/cassini.c	2007-10-05 17:39:15.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);
 		}
 
@@ -2855,12 +2855,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;
 
@@ -2871,7 +2870,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/chelsio/sge.c	2007-10-05 17:39:15.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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/cxgb3/sge.c	2007-10-05 17:39:15.000000000 -0700
@@ -239,7 +239,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) {
@@ -832,9 +832,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)
@@ -1390,7 +1390,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);
 }
 
--- a/drivers/net/e1000/e1000_main.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/e1000/e1000_main.c	2007-10-05 17:39:15.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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/ehea/ehea_main.c	2007-10-05 17:39:15.000000000 -0700
@@ -1502,10 +1502,10 @@ static inline void write_swqe2_data(stru
 
 			/* copy sg1entry data */
 			sg1entry->l_key = lkey;
-			sg1entry->len = frag->size;
+			sg1entry->len = frag->length;
 			sg1entry->vaddr =
 				ehea_map_vaddr(page_address(frag->page)
-					       + frag->page_offset);
+					       + frag->offset);
 			swqe->descriptors++;
 			sg1entry_contains_frag_data = 1;
 		}
@@ -1516,10 +1516,10 @@ static inline void write_swqe2_data(stru
 			sgentry = &sg_list[i - sg1entry_contains_frag_data];
 
 			sgentry->l_key = lkey;
-			sgentry->len = frag->size;
+			sgentry->len = frag->length;
 			sgentry->vaddr =
 				ehea_map_vaddr(page_address(frag->page)
-					       + frag->page_offset);
+					       + frag->offset);
 			swqe->descriptors++;
 		}
 	}
@@ -1905,9 +1905,9 @@ 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,
-			       frag->size);
-			imm_data += frag->size;
+			       page_address(frag->page) + frag->offset,
+			       frag->length);
+			imm_data += frag->length;
 		}
 	}
 	swqe->immediate_data_length = skb->len;
--- a/drivers/net/forcedeth.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/forcedeth.c	2007-10-05 17:39:15.000000000 -0700
@@ -1798,8 +1798,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);
@@ -1836,15 +1836,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);
@@ -1914,8 +1915,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);
@@ -1953,15 +1954,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/ibm_emac/ibm_emac_core.c	2007-10-05 17:39:15.000000000 -0700
@@ -1158,13 +1158,13 @@ static int emac_start_xmit_sg(struct sk_
 				       ctrl);
 	/* skb fragments */
 	for (i = 0; i < nr_frags; ++i) {
-		struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i];
-		len = frag->size;
+		skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+		len = frag->length;
 
 		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/ixgb/ixgb_main.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/ixgb/ixgb_main.c	2007-10-05 17:39:15.000000000 -0700
@@ -1312,10 +1312,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) {
@@ -1332,7 +1332,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/mv643xx_eth.c	2007-10-05 17:39:15.000000000 -0700
@@ -1108,7 +1108,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/myri10ge/myri10ge.c	2007-10-05 17:39:15.000000000 -0700
@@ -895,9 +895,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);
@@ -906,7 +906,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++;
@@ -917,8 +917,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);
@@ -1012,7 +1012,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;
@@ -1026,19 +1026,19 @@ 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;
 	}
 
 	if (mgp->csum_flag && myri10ge_lro) {
-		rx_frags[0].page_offset += MXGEFW_PAD;
-		rx_frags[0].size -= MXGEFW_PAD;
+		rx_frags[0].offset += MXGEFW_PAD;
+		rx_frags[0].length -= MXGEFW_PAD;
 		len -= MXGEFW_PAD;
 		lro_receive_frags(&mgp->rx_done.lro_mgr, rx_frags,
 				  len, len, (void *)(unsigned long)csum, csum);
@@ -1061,7 +1061,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;
 	}
@@ -1751,14 +1751,14 @@ static void myri10ge_free_irq(struct myr
 }
 
 static int
-myri10ge_get_frag_header(struct skb_frag_struct *frag, void **mac_hdr,
+myri10ge_get_frag_header(skb_frag_t *frag, void **mac_hdr,
 			 void **ip_hdr, void **tcpudp_hdr,
 			 u64 * hdr_flags, void *priv)
 {
 	struct ethhdr *eh;
 	struct vlan_ethhdr *veh;
 	struct iphdr *iph;
-	u8 *va = page_address(frag->page) + frag->page_offset;
+	u8 *va = page_address(frag->page) + frag->offset;
 	unsigned long ll_hlen;
 	__wsum csum = (__wsum) (unsigned long)priv;
 
@@ -2125,7 +2125,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;
@@ -2313,8 +2313,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/netxen/netxen_nic_main.c	2007-10-05 17:39:15.000000000 -0700
@@ -1084,7 +1084,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;
@@ -1098,8 +1098,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/ns83820.c	2007-10-05 17:39:15.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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/qla3xxx.c	2007-10-05 17:39:15.000000000 -0700
@@ -2532,7 +2532,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);
@@ -2544,10 +2544,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/r8169.c	2007-10-05 17:39:15.000000000 -0700
@@ -2369,8 +2369,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/s2io.c	2007-10-05 17:39:15.000000000 -0700
@@ -2252,9 +2252,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));
@@ -4040,13 +4040,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/sk98lin/skge.c	2007-10-05 17:39:15.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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/skge.c	2007-10-05 17:39:16.000000000 -0700
@@ -2686,8 +2686,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;
@@ -2697,9 +2697,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/sky2.c	2007-10-05 17:39:16.000000000 -0700
@@ -995,8 +995,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);
 }
 
@@ -1010,7 +1010,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);
 }
 
@@ -1563,8 +1563,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 = upper_32_bits(mapping);
 		if (addr64 != sky2->tx_addr64) {
 			le = get_tx_le(sky2);
@@ -1576,14 +1576,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;
@@ -2112,7 +2112,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/starfire.c	2007-10-05 17:39:16.000000000 -0700
@@ -1263,9 +1263,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);
@@ -1363,7 +1366,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/sungem.c	2007-10-05 17:39:16.000000000 -0700
@@ -1098,10 +1098,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/sunhme.c	2007-10-05 17:39:16.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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/tg3.c	2007-10-05 17:39:16.000000000 -0700
@@ -3138,7 +3138,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);
@@ -3868,7 +3868,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);
@@ -3995,10 +3995,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;
@@ -4177,10 +4177,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;
@@ -4354,7 +4354,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/tsi108_eth.c	2007-10-05 17:39:16.000000000 -0700
@@ -717,7 +717,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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/typhoon.c	2007-10-05 17:39:16.000000000 -0700
@@ -873,9 +873,9 @@ typhoon_start_tx(struct sk_buff *skb, st
 						txRing->lastWrite);
 			typhoon_inc_tx_index(&txRing->lastWrite, 1);
 
-			len = frag->size;
+			len = frag->length;
 			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-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/via-velocity.c	2007-10-05 17:39:16.000000000 -0700
@@ -2131,7 +2131,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-10-05 17:38:50.000000000 -0700
+++ b/net/appletalk/ddp.c	2007-10-05 17:39:16.000000000 -0700
@@ -962,7 +962,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];
@@ -970,7 +970,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-10-05 17:38:50.000000000 -0700
+++ b/net/core/datagram.c	2007-10-05 17:39:16.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-10-05 17:38:50.000000000 -0700
+++ b/net/core/skbuff.c	2007-10-05 17:39:16.000000000 -0700
@@ -847,14 +847,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;
@@ -962,9 +962,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.
@@ -1028,14 +1028,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++;
@@ -1075,7 +1075,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;
 
@@ -1084,7 +1084,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);
 
@@ -1162,7 +1162,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;
 
@@ -1170,7 +1170,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);
 
@@ -1239,7 +1239,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;
@@ -1248,7 +1248,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);
@@ -1316,7 +1316,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;
@@ -1326,7 +1326,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);
@@ -1584,7 +1584,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];
@@ -1599,9 +1599,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++;
@@ -1695,13 +1695,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;
@@ -1713,7 +1713,7 @@ next_skb:
 		}
 
 		st->frag_idx++;
-		st->stepped_offset += frag->size;
+		st->stepped_offset += frag->length;
 	}
 
 	if (st->frag_data) {
@@ -1839,18 +1839,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;
@@ -1975,11 +1975,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++;
@@ -1988,7 +1988,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;
 			}
 
@@ -2062,14 +2062,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-10-05 17:38:50.000000000 -0700
+++ b/net/core/sock.c	2007-10-05 17:39:16.000000000 -0700
@@ -1245,10 +1245,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-10-05 17:38:50.000000000 -0700
+++ b/net/core/user_dma.c	2007-10-05 17:39:16.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/net/core/pktgen.c	2007-10-05 17:38:50.000000000 -0700
+++ b/net/core/pktgen.c	2007-10-05 17:39:16.000000000 -0700
@@ -2659,12 +2659,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;
 		}
@@ -2675,20 +2675,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;
 		}
@@ -3006,12 +3006,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;
 		}
@@ -3022,20 +3022,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-10-05 17:38:50.000000000 -0700
+++ b/net/ipv4/ip_fragment.c	2007-10-05 17:39:16.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-10-05 17:38:50.000000000 -0700
+++ b/net/ipv4/ip_output.c	2007-10-05 17:39:16.000000000 -0700
@@ -1022,12 +1022,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;
 		}
@@ -1155,7 +1158,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-10-05 17:38:50.000000000 -0700
+++ b/net/ipv4/tcp.c	2007-10-05 17:39:16.000000000 -0700
@@ -559,7 +559,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);
@@ -801,10 +801,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-10-05 17:38:50.000000000 -0700
+++ b/net/ipv4/tcp_output.c	2007-10-05 17:39:16.000000000 -0700
@@ -793,14 +793,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-10-05 17:38:50.000000000 -0700
+++ b/net/ipv6/ip6_output.c	2007-10-05 17:39:16.000000000 -0700
@@ -1320,12 +1320,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-10-05 17:38:50.000000000 -0700
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c	2007-10-05 17:39:16.000000000 -0700
@@ -606,7 +606,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-10-05 17:38:50.000000000 -0700
+++ b/net/ipv6/reassembly.c	2007-10-05 17:39:16.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-10-05 17:38:50.000000000 -0700
+++ b/net/xfrm/xfrm_algo.c	2007-10-05 17:39:16.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);
--- a/drivers/net/e1000e/netdev.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/e1000e/netdev.c	2007-10-05 17:39:16.000000000 -0700
@@ -3238,11 +3238,11 @@ static int e1000_tx_map(struct e1000_ada
 	}
 
 	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];
@@ -3484,7 +3484,7 @@ static int e1000_xmit_frame(struct sk_bu
 
 	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->hw.mac.tx_pkt_filtering)
--- a/drivers/net/ibm_newemac/core.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/ibm_newemac/core.c	2007-10-05 17:39:16.000000000 -0700
@@ -1346,8 +1346,8 @@ static int emac_start_xmit_sg(struct sk_
 				       ctrl);
 	/* skb fragments */
 	for (i = 0; i < nr_frags; ++i) {
-		struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i];
-		len = frag->size;
+		skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+		len = frag->length;
 
 		if (unlikely(dev->tx_cnt + mal_tx_chunks(len) >= NUM_TX_BUFF))
 			goto undo_frame;
--- a/drivers/net/ixgbe/ixgbe_main.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/ixgbe/ixgbe_main.c	2007-10-05 17:39:16.000000000 -0700
@@ -2261,11 +2261,11 @@ static int ixgbe_tx_map(struct ixgbe_ada
 	}
 
 	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) {
 			tx_buffer_info = &tx_ring->tx_buffer_info[i];
@@ -2389,7 +2389,7 @@ static int ixgbe_xmit_frame(struct sk_bu
 
 	count += TXD_USE_COUNT(len);
 	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);
 
 	spin_lock_irqsave(&tx_ring->tx_lock, flags);
 	if (IXGBE_DESC_UNUSED(tx_ring) < (count + 2)) {
--- a/drivers/net/tehuti.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/net/tehuti.c	2007-10-05 17:39:16.000000000 -0700
@@ -1512,13 +1512,13 @@ bdx_tx_map_skb(struct bdx_priv *priv, st
 	bdx_tx_db_inc_wptr(db);
 
 	for (i = 0; i < nr_frags; i++) {
-		struct skb_frag_struct *frag;
+		skb_frag_t *frag;
 
 		frag = &skb_shinfo(skb)->frags[i];
-		db->wptr->len = frag->size;
+		db->wptr->len = frag->length;
 		db->wptr->addr.dma =
-		    pci_map_page(priv->pdev, frag->page, frag->page_offset,
-				 frag->size, PCI_DMA_TODEVICE);
+		    pci_map_page(priv->pdev, frag->page, frag->offset,
+				 frag->length, PCI_DMA_TODEVICE);
 
 		pbl++;
 		pbl->len = CPU_CHIP_SWAP32(db->wptr->len);
--- a/drivers/s390/net/qeth_eddp.c	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/s390/net/qeth_eddp.c	2007-10-05 17:39:16.000000000 -0700
@@ -260,7 +260,7 @@ static void
 qeth_eddp_copy_data_tcp(char *dst, struct qeth_eddp_data *eddp, int len,
 			__wsum *hcsum)
 {
-	struct skb_frag_struct *frag;
+	skb_frag_t *frag;
 	int left_in_frag;
 	int copy_len;
 	u8 *src;
@@ -282,10 +282,10 @@ qeth_eddp_copy_data_tcp(char *dst, struc
 			} else {
 				frag = &skb_shinfo(eddp->skb)->
 					frags[eddp->frag];
-				left_in_frag = frag->size - eddp->frag_offset;
+				left_in_frag = frag->length - eddp->frag_offset;
 				src = (u8 *)(
 					(page_to_pfn(frag->page) << PAGE_SHIFT)+
-					frag->page_offset + eddp->frag_offset);
+					frag->offset + eddp->frag_offset);
 			}
 			if (left_in_frag <= 0) {
 				eddp->frag++;
--- a/drivers/s390/net/qeth_tso.h	2007-10-05 17:38:50.000000000 -0700
+++ b/drivers/s390/net/qeth_tso.h	2007-10-05 17:39:16.000000000 -0700
@@ -109,7 +109,7 @@ static inline void
 __qeth_fill_buffer_frag(struct sk_buff *skb, struct qdio_buffer *buffer,
 			int is_tso, int *next_element_to_fill)
 {
-	struct skb_frag_struct *frag;
+	skb_frag_t *frag;
 	int fragno;
 	unsigned long addr;
 	int element, cnt, dlen;
@@ -132,9 +132,9 @@ __qeth_fill_buffer_frag(struct sk_buff *
 	for (cnt = 0; cnt < fragno; cnt++) {
 		frag = &skb_shinfo(skb)->frags[cnt];
 		addr = (page_to_pfn(frag->page) << PAGE_SHIFT) +
-			frag->page_offset;
+			frag->offset;
 		buffer->element[element].addr = (char *)addr;
-		buffer->element[element].length = frag->size;
+		buffer->element[element].length = frag->length;
 		if (cnt < (fragno - 1))
 			buffer->element[element].flags =
 				SBAL_FLAGS_MIDDLE_FRAG;
--- a/include/linux/inet_lro.h	2007-10-05 17:38:50.000000000 -0700
+++ b/include/linux/inet_lro.h	2007-10-05 17:39:16.000000000 -0700
@@ -47,7 +47,7 @@ struct net_lro_stats {
 struct net_lro_desc {
 	struct sk_buff *parent;
 	struct sk_buff *last_skb;
-	struct skb_frag_struct *next_frag;
+	skb_frag_t *next_frag;
 	struct iphdr *iph;
 	struct tcphdr *tcph;
 	struct vlan_group *vgrp;
@@ -111,7 +111,7 @@ struct net_lro_mgr {
 	 * @hdr_flags: Indicate what kind of LRO has to be done
 	 *             (IPv4/IPv6/TCP/UDP)
 	 */
-	int (*get_frag_header)(struct skb_frag_struct *frag, void **mac_hdr,
+	int (*get_frag_header)(skb_frag_t *frag, void **mac_hdr,
 			       void **ip_hdr, void **tcpudp_hdr, u64 *hdr_flags,
 			       void *priv);
 };
@@ -155,11 +155,11 @@ void lro_vlan_hwaccel_receive_skb(struct
  */
 
 void lro_receive_frags(struct net_lro_mgr *lro_mgr,
-		       struct skb_frag_struct *frags,
+		       skb_frag_t *frags,
 		       int len, int true_size, void *priv, __wsum sum);
 
 void lro_vlan_hwaccel_receive_frags(struct net_lro_mgr *lro_mgr,
-				    struct skb_frag_struct *frags,
+				    skb_frag_t *frags,
 				    int len, int true_size,
 				    struct vlan_group *vgrp,
 				    u16 vlan_tag,
--- a/net/ipv4/inet_lro.c	2007-10-05 17:38:50.000000000 -0700
+++ b/net/ipv4/inet_lro.c	2007-10-05 17:39:16.000000000 -0700
@@ -236,7 +236,7 @@ static void lro_add_packet(struct net_lr
 
 static void lro_add_frags(struct net_lro_desc *lro_desc,
 			  int len, int hlen, int truesize,
-			  struct skb_frag_struct *skb_frags,
+			  skb_frag_t *skb_frags,
 			  struct iphdr *iph, struct tcphdr *tcph)
 {
 	struct sk_buff *skb = lro_desc->parent;
@@ -246,12 +246,12 @@ static void lro_add_frags(struct net_lro
 
 	skb->truesize += truesize;
 
-	skb_frags[0].page_offset += hlen;
-	skb_frags[0].size -= hlen;
+	skb_frags[0].offset += hlen;
+	skb_frags[0].length -= hlen;
 
 	while (tcp_data_len > 0) {
 		*(lro_desc->next_frag) = *skb_frags;
-		tcp_data_len -= skb_frags->size;
+		tcp_data_len -= skb_frags->length;
 		lro_desc->next_frag++;
 		skb_frags++;
 		skb_shinfo(skb)->nr_frags++;
@@ -390,14 +390,14 @@ out:  /* Original SKB has to be posted t
 
 
 static struct sk_buff *lro_gen_skb(struct net_lro_mgr *lro_mgr,
-				   struct skb_frag_struct *frags,
+				   skb_frag_t *frags,
 				   int len, int true_size,
 				   void *mac_hdr,
 				   int hlen, __wsum sum,
 				   u32 ip_summed)
 {
 	struct sk_buff *skb;
-	struct skb_frag_struct *skb_frags;
+	skb_frag_t *skb_frags;
 	int data_len = len;
 	int hdr_len = min(len, hlen);
 
@@ -415,14 +415,14 @@ static struct sk_buff *lro_gen_skb(struc
 	skb_frags = skb_shinfo(skb)->frags;
 	while (data_len > 0) {
 		*skb_frags = *frags;
-		data_len -= frags->size;
+		data_len -= frags->length;
 		skb_frags++;
 		frags++;
 		skb_shinfo(skb)->nr_frags++;
 	}
 
-	skb_shinfo(skb)->frags[0].page_offset += hdr_len;
-	skb_shinfo(skb)->frags[0].size -= hdr_len;
+	skb_shinfo(skb)->frags[0].offset += hdr_len;
+	skb_shinfo(skb)->frags[0].length -= hdr_len;
 
 	skb->ip_summed = ip_summed;
 	skb->csum = sum;
@@ -431,7 +431,7 @@ static struct sk_buff *lro_gen_skb(struc
 }
 
 static struct sk_buff *__lro_proc_segment(struct net_lro_mgr *lro_mgr,
-					  struct skb_frag_struct *frags,
+					  skb_frag_t *frags,
 					  int len, int true_size,
 					  struct vlan_group *vgrp,
 					  u16 vlan_tag, void *priv, __wsum sum)
@@ -449,7 +449,7 @@ static struct sk_buff *__lro_proc_segmen
 	if (!lro_mgr->get_frag_header
 	    || lro_mgr->get_frag_header(frags, (void *)&mac_hdr, (void *)&iph,
 					(void *)&tcph, &flags, priv)) {
-		mac_hdr = page_address(frags->page) + frags->page_offset;
+		mac_hdr = page_address(frags->page) + frags->offset;
 		goto out1;
 	}
 
@@ -539,7 +539,7 @@ void lro_vlan_hwaccel_receive_skb(struct
 EXPORT_SYMBOL(lro_vlan_hwaccel_receive_skb);
 
 void lro_receive_frags(struct net_lro_mgr *lro_mgr,
-		       struct skb_frag_struct *frags,
+		       skb_frag_t *frags,
 		       int len, int true_size, void *priv, __wsum sum)
 {
 	struct sk_buff *skb;
@@ -557,7 +557,7 @@ void lro_receive_frags(struct net_lro_mg
 EXPORT_SYMBOL(lro_receive_frags);
 
 void lro_vlan_hwaccel_receive_frags(struct net_lro_mgr *lro_mgr,
-				    struct skb_frag_struct *frags,
+				    skb_frag_t *frags,
 				    int len, int true_size,
 				    struct vlan_group *vgrp,
 				    u16 vlan_tag, void *priv, __wsum sum)
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ