diff options
-rw-r--r-- | buildconfigs/mk.linux-2.6-xen | 2 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/include/linux/skbuff.h | 24 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/mm/memory.c | 1 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/mm/mmap.c | 17 | ||||
-rw-r--r-- | linux-2.6-xen-sparse/net/core/skbuff.c | 107 | ||||
-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 |