aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--buildconfigs/mk.linux-2.6-xen2
-rw-r--r--linux-2.6-xen-sparse/include/linux/skbuff.h24
-rw-r--r--linux-2.6-xen-sparse/mm/memory.c1
-rw-r--r--linux-2.6-xen-sparse/mm/mmap.c17
-rw-r--r--linux-2.6-xen-sparse/net/core/skbuff.c107
-rw-r--r--patches/linux-2.6.16.32/blktap-aio-16_03_06.patch (renamed from patches/linux-2.6.16.31/blktap-aio-16_03_06.patch)0
-rw-r--r--patches/linux-2.6.16.32/device_bind.patch (renamed from patches/linux-2.6.16.31/device_bind.patch)0
-rw-r--r--patches/linux-2.6.16.32/fix-hz-suspend.patch (renamed from patches/linux-2.6.16.31/fix-hz-suspend.patch)0
-rw-r--r--patches/linux-2.6.16.32/fix-ide-cd-pio-mode.patch (renamed from patches/linux-2.6.16.31/fix-ide-cd-pio-mode.patch)0
-rw-r--r--patches/linux-2.6.16.32/i386-mach-io-check-nmi.patch (renamed from patches/linux-2.6.16.31/i386-mach-io-check-nmi.patch)0
-rw-r--r--patches/linux-2.6.16.32/ipv6-no-autoconf.patch (renamed from patches/linux-2.6.16.31/ipv6-no-autoconf.patch)0
-rw-r--r--patches/linux-2.6.16.32/net-csum.patch (renamed from patches/linux-2.6.16.31/net-csum.patch)0
-rw-r--r--patches/linux-2.6.16.32/net-gso-0-base.patch (renamed from patches/linux-2.6.16.31/net-gso-0-base.patch)841
-rw-r--r--patches/linux-2.6.16.32/net-gso-1-check-dodgy.patch (renamed from patches/linux-2.6.16.31/net-gso-1-check-dodgy.patch)0
-rw-r--r--patches/linux-2.6.16.32/net-gso-2-checksum-fix.patch (renamed from patches/linux-2.6.16.31/net-gso-2-checksum-fix.patch)0
-rw-r--r--patches/linux-2.6.16.32/net-gso-3-fix-errorcheck.patch (renamed from patches/linux-2.6.16.31/net-gso-3-fix-errorcheck.patch)0
-rw-r--r--patches/linux-2.6.16.32/net-gso-4-kill-warnon.patch (renamed from patches/linux-2.6.16.31/net-gso-4-kill-warnon.patch)0
-rw-r--r--patches/linux-2.6.16.32/net-gso-5-rcv-mss.patch (renamed from patches/linux-2.6.16.31/net-gso-5-rcv-mss.patch)0
-rw-r--r--patches/linux-2.6.16.32/pci-mmconfig-fix-from-2.6.17.patch (renamed from patches/linux-2.6.16.31/pci-mmconfig-fix-from-2.6.17.patch)0
-rw-r--r--patches/linux-2.6.16.32/pmd-shared.patch (renamed from patches/linux-2.6.16.31/pmd-shared.patch)0
-rw-r--r--patches/linux-2.6.16.32/rcu_needs_cpu.patch (renamed from patches/linux-2.6.16.31/rcu_needs_cpu.patch)0
-rw-r--r--patches/linux-2.6.16.32/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch (renamed from patches/linux-2.6.16.31/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch)0
-rw-r--r--patches/linux-2.6.16.32/series (renamed from patches/linux-2.6.16.31/series)0
-rw-r--r--patches/linux-2.6.16.32/smp-alts.patch (renamed from patches/linux-2.6.16.31/smp-alts.patch)0
-rw-r--r--patches/linux-2.6.16.32/tpm_plugin_2.6.17.patch (renamed from patches/linux-2.6.16.31/tpm_plugin_2.6.17.patch)0
-rw-r--r--patches/linux-2.6.16.32/x86-elfnote-as-preprocessor-macro.patch (renamed from patches/linux-2.6.16.31/x86-elfnote-as-preprocessor-macro.patch)0
-rw-r--r--patches/linux-2.6.16.32/x86-increase-interrupt-vector-range.patch (renamed from patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch)0
-rw-r--r--patches/linux-2.6.16.32/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch (renamed from patches/linux-2.6.16.31/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch)0
-rw-r--r--patches/linux-2.6.16.32/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch (renamed from patches/linux-2.6.16.31/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch)0
-rw-r--r--patches/linux-2.6.16.32/xen-hotplug.patch (renamed from patches/linux-2.6.16.31/xen-hotplug.patch)0
-rw-r--r--patches/linux-2.6.16.32/xenoprof-generic.patch (renamed from patches/linux-2.6.16.31/xenoprof-generic.patch)0
31 files changed, 556 insertions, 436 deletions
diff --git a/buildconfigs/mk.linux-2.6-xen b/buildconfigs/mk.linux-2.6-xen
index 505d052d40..72bd77ed89 100644
--- a/buildconfigs/mk.linux-2.6-xen
+++ b/buildconfigs/mk.linux-2.6-xen
@@ -1,5 +1,5 @@
LINUX_SERIES = 2.6
-LINUX_VER = 2.6.16.31
+LINUX_VER = 2.6.16.32
EXTRAVERSION ?= xen
diff --git a/linux-2.6-xen-sparse/include/linux/skbuff.h b/linux-2.6-xen-sparse/include/linux/skbuff.h
index 9ea3924ab6..07b8f3036d 100644
--- a/linux-2.6-xen-sparse/include/linux/skbuff.h
+++ b/linux-2.6-xen-sparse/include/linux/skbuff.h
@@ -974,15 +974,16 @@ static inline void skb_reserve(struct sk_buff *skb, int len)
#define NET_IP_ALIGN 2
#endif
-extern int ___pskb_trim(struct sk_buff *skb, unsigned int len, int realloc);
+extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
static inline void __skb_trim(struct sk_buff *skb, unsigned int len)
{
- if (!skb->data_len) {
- skb->len = len;
- skb->tail = skb->data + len;
- } else
- ___pskb_trim(skb, len, 0);
+ if (unlikely(skb->data_len)) {
+ WARN_ON(1);
+ return;
+ }
+ skb->len = len;
+ skb->tail = skb->data + len;
}
/**
@@ -992,6 +993,7 @@ static inline void __skb_trim(struct sk_buff *skb, unsigned int len)
*
* Cut the length of a buffer down by removing data from the tail. If
* the buffer is already under the length specified it is not modified.
+ * The skb must be linear.
*/
static inline void skb_trim(struct sk_buff *skb, unsigned int len)
{
@@ -1002,12 +1004,10 @@ static inline void skb_trim(struct sk_buff *skb, unsigned int len)
static inline int __pskb_trim(struct sk_buff *skb, unsigned int len)
{
- if (!skb->data_len) {
- skb->len = len;
- skb->tail = skb->data+len;
- return 0;
- }
- return ___pskb_trim(skb, len, 1);
+ if (skb->data_len)
+ return ___pskb_trim(skb, len);
+ __skb_trim(skb, len);
+ return 0;
}
static inline int pskb_trim(struct sk_buff *skb, unsigned int len)
diff --git a/linux-2.6-xen-sparse/mm/memory.c b/linux-2.6-xen-sparse/mm/memory.c
index 827a0a37a4..d7319d32f9 100644
--- a/linux-2.6-xen-sparse/mm/memory.c
+++ b/linux-2.6-xen-sparse/mm/memory.c
@@ -1535,6 +1535,7 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo
if (__copy_from_user_inatomic(kaddr, uaddr, PAGE_SIZE))
memset(kaddr, 0, PAGE_SIZE);
kunmap_atomic(kaddr, KM_USER0);
+ flush_dcache_page(dst);
return;
}
diff --git a/linux-2.6-xen-sparse/mm/mmap.c b/linux-2.6-xen-sparse/mm/mmap.c
index a01e3ffb9d..f1b2f0f0ed 100644
--- a/linux-2.6-xen-sparse/mm/mmap.c
+++ b/linux-2.6-xen-sparse/mm/mmap.c
@@ -30,6 +30,10 @@
#include <asm/cacheflush.h>
#include <asm/tlb.h>
+#ifndef arch_mmap_check
+#define arch_mmap_check(addr, len, flags) (0)
+#endif
+
static void unmap_region(struct mm_struct *mm,
struct vm_area_struct *vma, struct vm_area_struct *prev,
unsigned long start, unsigned long end);
@@ -906,6 +910,10 @@ unsigned long do_mmap_pgoff(struct file * file, unsigned long addr,
if (!len)
return -EINVAL;
+ error = arch_mmap_check(addr, len, flags);
+ if (error)
+ return error;
+
/* Careful about overflows.. */
len = PAGE_ALIGN(len);
if (!len || len > TASK_SIZE)
@@ -1846,6 +1854,7 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
unsigned long flags;
struct rb_node ** rb_link, * rb_parent;
pgoff_t pgoff = addr >> PAGE_SHIFT;
+ int error;
len = PAGE_ALIGN(len);
if (!len)
@@ -1854,6 +1863,12 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
if ((addr + len) > TASK_SIZE || (addr + len) < addr)
return -EINVAL;
+ flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
+
+ error = arch_mmap_check(addr, len, flags);
+ if (error)
+ return error;
+
/*
* mlock MCL_FUTURE?
*/
@@ -1894,8 +1909,6 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
if (security_vm_enough_memory(len >> PAGE_SHIFT))
return -ENOMEM;
- flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
-
/* Can we just expand an old private anonymous mapping? */
if (vma_merge(mm, prev, addr, addr + len, flags,
NULL, NULL, pgoff, NULL))
diff --git a/linux-2.6-xen-sparse/net/core/skbuff.c b/linux-2.6-xen-sparse/net/core/skbuff.c
index 236946bd7e..064e6277b1 100644
--- a/linux-2.6-xen-sparse/net/core/skbuff.c
+++ b/linux-2.6-xen-sparse/net/core/skbuff.c
@@ -261,11 +261,11 @@ nodata:
}
-static void skb_drop_fraglist(struct sk_buff *skb)
+static void skb_drop_list(struct sk_buff **listp)
{
- struct sk_buff *list = skb_shinfo(skb)->frag_list;
+ struct sk_buff *list = *listp;
- skb_shinfo(skb)->frag_list = NULL;
+ *listp = NULL;
do {
struct sk_buff *this = list;
@@ -274,6 +274,11 @@ static void skb_drop_fraglist(struct sk_buff *skb)
} while (list);
}
+static inline void skb_drop_fraglist(struct sk_buff *skb)
+{
+ skb_drop_list(&skb_shinfo(skb)->frag_list);
+}
+
static void skb_clone_fraglist(struct sk_buff *skb)
{
struct sk_buff *list;
@@ -604,6 +609,7 @@ struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask)
n->csum = skb->csum;
n->ip_summed = skb->ip_summed;
+ n->truesize += skb->data_len;
n->data_len = skb->data_len;
n->len = skb->len;
@@ -798,49 +804,86 @@ struct sk_buff *skb_pad(struct sk_buff *skb, int pad)
return nskb;
}
-/* Trims skb to length len. It can change skb pointers, if "realloc" is 1.
- * If realloc==0 and trimming is impossible without change of data,
- * it is BUG().
+/* Trims skb to length len. It can change skb pointers.
*/
-int ___pskb_trim(struct sk_buff *skb, unsigned int len, int realloc)
+int ___pskb_trim(struct sk_buff *skb, unsigned int len)
{
+ struct sk_buff **fragp;
+ struct sk_buff *frag;
int offset = skb_headlen(skb);
int nfrags = skb_shinfo(skb)->nr_frags;
int i;
+ int err;
- for (i = 0; i < nfrags; i++) {
+ if (skb_cloned(skb) &&
+ unlikely((err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC))))
+ return err;
+
+ i = 0;
+ if (offset >= len)
+ goto drop_pages;
+
+ for (; i < nfrags; i++) {
int end = offset + skb_shinfo(skb)->frags[i].size;
- if (end > len) {
- if (skb_cloned(skb)) {
- BUG_ON(!realloc);
- if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
- return -ENOMEM;
- }
- if (len <= offset) {
- put_page(skb_shinfo(skb)->frags[i].page);
- skb_shinfo(skb)->nr_frags--;
- } else {
- skb_shinfo(skb)->frags[i].size = len - offset;
- }
+
+ if (end < len) {
+ offset = end;
+ continue;
+ }
+
+ skb_shinfo(skb)->frags[i++].size = len - offset;
+
+drop_pages:
+ skb_shinfo(skb)->nr_frags = i;
+
+ for (; i < nfrags; i++)
+ put_page(skb_shinfo(skb)->frags[i].page);
+
+ if (skb_shinfo(skb)->frag_list)
+ skb_drop_fraglist(skb);
+ goto done;
+ }
+
+ for (fragp = &skb_shinfo(skb)->frag_list; (frag = *fragp);
+ fragp = &frag->next) {
+ int end = offset + frag->len;
+
+ if (skb_shared(frag)) {
+ struct sk_buff *nfrag;
+
+ nfrag = skb_clone(frag, GFP_ATOMIC);
+ if (unlikely(!nfrag))
+ return -ENOMEM;
+
+ nfrag->next = frag->next;
+ kfree_skb(frag);
+ frag = nfrag;
+ *fragp = frag;
}
- offset = end;
+
+ if (end < len) {
+ offset = end;
+ continue;
+ }
+
+ if (end > len &&
+ unlikely((err = pskb_trim(frag, len - offset))))
+ return err;
+
+ if (frag->next)
+ skb_drop_list(&frag->next);
+ break;
}
- if (offset < len) {
+done:
+ if (len > skb_headlen(skb)) {
skb->data_len -= skb->len - len;
skb->len = len;
} else {
- if (len <= skb_headlen(skb)) {
- skb->len = len;
- skb->data_len = 0;
- skb->tail = skb->data + len;
- if (skb_shinfo(skb)->frag_list && !skb_cloned(skb))
- skb_drop_fraglist(skb);
- } else {
- skb->data_len -= skb->len - len;
- skb->len = len;
- }
+ skb->len = len;
+ skb->data_len = 0;
+ skb->tail = skb->data + len;
}
return 0;
diff --git a/patches/linux-2.6.16.31/blktap-aio-16_03_06.patch b/patches/linux-2.6.16.32/blktap-aio-16_03_06.patch
index bf3e8d63f0..bf3e8d63f0 100644
--- a/patches/linux-2.6.16.31/blktap-aio-16_03_06.patch
+++ b/patches/linux-2.6.16.32/blktap-aio-16_03_06.patch
diff --git a/patches/linux-2.6.16.31/device_bind.patch b/patches/linux-2.6.16.32/device_bind.patch
index 8cef71ecc1..8cef71ecc1 100644
--- a/patches/linux-2.6.16.31/device_bind.patch
+++ b/patches/linux-2.6.16.32/device_bind.patch
diff --git a/patches/linux-2.6.16.31/fix-hz-suspend.patch b/patches/linux-2.6.16.32/fix-hz-suspend.patch
index 2a964ccb8c..2a964ccb8c 100644
--- a/patches/linux-2.6.16.31/fix-hz-suspend.patch
+++ b/patches/linux-2.6.16.32/fix-hz-suspend.patch
diff --git a/patches/linux-2.6.16.31/fix-ide-cd-pio-mode.patch b/patches/linux-2.6.16.32/fix-ide-cd-pio-mode.patch
index 91e6cb5279..91e6cb5279 100644
--- a/patches/linux-2.6.16.31/fix-ide-cd-pio-mode.patch
+++ b/patches/linux-2.6.16.32/fix-ide-cd-pio-mode.patch
diff --git a/patches/linux-2.6.16.31/i386-mach-io-check-nmi.patch b/patches/linux-2.6.16.32/i386-mach-io-check-nmi.patch
index bfcba3908a..bfcba3908a 100644
--- a/patches/linux-2.6.16.31/i386-mach-io-check-nmi.patch
+++ b/patches/linux-2.6.16.32/i386-mach-io-check-nmi.patch
diff --git a/patches/linux-2.6.16.31/ipv6-no-autoconf.patch b/patches/linux-2.6.16.32/ipv6-no-autoconf.patch
index e0d1b8c681..e0d1b8c681 100644
--- a/patches/linux-2.6.16.31/ipv6-no-autoconf.patch
+++ b/patches/linux-2.6.16.32/ipv6-no-autoconf.patch
diff --git a/patches/linux-2.6.16.31/net-csum.patch b/patches/linux-2.6.16.32/net-csum.patch
index d5fb233077..d5fb233077 100644
--- a/patches/linux-2.6.16.31/net-csum.patch
+++ b/patches/linux-2.6.16.32/net-csum.patch
diff --git a/patches/linux-2.6.16.31/net-gso-0-base.patch b/patches/linux-2.6.16.32/net-gso-0-base.patch
index 4895de4069..ce414f3326 100644
--- a/patches/linux-2.6.16.31/net-gso-0-base.patch
+++ b/patches/linux-2.6.16.32/net-gso-0-base.patch
@@ -1,7 +1,8 @@
-diff -pruN ../orig-linux-2.6.16.29/Documentation/networking/netdevices.txt ./Documentation/networking/netdevices.txt
---- ../orig-linux-2.6.16.29/Documentation/networking/netdevices.txt 2006-09-12 19:02:10.000000000 +0100
-+++ ./Documentation/networking/netdevices.txt 2006-09-19 13:59:20.000000000 +0100
-@@ -42,9 +42,9 @@ dev->get_stats:
+Index: tmp-xxx/Documentation/networking/netdevices.txt
+===================================================================
+--- tmp-xxx.orig/Documentation/networking/netdevices.txt 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/Documentation/networking/netdevices.txt 2006-11-27 10:52:42.000000000 +0000
+@@ -42,9 +42,9 @@
Context: nominally process, but don't sleep inside an rwlock
dev->hard_start_xmit:
@@ -13,7 +14,7 @@ diff -pruN ../orig-linux-2.6.16.29/Documentation/networking/netdevices.txt ./Doc
has to lock by itself when needed. It is recommended to use a try lock
for this and return -1 when the spin lock fails.
The locking there should also properly protect against
-@@ -62,12 +62,12 @@ dev->hard_start_xmit:
+@@ -62,12 +62,12 @@
Only valid when NETIF_F_LLTX is set.
dev->tx_timeout:
@@ -28,10 +29,11 @@ diff -pruN ../orig-linux-2.6.16.29/Documentation/networking/netdevices.txt ./Doc
Context: BHs disabled
dev->poll:
-diff -pruN ../orig-linux-2.6.16.29/drivers/block/aoe/aoenet.c ./drivers/block/aoe/aoenet.c
---- ../orig-linux-2.6.16.29/drivers/block/aoe/aoenet.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/block/aoe/aoenet.c 2006-09-19 13:59:20.000000000 +0100
-@@ -95,9 +95,8 @@ mac_addr(char addr[6])
+Index: tmp-xxx/drivers/block/aoe/aoenet.c
+===================================================================
+--- tmp-xxx.orig/drivers/block/aoe/aoenet.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/block/aoe/aoenet.c 2006-11-27 10:52:42.000000000 +0000
+@@ -95,9 +95,8 @@
static struct sk_buff *
skb_check(struct sk_buff *skb)
{
@@ -42,10 +44,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/block/aoe/aoenet.c ./drivers/block/ao
dev_kfree_skb(skb);
return NULL;
}
-diff -pruN ../orig-linux-2.6.16.29/drivers/infiniband/ulp/ipoib/ipoib_multicast.c ./drivers/infiniband/ulp/ipoib/ipoib_multicast.c
---- ../orig-linux-2.6.16.29/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-09-19 13:59:20.000000000 +0100
-@@ -821,7 +821,8 @@ void ipoib_mcast_restart_task(void *dev_
+Index: tmp-xxx/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+===================================================================
+--- tmp-xxx.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-11-27 10:52:42.000000000 +0000
+@@ -821,7 +821,8 @@
ipoib_mcast_stop_thread(dev, 0);
@@ -55,7 +58,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/infiniband/ulp/ipoib/ipoib_multicast.
spin_lock(&priv->lock);
/*
-@@ -896,7 +897,8 @@ void ipoib_mcast_restart_task(void *dev_
+@@ -896,7 +897,8 @@
}
spin_unlock(&priv->lock);
@@ -65,10 +68,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/infiniband/ulp/ipoib/ipoib_multicast.
/* We have to cancel outside of the spinlock */
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
-diff -pruN ../orig-linux-2.6.16.29/drivers/media/dvb/dvb-core/dvb_net.c ./drivers/media/dvb/dvb-core/dvb_net.c
---- ../orig-linux-2.6.16.29/drivers/media/dvb/dvb-core/dvb_net.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/media/dvb/dvb-core/dvb_net.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1052,7 +1052,7 @@ static void wq_set_multicast_list (void
+Index: tmp-xxx/drivers/media/dvb/dvb-core/dvb_net.c
+===================================================================
+--- tmp-xxx.orig/drivers/media/dvb/dvb-core/dvb_net.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/media/dvb/dvb-core/dvb_net.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1053,7 +1053,7 @@
dvb_net_feed_stop(dev);
priv->rx_mode = RX_MODE_UNI;
@@ -77,7 +81,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/media/dvb/dvb-core/dvb_net.c ./driver
if (dev->flags & IFF_PROMISC) {
dprintk("%s: promiscuous mode\n", dev->name);
-@@ -1077,7 +1077,7 @@ static void wq_set_multicast_list (void
+@@ -1078,7 +1078,7 @@
}
}
@@ -86,10 +90,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/media/dvb/dvb-core/dvb_net.c ./driver
dvb_net_feed_start(dev);
}
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/8139cp.c ./drivers/net/8139cp.c
---- ../orig-linux-2.6.16.29/drivers/net/8139cp.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/8139cp.c 2006-09-19 13:59:20.000000000 +0100
-@@ -794,7 +794,7 @@ static int cp_start_xmit (struct sk_buff
+Index: tmp-xxx/drivers/net/8139cp.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/8139cp.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/8139cp.c 2006-11-27 10:52:42.000000000 +0000
+@@ -794,7 +794,7 @@
entry = cp->tx_head;
eor = (entry == (CP_TX_RING_SIZE - 1)) ? RingEnd : 0;
if (dev->features & NETIF_F_TSO)
@@ -98,10 +103,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/8139cp.c ./drivers/net/8139cp.c
if (skb_shinfo(skb)->nr_frags == 0) {
struct cp_desc *txd = &cp->tx_ring[entry];
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/bnx2.c ./drivers/net/bnx2.c
---- ../orig-linux-2.6.16.29/drivers/net/bnx2.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/bnx2.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1593,7 +1593,7 @@ bnx2_tx_int(struct bnx2 *bp)
+Index: tmp-xxx/drivers/net/bnx2.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/bnx2.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/bnx2.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1593,7 +1593,7 @@
skb = tx_buf->skb;
#ifdef BCM_TSO
/* partial BD completions possible with TSO packets */
@@ -110,7 +116,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/bnx2.c ./drivers/net/bnx2.c
u16 last_idx, last_ring_idx;
last_idx = sw_cons +
-@@ -1948,7 +1948,7 @@ bnx2_poll(struct net_device *dev, int *b
+@@ -1948,7 +1948,7 @@
return 1;
}
@@ -119,7 +125,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/bnx2.c ./drivers/net/bnx2.c
* from set_multicast.
*/
static void
-@@ -4403,7 +4403,7 @@ bnx2_vlan_rx_kill_vid(struct net_device
+@@ -4403,7 +4403,7 @@
}
#endif
@@ -128,7 +134,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/bnx2.c ./drivers/net/bnx2.c
* hard_start_xmit is pseudo-lockless - a lock is only required when
* the tx queue is full. This way, we get the benefit of lockless
* operations most of the time without the complexities to handle
-@@ -4441,7 +4441,7 @@ bnx2_start_xmit(struct sk_buff *skb, str
+@@ -4441,7 +4441,7 @@
(TX_BD_FLAGS_VLAN_TAG | (vlan_tx_tag_get(skb) << 16));
}
#ifdef BCM_TSO
@@ -137,10 +143,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/bnx2.c ./drivers/net/bnx2.c
(skb->len > (bp->dev->mtu + ETH_HLEN))) {
u32 tcp_opt_len, ip_tcp_len;
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/bonding/bond_main.c ./drivers/net/bonding/bond_main.c
---- ../orig-linux-2.6.16.29/drivers/net/bonding/bond_main.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/bonding/bond_main.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1145,8 +1145,7 @@ int bond_sethwaddr(struct net_device *bo
+Index: tmp-xxx/drivers/net/bonding/bond_main.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/bonding/bond_main.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/bonding/bond_main.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1145,8 +1145,7 @@
}
#define BOND_INTERSECT_FEATURES \
@@ -150,7 +157,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/bonding/bond_main.c ./drivers/net
/*
* Compute the common dev->feature set available to all slaves. Some
-@@ -1164,9 +1163,7 @@ static int bond_compute_features(struct
+@@ -1164,9 +1163,7 @@
features &= (slave->dev->features & BOND_INTERSECT_FEATURES);
if ((features & NETIF_F_SG) &&
@@ -161,7 +168,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/bonding/bond_main.c ./drivers/net
features &= ~NETIF_F_SG;
/*
-@@ -4147,7 +4144,7 @@ static int bond_init(struct net_device *
+@@ -4147,7 +4144,7 @@
*/
bond_dev->features |= NETIF_F_VLAN_CHALLENGED;
@@ -170,10 +177,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/bonding/bond_main.c ./drivers/net
* transmitting */
bond_dev->features |= NETIF_F_LLTX;
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c ./drivers/net/chelsio/sge.c
---- ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/chelsio/sge.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1419,7 +1419,7 @@ int t1_start_xmit(struct sk_buff *skb, s
+Index: tmp-xxx/drivers/net/chelsio/sge.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/chelsio/sge.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/chelsio/sge.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1419,7 +1419,7 @@
struct cpl_tx_pkt *cpl;
#ifdef NETIF_F_TSO
@@ -182,7 +190,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c ./drivers/net/chels
int eth_type;
struct cpl_tx_pkt_lso *hdr;
-@@ -1434,7 +1434,7 @@ int t1_start_xmit(struct sk_buff *skb, s
+@@ -1434,7 +1434,7 @@
hdr->ip_hdr_words = skb->nh.iph->ihl;
hdr->tcp_hdr_words = skb->h.th->doff;
hdr->eth_type_mss = htons(MK_ETH_TYPE_MSS(eth_type,
@@ -191,10 +199,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c ./drivers/net/chels
hdr->len = htonl(skb->len - sizeof(*hdr));
cpl = (struct cpl_tx_pkt *)hdr;
sge->stats.tx_lso_pkts++;
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/e1000/e1000_main.c
---- ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/e1000/e1000_main.c 2006-09-19 13:59:20.000000000 +0100
-@@ -2526,7 +2526,7 @@ e1000_tso(struct e1000_adapter *adapter,
+Index: tmp-xxx/drivers/net/e1000/e1000_main.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/e1000/e1000_main.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/e1000/e1000_main.c 2006-11-27 10:52:42.000000000 +0000
+@@ -2526,7 +2526,7 @@
uint8_t ipcss, ipcso, tucss, tucso, hdr_len;
int err;
@@ -203,7 +212,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/
if (skb_header_cloned(skb)) {
err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
if (err)
-@@ -2534,7 +2534,7 @@ e1000_tso(struct e1000_adapter *adapter,
+@@ -2534,7 +2534,7 @@
}
hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2));
@@ -212,7 +221,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/
if (skb->protocol == ntohs(ETH_P_IP)) {
skb->nh.iph->tot_len = 0;
skb->nh.iph->check = 0;
-@@ -2651,7 +2651,7 @@ e1000_tx_map(struct e1000_adapter *adapt
+@@ -2651,7 +2651,7 @@
* tso gets written back prematurely before the data is fully
* DMAd to the controller */
if (!skb->data_len && tx_ring->last_tx_tso &&
@@ -221,7 +230,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/
tx_ring->last_tx_tso = 0;
size -= 4;
}
-@@ -2893,7 +2893,7 @@ e1000_xmit_frame(struct sk_buff *skb, st
+@@ -2893,7 +2893,7 @@
}
#ifdef NETIF_F_TSO
@@ -230,7 +239,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/
/* The controller does a simple calculation to
* make sure there is enough room in the FIFO before
* initiating the DMA for each buffer. The calc is:
-@@ -2935,7 +2935,7 @@ e1000_xmit_frame(struct sk_buff *skb, st
+@@ -2935,7 +2935,7 @@
#ifdef NETIF_F_TSO
/* Controller Erratum workaround */
if (!skb->data_len && tx_ring->last_tx_tso &&
@@ -239,10 +248,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/
count++;
#endif
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcedeth.c
---- ../orig-linux-2.6.16.29/drivers/net/forcedeth.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/forcedeth.c 2006-09-19 13:59:20.000000000 +0100
-@@ -482,9 +482,9 @@ typedef union _ring_type {
+Index: tmp-xxx/drivers/net/forcedeth.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/forcedeth.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/forcedeth.c 2006-11-27 10:52:42.000000000 +0000
+@@ -482,9 +482,9 @@
* critical parts:
* - rx is (pseudo-) lockless: it relies on the single-threading provided
* by the arch code for interrupts.
@@ -254,7 +264,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
*/
/* in dev: base, irq */
-@@ -1016,7 +1016,7 @@ static void drain_ring(struct net_device
+@@ -1016,7 +1016,7 @@
/*
* nv_start_xmit: dev->hard_start_xmit function
@@ -263,7 +273,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
*/
static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
-@@ -1105,8 +1105,8 @@ static int nv_start_xmit(struct sk_buff
+@@ -1105,8 +1105,8 @@
np->tx_skbuff[nr] = skb;
#ifdef NETIF_F_TSO
@@ -274,7 +284,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
else
#endif
tx_flags_extra = (skb->ip_summed == CHECKSUM_HW ? (NV_TX2_CHECKSUM_L3|NV_TX2_CHECKSUM_L4) : 0);
-@@ -1203,7 +1203,7 @@ static void nv_tx_done(struct net_device
+@@ -1203,7 +1203,7 @@
/*
* nv_tx_timeout: dev->tx_timeout function
@@ -283,7 +293,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
*/
static void nv_tx_timeout(struct net_device *dev)
{
-@@ -1524,7 +1524,7 @@ static int nv_change_mtu(struct net_devi
+@@ -1524,7 +1524,7 @@
* Changing the MTU is a rare event, it shouldn't matter.
*/
disable_irq(dev->irq);
@@ -292,7 +302,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
spin_lock(&np->lock);
/* stop engines */
nv_stop_rx(dev);
-@@ -1559,7 +1559,7 @@ static int nv_change_mtu(struct net_devi
+@@ -1559,7 +1559,7 @@
nv_start_rx(dev);
nv_start_tx(dev);
spin_unlock(&np->lock);
@@ -301,7 +311,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
enable_irq(dev->irq);
}
return 0;
-@@ -1594,7 +1594,7 @@ static int nv_set_mac_address(struct net
+@@ -1594,7 +1594,7 @@
memcpy(dev->dev_addr, macaddr->sa_data, ETH_ALEN);
if (netif_running(dev)) {
@@ -310,7 +320,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
spin_lock_irq(&np->lock);
/* stop rx engine */
-@@ -1606,7 +1606,7 @@ static int nv_set_mac_address(struct net
+@@ -1606,7 +1606,7 @@
/* restart rx engine */
nv_start_rx(dev);
spin_unlock_irq(&np->lock);
@@ -319,7 +329,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
} else {
nv_copy_mac_to_hw(dev);
}
-@@ -1615,7 +1615,7 @@ static int nv_set_mac_address(struct net
+@@ -1615,7 +1615,7 @@
/*
* nv_set_multicast: dev->set_multicast function
@@ -328,10 +338,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcede
*/
static void nv_set_multicast(struct net_device *dev)
{
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/6pack.c ./drivers/net/hamradio/6pack.c
---- ../orig-linux-2.6.16.29/drivers/net/hamradio/6pack.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/hamradio/6pack.c 2006-09-19 13:59:20.000000000 +0100
-@@ -308,9 +308,9 @@ static int sp_set_mac_address(struct net
+Index: tmp-xxx/drivers/net/hamradio/6pack.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/hamradio/6pack.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/hamradio/6pack.c 2006-11-27 10:52:42.000000000 +0000
+@@ -308,9 +308,9 @@
{
struct sockaddr_ax25 *sa = addr;
@@ -343,7 +354,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/6pack.c ./drivers/net/ha
return 0;
}
-@@ -767,9 +767,9 @@ static int sixpack_ioctl(struct tty_stru
+@@ -767,9 +767,9 @@
break;
}
@@ -355,10 +366,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/6pack.c ./drivers/net/ha
err = 0;
break;
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/mkiss.c ./drivers/net/hamradio/mkiss.c
---- ../orig-linux-2.6.16.29/drivers/net/hamradio/mkiss.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/hamradio/mkiss.c 2006-09-19 13:59:20.000000000 +0100
-@@ -357,9 +357,9 @@ static int ax_set_mac_address(struct net
+Index: tmp-xxx/drivers/net/hamradio/mkiss.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/hamradio/mkiss.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/hamradio/mkiss.c 2006-11-27 10:52:42.000000000 +0000
+@@ -357,9 +357,9 @@
{
struct sockaddr_ax25 *sa = addr;
@@ -370,7 +382,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/mkiss.c ./drivers/net/ha
return 0;
}
-@@ -886,9 +886,9 @@ static int mkiss_ioctl(struct tty_struct
+@@ -886,9 +886,9 @@
break;
}
@@ -382,10 +394,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/mkiss.c ./drivers/net/ha
err = 0;
break;
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/ifb.c ./drivers/net/ifb.c
---- ../orig-linux-2.6.16.29/drivers/net/ifb.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/ifb.c 2006-09-19 13:59:20.000000000 +0100
-@@ -76,13 +76,13 @@ static void ri_tasklet(unsigned long dev
+Index: tmp-xxx/drivers/net/ifb.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/ifb.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/ifb.c 2006-11-27 10:52:42.000000000 +0000
+@@ -76,13 +76,13 @@
dp->st_task_enter++;
if ((skb = skb_peek(&dp->tq)) == NULL) {
dp->st_txq_refl_try++;
@@ -401,7 +414,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/ifb.c ./drivers/net/ifb.c
} else {
/* reschedule */
dp->st_rxq_notenter++;
-@@ -110,7 +110,7 @@ static void ri_tasklet(unsigned long dev
+@@ -110,7 +110,7 @@
}
}
@@ -410,7 +423,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/ifb.c ./drivers/net/ifb.c
dp->st_rxq_check++;
if ((skb = skb_peek(&dp->rq)) == NULL) {
dp->tasklet_pending = 0;
-@@ -118,10 +118,10 @@ static void ri_tasklet(unsigned long dev
+@@ -118,10 +118,10 @@
netif_wake_queue(_dev);
} else {
dp->st_rxq_rsch++;
@@ -423,10 +436,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/ifb.c ./drivers/net/ifb.c
} else {
resched:
dp->tasklet_pending = 1;
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/irda/vlsi_ir.c ./drivers/net/irda/vlsi_ir.c
---- ../orig-linux-2.6.16.29/drivers/net/irda/vlsi_ir.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/irda/vlsi_ir.c 2006-09-19 13:59:20.000000000 +0100
-@@ -959,7 +959,7 @@ static int vlsi_hard_start_xmit(struct s
+Index: tmp-xxx/drivers/net/irda/vlsi_ir.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/irda/vlsi_ir.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/irda/vlsi_ir.c 2006-11-27 10:52:42.000000000 +0000
+@@ -959,7 +959,7 @@
|| (now.tv_sec==ready.tv_sec && now.tv_usec>=ready.tv_usec))
break;
udelay(100);
@@ -435,10 +449,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/irda/vlsi_ir.c ./drivers/net/irda
}
}
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c ./drivers/net/ixgb/ixgb_main.c
---- ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/ixgb/ixgb_main.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1163,7 +1163,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s
+Index: tmp-xxx/drivers/net/ixgb/ixgb_main.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/ixgb/ixgb_main.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/ixgb/ixgb_main.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1163,7 +1163,7 @@
uint16_t ipcse, tucse, mss;
int err;
@@ -447,7 +462,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c ./drivers/net/ix
if (skb_header_cloned(skb)) {
err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
if (err)
-@@ -1171,7 +1171,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s
+@@ -1171,7 +1171,7 @@
}
hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2));
@@ -456,10 +471,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c ./drivers/net/ix
skb->nh.iph->tot_len = 0;
skb->nh.iph->check = 0;
skb->h.th->check = ~csum_tcpudp_magic(skb->nh.iph->saddr,
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/loopback.c ./drivers/net/loopback.c
---- ../orig-linux-2.6.16.29/drivers/net/loopback.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/loopback.c 2006-09-19 13:59:20.000000000 +0100
-@@ -74,7 +74,7 @@ static void emulate_large_send_offload(s
+Index: tmp-xxx/drivers/net/loopback.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/loopback.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/loopback.c 2006-11-27 10:52:42.000000000 +0000
+@@ -74,7 +74,7 @@
struct iphdr *iph = skb->nh.iph;
struct tcphdr *th = (struct tcphdr*)(skb->nh.raw + (iph->ihl * 4));
unsigned int doffset = (iph->ihl + th->doff) * 4;
@@ -468,7 +484,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/loopback.c ./drivers/net/loopback
unsigned int offset = 0;
u32 seq = ntohl(th->seq);
u16 id = ntohs(iph->id);
-@@ -139,7 +139,7 @@ static int loopback_xmit(struct sk_buff
+@@ -139,7 +139,7 @@
#endif
#ifdef LOOPBACK_TSO
@@ -477,10 +493,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/loopback.c ./drivers/net/loopback
BUG_ON(skb->protocol != htons(ETH_P_IP));
BUG_ON(skb->nh.iph->protocol != IPPROTO_TCP);
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/mv643xx_eth.c ./drivers/net/mv643xx_eth.c
---- ../orig-linux-2.6.16.29/drivers/net/mv643xx_eth.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/mv643xx_eth.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1107,7 +1107,7 @@ static int mv643xx_eth_start_xmit(struct
+Index: tmp-xxx/drivers/net/mv643xx_eth.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/mv643xx_eth.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/mv643xx_eth.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1107,7 +1107,7 @@
#ifdef MV643XX_CHECKSUM_OFFLOAD_TX
if (has_tiny_unaligned_frags(skb)) {
@@ -489,10 +506,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/mv643xx_eth.c ./drivers/net/mv643
stats->tx_dropped++;
printk(KERN_DEBUG "%s: failed to linearize tiny "
"unaligned fragment\n", dev->name);
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/natsemi.c ./drivers/net/natsemi.c
---- ../orig-linux-2.6.16.29/drivers/net/natsemi.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/natsemi.c 2006-09-19 13:59:20.000000000 +0100
-@@ -323,12 +323,12 @@ performance critical codepaths:
+Index: tmp-xxx/drivers/net/natsemi.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/natsemi.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/natsemi.c 2006-11-27 10:52:42.000000000 +0000
+@@ -323,12 +323,12 @@
The rx process only runs in the interrupt handler. Access from outside
the interrupt handler is only permitted after disable_irq().
@@ -507,10 +525,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/natsemi.c ./drivers/net/natsemi.c
spin_lock_irq(&np->lock);
IV. Notes
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/r8169.c ./drivers/net/r8169.c
---- ../orig-linux-2.6.16.29/drivers/net/r8169.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/r8169.c 2006-09-19 13:59:20.000000000 +0100
-@@ -2171,7 +2171,7 @@ static int rtl8169_xmit_frags(struct rtl
+Index: tmp-xxx/drivers/net/r8169.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/r8169.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/r8169.c 2006-11-27 10:52:42.000000000 +0000
+@@ -2171,7 +2171,7 @@
static inline u32 rtl8169_tso_csum(struct sk_buff *skb, struct net_device *dev)
{
if (dev->features & NETIF_F_TSO) {
@@ -519,10 +538,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/r8169.c ./drivers/net/r8169.c
if (mss)
return LargeSend | ((mss & MSSMask) << MSSShift);
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/s2io.c ./drivers/net/s2io.c
---- ../orig-linux-2.6.16.29/drivers/net/s2io.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/s2io.c 2006-09-19 13:59:20.000000000 +0100
-@@ -3522,8 +3522,8 @@ static int s2io_xmit(struct sk_buff *skb
+Index: tmp-xxx/drivers/net/s2io.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/s2io.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/s2io.c 2006-11-27 10:52:42.000000000 +0000
+@@ -3522,8 +3522,8 @@
txdp->Control_1 = 0;
txdp->Control_2 = 0;
#ifdef NETIF_F_TSO
@@ -533,7 +553,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/s2io.c ./drivers/net/s2io.c
txdp->Control_1 |= TXD_TCP_LSO_EN;
txdp->Control_1 |= TXD_TCP_LSO_MSS(mss);
}
-@@ -3543,10 +3543,10 @@ static int s2io_xmit(struct sk_buff *skb
+@@ -3543,10 +3543,10 @@
}
frg_len = skb->len - skb->data_len;
@@ -546,7 +566,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/s2io.c ./drivers/net/s2io.c
ufo_size &= ~7;
txdp->Control_1 |= TXD_UFO_EN;
txdp->Control_1 |= TXD_UFO_MSS(ufo_size);
-@@ -3572,7 +3572,7 @@ static int s2io_xmit(struct sk_buff *skb
+@@ -3572,7 +3572,7 @@
txdp->Host_Control = (unsigned long) skb;
txdp->Control_1 |= TXD_BUFFER0_SIZE(frg_len);
@@ -555,7 +575,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/s2io.c ./drivers/net/s2io.c
txdp->Control_1 |= TXD_UFO_EN;
frg_cnt = skb_shinfo(skb)->nr_frags;
-@@ -3587,12 +3587,12 @@ static int s2io_xmit(struct sk_buff *skb
+@@ -3587,12 +3587,12 @@
(sp->pdev, frag->page, frag->page_offset,
frag->size, PCI_DMA_TODEVICE);
txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size);
@@ -570,7 +590,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/s2io.c ./drivers/net/s2io.c
frg_cnt++; /* as Txd0 was used for inband header */
tx_fifo = mac_control->tx_FIFO_start[queue];
-@@ -3606,7 +3606,7 @@ static int s2io_xmit(struct sk_buff *skb
+@@ -3606,7 +3606,7 @@
if (mss)
val64 |= TX_FIFO_SPECIAL_FUNC;
#endif
@@ -579,10 +599,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/s2io.c ./drivers/net/s2io.c
val64 |= TX_FIFO_SPECIAL_FUNC;
writeq(val64, &tx_fifo->List_Control);
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/sky2.c ./drivers/net/sky2.c
---- ../orig-linux-2.6.16.29/drivers/net/sky2.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/sky2.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1125,7 +1125,7 @@ static unsigned tx_le_req(const struct s
+Index: tmp-xxx/drivers/net/sky2.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/sky2.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/sky2.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1141,7 +1141,7 @@
count = sizeof(dma_addr_t) / sizeof(u32);
count += skb_shinfo(skb)->nr_frags * count;
@@ -591,7 +612,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/sky2.c ./drivers/net/sky2.c
++count;
if (skb->ip_summed == CHECKSUM_HW)
-@@ -1197,7 +1197,7 @@ static int sky2_xmit_frame(struct sk_buf
+@@ -1213,7 +1213,7 @@
}
/* Check for TCP Segmentation Offload */
@@ -600,10 +621,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/sky2.c ./drivers/net/sky2.c
if (mss != 0) {
/* just drop the packet if non-linear expansion fails */
if (skb_header_cloned(skb) &&
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/tg3.c ./drivers/net/tg3.c
---- ../orig-linux-2.6.16.29/drivers/net/tg3.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/tg3.c 2006-09-19 13:59:20.000000000 +0100
-@@ -3664,7 +3664,7 @@ static int tg3_start_xmit(struct sk_buff
+Index: tmp-xxx/drivers/net/tg3.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/tg3.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/tg3.c 2006-11-27 10:52:42.000000000 +0000
+@@ -3664,7 +3664,7 @@
#if TG3_TSO_SUPPORT != 0
mss = 0;
if (skb->len > (tp->dev->mtu + ETH_HLEN) &&
@@ -612,10 +634,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/tg3.c ./drivers/net/tg3.c
int tcp_opt_len, ip_tcp_len;
if (skb_header_cloned(skb) &&
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/tulip/winbond-840.c ./drivers/net/tulip/winbond-840.c
---- ../orig-linux-2.6.16.29/drivers/net/tulip/winbond-840.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/tulip/winbond-840.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1605,11 +1605,11 @@ static void __devexit w840_remove1 (stru
+Index: tmp-xxx/drivers/net/tulip/winbond-840.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/tulip/winbond-840.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/tulip/winbond-840.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1605,11 +1605,11 @@
* - get_stats:
* spin_lock_irq(np->lock), doesn't touch hw if not present
* - hard_start_xmit:
@@ -630,7 +653,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/tulip/winbond-840.c ./drivers/net
* - interrupt handler
* doesn't touch hw if not present, synchronize_irq waits for
* running instances of the interrupt handler.
-@@ -1635,11 +1635,10 @@ static int w840_suspend (struct pci_dev
+@@ -1635,11 +1635,10 @@
netif_device_detach(dev);
update_csr6(dev, 0);
iowrite32(0, ioaddr + IntrEnable);
@@ -643,10 +666,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/tulip/winbond-840.c ./drivers/net
np->stats.rx_missed_errors += ioread32(ioaddr + RxMissed) & 0xffff;
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/typhoon.c ./drivers/net/typhoon.c
---- ../orig-linux-2.6.16.29/drivers/net/typhoon.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/typhoon.c 2006-09-19 13:59:20.000000000 +0100
-@@ -340,7 +340,7 @@ enum state_values {
+Index: tmp-xxx/drivers/net/typhoon.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/typhoon.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/typhoon.c 2006-11-27 10:52:42.000000000 +0000
+@@ -340,7 +340,7 @@
#endif
#if defined(NETIF_F_TSO)
@@ -655,10 +679,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/typhoon.c ./drivers/net/typhoon.c
#define TSO_NUM_DESCRIPTORS 2
#define TSO_OFFLOAD_ON TYPHOON_OFFLOAD_TCP_SEGMENT
#else
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/via-velocity.c ./drivers/net/via-velocity.c
---- ../orig-linux-2.6.16.29/drivers/net/via-velocity.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/via-velocity.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1899,6 +1899,13 @@ static int velocity_xmit(struct sk_buff
+Index: tmp-xxx/drivers/net/via-velocity.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/via-velocity.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/via-velocity.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1905,6 +1905,13 @@
int pktlen = skb->len;
@@ -672,7 +697,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/via-velocity.c ./drivers/net/via-
spin_lock_irqsave(&vptr->lock, flags);
index = vptr->td_curr[qnum];
-@@ -1914,8 +1921,6 @@ static int velocity_xmit(struct sk_buff
+@@ -1920,8 +1927,6 @@
*/
if (pktlen < ETH_ZLEN) {
/* Cannot occur until ZC support */
@@ -681,7 +706,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/via-velocity.c ./drivers/net/via-
pktlen = ETH_ZLEN;
memcpy(tdinfo->buf, skb->data, skb->len);
memset(tdinfo->buf + skb->len, 0, ETH_ZLEN - skb->len);
-@@ -1933,7 +1938,6 @@ static int velocity_xmit(struct sk_buff
+@@ -1939,7 +1944,6 @@
int nfrags = skb_shinfo(skb)->nr_frags;
tdinfo->skb = skb;
if (nfrags > 6) {
@@ -689,10 +714,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/via-velocity.c ./drivers/net/via-
memcpy(tdinfo->buf, skb->data, skb->len);
tdinfo->skb_dma[0] = tdinfo->buf_dma;
td_ptr->tdesc0.pktsize =
-diff -pruN ../orig-linux-2.6.16.29/drivers/net/wireless/orinoco.c ./drivers/net/wireless/orinoco.c
---- ../orig-linux-2.6.16.29/drivers/net/wireless/orinoco.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/net/wireless/orinoco.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1835,7 +1835,9 @@ static int __orinoco_program_rids(struct
+Index: tmp-xxx/drivers/net/wireless/orinoco.c
+===================================================================
+--- tmp-xxx.orig/drivers/net/wireless/orinoco.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/net/wireless/orinoco.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1835,7 +1835,9 @@
/* Set promiscuity / multicast*/
priv->promiscuous = 0;
priv->mc_count = 0;
@@ -703,10 +729,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/net/wireless/orinoco.c ./drivers/net/
return 0;
}
-diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_eddp.c ./drivers/s390/net/qeth_eddp.c
---- ../orig-linux-2.6.16.29/drivers/s390/net/qeth_eddp.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/s390/net/qeth_eddp.c 2006-09-19 13:59:20.000000000 +0100
-@@ -421,7 +421,7 @@ __qeth_eddp_fill_context_tcp(struct qeth
+Index: tmp-xxx/drivers/s390/net/qeth_eddp.c
+===================================================================
+--- tmp-xxx.orig/drivers/s390/net/qeth_eddp.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/s390/net/qeth_eddp.c 2006-11-27 10:52:42.000000000 +0000
+@@ -421,7 +421,7 @@
}
tcph = eddp->skb->h.th;
while (eddp->skb_offset < eddp->skb->len) {
@@ -715,7 +742,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_eddp.c ./drivers/s390/n
(int)(eddp->skb->len - eddp->skb_offset));
/* prepare qdio hdr */
if (eddp->qh.hdr.l2.id == QETH_HEADER_TYPE_LAYER2){
-@@ -516,20 +516,20 @@ qeth_eddp_calc_num_pages(struct qeth_edd
+@@ -516,20 +516,20 @@
QETH_DBF_TEXT(trace, 5, "eddpcanp");
/* can we put multiple skbs in one page? */
@@ -741,10 +768,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_eddp.c ./drivers/s390/n
}
static inline struct qeth_eddp_context *
-diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c ./drivers/s390/net/qeth_main.c
---- ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/s390/net/qeth_main.c 2006-09-19 13:59:20.000000000 +0100
-@@ -4454,7 +4454,7 @@ qeth_send_packet(struct qeth_card *card,
+Index: tmp-xxx/drivers/s390/net/qeth_main.c
+===================================================================
+--- tmp-xxx.orig/drivers/s390/net/qeth_main.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/s390/net/qeth_main.c 2006-11-27 10:52:42.000000000 +0000
+@@ -4454,7 +4454,7 @@
queue = card->qdio.out_qs
[qeth_get_priority_queue(card, skb, ipv, cast_type)];
@@ -753,7 +781,7 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c ./drivers/s390/n
large_send = card->options.large_send;
/*are we able to do TSO ? If so ,prepare and send it from here */
-@@ -4501,7 +4501,7 @@ qeth_send_packet(struct qeth_card *card,
+@@ -4501,7 +4501,7 @@
card->stats.tx_packets++;
card->stats.tx_bytes += skb->len;
#ifdef CONFIG_QETH_PERF_STATS
@@ -762,10 +790,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c ./drivers/s390/n
!(large_send == QETH_LARGE_SEND_NO)) {
card->perf_stats.large_send_bytes += skb->len;
card->perf_stats.large_send_cnt++;
-diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_tso.h ./drivers/s390/net/qeth_tso.h
---- ../orig-linux-2.6.16.29/drivers/s390/net/qeth_tso.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./drivers/s390/net/qeth_tso.h 2006-09-19 13:59:20.000000000 +0100
-@@ -51,7 +51,7 @@ qeth_tso_fill_header(struct qeth_card *c
+Index: tmp-xxx/drivers/s390/net/qeth_tso.h
+===================================================================
+--- tmp-xxx.orig/drivers/s390/net/qeth_tso.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/drivers/s390/net/qeth_tso.h 2006-11-27 10:52:42.000000000 +0000
+@@ -51,7 +51,7 @@
hdr->ext.hdr_version = 1;
hdr->ext.hdr_len = 28;
/*insert non-fix values */
@@ -774,10 +803,11 @@ diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_tso.h ./drivers/s390/ne
hdr->ext.dg_hdr_len = (__u16)(iph->ihl*4 + tcph->doff*4);
hdr->ext.payload_len = (__u16)(skb->len - hdr->ext.dg_hdr_len -
sizeof(struct qeth_hdr_tso));
-diff -pruN ../orig-linux-2.6.16.29/include/linux/ethtool.h ./include/linux/ethtool.h
---- ../orig-linux-2.6.16.29/include/linux/ethtool.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./include/linux/ethtool.h 2006-09-19 13:59:20.000000000 +0100
-@@ -408,6 +408,8 @@ struct ethtool_ops {
+Index: tmp-xxx/include/linux/ethtool.h
+===================================================================
+--- tmp-xxx.orig/include/linux/ethtool.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/include/linux/ethtool.h 2006-11-27 10:52:42.000000000 +0000
+@@ -408,6 +408,8 @@
#define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */
#define ETHTOOL_GUFO 0x00000021 /* Get UFO enable (ethtool_value) */
#define ETHTOOL_SUFO 0x00000022 /* Set UFO enable (ethtool_value) */
@@ -786,10 +816,11 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/ethtool.h ./include/linux/ethto
/* compatibility with older code */
#define SPARC_ETH_GSET ETHTOOL_GSET
-diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/netdevice.h
---- ../orig-linux-2.6.16.29/include/linux/netdevice.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./include/linux/netdevice.h 2006-09-19 13:59:20.000000000 +0100
-@@ -230,7 +230,8 @@ enum netdev_state_t
+Index: tmp-xxx/include/linux/netdevice.h
+===================================================================
+--- tmp-xxx.orig/include/linux/netdevice.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/include/linux/netdevice.h 2006-11-27 10:52:42.000000000 +0000
+@@ -230,7 +230,8 @@
__LINK_STATE_SCHED,
__LINK_STATE_NOCARRIER,
__LINK_STATE_RX_SCHED,
@@ -799,7 +830,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
};
-@@ -306,9 +307,17 @@ struct net_device
+@@ -306,9 +307,17 @@
#define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */
#define NETIF_F_HW_VLAN_FILTER 512 /* Receive filtering on VLAN */
#define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */
@@ -819,7 +850,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
struct net_device *next_sched;
-@@ -394,6 +403,9 @@ struct net_device
+@@ -394,6 +403,9 @@
struct list_head qdisc_list;
unsigned long tx_queue_len; /* Max frames per queue allowed */
@@ -829,7 +860,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
/* ingress path synchronizer */
spinlock_t ingress_lock;
struct Qdisc *qdisc_ingress;
-@@ -402,7 +414,7 @@ struct net_device
+@@ -402,7 +414,7 @@
* One part is mostly used on xmit path (device)
*/
/* hard_start_xmit synchronizer */
@@ -838,7 +869,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
/* cpu id of processor entered to hard_start_xmit or -1,
if nobody entered there.
*/
-@@ -527,6 +539,8 @@ struct packet_type {
+@@ -527,6 +539,8 @@
struct net_device *,
struct packet_type *,
struct net_device *);
@@ -847,7 +878,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
void *af_packet_priv;
struct list_head list;
};
-@@ -693,7 +707,8 @@ extern int dev_change_name(struct net_d
+@@ -693,7 +707,8 @@
extern int dev_set_mtu(struct net_device *, int);
extern int dev_set_mac_address(struct net_device *,
struct sockaddr *);
@@ -857,7 +888,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
extern void dev_init(void);
-@@ -900,11 +915,43 @@ static inline void __netif_rx_complete(s
+@@ -900,11 +915,43 @@
clear_bit(__LINK_STATE_RX_SCHED, &dev->state);
}
@@ -903,7 +934,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
}
/* These functions live elsewhere (drivers/net/net_init.c, but related) */
-@@ -932,6 +979,7 @@ extern int netdev_max_backlog;
+@@ -932,6 +979,7 @@
extern int weight_p;
extern int netdev_set_master(struct net_device *dev, struct net_device *master);
extern int skb_checksum_help(struct sk_buff *skb, int inward);
@@ -911,7 +942,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
#ifdef CONFIG_BUG
extern void netdev_rx_csum_fault(struct net_device *dev);
#else
-@@ -951,6 +999,18 @@ extern void dev_seq_stop(struct seq_file
+@@ -951,6 +999,18 @@
extern void linkwatch_run_queue(void);
@@ -930,10 +961,11 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/net
#endif /* __KERNEL__ */
#endif /* _LINUX_DEV_H */
-diff -pruN ../orig-linux-2.6.16.29/include/linux/skbuff.h ./include/linux/skbuff.h
---- ../orig-linux-2.6.16.29/include/linux/skbuff.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./include/linux/skbuff.h 2006-09-19 13:59:20.000000000 +0100
-@@ -134,9 +134,10 @@ struct skb_frag_struct {
+Index: tmp-xxx/include/linux/skbuff.h
+===================================================================
+--- tmp-xxx.orig/include/linux/skbuff.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/include/linux/skbuff.h 2006-11-27 10:52:42.000000000 +0000
+@@ -134,9 +134,10 @@
struct skb_shared_info {
atomic_t dataref;
unsigned short nr_frags;
@@ -947,7 +979,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/skbuff.h ./include/linux/skbuff
unsigned int ip6_frag_id;
struct sk_buff *frag_list;
skb_frag_t frags[MAX_SKB_FRAGS];
-@@ -168,6 +169,14 @@ enum {
+@@ -168,6 +169,14 @@
SKB_FCLONE_CLONE,
};
@@ -962,7 +994,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/skbuff.h ./include/linux/skbuff
/**
* struct sk_buff - socket buffer
* @next: Next buffer in list
-@@ -1148,18 +1157,34 @@ static inline int skb_can_coalesce(struc
+@@ -1148,18 +1157,34 @@
return 0;
}
@@ -1001,7 +1033,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/skbuff.h ./include/linux/skbuff
}
/**
-@@ -1254,6 +1279,7 @@ extern void skb_split(struct sk_b
+@@ -1254,6 +1279,7 @@
struct sk_buff *skb1, const u32 len);
extern void skb_release_data(struct sk_buff *skb);
@@ -1009,10 +1041,11 @@ diff -pruN ../orig-linux-2.6.16.29/include/linux/skbuff.h ./include/linux/skbuff
static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
int len, void *buffer)
-diff -pruN ../orig-linux-2.6.16.29/include/net/pkt_sched.h ./include/net/pkt_sched.h
---- ../orig-linux-2.6.16.29/include/net/pkt_sched.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./include/net/pkt_sched.h 2006-09-19 13:59:20.000000000 +0100
-@@ -218,12 +218,13 @@ extern struct qdisc_rate_table *qdisc_ge
+Index: tmp-xxx/include/net/pkt_sched.h
+===================================================================
+--- tmp-xxx.orig/include/net/pkt_sched.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/include/net/pkt_sched.h 2006-11-27 10:52:42.000000000 +0000
+@@ -218,12 +218,13 @@
struct rtattr *tab);
extern void qdisc_put_rtab(struct qdisc_rate_table *tab);
@@ -1029,9 +1062,10 @@ diff -pruN ../orig-linux-2.6.16.29/include/net/pkt_sched.h ./include/net/pkt_sch
}
extern int tc_classify(struct sk_buff *skb, struct tcf_proto *tp,
-diff -pruN ../orig-linux-2.6.16.29/include/net/protocol.h ./include/net/protocol.h
---- ../orig-linux-2.6.16.29/include/net/protocol.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./include/net/protocol.h 2006-09-19 13:59:20.000000000 +0100
+Index: tmp-xxx/include/net/protocol.h
+===================================================================
+--- tmp-xxx.orig/include/net/protocol.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/include/net/protocol.h 2006-11-27 10:52:42.000000000 +0000
@@ -37,6 +37,8 @@
struct net_protocol {
int (*handler)(struct sk_buff *skb);
@@ -1041,10 +1075,11 @@ diff -pruN ../orig-linux-2.6.16.29/include/net/protocol.h ./include/net/protocol
int no_policy;
};
-diff -pruN ../orig-linux-2.6.16.29/include/net/sock.h ./include/net/sock.h
---- ../orig-linux-2.6.16.29/include/net/sock.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./include/net/sock.h 2006-09-19 13:59:20.000000000 +0100
-@@ -1064,9 +1064,13 @@ static inline void sk_setup_caps(struct
+Index: tmp-xxx/include/net/sock.h
+===================================================================
+--- tmp-xxx.orig/include/net/sock.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/include/net/sock.h 2006-11-27 10:52:42.000000000 +0000
+@@ -1064,9 +1064,13 @@
{
__sk_dst_set(sk, dst);
sk->sk_route_caps = dst->dev->features;
@@ -1058,10 +1093,11 @@ diff -pruN ../orig-linux-2.6.16.29/include/net/sock.h ./include/net/sock.h
}
}
-diff -pruN ../orig-linux-2.6.16.29/include/net/tcp.h ./include/net/tcp.h
---- ../orig-linux-2.6.16.29/include/net/tcp.h 2006-09-12 19:02:10.000000000 +0100
-+++ ./include/net/tcp.h 2006-09-19 13:59:20.000000000 +0100
-@@ -552,13 +552,13 @@ struct tcp_skb_cb {
+Index: tmp-xxx/include/net/tcp.h
+===================================================================
+--- tmp-xxx.orig/include/net/tcp.h 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/include/net/tcp.h 2006-11-27 10:52:42.000000000 +0000
+@@ -552,13 +552,13 @@
*/
static inline int tcp_skb_pcount(const struct sk_buff *skb)
{
@@ -1077,7 +1113,7 @@ diff -pruN ../orig-linux-2.6.16.29/include/net/tcp.h ./include/net/tcp.h
}
static inline void tcp_dec_pcount_approx(__u32 *count,
-@@ -1063,6 +1063,8 @@ extern struct request_sock_ops tcp_reque
+@@ -1063,6 +1063,8 @@
extern int tcp_v4_destroy_sock(struct sock *sk);
@@ -1086,10 +1122,11 @@ diff -pruN ../orig-linux-2.6.16.29/include/net/tcp.h ./include/net/tcp.h
#ifdef CONFIG_PROC_FS
extern int tcp4_proc_init(void);
extern void tcp4_proc_exit(void);
-diff -pruN ../orig-linux-2.6.16.29/net/atm/clip.c ./net/atm/clip.c
---- ../orig-linux-2.6.16.29/net/atm/clip.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/atm/clip.c 2006-09-19 13:59:20.000000000 +0100
-@@ -101,7 +101,7 @@ static void unlink_clip_vcc(struct clip_
+Index: tmp-xxx/net/atm/clip.c
+===================================================================
+--- tmp-xxx.orig/net/atm/clip.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/atm/clip.c 2006-11-27 10:52:42.000000000 +0000
+@@ -101,7 +101,7 @@
printk(KERN_CRIT "!clip_vcc->entry (clip_vcc %p)\n",clip_vcc);
return;
}
@@ -1098,7 +1135,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/atm/clip.c ./net/atm/clip.c
entry->neigh->used = jiffies;
for (walk = &entry->vccs; *walk; walk = &(*walk)->next)
if (*walk == clip_vcc) {
-@@ -125,7 +125,7 @@ static void unlink_clip_vcc(struct clip_
+@@ -125,7 +125,7 @@
printk(KERN_CRIT "ATMARP: unlink_clip_vcc failed (entry %p, vcc "
"0x%p)\n",entry,clip_vcc);
out:
@@ -1107,10 +1144,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/atm/clip.c ./net/atm/clip.c
}
/* The neighbour entry n->lock is held. */
-diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_device.c ./net/bridge/br_device.c
---- ../orig-linux-2.6.16.29/net/bridge/br_device.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/bridge/br_device.c 2006-09-19 13:59:20.000000000 +0100
-@@ -146,9 +146,9 @@ static int br_set_tx_csum(struct net_dev
+Index: tmp-xxx/net/bridge/br_device.c
+===================================================================
+--- tmp-xxx.orig/net/bridge/br_device.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/bridge/br_device.c 2006-11-27 10:52:42.000000000 +0000
+@@ -146,9 +146,9 @@
struct net_bridge *br = netdev_priv(dev);
if (data)
@@ -1122,7 +1160,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_device.c ./net/bridge/br_device
br_features_recompute(br);
return 0;
-@@ -185,6 +185,6 @@ void br_dev_setup(struct net_device *dev
+@@ -185,6 +185,6 @@
dev->set_mac_address = br_set_mac_address;
dev->priv_flags = IFF_EBRIDGE;
@@ -1131,10 +1169,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_device.c ./net/bridge/br_device
+ dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA |
+ NETIF_F_TSO | NETIF_F_NO_CSUM | NETIF_F_GSO_ROBUST;
}
-diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_forward.c ./net/bridge/br_forward.c
---- ../orig-linux-2.6.16.29/net/bridge/br_forward.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/bridge/br_forward.c 2006-09-19 13:59:20.000000000 +0100
-@@ -32,7 +32,7 @@ static inline int should_deliver(const s
+Index: tmp-xxx/net/bridge/br_forward.c
+===================================================================
+--- tmp-xxx.orig/net/bridge/br_forward.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/bridge/br_forward.c 2006-11-27 10:52:42.000000000 +0000
+@@ -32,7 +32,7 @@
int br_dev_queue_push_xmit(struct sk_buff *skb)
{
/* drop mtu oversized packets except tso */
@@ -1143,10 +1182,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_forward.c ./net/bridge/br_forwa
kfree_skb(skb);
else {
#ifdef CONFIG_BRIDGE_NETFILTER
-diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_if.c ./net/bridge/br_if.c
---- ../orig-linux-2.6.16.29/net/bridge/br_if.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/bridge/br_if.c 2006-09-19 13:59:20.000000000 +0100
-@@ -385,17 +385,28 @@ void br_features_recompute(struct net_br
+Index: tmp-xxx/net/bridge/br_if.c
+===================================================================
+--- tmp-xxx.orig/net/bridge/br_if.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/bridge/br_if.c 2006-11-27 10:52:42.000000000 +0000
+@@ -385,17 +385,28 @@
struct net_bridge_port *p;
unsigned long features, checksum;
@@ -1181,10 +1221,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_if.c ./net/bridge/br_if.c
}
/* called with RTNL */
-diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_netfilter.c ./net/bridge/br_netfilter.c
---- ../orig-linux-2.6.16.29/net/bridge/br_netfilter.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/bridge/br_netfilter.c 2006-09-19 13:59:20.000000000 +0100
-@@ -743,7 +743,7 @@ static int br_nf_dev_queue_xmit(struct s
+Index: tmp-xxx/net/bridge/br_netfilter.c
+===================================================================
+--- tmp-xxx.orig/net/bridge/br_netfilter.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/bridge/br_netfilter.c 2006-11-27 10:52:42.000000000 +0000
+@@ -743,7 +743,7 @@
{
if (skb->protocol == htons(ETH_P_IP) &&
skb->len > skb->dev->mtu &&
@@ -1193,9 +1234,10 @@ diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_netfilter.c ./net/bridge/br_net
return ip_fragment(skb, br_dev_queue_push_xmit);
else
return br_dev_queue_push_xmit(skb);
-diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
---- ../orig-linux-2.6.16.29/net/core/dev.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/core/dev.c 2006-09-19 13:59:20.000000000 +0100
+Index: tmp-xxx/net/core/dev.c
+===================================================================
+--- tmp-xxx.orig/net/core/dev.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/core/dev.c 2006-11-27 10:57:31.000000000 +0000
@@ -115,6 +115,7 @@
#include <net/iw_handler.h>
#endif /* CONFIG_NET_RADIO */
@@ -1204,7 +1246,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
/*
* The list of packet types we will receive (as opposed to discard)
-@@ -1032,7 +1033,7 @@ static inline void net_timestamp(struct
+@@ -1032,7 +1033,7 @@
* taps currently in use.
*/
@@ -1213,7 +1255,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
{
struct packet_type *ptype;
-@@ -1106,6 +1107,45 @@ out:
+@@ -1106,6 +1107,45 @@
return ret;
}
@@ -1259,7 +1301,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
/* Take action when hardware reception checksum errors are detected. */
#ifdef CONFIG_BUG
void netdev_rx_csum_fault(struct net_device *dev)
-@@ -1142,75 +1182,108 @@ static inline int illegal_highdma(struct
+@@ -1142,76 +1182,107 @@
#define illegal_highdma(dev, skb) (0)
#endif
@@ -1272,30 +1314,6 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
+#define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
+
+static void dev_gso_skb_destructor(struct sk_buff *skb)
-+{
-+ struct dev_gso_cb *cb;
-+
-+ do {
-+ struct sk_buff *nskb = skb->next;
-+
-+ skb->next = nskb->next;
-+ nskb->next = NULL;
-+ kfree_skb(nskb);
-+ } while (skb->next);
-+
-+ cb = DEV_GSO_CB(skb);
-+ if (cb->destructor)
-+ cb->destructor(skb);
-+}
-+
-+/**
-+ * dev_gso_segment - Perform emulated hardware segmentation on skb.
-+ * @skb: buffer to segment
-+ *
-+ * This function segments the given skb and stores the list of segments
-+ * in skb->next.
-+ */
-+static int dev_gso_segment(struct sk_buff *skb)
{
- unsigned int size;
- u8 *data;
@@ -1325,6 +1343,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
- atomic_set(&ninfo->dataref, 1);
- ninfo->tso_size = skb_shinfo(skb)->tso_size;
- ninfo->tso_segs = skb_shinfo(skb)->tso_segs;
+- ninfo->ufo_size = skb_shinfo(skb)->ufo_size;
- ninfo->nr_frags = 0;
- ninfo->frag_list = NULL;
-
@@ -1343,6 +1362,34 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
- skb->mac.raw += offset;
- skb->tail += offset;
- skb->data += offset;
++ struct dev_gso_cb *cb;
+
+- /* We are no longer a clone, even if we were. */
+- skb->cloned = 0;
++ do {
++ struct sk_buff *nskb = skb->next;
+
+- skb->tail += skb->data_len;
+- skb->data_len = 0;
++ skb->next = nskb->next;
++ nskb->next = NULL;
++ kfree_skb(nskb);
++ } while (skb->next);
++
++ cb = DEV_GSO_CB(skb);
++ if (cb->destructor)
++ cb->destructor(skb);
++}
++
++/**
++ * dev_gso_segment - Perform emulated hardware segmentation on skb.
++ * @skb: buffer to segment
++ *
++ * This function segments the given skb and stores the list of segments
++ * in skb->next.
++ */
++static int dev_gso_segment(struct sk_buff *skb)
++{
+ struct net_device *dev = skb->dev;
+ struct sk_buff *segs;
+ int features = dev->features & ~(illegal_highdma(dev, skb) ?
@@ -1353,18 +1400,13 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
+ /* Verifying header integrity only. */
+ if (!segs)
+ return 0;
-
-- /* We are no longer a clone, even if we were. */
-- skb->cloned = 0;
++
+ if (unlikely(IS_ERR(segs)))
+ return PTR_ERR(segs);
+
+ skb->next = segs;
+ DEV_GSO_CB(skb)->destructor = skb->destructor;
+ skb->destructor = dev_gso_skb_destructor;
-
-- skb->tail += skb->data_len;
-- skb->data_len = 0;
+ return 0;
+}
+
@@ -1424,7 +1466,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
} \
}
-@@ -1246,9 +1319,13 @@ int dev_queue_xmit(struct sk_buff *skb)
+@@ -1247,9 +1318,13 @@
struct Qdisc *q;
int rc = -ENOMEM;
@@ -1439,7 +1481,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
goto out_kfree_skb;
/* Fragmented skb is linearized if device does not support SG,
-@@ -1257,25 +1334,26 @@ int dev_queue_xmit(struct sk_buff *skb)
+@@ -1258,25 +1333,26 @@
*/
if (skb_shinfo(skb)->nr_frags &&
(!(dev->features & NETIF_F_SG) || illegal_highdma(dev, skb)) &&
@@ -1469,7 +1511,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
/* Updates of qdisc are serialized by queue_lock.
* The struct Qdisc which is pointed to by qdisc is now a
-@@ -1309,8 +1387,8 @@ int dev_queue_xmit(struct sk_buff *skb)
+@@ -1310,8 +1386,8 @@
/* The device has no queue. Common case for software devices:
loopback, all the sorts of tunnels...
@@ -1480,7 +1522,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
counters.)
However, it is possible, that they rely on protection
made by us here.
-@@ -1326,11 +1404,8 @@ int dev_queue_xmit(struct sk_buff *skb)
+@@ -1327,11 +1403,8 @@
HARD_TX_LOCK(dev, cpu);
if (!netif_queue_stopped(dev)) {
@@ -1493,7 +1535,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
HARD_TX_UNLOCK(dev);
goto out;
}
-@@ -1349,13 +1424,13 @@ int dev_queue_xmit(struct sk_buff *skb)
+@@ -1350,13 +1423,13 @@
}
rc = -ENETDOWN;
@@ -1509,7 +1551,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
return rc;
}
-@@ -2670,7 +2745,7 @@ int register_netdevice(struct net_device
+@@ -2671,7 +2744,7 @@
BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
spin_lock_init(&dev->queue_lock);
@@ -1518,7 +1560,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
dev->xmit_lock_owner = -1;
#ifdef CONFIG_NET_CLS_ACT
spin_lock_init(&dev->ingress_lock);
-@@ -2714,9 +2789,7 @@ int register_netdevice(struct net_device
+@@ -2715,9 +2788,7 @@
/* Fix illegal SG+CSUM combinations. */
if ((dev->features & NETIF_F_SG) &&
@@ -1529,7 +1571,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
printk("%s: Dropping NETIF_F_SG since no checksum feature.\n",
dev->name);
dev->features &= ~NETIF_F_SG;
-@@ -3268,7 +3341,6 @@ subsys_initcall(net_dev_init);
+@@ -3269,7 +3340,6 @@
EXPORT_SYMBOL(__dev_get_by_index);
EXPORT_SYMBOL(__dev_get_by_name);
EXPORT_SYMBOL(__dev_remove_pack);
@@ -1537,9 +1579,10 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c
EXPORT_SYMBOL(dev_valid_name);
EXPORT_SYMBOL(dev_add_pack);
EXPORT_SYMBOL(dev_alloc_name);
-diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
---- ../orig-linux-2.6.16.29/net/core/dev_mcast.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/core/dev_mcast.c 2006-09-19 13:59:20.000000000 +0100
+Index: tmp-xxx/net/core/dev_mcast.c
+===================================================================
+--- tmp-xxx.orig/net/core/dev_mcast.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/core/dev_mcast.c 2006-11-27 10:52:42.000000000 +0000
@@ -62,7 +62,7 @@
* Device mc lists are changed by bh at least if IPv6 is enabled,
* so that it must be bh protected.
@@ -1549,7 +1592,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
*/
/*
-@@ -93,9 +93,9 @@ static void __dev_mc_upload(struct net_d
+@@ -93,9 +93,9 @@
void dev_mc_upload(struct net_device *dev)
{
@@ -1561,7 +1604,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
}
/*
-@@ -107,7 +107,7 @@ int dev_mc_delete(struct net_device *dev
+@@ -107,7 +107,7 @@
int err = 0;
struct dev_mc_list *dmi, **dmip;
@@ -1570,7 +1613,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
for (dmip = &dev->mc_list; (dmi = *dmip) != NULL; dmip = &dmi->next) {
/*
-@@ -139,13 +139,13 @@ int dev_mc_delete(struct net_device *dev
+@@ -139,13 +139,13 @@
*/
__dev_mc_upload(dev);
@@ -1586,7 +1629,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
return err;
}
-@@ -160,7 +160,7 @@ int dev_mc_add(struct net_device *dev, v
+@@ -160,7 +160,7 @@
dmi1 = kmalloc(sizeof(*dmi), GFP_ATOMIC);
@@ -1595,7 +1638,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
for (dmi = dev->mc_list; dmi != NULL; dmi = dmi->next) {
if (memcmp(dmi->dmi_addr, addr, dmi->dmi_addrlen) == 0 &&
dmi->dmi_addrlen == alen) {
-@@ -176,7 +176,7 @@ int dev_mc_add(struct net_device *dev, v
+@@ -176,7 +176,7 @@
}
if ((dmi = dmi1) == NULL) {
@@ -1604,7 +1647,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
return -ENOMEM;
}
memcpy(dmi->dmi_addr, addr, alen);
-@@ -189,11 +189,11 @@ int dev_mc_add(struct net_device *dev, v
+@@ -189,11 +189,11 @@
__dev_mc_upload(dev);
@@ -1618,7 +1661,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
kfree(dmi1);
return err;
}
-@@ -204,7 +204,7 @@ done:
+@@ -204,7 +204,7 @@
void dev_mc_discard(struct net_device *dev)
{
@@ -1627,7 +1670,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
while (dev->mc_list != NULL) {
struct dev_mc_list *tmp = dev->mc_list;
-@@ -215,7 +215,7 @@ void dev_mc_discard(struct net_device *d
+@@ -215,7 +215,7 @@
}
dev->mc_count = 0;
@@ -1636,7 +1679,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
}
#ifdef CONFIG_PROC_FS
-@@ -250,7 +250,7 @@ static int dev_mc_seq_show(struct seq_fi
+@@ -250,7 +250,7 @@
struct dev_mc_list *m;
struct net_device *dev = v;
@@ -1645,7 +1688,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
for (m = dev->mc_list; m; m = m->next) {
int i;
-@@ -262,7 +262,7 @@ static int dev_mc_seq_show(struct seq_fi
+@@ -262,7 +262,7 @@
seq_putc(seq, '\n');
}
@@ -1654,10 +1697,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c
return 0;
}
-diff -pruN ../orig-linux-2.6.16.29/net/core/ethtool.c ./net/core/ethtool.c
---- ../orig-linux-2.6.16.29/net/core/ethtool.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/core/ethtool.c 2006-09-19 13:59:20.000000000 +0100
-@@ -30,7 +30,7 @@ u32 ethtool_op_get_link(struct net_devic
+Index: tmp-xxx/net/core/ethtool.c
+===================================================================
+--- tmp-xxx.orig/net/core/ethtool.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/core/ethtool.c 2006-11-27 10:52:42.000000000 +0000
+@@ -30,7 +30,7 @@
u32 ethtool_op_get_tx_csum(struct net_device *dev)
{
@@ -1666,7 +1710,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/ethtool.c ./net/core/ethtool.c
}
int ethtool_op_set_tx_csum(struct net_device *dev, u32 data)
-@@ -551,9 +551,7 @@ static int ethtool_set_sg(struct net_dev
+@@ -551,9 +551,7 @@
return -EFAULT;
if (edata.data &&
@@ -1677,7 +1721,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/ethtool.c ./net/core/ethtool.c
return -EINVAL;
return __ethtool_set_sg(dev, edata.data);
-@@ -561,7 +559,7 @@ static int ethtool_set_sg(struct net_dev
+@@ -561,7 +559,7 @@
static int ethtool_get_tso(struct net_device *dev, char __user *useraddr)
{
@@ -1686,7 +1730,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/ethtool.c ./net/core/ethtool.c
if (!dev->ethtool_ops->get_tso)
return -EOPNOTSUPP;
-@@ -616,6 +614,29 @@ static int ethtool_set_ufo(struct net_de
+@@ -616,6 +614,29 @@
return dev->ethtool_ops->set_ufo(dev, edata.data);
}
@@ -1716,7 +1760,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/ethtool.c ./net/core/ethtool.c
static int ethtool_self_test(struct net_device *dev, char __user *useraddr)
{
struct ethtool_test test;
-@@ -907,6 +928,12 @@ int dev_ethtool(struct ifreq *ifr)
+@@ -907,6 +928,12 @@
case ETHTOOL_SUFO:
rc = ethtool_set_ufo(dev, useraddr);
break;
@@ -1729,10 +1773,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/ethtool.c ./net/core/ethtool.c
default:
rc = -EOPNOTSUPP;
}
-diff -pruN ../orig-linux-2.6.16.29/net/core/netpoll.c ./net/core/netpoll.c
---- ../orig-linux-2.6.16.29/net/core/netpoll.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/core/netpoll.c 2006-09-19 13:59:20.000000000 +0100
-@@ -273,24 +273,21 @@ static void netpoll_send_skb(struct netp
+Index: tmp-xxx/net/core/netpoll.c
+===================================================================
+--- tmp-xxx.orig/net/core/netpoll.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/core/netpoll.c 2006-11-27 10:52:42.000000000 +0000
+@@ -273,24 +273,21 @@
do {
npinfo->tries--;
@@ -1760,10 +1805,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/netpoll.c ./net/core/netpoll.c
/* success */
if(!status) {
-diff -pruN ../orig-linux-2.6.16.29/net/core/pktgen.c ./net/core/pktgen.c
---- ../orig-linux-2.6.16.29/net/core/pktgen.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/core/pktgen.c 2006-09-19 13:59:20.000000000 +0100
-@@ -2586,7 +2586,7 @@ static __inline__ void pktgen_xmit(struc
+Index: tmp-xxx/net/core/pktgen.c
+===================================================================
+--- tmp-xxx.orig/net/core/pktgen.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/core/pktgen.c 2006-11-27 10:52:42.000000000 +0000
+@@ -2586,7 +2586,7 @@
}
}
@@ -1772,7 +1818,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/pktgen.c ./net/core/pktgen.c
if (!netif_queue_stopped(odev)) {
atomic_inc(&(pkt_dev->skb->users));
-@@ -2631,7 +2631,7 @@ retry_now:
+@@ -2631,7 +2631,7 @@
pkt_dev->next_tx_ns = 0;
}
@@ -1781,10 +1827,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/pktgen.c ./net/core/pktgen.c
/* If pkt_dev->count is zero, then run forever */
if ((pkt_dev->count != 0) && (pkt_dev->sofar >= pkt_dev->count)) {
-diff -pruN ../orig-linux-2.6.16.29/net/core/skbuff.c ./net/core/skbuff.c
---- ../orig-linux-2.6.16.29/net/core/skbuff.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/core/skbuff.c 2006-09-19 13:59:20.000000000 +0100
-@@ -164,9 +164,9 @@ struct sk_buff *__alloc_skb(unsigned int
+Index: tmp-xxx/net/core/skbuff.c
+===================================================================
+--- tmp-xxx.orig/net/core/skbuff.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/core/skbuff.c 2006-11-27 10:58:31.000000000 +0000
+@@ -164,9 +164,9 @@
shinfo = skb_shinfo(skb);
atomic_set(&shinfo->dataref, 1);
shinfo->nr_frags = 0;
@@ -1797,31 +1844,33 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/skbuff.c ./net/core/skbuff.c
shinfo->ip6_frag_id = 0;
shinfo->frag_list = NULL;
-@@ -230,8 +230,9 @@ struct sk_buff *alloc_skb_from_cache(kme
+@@ -230,9 +230,9 @@
atomic_set(&(skb_shinfo(skb)->dataref), 1);
skb_shinfo(skb)->nr_frags = 0;
- skb_shinfo(skb)->tso_size = 0;
- skb_shinfo(skb)->tso_segs = 0;
+- skb_shinfo(skb)->ufo_size = 0;
+ skb_shinfo(skb)->gso_size = 0;
+ skb_shinfo(skb)->gso_segs = 0;
+ skb_shinfo(skb)->gso_type = 0;
skb_shinfo(skb)->frag_list = NULL;
out:
return skb;
-@@ -501,8 +502,9 @@ static void copy_skb_header(struct sk_bu
+@@ -507,9 +507,9 @@
new->tc_index = old->tc_index;
#endif
atomic_set(&new->users, 1);
- skb_shinfo(new)->tso_size = skb_shinfo(old)->tso_size;
- skb_shinfo(new)->tso_segs = skb_shinfo(old)->tso_segs;
+- skb_shinfo(new)->ufo_size = skb_shinfo(old)->ufo_size;
+ skb_shinfo(new)->gso_size = skb_shinfo(old)->gso_size;
+ skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs;
+ skb_shinfo(new)->gso_type = skb_shinfo(old)->gso_type;
}
/**
-@@ -1777,6 +1779,133 @@ int skb_append_datato_frags(struct sock
+@@ -1822,6 +1822,133 @@
return 0;
}
@@ -1955,10 +2004,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/core/skbuff.c ./net/core/skbuff.c
void __init skb_init(void)
{
skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
-diff -pruN ../orig-linux-2.6.16.29/net/decnet/dn_nsp_in.c ./net/decnet/dn_nsp_in.c
---- ../orig-linux-2.6.16.29/net/decnet/dn_nsp_in.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/decnet/dn_nsp_in.c 2006-09-19 13:59:20.000000000 +0100
-@@ -801,8 +801,7 @@ got_it:
+Index: tmp-xxx/net/decnet/dn_nsp_in.c
+===================================================================
+--- tmp-xxx.orig/net/decnet/dn_nsp_in.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/decnet/dn_nsp_in.c 2006-11-27 10:52:42.000000000 +0000
+@@ -801,8 +801,7 @@
* We linearize everything except data segments here.
*/
if (cb->nsp_flags & ~0x60) {
@@ -1968,10 +2018,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/decnet/dn_nsp_in.c ./net/decnet/dn_nsp_in
goto free_out;
}
-diff -pruN ../orig-linux-2.6.16.29/net/decnet/dn_route.c ./net/decnet/dn_route.c
---- ../orig-linux-2.6.16.29/net/decnet/dn_route.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/decnet/dn_route.c 2006-09-19 13:59:20.000000000 +0100
-@@ -629,8 +629,7 @@ int dn_route_rcv(struct sk_buff *skb, st
+Index: tmp-xxx/net/decnet/dn_route.c
+===================================================================
+--- tmp-xxx.orig/net/decnet/dn_route.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/decnet/dn_route.c 2006-11-27 10:52:42.000000000 +0000
+@@ -629,8 +629,7 @@
padlen);
if (flags & DN_RT_PKT_CNTL) {
@@ -1981,9 +2032,10 @@ diff -pruN ../orig-linux-2.6.16.29/net/decnet/dn_route.c ./net/decnet/dn_route.c
goto dump_it;
switch(flags & DN_RT_CNTL_MSK) {
-diff -pruN ../orig-linux-2.6.16.29/net/ipv4/af_inet.c ./net/ipv4/af_inet.c
---- ../orig-linux-2.6.16.29/net/ipv4/af_inet.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv4/af_inet.c 2006-09-19 13:59:20.000000000 +0100
+Index: tmp-xxx/net/ipv4/af_inet.c
+===================================================================
+--- tmp-xxx.orig/net/ipv4/af_inet.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv4/af_inet.c 2006-11-27 10:52:42.000000000 +0000
@@ -68,6 +68,7 @@
*/
@@ -1992,7 +2044,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/af_inet.c ./net/ipv4/af_inet.c
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/socket.h>
-@@ -1084,6 +1085,54 @@ int inet_sk_rebuild_header(struct sock *
+@@ -1084,6 +1085,54 @@
EXPORT_SYMBOL(inet_sk_rebuild_header);
@@ -2047,7 +2099,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/af_inet.c ./net/ipv4/af_inet.c
#ifdef CONFIG_IP_MULTICAST
static struct net_protocol igmp_protocol = {
.handler = igmp_rcv,
-@@ -1093,6 +1142,7 @@ static struct net_protocol igmp_protocol
+@@ -1093,6 +1142,7 @@
static struct net_protocol tcp_protocol = {
.handler = tcp_v4_rcv,
.err_handler = tcp_v4_err,
@@ -2055,7 +2107,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/af_inet.c ./net/ipv4/af_inet.c
.no_policy = 1,
};
-@@ -1138,6 +1188,7 @@ static int ipv4_proc_init(void);
+@@ -1138,6 +1188,7 @@
static struct packet_type ip_packet_type = {
.type = __constant_htons(ETH_P_IP),
.func = ip_rcv,
@@ -2063,10 +2115,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/af_inet.c ./net/ipv4/af_inet.c
};
static int __init inet_init(void)
-diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c
---- ../orig-linux-2.6.16.29/net/ipv4/ip_output.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv4/ip_output.c 2006-09-19 13:59:20.000000000 +0100
-@@ -210,8 +210,7 @@ static inline int ip_finish_output(struc
+Index: tmp-xxx/net/ipv4/ip_output.c
+===================================================================
+--- tmp-xxx.orig/net/ipv4/ip_output.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv4/ip_output.c 2006-11-27 10:52:42.000000000 +0000
+@@ -210,8 +210,7 @@
return dst_output(skb);
}
#endif
@@ -2076,7 +2129,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c
return ip_fragment(skb, ip_finish_output2);
else
return ip_finish_output2(skb);
-@@ -362,7 +361,7 @@ packet_routed:
+@@ -362,7 +361,7 @@
}
ip_select_ident_more(iph, &rt->u.dst, sk,
@@ -2085,7 +2138,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c
/* Add an IP checksum. */
ip_send_check(iph);
-@@ -743,7 +742,8 @@ static inline int ip_ufo_append_data(str
+@@ -743,7 +742,8 @@
(length - transhdrlen));
if (!err) {
/* specify the length of each IP datagram fragment*/
@@ -2095,7 +2148,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c
__skb_queue_tail(&sk->sk_write_queue, skb);
return 0;
-@@ -839,7 +839,7 @@ int ip_append_data(struct sock *sk,
+@@ -839,7 +839,7 @@
*/
if (transhdrlen &&
length + fragheaderlen <= mtu &&
@@ -2104,7 +2157,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c
!exthdrlen)
csummode = CHECKSUM_HW;
-@@ -1086,14 +1086,16 @@ ssize_t ip_append_page(struct sock *sk,
+@@ -1086,14 +1086,16 @@
inet->cork.length += size;
if ((sk->sk_protocol == IPPROTO_UDP) &&
@@ -2124,10 +2177,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c
len = size;
else {
-diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ipcomp.c ./net/ipv4/ipcomp.c
---- ../orig-linux-2.6.16.29/net/ipv4/ipcomp.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv4/ipcomp.c 2006-09-19 13:59:20.000000000 +0100
-@@ -84,7 +84,7 @@ static int ipcomp_input(struct xfrm_stat
+Index: tmp-xxx/net/ipv4/ipcomp.c
+===================================================================
+--- tmp-xxx.orig/net/ipv4/ipcomp.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv4/ipcomp.c 2006-11-27 10:52:42.000000000 +0000
+@@ -84,7 +84,7 @@
struct xfrm_decap_state *decap, struct sk_buff *skb)
{
u8 nexthdr;
@@ -2136,7 +2190,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ipcomp.c ./net/ipv4/ipcomp.c
struct iphdr *iph;
union {
struct iphdr iph;
-@@ -92,11 +92,8 @@ static int ipcomp_input(struct xfrm_stat
+@@ -92,11 +92,8 @@
} tmp_iph;
@@ -2149,7 +2203,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ipcomp.c ./net/ipv4/ipcomp.c
skb->ip_summed = CHECKSUM_NONE;
-@@ -171,10 +168,8 @@ static int ipcomp_output(struct xfrm_sta
+@@ -171,10 +168,8 @@
goto out_ok;
}
@@ -2161,9 +2215,10 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ipcomp.c ./net/ipv4/ipcomp.c
err = ipcomp_compress(x, skb);
iph = skb->nh.iph;
-diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c
---- ../orig-linux-2.6.16.29/net/ipv4/tcp.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv4/tcp.c 2006-09-19 13:59:20.000000000 +0100
+Index: tmp-xxx/net/ipv4/tcp.c
+===================================================================
+--- tmp-xxx.orig/net/ipv4/tcp.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv4/tcp.c 2006-11-27 10:52:42.000000000 +0000
@@ -257,6 +257,7 @@
#include <linux/fs.h>
#include <linux/random.h>
@@ -2172,7 +2227,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c
#include <net/icmp.h>
#include <net/tcp.h>
-@@ -570,7 +571,7 @@ new_segment:
+@@ -570,7 +571,7 @@
skb->ip_summed = CHECKSUM_HW;
tp->write_seq += copy;
TCP_SKB_CB(skb)->end_seq += copy;
@@ -2181,7 +2236,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c
if (!copied)
TCP_SKB_CB(skb)->flags &= ~TCPCB_FLAG_PSH;
-@@ -621,14 +622,10 @@ ssize_t tcp_sendpage(struct socket *sock
+@@ -621,14 +622,10 @@
ssize_t res;
struct sock *sk = sock->sk;
@@ -2197,7 +2252,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c
lock_sock(sk);
TCP_CHECK_TIMER(sk);
res = do_tcp_sendpages(sk, &page, offset, size, flags);
-@@ -725,9 +722,7 @@ new_segment:
+@@ -725,9 +722,7 @@
/*
* Check whether we can use HW checksum.
*/
@@ -2208,7 +2263,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c
skb->ip_summed = CHECKSUM_HW;
skb_entail(sk, tp, skb);
-@@ -823,7 +818,7 @@ new_segment:
+@@ -823,7 +818,7 @@
tp->write_seq += copy;
TCP_SKB_CB(skb)->end_seq += copy;
@@ -2217,7 +2272,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c
from += copy;
copied += copy;
-@@ -2026,6 +2021,71 @@ int tcp_getsockopt(struct sock *sk, int
+@@ -2026,6 +2021,71 @@
}
@@ -2289,10 +2344,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c
extern void __skb_cb_too_small_for_tcp(int, int);
extern struct tcp_congestion_ops tcp_reno;
-diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_input.c ./net/ipv4/tcp_input.c
---- ../orig-linux-2.6.16.29/net/ipv4/tcp_input.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv4/tcp_input.c 2006-09-19 13:59:20.000000000 +0100
-@@ -1072,7 +1072,7 @@ tcp_sacktag_write_queue(struct sock *sk,
+Index: tmp-xxx/net/ipv4/tcp_input.c
+===================================================================
+--- tmp-xxx.orig/net/ipv4/tcp_input.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv4/tcp_input.c 2006-11-27 10:52:42.000000000 +0000
+@@ -1072,7 +1072,7 @@
else
pkt_len = (end_seq -
TCP_SKB_CB(skb)->seq);
@@ -2301,10 +2357,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_input.c ./net/ipv4/tcp_input.c
break;
pcount = tcp_skb_pcount(skb);
}
-diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
---- ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv4/tcp_output.c 2006-09-19 13:59:20.000000000 +0100
-@@ -497,15 +497,17 @@ static void tcp_set_skb_tso_segs(struct
+Index: tmp-xxx/net/ipv4/tcp_output.c
+===================================================================
+--- tmp-xxx.orig/net/ipv4/tcp_output.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv4/tcp_output.c 2006-11-27 10:52:42.000000000 +0000
+@@ -497,15 +497,17 @@
/* Avoid the costly divide in the normal
* non-TSO case.
*/
@@ -2326,7 +2383,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
}
}
-@@ -850,7 +852,7 @@ static int tcp_init_tso_segs(struct sock
+@@ -850,7 +852,7 @@
if (!tso_segs ||
(tso_segs > 1 &&
@@ -2335,7 +2392,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
tcp_set_skb_tso_segs(sk, skb, mss_now);
tso_segs = tcp_skb_pcount(skb);
}
-@@ -1510,8 +1512,9 @@ int tcp_retransmit_skb(struct sock *sk,
+@@ -1510,8 +1512,9 @@
tp->snd_una == (TCP_SKB_CB(skb)->end_seq - 1)) {
if (!pskb_trim(skb, 0)) {
TCP_SKB_CB(skb)->seq = TCP_SKB_CB(skb)->end_seq - 1;
@@ -2347,7 +2404,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
skb->ip_summed = CHECKSUM_NONE;
skb->csum = 0;
}
-@@ -1716,8 +1719,9 @@ void tcp_send_fin(struct sock *sk)
+@@ -1716,8 +1719,9 @@
skb->csum = 0;
TCP_SKB_CB(skb)->flags = (TCPCB_FLAG_ACK | TCPCB_FLAG_FIN);
TCP_SKB_CB(skb)->sacked = 0;
@@ -2359,7 +2416,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
/* FIN eats a sequence byte, write_seq advanced by tcp_queue_skb(). */
TCP_SKB_CB(skb)->seq = tp->write_seq;
-@@ -1749,8 +1753,9 @@ void tcp_send_active_reset(struct sock *
+@@ -1749,8 +1753,9 @@
skb->csum = 0;
TCP_SKB_CB(skb)->flags = (TCPCB_FLAG_ACK | TCPCB_FLAG_RST);
TCP_SKB_CB(skb)->sacked = 0;
@@ -2371,7 +2428,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
/* Send it off. */
TCP_SKB_CB(skb)->seq = tcp_acceptable_seq(sk, tp);
-@@ -1833,8 +1838,9 @@ struct sk_buff * tcp_make_synack(struct
+@@ -1833,8 +1838,9 @@
TCP_SKB_CB(skb)->seq = tcp_rsk(req)->snt_isn;
TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq + 1;
TCP_SKB_CB(skb)->sacked = 0;
@@ -2383,7 +2440,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
th->seq = htonl(TCP_SKB_CB(skb)->seq);
th->ack_seq = htonl(tcp_rsk(req)->rcv_isn + 1);
if (req->rcv_wnd == 0) { /* ignored for retransmitted syns */
-@@ -1937,8 +1943,9 @@ int tcp_connect(struct sock *sk)
+@@ -1937,8 +1943,9 @@
TCP_SKB_CB(buff)->flags = TCPCB_FLAG_SYN;
TCP_ECN_send_syn(sk, tp, buff);
TCP_SKB_CB(buff)->sacked = 0;
@@ -2395,7 +2452,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
buff->csum = 0;
TCP_SKB_CB(buff)->seq = tp->write_seq++;
TCP_SKB_CB(buff)->end_seq = tp->write_seq;
-@@ -2042,8 +2049,9 @@ void tcp_send_ack(struct sock *sk)
+@@ -2042,8 +2049,9 @@
buff->csum = 0;
TCP_SKB_CB(buff)->flags = TCPCB_FLAG_ACK;
TCP_SKB_CB(buff)->sacked = 0;
@@ -2407,7 +2464,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
/* Send it off, this clears delayed acks for us. */
TCP_SKB_CB(buff)->seq = TCP_SKB_CB(buff)->end_seq = tcp_acceptable_seq(sk, tp);
-@@ -2078,8 +2086,9 @@ static int tcp_xmit_probe_skb(struct soc
+@@ -2078,8 +2086,9 @@
skb->csum = 0;
TCP_SKB_CB(skb)->flags = TCPCB_FLAG_ACK;
TCP_SKB_CB(skb)->sacked = urgent;
@@ -2419,9 +2476,10 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c
/* Use a previous sequence. This should cause the other
* end to send an ack. Don't queue or clone SKB, just
-diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_output.c
---- ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c 2006-09-19 13:59:15.000000000 +0100
-+++ ./net/ipv4/xfrm4_output.c 2006-09-19 13:59:20.000000000 +0100
+Index: tmp-xxx/net/ipv4/xfrm4_output.c
+===================================================================
+--- tmp-xxx.orig/net/ipv4/xfrm4_output.c 2006-11-27 10:52:32.000000000 +0000
++++ tmp-xxx/net/ipv4/xfrm4_output.c 2006-11-27 10:52:42.000000000 +0000
@@ -9,6 +9,8 @@
*/
@@ -2431,7 +2489,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_outp
#include <linux/skbuff.h>
#include <linux/spinlock.h>
#include <linux/netfilter_ipv4.h>
-@@ -158,16 +160,10 @@ error_nolock:
+@@ -158,16 +160,10 @@
goto out_exit;
}
@@ -2449,7 +2507,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_outp
while (likely((err = xfrm4_output_one(skb)) == 0)) {
nf_reset(skb);
-@@ -180,7 +176,7 @@ static int xfrm4_output_finish(struct sk
+@@ -180,7 +176,7 @@
return dst_output(skb);
err = nf_hook(PF_INET, NF_IP_POST_ROUTING, &skb, NULL,
@@ -2458,7 +2516,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_outp
if (unlikely(err != 1))
break;
}
-@@ -188,6 +184,48 @@ static int xfrm4_output_finish(struct sk
+@@ -188,6 +184,48 @@
return err;
}
@@ -2507,10 +2565,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_outp
int xfrm4_output(struct sk_buff *skb)
{
return NF_HOOK_COND(PF_INET, NF_IP_POST_ROUTING, skb, NULL, skb->dst->dev,
-diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c ./net/ipv6/ip6_output.c
---- ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv6/ip6_output.c 2006-09-19 13:59:20.000000000 +0100
-@@ -147,7 +147,7 @@ static int ip6_output2(struct sk_buff *s
+Index: tmp-xxx/net/ipv6/ip6_output.c
+===================================================================
+--- tmp-xxx.orig/net/ipv6/ip6_output.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv6/ip6_output.c 2006-11-27 10:52:42.000000000 +0000
+@@ -147,7 +147,7 @@
int ip6_output(struct sk_buff *skb)
{
@@ -2519,7 +2578,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c ./net/ipv6/ip6_output.c
dst_allfrag(skb->dst))
return ip6_fragment(skb, ip6_output2);
else
-@@ -829,8 +829,9 @@ static inline int ip6_ufo_append_data(st
+@@ -829,8 +829,9 @@
struct frag_hdr fhdr;
/* specify the length of each IP datagram fragment*/
@@ -2531,10 +2590,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c ./net/ipv6/ip6_output.c
ipv6_select_ident(skb, &fhdr);
skb_shinfo(skb)->ip6_frag_id = fhdr.identification;
__skb_queue_tail(&sk->sk_write_queue, skb);
-diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ipcomp6.c ./net/ipv6/ipcomp6.c
---- ../orig-linux-2.6.16.29/net/ipv6/ipcomp6.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv6/ipcomp6.c 2006-09-19 13:59:20.000000000 +0100
-@@ -64,7 +64,7 @@ static LIST_HEAD(ipcomp6_tfms_list);
+Index: tmp-xxx/net/ipv6/ipcomp6.c
+===================================================================
+--- tmp-xxx.orig/net/ipv6/ipcomp6.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv6/ipcomp6.c 2006-11-27 10:52:42.000000000 +0000
+@@ -64,7 +64,7 @@
static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb)
{
@@ -2543,7 +2603,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ipcomp6.c ./net/ipv6/ipcomp6.c
u8 nexthdr = 0;
int hdr_len = skb->h.raw - skb->nh.raw;
unsigned char *tmp_hdr = NULL;
-@@ -75,11 +75,8 @@ static int ipcomp6_input(struct xfrm_sta
+@@ -75,11 +75,8 @@
struct crypto_tfm *tfm;
int cpu;
@@ -2556,7 +2616,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ipcomp6.c ./net/ipv6/ipcomp6.c
skb->ip_summed = CHECKSUM_NONE;
-@@ -158,10 +155,8 @@ static int ipcomp6_output(struct xfrm_st
+@@ -158,10 +155,8 @@
goto out_ok;
}
@@ -2568,10 +2628,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ipcomp6.c ./net/ipv6/ipcomp6.c
/* compression */
plen = skb->len - hdr_len;
-diff -pruN ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c ./net/ipv6/xfrm6_output.c
---- ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/ipv6/xfrm6_output.c 2006-09-19 13:59:20.000000000 +0100
-@@ -151,7 +151,7 @@ error_nolock:
+Index: tmp-xxx/net/ipv6/xfrm6_output.c
+===================================================================
+--- tmp-xxx.orig/net/ipv6/xfrm6_output.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/ipv6/xfrm6_output.c 2006-11-27 10:52:42.000000000 +0000
+@@ -151,7 +151,7 @@
goto out_exit;
}
@@ -2580,7 +2641,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c ./net/ipv6/xfrm6_outp
{
int err;
-@@ -167,7 +167,7 @@ static int xfrm6_output_finish(struct sk
+@@ -167,7 +167,7 @@
return dst_output(skb);
err = nf_hook(PF_INET6, NF_IP6_POST_ROUTING, &skb, NULL,
@@ -2589,7 +2650,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c ./net/ipv6/xfrm6_outp
if (unlikely(err != 1))
break;
}
-@@ -175,6 +175,41 @@ static int xfrm6_output_finish(struct sk
+@@ -175,6 +175,41 @@
return err;
}
@@ -2631,10 +2692,11 @@ diff -pruN ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c ./net/ipv6/xfrm6_outp
int xfrm6_output(struct sk_buff *skb)
{
return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dst->dev,
-diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_generic.c
---- ../orig-linux-2.6.16.29/net/sched/sch_generic.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/sched/sch_generic.c 2006-09-19 13:59:20.000000000 +0100
-@@ -72,9 +72,9 @@ void qdisc_unlock_tree(struct net_device
+Index: tmp-xxx/net/sched/sch_generic.c
+===================================================================
+--- tmp-xxx.orig/net/sched/sch_generic.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/sched/sch_generic.c 2006-11-27 10:52:42.000000000 +0000
+@@ -72,9 +72,9 @@
dev->queue_lock serializes queue accesses for this device
AND dev->qdisc pointer itself.
@@ -2646,7 +2708,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
if one is grabbed, another must be free.
*/
-@@ -90,14 +90,17 @@ void qdisc_unlock_tree(struct net_device
+@@ -90,14 +90,17 @@
NOTE: Called under dev->queue_lock with locally disabled BH.
*/
@@ -2666,7 +2728,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
/*
* When the driver has LLTX set it does its own locking
* in start_xmit. No need to add additional overhead by
-@@ -108,7 +111,7 @@ int qdisc_restart(struct net_device *dev
+@@ -108,7 +111,7 @@
* will be requeued.
*/
if (!nolock) {
@@ -2675,7 +2737,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
collision:
/* So, someone grabbed the driver. */
-@@ -126,8 +129,6 @@ int qdisc_restart(struct net_device *dev
+@@ -126,8 +129,6 @@
__get_cpu_var(netdev_rx_stat).cpu_collision++;
goto requeue;
}
@@ -2684,7 +2746,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
}
{
-@@ -136,14 +137,11 @@ int qdisc_restart(struct net_device *dev
+@@ -136,14 +137,11 @@
if (!netif_queue_stopped(dev)) {
int ret;
@@ -2701,7 +2763,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
}
spin_lock(&dev->queue_lock);
return -1;
-@@ -157,8 +155,7 @@ int qdisc_restart(struct net_device *dev
+@@ -157,8 +155,7 @@
/* NETDEV_TX_BUSY - we need to requeue */
/* Release the driver */
if (!nolock) {
@@ -2711,7 +2773,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
}
spin_lock(&dev->queue_lock);
q = dev->qdisc;
-@@ -175,7 +172,10 @@ int qdisc_restart(struct net_device *dev
+@@ -175,7 +172,10 @@
*/
requeue:
@@ -2723,7 +2785,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
netif_schedule(dev);
return 1;
}
-@@ -183,11 +183,23 @@ requeue:
+@@ -183,11 +183,23 @@
return q->q.qlen;
}
@@ -2748,7 +2810,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
if (dev->qdisc != &noop_qdisc) {
if (netif_device_present(dev) &&
netif_running(dev) &&
-@@ -201,7 +213,7 @@ static void dev_watchdog(unsigned long a
+@@ -201,7 +213,7 @@
dev_hold(dev);
}
}
@@ -2757,7 +2819,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
dev_put(dev);
}
-@@ -225,17 +237,17 @@ void __netdev_watchdog_up(struct net_dev
+@@ -225,17 +237,17 @@
static void dev_watchdog_up(struct net_device *dev)
{
@@ -2779,7 +2841,7 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
}
void netif_carrier_on(struct net_device *dev)
-@@ -577,10 +589,17 @@ void dev_deactivate(struct net_device *d
+@@ -577,10 +589,17 @@
dev_watchdog_down(dev);
@@ -2799,17 +2861,18 @@ diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_gener
}
void dev_init_scheduler(struct net_device *dev)
-@@ -622,6 +641,5 @@ EXPORT_SYMBOL(qdisc_create_dflt);
+@@ -622,6 +641,5 @@
EXPORT_SYMBOL(qdisc_alloc);
EXPORT_SYMBOL(qdisc_destroy);
EXPORT_SYMBOL(qdisc_reset);
-EXPORT_SYMBOL(qdisc_restart);
EXPORT_SYMBOL(qdisc_lock_tree);
EXPORT_SYMBOL(qdisc_unlock_tree);
-diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_teql.c ./net/sched/sch_teql.c
---- ../orig-linux-2.6.16.29/net/sched/sch_teql.c 2006-09-12 19:02:10.000000000 +0100
-+++ ./net/sched/sch_teql.c 2006-09-19 13:59:20.000000000 +0100
-@@ -302,20 +302,17 @@ restart:
+Index: tmp-xxx/net/sched/sch_teql.c
+===================================================================
+--- tmp-xxx.orig/net/sched/sch_teql.c 2006-11-15 10:38:39.000000000 +0000
++++ tmp-xxx/net/sched/sch_teql.c 2006-11-27 10:52:42.000000000 +0000
+@@ -302,20 +302,17 @@
switch (teql_resolve(skb, skb_res, slave)) {
case 0:
diff --git a/patches/linux-2.6.16.31/net-gso-1-check-dodgy.patch b/patches/linux-2.6.16.32/net-gso-1-check-dodgy.patch
index db2ea2321b..db2ea2321b 100644
--- a/patches/linux-2.6.16.31/net-gso-1-check-dodgy.patch
+++ b/patches/linux-2.6.16.32/net-gso-1-check-dodgy.patch
diff --git a/patches/linux-2.6.16.31/net-gso-2-checksum-fix.patch b/patches/linux-2.6.16.32/net-gso-2-checksum-fix.patch
index 430be5fbbf..430be5fbbf 100644
--- a/patches/linux-2.6.16.31/net-gso-2-checksum-fix.patch
+++ b/patches/linux-2.6.16.32/net-gso-2-checksum-fix.patch
diff --git a/patches/linux-2.6.16.31/net-gso-3-fix-errorcheck.patch b/patches/linux-2.6.16.32/net-gso-3-fix-errorcheck.patch
index 0c373223d8..0c373223d8 100644
--- a/patches/linux-2.6.16.31/net-gso-3-fix-errorcheck.patch
+++ b/patches/linux-2.6.16.32/net-gso-3-fix-errorcheck.patch
diff --git a/patches/linux-2.6.16.31/net-gso-4-kill-warnon.patch b/patches/linux-2.6.16.32/net-gso-4-kill-warnon.patch
index 86cd7a2b47..86cd7a2b47 100644
--- a/patches/linux-2.6.16.31/net-gso-4-kill-warnon.patch
+++ b/patches/linux-2.6.16.32/net-gso-4-kill-warnon.patch
diff --git a/patches/linux-2.6.16.31/net-gso-5-rcv-mss.patch b/patches/linux-2.6.16.32/net-gso-5-rcv-mss.patch
index a711d0ee5f..a711d0ee5f 100644
--- a/patches/linux-2.6.16.31/net-gso-5-rcv-mss.patch
+++ b/patches/linux-2.6.16.32/net-gso-5-rcv-mss.patch
diff --git a/patches/linux-2.6.16.31/pci-mmconfig-fix-from-2.6.17.patch b/patches/linux-2.6.16.32/pci-mmconfig-fix-from-2.6.17.patch
index e4b709362f..e4b709362f 100644
--- a/patches/linux-2.6.16.31/pci-mmconfig-fix-from-2.6.17.patch
+++ b/patches/linux-2.6.16.32/pci-mmconfig-fix-from-2.6.17.patch
diff --git a/patches/linux-2.6.16.31/pmd-shared.patch b/patches/linux-2.6.16.32/pmd-shared.patch
index f8123a96ba..f8123a96ba 100644
--- a/patches/linux-2.6.16.31/pmd-shared.patch
+++ b/patches/linux-2.6.16.32/pmd-shared.patch
diff --git a/patches/linux-2.6.16.31/rcu_needs_cpu.patch b/patches/linux-2.6.16.32/rcu_needs_cpu.patch
index c8f3b79229..c8f3b79229 100644
--- a/patches/linux-2.6.16.31/rcu_needs_cpu.patch
+++ b/patches/linux-2.6.16.32/rcu_needs_cpu.patch
diff --git a/patches/linux-2.6.16.31/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch b/patches/linux-2.6.16.32/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
index 31788cc3bc..31788cc3bc 100644
--- a/patches/linux-2.6.16.31/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
+++ b/patches/linux-2.6.16.32/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
diff --git a/patches/linux-2.6.16.31/series b/patches/linux-2.6.16.32/series
index ae8fbd2885..ae8fbd2885 100644
--- a/patches/linux-2.6.16.31/series
+++ b/patches/linux-2.6.16.32/series
diff --git a/patches/linux-2.6.16.31/smp-alts.patch b/patches/linux-2.6.16.32/smp-alts.patch
index fbcd4a29ac..fbcd4a29ac 100644
--- a/patches/linux-2.6.16.31/smp-alts.patch
+++ b/patches/linux-2.6.16.32/smp-alts.patch
diff --git a/patches/linux-2.6.16.31/tpm_plugin_2.6.17.patch b/patches/linux-2.6.16.32/tpm_plugin_2.6.17.patch
index 71a22017b5..71a22017b5 100644
--- a/patches/linux-2.6.16.31/tpm_plugin_2.6.17.patch
+++ b/patches/linux-2.6.16.32/tpm_plugin_2.6.17.patch
diff --git a/patches/linux-2.6.16.31/x86-elfnote-as-preprocessor-macro.patch b/patches/linux-2.6.16.32/x86-elfnote-as-preprocessor-macro.patch
index 3dcae42ffd..3dcae42ffd 100644
--- a/patches/linux-2.6.16.31/x86-elfnote-as-preprocessor-macro.patch
+++ b/patches/linux-2.6.16.32/x86-elfnote-as-preprocessor-macro.patch
diff --git a/patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch b/patches/linux-2.6.16.32/x86-increase-interrupt-vector-range.patch
index 0ac84e4aca..0ac84e4aca 100644
--- a/patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch
+++ b/patches/linux-2.6.16.32/x86-increase-interrupt-vector-range.patch
diff --git a/patches/linux-2.6.16.31/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch b/patches/linux-2.6.16.32/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
index 1047ee417c..1047ee417c 100644
--- a/patches/linux-2.6.16.31/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
+++ b/patches/linux-2.6.16.32/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
diff --git a/patches/linux-2.6.16.31/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch b/patches/linux-2.6.16.32/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
index 7e44d833b4..7e44d833b4 100644
--- a/patches/linux-2.6.16.31/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
+++ b/patches/linux-2.6.16.32/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
diff --git a/patches/linux-2.6.16.31/xen-hotplug.patch b/patches/linux-2.6.16.32/xen-hotplug.patch
index 06abdda41b..06abdda41b 100644
--- a/patches/linux-2.6.16.31/xen-hotplug.patch
+++ b/patches/linux-2.6.16.32/xen-hotplug.patch
diff --git a/patches/linux-2.6.16.31/xenoprof-generic.patch b/patches/linux-2.6.16.32/xenoprof-generic.patch
index 7783495f70..7783495f70 100644
--- a/patches/linux-2.6.16.31/xenoprof-generic.patch
+++ b/patches/linux-2.6.16.32/xenoprof-generic.patch