aboutsummaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
authorChristian Limpach <Christian.Limpach@xensource.com>2006-09-19 14:26:47 +0100
committerChristian Limpach <Christian.Limpach@xensource.com>2006-09-19 14:26:47 +0100
commit13b3232ba7bed8877defdd471caeee12ace8c3a8 (patch)
treea6a9d83884d460cfa50f92cef759f253230e4791 /patches
parent42ee90deeb77bf93effffb03c487371d4605372e (diff)
downloadxen-13b3232ba7bed8877defdd471caeee12ace8c3a8.tar.gz
xen-13b3232ba7bed8877defdd471caeee12ace8c3a8.tar.bz2
xen-13b3232ba7bed8877defdd471caeee12ace8c3a8.zip
[linux patches] Update patches for linux-2.6.16.29.
Signed-off-by: Christian Limpach <Christian.Limpach@xensource.com> --HG-- rename : patches/linux-2.6.16.13/blktap-aio-16_03_06.patch => patches/linux-2.6.16.29/blktap-aio-16_03_06.patch rename : patches/linux-2.6.16.13/device_bind.patch => patches/linux-2.6.16.29/device_bind.patch rename : patches/linux-2.6.16.13/fix-hz-suspend.patch => patches/linux-2.6.16.29/fix-hz-suspend.patch rename : patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch => patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch rename : patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch => patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch rename : patches/linux-2.6.16.13/ipv6-no-autoconf.patch => patches/linux-2.6.16.29/ipv6-no-autoconf.patch rename : patches/linux-2.6.16.13/net-csum.patch => patches/linux-2.6.16.29/net-csum.patch rename : patches/linux-2.6.16.13/net-gso-0-base.patch => patches/linux-2.6.16.29/net-gso-0-base.patch rename : patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch => patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch rename : patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch => patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch rename : patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch => patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch rename : patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch => patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch rename : patches/linux-2.6.16.13/pmd-shared.patch => patches/linux-2.6.16.29/pmd-shared.patch rename : patches/linux-2.6.16.13/rcu_needs_cpu.patch => patches/linux-2.6.16.29/rcu_needs_cpu.patch rename : patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch => patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch rename : patches/linux-2.6.16.13/series => patches/linux-2.6.16.29/series rename : patches/linux-2.6.16.13/smp-alts.patch => patches/linux-2.6.16.29/smp-alts.patch rename : patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch => patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch rename : patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch => patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch rename : patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch => patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch rename : patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch rename : patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch rename : patches/linux-2.6.16.13/xen-hotplug.patch => patches/linux-2.6.16.29/xen-hotplug.patch rename : patches/linux-2.6.16.13/xenoprof-generic.patch => patches/linux-2.6.16.29/xenoprof-generic.patch
Diffstat (limited to 'patches')
-rw-r--r--patches/linux-2.6.16.29/blktap-aio-16_03_06.patch (renamed from patches/linux-2.6.16.13/blktap-aio-16_03_06.patch)27
-rw-r--r--patches/linux-2.6.16.29/device_bind.patch (renamed from patches/linux-2.6.16.13/device_bind.patch)6
-rw-r--r--patches/linux-2.6.16.29/fix-hz-suspend.patch (renamed from patches/linux-2.6.16.13/fix-hz-suspend.patch)6
-rw-r--r--patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch (renamed from patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch)8
-rw-r--r--patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch (renamed from patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch)12
-rw-r--r--patches/linux-2.6.16.29/ipv6-no-autoconf.patch (renamed from patches/linux-2.6.16.13/ipv6-no-autoconf.patch)14
-rw-r--r--patches/linux-2.6.16.29/net-csum.patch (renamed from patches/linux-2.6.16.13/net-csum.patch)18
-rw-r--r--patches/linux-2.6.16.29/net-gso-0-base.patch (renamed from patches/linux-2.6.16.13/net-gso-0-base.patch)610
-rw-r--r--patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch (renamed from patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch)6
-rw-r--r--patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch (renamed from patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch)134
-rw-r--r--patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch (renamed from patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch)6
-rw-r--r--patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch (renamed from patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch)8
-rw-r--r--patches/linux-2.6.16.29/pmd-shared.patch (renamed from patches/linux-2.6.16.13/pmd-shared.patch)24
-rw-r--r--patches/linux-2.6.16.29/rcu_needs_cpu.patch (renamed from patches/linux-2.6.16.13/rcu_needs_cpu.patch)26
-rw-r--r--patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch (renamed from patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch)6
-rw-r--r--patches/linux-2.6.16.29/series (renamed from patches/linux-2.6.16.13/series)0
-rw-r--r--patches/linux-2.6.16.29/smp-alts.patch (renamed from patches/linux-2.6.16.13/smp-alts.patch)72
-rw-r--r--patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch (renamed from patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch)37
-rw-r--r--patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch (renamed from patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch)7
-rw-r--r--patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch (renamed from patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch)38
-rw-r--r--patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch (renamed from patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch)59
-rw-r--r--patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch (renamed from patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch)19
-rw-r--r--patches/linux-2.6.16.29/xen-hotplug.patch (renamed from patches/linux-2.6.16.13/xen-hotplug.patch)5
-rw-r--r--patches/linux-2.6.16.29/xenoprof-generic.patch (renamed from patches/linux-2.6.16.13/xenoprof-generic.patch)86
24 files changed, 562 insertions, 672 deletions
diff --git a/patches/linux-2.6.16.13/blktap-aio-16_03_06.patch b/patches/linux-2.6.16.29/blktap-aio-16_03_06.patch
index 5f4fd6f7a9..bf3e8d63f0 100644
--- a/patches/linux-2.6.16.13/blktap-aio-16_03_06.patch
+++ b/patches/linux-2.6.16.29/blktap-aio-16_03_06.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16-rc5/fs/aio.c ./fs/aio.c
---- ../pristine-linux-2.6.16-rc5/fs/aio.c 2006-03-14 14:10:10.827401387 +0000
-+++ ./fs/aio.c 2006-03-16 09:57:53.898316582 +0000
+diff -pruN ../orig-linux-2.6.16.29/fs/aio.c ./fs/aio.c
+--- ../orig-linux-2.6.16.29/fs/aio.c 2006-09-12 19:02:10.000000000 +0100
++++ ./fs/aio.c 2006-09-19 13:58:49.000000000 +0100
@@ -34,6 +34,11 @@
#include <asm/uaccess.h>
#include <asm/mmu_context.h>
@@ -184,10 +184,9 @@ diff -pruN ../pristine-linux-2.6.16-rc5/fs/aio.c ./fs/aio.c
get_ioctx(ioctx); /* io_destroy() expects us to hold a ref */
io_destroy(ioctx);
-
-diff -pruN ../pristine-linux-2.6.16-rc5/fs/eventpoll.c ./fs/eventpoll.c
---- ../pristine-linux-2.6.16-rc5/fs/eventpoll.c 2006-01-03 03:21:10.000000000 +0000
-+++ ./fs/eventpoll.c 2006-03-16 10:04:35.469956167 +0000
+diff -pruN ../orig-linux-2.6.16.29/fs/eventpoll.c ./fs/eventpoll.c
+--- ../orig-linux-2.6.16.29/fs/eventpoll.c 2006-09-12 19:02:10.000000000 +0100
++++ ./fs/eventpoll.c 2006-09-19 13:58:49.000000000 +0100
@@ -235,8 +235,6 @@ struct ep_pqueue {
static void ep_poll_safewake_init(struct poll_safewake *psw);
@@ -262,10 +261,9 @@ diff -pruN ../pristine-linux-2.6.16-rc5/fs/eventpoll.c ./fs/eventpoll.c
/*
* Mark the inode dirty from the very beginning,
-
-diff -pruN ../pristine-linux-2.6.16-rc5/include/linux/aio.h ./include/linux/aio.h
---- ../pristine-linux-2.6.16-rc5/include/linux/aio.h 2006-03-14 14:10:21.597916731 +0000
-+++ ./include/linux/aio.h 2006-03-16 10:05:39.848833028 +0000
+diff -pruN ../orig-linux-2.6.16.29/include/linux/aio.h ./include/linux/aio.h
+--- ../orig-linux-2.6.16.29/include/linux/aio.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/linux/aio.h 2006-09-19 13:58:49.000000000 +0100
@@ -191,6 +191,11 @@ struct kioctx {
struct aio_ring_info ring_info;
@@ -278,10 +276,9 @@ diff -pruN ../pristine-linux-2.6.16-rc5/include/linux/aio.h ./include/linux/aio.
};
/* prototypes */
-
-diff -pruN ../pristine-linux-2.6.16-rc5/include/linux/eventpoll.h ./include/linux/eventpoll.h
---- ../pristine-linux-2.6.16-rc5/include/linux/eventpoll.h 2006-01-03 03:21:10.000000000 +0000
-+++ ./include/linux/eventpoll.h 2006-03-16 10:08:51.577809317 +0000
+diff -pruN ../orig-linux-2.6.16.29/include/linux/eventpoll.h ./include/linux/eventpoll.h
+--- ../orig-linux-2.6.16.29/include/linux/eventpoll.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/linux/eventpoll.h 2006-09-19 13:58:49.000000000 +0100
@@ -86,6 +86,12 @@ static inline void eventpoll_release(str
}
diff --git a/patches/linux-2.6.16.13/device_bind.patch b/patches/linux-2.6.16.29/device_bind.patch
index 331234c89f..8cef71ecc1 100644
--- a/patches/linux-2.6.16.13/device_bind.patch
+++ b/patches/linux-2.6.16.29/device_bind.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/drivers/base/bus.c ./drivers/base/bus.c
---- ../pristine-linux-2.6.16.13/drivers/base/bus.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./drivers/base/bus.c 2006-05-04 17:41:30.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/drivers/base/bus.c ./drivers/base/bus.c
+--- ../orig-linux-2.6.16.29/drivers/base/bus.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/base/bus.c 2006-09-19 13:58:54.000000000 +0100
@@ -188,6 +188,11 @@ static ssize_t driver_bind(struct device
up(&dev->sem);
if (dev->parent)
diff --git a/patches/linux-2.6.16.13/fix-hz-suspend.patch b/patches/linux-2.6.16.29/fix-hz-suspend.patch
index bcb79553e7..2a964ccb8c 100644
--- a/patches/linux-2.6.16.13/fix-hz-suspend.patch
+++ b/patches/linux-2.6.16.29/fix-hz-suspend.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/kernel/timer.c ./kernel/timer.c
---- ../pristine-linux-2.6.16.13/kernel/timer.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./kernel/timer.c 2006-06-29 14:34:12.788957720 +0100
+diff -pruN ../orig-linux-2.6.16.29/kernel/timer.c ./kernel/timer.c
+--- ../orig-linux-2.6.16.29/kernel/timer.c 2006-09-12 19:02:10.000000000 +0100
++++ ./kernel/timer.c 2006-09-19 13:58:58.000000000 +0100
@@ -555,6 +555,22 @@ found:
}
spin_unlock(&base->t_base.lock);
diff --git a/patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch b/patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch
index 0892117255..91e6cb5279 100644
--- a/patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch
+++ b/patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch
@@ -1,7 +1,7 @@
-diff -ru ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c ./drivers/ide/ide-lib.c
---- ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./drivers/ide/ide-lib.c 2006-05-24 18:37:05.000000000 +0100
-@@ -410,10 +410,10 @@
+diff -pruN ../orig-linux-2.6.16.29/drivers/ide/ide-lib.c ./drivers/ide/ide-lib.c
+--- ../orig-linux-2.6.16.29/drivers/ide/ide-lib.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/ide/ide-lib.c 2006-09-19 13:59:03.000000000 +0100
+@@ -410,10 +410,10 @@ void ide_toggle_bounce(ide_drive_t *driv
{
u64 addr = BLK_BOUNCE_HIGH; /* dma64_addr_t */
diff --git a/patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch b/patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch
index 424e5483ad..bfcba3908a 100644
--- a/patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch
+++ b/patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/kernel/traps.c 2006-05-04 17:41:34.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/traps.c 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/kernel/traps.c 2006-09-19 13:59:06.000000000 +0100
@@ -567,18 +567,11 @@ static void mem_parity_error(unsigned ch
static void io_check_error(unsigned char reason, struct pt_regs * regs)
@@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c ./arch/i386/kern
}
static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/mach-default/mach_traps.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/mach-default/mach_traps.h 2006-05-04 17:41:34.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/mach-default/mach_traps.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/mach-default/mach_traps.h 2006-09-19 13:59:06.000000000 +0100
@@ -15,6 +15,18 @@ static inline void clear_mem_error(unsig
outb(reason, 0x61);
}
diff --git a/patches/linux-2.6.16.13/ipv6-no-autoconf.patch b/patches/linux-2.6.16.29/ipv6-no-autoconf.patch
index 7d2fd4d531..e0d1b8c681 100644
--- a/patches/linux-2.6.16.13/ipv6-no-autoconf.patch
+++ b/patches/linux-2.6.16.29/ipv6-no-autoconf.patch
@@ -1,11 +1,7 @@
- net/ipv6/addrconf.c | 2 ++
- 1 files changed, 2 insertions(+)
-
-Index: build/net/ipv6/addrconf.c
-===================================================================
---- build.orig/net/ipv6/addrconf.c
-+++ build/net/ipv6/addrconf.c
-@@ -2462,6 +2462,7 @@ static void addrconf_dad_start(struct in
+diff -pruN ../orig-linux-2.6.16.29/net/ipv6/addrconf.c ./net/ipv6/addrconf.c
+--- ../orig-linux-2.6.16.29/net/ipv6/addrconf.c 2006-09-12 19:02:10.000000000 +0100
++++ ./net/ipv6/addrconf.c 2006-09-19 13:59:11.000000000 +0100
+@@ -2471,6 +2471,7 @@ static void addrconf_dad_start(struct in
spin_lock_bh(&ifp->lock);
if (dev->flags&(IFF_NOARP|IFF_LOOPBACK) ||
@@ -13,7 +9,7 @@ Index: build/net/ipv6/addrconf.c
!(ifp->flags&IFA_F_TENTATIVE)) {
ifp->flags &= ~IFA_F_TENTATIVE;
spin_unlock_bh(&ifp->lock);
-@@ -2546,6 +2547,7 @@ static void addrconf_dad_completed(struc
+@@ -2555,6 +2556,7 @@ static void addrconf_dad_completed(struc
if (ifp->idev->cnf.forwarding == 0 &&
ifp->idev->cnf.rtr_solicits > 0 &&
(dev->flags&IFF_LOOPBACK) == 0 &&
diff --git a/patches/linux-2.6.16.13/net-csum.patch b/patches/linux-2.6.16.29/net-csum.patch
index c99e0506b2..d5fb233077 100644
--- a/patches/linux-2.6.16.13/net-csum.patch
+++ b/patches/linux-2.6.16.29/net-csum.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c ./net/ipv4/netfilter/ip_nat_proto_tcp.c
---- ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-05-16 13:28:19.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_tcp.c ./net/ipv4/netfilter/ip_nat_proto_tcp.c
+--- ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-09-12 19:02:10.000000000 +0100
++++ ./net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-09-19 13:59:15.000000000 +0100
@@ -129,7 +129,12 @@ tcp_manip_pkt(struct sk_buff **pskb,
if (hdrsize < sizeof(*hdr))
return 1;
@@ -15,9 +15,9 @@ diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c ./n
ip_nat_cheat_check(oldport ^ 0xFFFF,
newport,
hdr->check));
-diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c ./net/ipv4/netfilter/ip_nat_proto_udp.c
---- ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./net/ipv4/netfilter/ip_nat_proto_udp.c 2006-05-16 13:30:14.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_udp.c ./net/ipv4/netfilter/ip_nat_proto_udp.c
+--- ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-09-12 19:02:10.000000000 +0100
++++ ./net/ipv4/netfilter/ip_nat_proto_udp.c 2006-09-19 13:59:15.000000000 +0100
@@ -113,11 +113,17 @@ udp_manip_pkt(struct sk_buff **pskb,
newport = tuple->dst.u.udp.port;
portptr = &hdr->dest;
@@ -38,9 +38,9 @@ diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c ./n
*portptr = newport;
return 1;
}
-diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_output.c
---- ../pristine-linux-2.6.16.13/net/ipv4/xfrm4_output.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./net/ipv4/xfrm4_output.c 2006-05-04 17:41:37.000000000 +0100
+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-12 19:02:10.000000000 +0100
++++ ./net/ipv4/xfrm4_output.c 2006-09-19 13:59:15.000000000 +0100
@@ -17,6 +17,8 @@
#include <net/xfrm.h>
#include <net/icmp.h>
diff --git a/patches/linux-2.6.16.13/net-gso-0-base.patch b/patches/linux-2.6.16.29/net-gso-0-base.patch
index 4c69d1e4a6..4895de4069 100644
--- a/patches/linux-2.6.16.13/net-gso-0-base.patch
+++ b/patches/linux-2.6.16.29/net-gso-0-base.patch
@@ -1,7 +1,6 @@
-diff --git a/Documentation/networking/netdevices.txt b/Documentation/networking/netdevices.txt
-index 3c0a5ba..847cedb 100644
---- a/Documentation/networking/netdevices.txt
-+++ b/Documentation/networking/netdevices.txt
+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:
Context: nominally process, but don't sleep inside an rwlock
@@ -29,10 +28,9 @@ index 3c0a5ba..847cedb 100644
Context: BHs disabled
dev->poll:
-diff --git a/drivers/block/aoe/aoenet.c b/drivers/block/aoe/aoenet.c
-index 4be9769..2e7cac7 100644
---- a/drivers/block/aoe/aoenet.c
-+++ b/drivers/block/aoe/aoenet.c
+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])
static struct sk_buff *
skb_check(struct sk_buff *skb)
@@ -44,10 +42,9 @@ index 4be9769..2e7cac7 100644
dev_kfree_skb(skb);
return NULL;
}
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-index a2408d7..c90e620 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+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_
ipoib_mcast_stop_thread(dev, 0);
@@ -68,10 +65,9 @@ index a2408d7..c90e620 100644
/* We have to cancel outside of the spinlock */
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
-diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c
-index 6711eb6..8d2351f 100644
---- a/drivers/media/dvb/dvb-core/dvb_net.c
-+++ b/drivers/media/dvb/dvb-core/dvb_net.c
+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
dvb_net_feed_stop(dev);
@@ -90,11 +86,10 @@ index 6711eb6..8d2351f 100644
dvb_net_feed_start(dev);
}
-diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
-index dd41049..6615583 100644
---- a/drivers/net/8139cp.c
-+++ b/drivers/net/8139cp.c
-@@ -794,7 +794,7 @@ #endif
+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
entry = cp->tx_head;
eor = (entry == (CP_TX_RING_SIZE - 1)) ? RingEnd : 0;
if (dev->features & NETIF_F_TSO)
@@ -103,10 +98,9 @@ index dd41049..6615583 100644
if (skb_shinfo(skb)->nr_frags == 0) {
struct cp_desc *txd = &cp->tx_ring[entry];
-diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
-index a24200d..b5e39a1 100644
---- a/drivers/net/bnx2.c
-+++ b/drivers/net/bnx2.c
+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)
skb = tx_buf->skb;
#ifdef BCM_TSO
@@ -143,10 +137,9 @@ index a24200d..b5e39a1 100644
(skb->len > (bp->dev->mtu + ETH_HLEN))) {
u32 tcp_opt_len, ip_tcp_len;
-diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
-index bcf9f17..e970921 100644
---- a/drivers/net/bonding/bond_main.c
-+++ b/drivers/net/bonding/bond_main.c
+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
}
@@ -177,10 +170,9 @@ index bcf9f17..e970921 100644
* transmitting */
bond_dev->features |= NETIF_F_LLTX;
-diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c
-index 30ff8ea..7b7d360 100644
---- a/drivers/net/chelsio/sge.c
-+++ b/drivers/net/chelsio/sge.c
+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
struct cpl_tx_pkt *cpl;
@@ -190,7 +182,7 @@ index 30ff8ea..7b7d360 100644
int eth_type;
struct cpl_tx_pkt_lso *hdr;
-@@ -1434,7 +1434,7 @@ #ifdef NETIF_F_TSO
+@@ -1434,7 +1434,7 @@ int t1_start_xmit(struct sk_buff *skb, s
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,
@@ -199,11 +191,10 @@ index 30ff8ea..7b7d360 100644
hdr->len = htonl(skb->len - sizeof(*hdr));
cpl = (struct cpl_tx_pkt *)hdr;
sge->stats.tx_lso_pkts++;
-diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
-index fa29402..681d284 100644
---- a/drivers/net/e1000/e1000_main.c
-+++ b/drivers/net/e1000/e1000_main.c
-@@ -2526,7 +2526,7 @@ #ifdef NETIF_F_TSO
+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,
uint8_t ipcss, ipcso, tucss, tucso, hdr_len;
int err;
@@ -212,7 +203,7 @@ index fa29402..681d284 100644
if (skb_header_cloned(skb)) {
err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
if (err)
-@@ -2534,7 +2534,7 @@ #ifdef NETIF_F_TSO
+@@ -2534,7 +2534,7 @@ e1000_tso(struct e1000_adapter *adapter,
}
hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2));
@@ -221,7 +212,7 @@ index fa29402..681d284 100644
if (skb->protocol == ntohs(ETH_P_IP)) {
skb->nh.iph->tot_len = 0;
skb->nh.iph->check = 0;
-@@ -2651,7 +2651,7 @@ #ifdef NETIF_F_TSO
+@@ -2651,7 +2651,7 @@ e1000_tx_map(struct e1000_adapter *adapt
* tso gets written back prematurely before the data is fully
* DMAd to the controller */
if (!skb->data_len && tx_ring->last_tx_tso &&
@@ -230,7 +221,7 @@ index fa29402..681d284 100644
tx_ring->last_tx_tso = 0;
size -= 4;
}
-@@ -2893,7 +2893,7 @@ #endif
+@@ -2893,7 +2893,7 @@ e1000_xmit_frame(struct sk_buff *skb, st
}
#ifdef NETIF_F_TSO
@@ -239,7 +230,7 @@ index fa29402..681d284 100644
/* 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 @@ #endif
+@@ -2935,7 +2935,7 @@ e1000_xmit_frame(struct sk_buff *skb, st
#ifdef NETIF_F_TSO
/* Controller Erratum workaround */
if (!skb->data_len && tx_ring->last_tx_tso &&
@@ -248,11 +239,10 @@ index fa29402..681d284 100644
count++;
#endif
-diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
-index 3682ec6..c35f16e 100644
---- a/drivers/net/forcedeth.c
-+++ b/drivers/net/forcedeth.c
-@@ -482,9 +482,9 @@ #define LPA_1000HALF 0x0400
+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 {
* critical parts:
* - rx is (pseudo-) lockless: it relies on the single-threading provided
* by the arch code for interrupts.
@@ -338,10 +328,9 @@ index 3682ec6..c35f16e 100644
*/
static void nv_set_multicast(struct net_device *dev)
{
-diff --git a/drivers/net/hamradio/6pack.c b/drivers/net/hamradio/6pack.c
-index 102c1f0..d12605f 100644
---- a/drivers/net/hamradio/6pack.c
-+++ b/drivers/net/hamradio/6pack.c
+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
{
struct sockaddr_ax25 *sa = addr;
@@ -366,10 +355,9 @@ index 102c1f0..d12605f 100644
err = 0;
break;
-diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c
-index dc5e9d5..5c66f5a 100644
---- a/drivers/net/hamradio/mkiss.c
-+++ b/drivers/net/hamradio/mkiss.c
+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
{
struct sockaddr_ax25 *sa = addr;
@@ -394,10 +382,9 @@ index dc5e9d5..5c66f5a 100644
err = 0;
break;
-diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
-index 31fb2d7..2e222ef 100644
---- a/drivers/net/ifb.c
-+++ b/drivers/net/ifb.c
+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
dp->st_task_enter++;
if ((skb = skb_peek(&dp->tq)) == NULL) {
@@ -436,10 +423,9 @@ index 31fb2d7..2e222ef 100644
} else {
resched:
dp->tasklet_pending = 1;
-diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c
-index a9f49f0..339d4a7 100644
---- a/drivers/net/irda/vlsi_ir.c
-+++ b/drivers/net/irda/vlsi_ir.c
+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
|| (now.tv_sec==ready.tv_sec && now.tv_usec>=ready.tv_usec))
break;
@@ -449,11 +435,10 @@ index a9f49f0..339d4a7 100644
}
}
-diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
-index f9f77e4..bdab369 100644
---- a/drivers/net/ixgb/ixgb_main.c
-+++ b/drivers/net/ixgb/ixgb_main.c
-@@ -1163,7 +1163,7 @@ #ifdef NETIF_F_TSO
+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
uint16_t ipcse, tucse, mss;
int err;
@@ -462,7 +447,7 @@ index f9f77e4..bdab369 100644
if (skb_header_cloned(skb)) {
err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
if (err)
-@@ -1171,7 +1171,7 @@ #ifdef NETIF_F_TSO
+@@ -1171,7 +1171,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s
}
hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2));
@@ -471,10 +456,9 @@ index f9f77e4..bdab369 100644
skb->nh.iph->tot_len = 0;
skb->nh.iph->check = 0;
skb->h.th->check = ~csum_tcpudp_magic(skb->nh.iph->saddr,
-diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c
-index 690a1aa..9bcaa80 100644
---- a/drivers/net/loopback.c
-+++ b/drivers/net/loopback.c
+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
struct iphdr *iph = skb->nh.iph;
struct tcphdr *th = (struct tcphdr*)(skb->nh.raw + (iph->ihl * 4));
@@ -484,7 +468,7 @@ index 690a1aa..9bcaa80 100644
unsigned int offset = 0;
u32 seq = ntohl(th->seq);
u16 id = ntohs(iph->id);
-@@ -139,7 +139,7 @@ #ifndef LOOPBACK_MUST_CHECKSUM
+@@ -139,7 +139,7 @@ static int loopback_xmit(struct sk_buff
#endif
#ifdef LOOPBACK_TSO
@@ -493,10 +477,9 @@ index 690a1aa..9bcaa80 100644
BUG_ON(skb->protocol != htons(ETH_P_IP));
BUG_ON(skb->nh.iph->protocol != IPPROTO_TCP);
-diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
-index c0998ef..0fac9d5 100644
---- a/drivers/net/mv643xx_eth.c
-+++ b/drivers/net/mv643xx_eth.c
+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
#ifdef MV643XX_CHECKSUM_OFFLOAD_TX
@@ -506,10 +489,9 @@ index c0998ef..0fac9d5 100644
stats->tx_dropped++;
printk(KERN_DEBUG "%s: failed to linearize tiny "
"unaligned fragment\n", dev->name);
-diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c
-index 9d6d254..c9ed624 100644
---- a/drivers/net/natsemi.c
-+++ b/drivers/net/natsemi.c
+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:
The rx process only runs in the interrupt handler. Access from outside
the interrupt handler is only permitted after disable_irq().
@@ -525,10 +507,9 @@ index 9d6d254..c9ed624 100644
spin_lock_irq(&np->lock);
IV. Notes
-diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
-index 8cc0d0b..e53b313 100644
---- a/drivers/net/r8169.c
-+++ b/drivers/net/r8169.c
+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
static inline u32 rtl8169_tso_csum(struct sk_buff *skb, struct net_device *dev)
{
@@ -538,11 +519,10 @@ index 8cc0d0b..e53b313 100644
if (mss)
return LargeSend | ((mss & MSSMask) << MSSShift);
-diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
-index b7f00d6..439f45f 100644
---- a/drivers/net/s2io.c
-+++ b/drivers/net/s2io.c
-@@ -3522,8 +3522,8 @@ #endif
+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
txdp->Control_1 = 0;
txdp->Control_2 = 0;
#ifdef NETIF_F_TSO
@@ -553,7 +533,7 @@ index b7f00d6..439f45f 100644
txdp->Control_1 |= TXD_TCP_LSO_EN;
txdp->Control_1 |= TXD_TCP_LSO_MSS(mss);
}
-@@ -3543,10 +3543,10 @@ #endif
+@@ -3543,10 +3543,10 @@ static int s2io_xmit(struct sk_buff *skb
}
frg_len = skb->len - skb->data_len;
@@ -566,7 +546,7 @@ index b7f00d6..439f45f 100644
ufo_size &= ~7;
txdp->Control_1 |= TXD_UFO_EN;
txdp->Control_1 |= TXD_UFO_MSS(ufo_size);
-@@ -3572,7 +3572,7 @@ #endif
+@@ -3572,7 +3572,7 @@ static int s2io_xmit(struct sk_buff *skb
txdp->Host_Control = (unsigned long) skb;
txdp->Control_1 |= TXD_BUFFER0_SIZE(frg_len);
@@ -575,7 +555,7 @@ index b7f00d6..439f45f 100644
txdp->Control_1 |= TXD_UFO_EN;
frg_cnt = skb_shinfo(skb)->nr_frags;
-@@ -3587,12 +3587,12 @@ #endif
+@@ -3587,12 +3587,12 @@ static int s2io_xmit(struct sk_buff *skb
(sp->pdev, frag->page, frag->page_offset,
frag->size, PCI_DMA_TODEVICE);
txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size);
@@ -590,7 +570,7 @@ index b7f00d6..439f45f 100644
frg_cnt++; /* as Txd0 was used for inband header */
tx_fifo = mac_control->tx_FIFO_start[queue];
-@@ -3606,7 +3606,7 @@ #ifdef NETIF_F_TSO
+@@ -3606,7 +3606,7 @@ static int s2io_xmit(struct sk_buff *skb
if (mss)
val64 |= TX_FIFO_SPECIAL_FUNC;
#endif
@@ -599,10 +579,9 @@ index b7f00d6..439f45f 100644
val64 |= TX_FIFO_SPECIAL_FUNC;
writeq(val64, &tx_fifo->List_Control);
-diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
-index 0618cd5..2a55eb3 100644
---- a/drivers/net/sky2.c
-+++ b/drivers/net/sky2.c
+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
count = sizeof(dma_addr_t) / sizeof(u32);
count += skb_shinfo(skb)->nr_frags * count;
@@ -621,10 +600,9 @@ index 0618cd5..2a55eb3 100644
if (mss != 0) {
/* just drop the packet if non-linear expansion fails */
if (skb_header_cloned(skb) &&
-diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
-index caf4102..fc9164a 100644
---- a/drivers/net/tg3.c
-+++ b/drivers/net/tg3.c
+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
#if TG3_TSO_SUPPORT != 0
mss = 0;
@@ -634,11 +612,10 @@ index caf4102..fc9164a 100644
int tcp_opt_len, ip_tcp_len;
if (skb_header_cloned(skb) &&
-diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c
-index 5b1af39..11de5af 100644
---- a/drivers/net/tulip/winbond-840.c
-+++ b/drivers/net/tulip/winbond-840.c
-@@ -1605,11 +1605,11 @@ #ifdef CONFIG_PM
+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
* - get_stats:
* spin_lock_irq(np->lock), doesn't touch hw if not present
* - hard_start_xmit:
@@ -666,11 +643,10 @@ index 5b1af39..11de5af 100644
np->stats.rx_missed_errors += ioread32(ioaddr + RxMissed) & 0xffff;
-diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c
-index 4c76cb7..30c48c9 100644
---- a/drivers/net/typhoon.c
-+++ b/drivers/net/typhoon.c
-@@ -340,7 +340,7 @@ #define typhoon_synchronize_irq(x) synch
+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 {
#endif
#if defined(NETIF_F_TSO)
@@ -679,10 +655,9 @@ index 4c76cb7..30c48c9 100644
#define TSO_NUM_DESCRIPTORS 2
#define TSO_OFFLOAD_ON TYPHOON_OFFLOAD_TCP_SEGMENT
#else
-diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
-index ed1f837..2eb6b5f 100644
---- a/drivers/net/via-velocity.c
-+++ b/drivers/net/via-velocity.c
+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
int pktlen = skb->len;
@@ -706,7 +681,7 @@ index ed1f837..2eb6b5f 100644
pktlen = ETH_ZLEN;
memcpy(tdinfo->buf, skb->data, skb->len);
memset(tdinfo->buf + skb->len, 0, ETH_ZLEN - skb->len);
-@@ -1933,7 +1938,6 @@ #ifdef VELOCITY_ZERO_COPY_SUPPORT
+@@ -1933,7 +1938,6 @@ static int velocity_xmit(struct sk_buff
int nfrags = skb_shinfo(skb)->nr_frags;
tdinfo->skb = skb;
if (nfrags > 6) {
@@ -714,10 +689,9 @@ index ed1f837..2eb6b5f 100644
memcpy(tdinfo->buf, skb->data, skb->len);
tdinfo->skb_dma[0] = tdinfo->buf_dma;
td_ptr->tdesc0.pktsize =
-diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
-index 6fd0bf7..75237c1 100644
---- a/drivers/net/wireless/orinoco.c
-+++ b/drivers/net/wireless/orinoco.c
+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
/* Set promiscuity / multicast*/
priv->promiscuous = 0;
@@ -729,11 +703,10 @@ index 6fd0bf7..75237c1 100644
return 0;
}
-diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c
-index 82cb4af..57cec40 100644
---- a/drivers/s390/net/qeth_eddp.c
-+++ b/drivers/s390/net/qeth_eddp.c
-@@ -421,7 +421,7 @@ #endif /* CONFIG_QETH_VLAN */
+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
}
tcph = eddp->skb->h.th;
while (eddp->skb_offset < eddp->skb->len) {
@@ -768,10 +741,9 @@ index 82cb4af..57cec40 100644
}
static inline struct qeth_eddp_context *
-diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
-index dba7f7f..d9cc997 100644
---- a/drivers/s390/net/qeth_main.c
-+++ b/drivers/s390/net/qeth_main.c
+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,
queue = card->qdio.out_qs
[qeth_get_priority_queue(card, skb, ipv, cast_type)];
@@ -790,10 +762,9 @@ index dba7f7f..d9cc997 100644
!(large_send == QETH_LARGE_SEND_NO)) {
card->perf_stats.large_send_bytes += skb->len;
card->perf_stats.large_send_cnt++;
-diff --git a/drivers/s390/net/qeth_tso.h b/drivers/s390/net/qeth_tso.h
-index 1286dde..89cbf34 100644
---- a/drivers/s390/net/qeth_tso.h
-+++ b/drivers/s390/net/qeth_tso.h
+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
hdr->ext.hdr_version = 1;
hdr->ext.hdr_len = 28;
@@ -803,11 +774,10 @@ index 1286dde..89cbf34 100644
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 --git a/include/linux/ethtool.h b/include/linux/ethtool.h
-index 93535f0..9269df7 100644
---- a/include/linux/ethtool.h
-+++ b/include/linux/ethtool.h
-@@ -408,6 +408,8 @@ #define ETHTOOL_STSO 0x0000001f /* Set
+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 {
#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) */
@@ -816,10 +786,9 @@ index 93535f0..9269df7 100644
/* compatibility with older code */
#define SPARC_ETH_GSET ETHTOOL_GSET
-diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
-index 7fda03d..47b0965 100644
---- a/include/linux/netdevice.h
-+++ b/include/linux/netdevice.h
+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
__LINK_STATE_SCHED,
__LINK_STATE_NOCARRIER,
@@ -830,7 +799,7 @@ index 7fda03d..47b0965 100644
};
-@@ -306,9 +307,17 @@ #define NETIF_F_HW_VLAN_TX 128 /* Transm
+@@ -306,9 +307,17 @@ struct net_device
#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 */
@@ -850,7 +819,7 @@ index 7fda03d..47b0965 100644
struct net_device *next_sched;
-@@ -394,6 +403,9 @@ #define NETIF_F_UFO 8192
+@@ -394,6 +403,9 @@ struct net_device
struct list_head qdisc_list;
unsigned long tx_queue_len; /* Max frames per queue allowed */
@@ -860,7 +829,7 @@ index 7fda03d..47b0965 100644
/* ingress path synchronizer */
spinlock_t ingress_lock;
struct Qdisc *qdisc_ingress;
-@@ -402,7 +414,7 @@ #define NETIF_F_UFO 8192
+@@ -402,7 +414,7 @@ struct net_device
* One part is mostly used on xmit path (device)
*/
/* hard_start_xmit synchronizer */
@@ -942,7 +911,7 @@ index 7fda03d..47b0965 100644
#ifdef CONFIG_BUG
extern void netdev_rx_csum_fault(struct net_device *dev);
#else
-@@ -951,6 +999,18 @@ #endif
+@@ -951,6 +999,18 @@ extern void dev_seq_stop(struct seq_file
extern void linkwatch_run_queue(void);
@@ -961,10 +930,9 @@ index 7fda03d..47b0965 100644
#endif /* __KERNEL__ */
#endif /* _LINUX_DEV_H */
-diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index ad7cc22..b19d45d 100644
---- a/include/linux/skbuff.h
-+++ b/include/linux/skbuff.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 {
struct skb_shared_info {
atomic_t dataref;
@@ -1041,10 +1009,9 @@ index ad7cc22..b19d45d 100644
static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
int len, void *buffer)
-diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h
-index b94d1ad..75b5b93 100644
---- a/include/net/pkt_sched.h
-+++ b/include/net/pkt_sched.h
+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
struct rtattr *tab);
extern void qdisc_put_rtab(struct qdisc_rate_table *tab);
@@ -1062,11 +1029,10 @@ index b94d1ad..75b5b93 100644
}
extern int tc_classify(struct sk_buff *skb, struct tcf_proto *tp,
-diff --git a/include/net/protocol.h b/include/net/protocol.h
-index 6dc5970..0d2dcdb 100644
---- a/include/net/protocol.h
-+++ b/include/net/protocol.h
-@@ -37,6 +37,8 @@ #define MAX_INET_PROTOS 256 /* Must be
+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
+@@ -37,6 +37,8 @@
struct net_protocol {
int (*handler)(struct sk_buff *skb);
void (*err_handler)(struct sk_buff *skb, u32 info);
@@ -1075,10 +1041,9 @@ index 6dc5970..0d2dcdb 100644
int no_policy;
};
-diff --git a/include/net/sock.h b/include/net/sock.h
-index f63d0d5..a8e8d21 100644
---- a/include/net/sock.h
-+++ b/include/net/sock.h
+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
{
__sk_dst_set(sk, dst);
@@ -1093,11 +1058,10 @@ index f63d0d5..a8e8d21 100644
}
}
-diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 77f21c6..70e1d5f 100644
---- a/include/net/tcp.h
-+++ b/include/net/tcp.h
-@@ -552,13 +552,13 @@ #include <net/tcp_ecn.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 {
*/
static inline int tcp_skb_pcount(const struct sk_buff *skb)
{
@@ -1122,10 +1086,9 @@ index 77f21c6..70e1d5f 100644
#ifdef CONFIG_PROC_FS
extern int tcp4_proc_init(void);
extern void tcp4_proc_exit(void);
-diff --git a/net/atm/clip.c b/net/atm/clip.c
-index 1842a4e..6dc21a7 100644
---- a/net/atm/clip.c
-+++ b/net/atm/clip.c
+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_
printk(KERN_CRIT "!clip_vcc->entry (clip_vcc %p)\n",clip_vcc);
return;
@@ -1144,10 +1107,9 @@ index 1842a4e..6dc21a7 100644
}
/* The neighbour entry n->lock is held. */
-diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
-index 0b33a7b..180e79b 100644
---- a/net/bridge/br_device.c
-+++ b/net/bridge/br_device.c
+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
struct net_bridge *br = netdev_priv(dev);
@@ -1169,10 +1131,9 @@ index 0b33a7b..180e79b 100644
+ dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA |
+ NETIF_F_TSO | NETIF_F_NO_CSUM | NETIF_F_GSO_ROBUST;
}
-diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
-index 2d24fb4..00b1128 100644
---- a/net/bridge/br_forward.c
-+++ b/net/bridge/br_forward.c
+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
int br_dev_queue_push_xmit(struct sk_buff *skb)
{
@@ -1182,10 +1143,9 @@ index 2d24fb4..00b1128 100644
kfree_skb(skb);
else {
#ifdef CONFIG_BRIDGE_NETFILTER
-diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
-index f36b35e..0617146 100644
---- a/net/bridge/br_if.c
-+++ b/net/bridge/br_if.c
+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
struct net_bridge_port *p;
unsigned long features, checksum;
@@ -1221,10 +1181,9 @@ index f36b35e..0617146 100644
}
/* called with RTNL */
-diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
-index 9e27373..588207f 100644
---- a/net/bridge/br_netfilter.c
-+++ b/net/bridge/br_netfilter.c
+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
{
if (skb->protocol == htons(ETH_P_IP) &&
@@ -1234,11 +1193,10 @@ index 9e27373..588207f 100644
return ip_fragment(skb, br_dev_queue_push_xmit);
else
return br_dev_queue_push_xmit(skb);
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 12a214c..32e1056 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -115,6 +115,7 @@ #include <linux/wireless.h> /* Note : w
+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
+@@ -115,6 +115,7 @@
#include <net/iw_handler.h>
#endif /* CONFIG_NET_RADIO */
#include <asm/current.h>
@@ -1301,13 +1259,44 @@ index 12a214c..32e1056 100644
/* 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 @@ #else
+@@ -1142,75 +1182,108 @@ static inline int illegal_highdma(struct
#define illegal_highdma(dev, skb) (0)
#endif
-/* Keep head the same: replace data */
-int __skb_linearize(struct sk_buff *skb, gfp_t gfp_mask)
--{
++struct dev_gso_cb {
++ void (*destructor)(struct sk_buff *skb);
++};
++
++#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;
- long offset;
@@ -1354,44 +1343,6 @@ index 12a214c..32e1056 100644
- skb->mac.raw += offset;
- skb->tail += offset;
- skb->data += offset;
--
-- /* We are no longer a clone, even if we were. */
-- skb->cloned = 0;
--
-- skb->tail += skb->data_len;
-- skb->data_len = 0;
-+struct dev_gso_cb {
-+ void (*destructor)(struct sk_buff *skb);
-+};
-+
-+#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)
-+{
+ struct net_device *dev = skb->dev;
+ struct sk_buff *segs;
+ int features = dev->features & ~(illegal_highdma(dev, skb) ?
@@ -1402,14 +1353,18 @@ index 12a214c..32e1056 100644
+ /* 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;
+}
+
@@ -1514,7 +1469,7 @@ index 12a214c..32e1056 100644
/* Updates of qdisc are serialized by queue_lock.
* The struct Qdisc which is pointed to by qdisc is now a
-@@ -1309,8 +1387,8 @@ #endif
+@@ -1309,8 +1387,8 @@ int dev_queue_xmit(struct sk_buff *skb)
/* The device has no queue. Common case for software devices:
loopback, all the sorts of tunnels...
@@ -1525,7 +1480,7 @@ index 12a214c..32e1056 100644
counters.)
However, it is possible, that they rely on protection
made by us here.
-@@ -1326,11 +1404,8 @@ #endif
+@@ -1326,11 +1404,8 @@ int dev_queue_xmit(struct sk_buff *skb)
HARD_TX_LOCK(dev, cpu);
if (!netif_queue_stopped(dev)) {
@@ -1538,7 +1493,7 @@ index 12a214c..32e1056 100644
HARD_TX_UNLOCK(dev);
goto out;
}
-@@ -1349,13 +1424,13 @@ #endif
+@@ -1349,13 +1424,13 @@ int dev_queue_xmit(struct sk_buff *skb)
}
rc = -ENETDOWN;
@@ -1563,7 +1518,7 @@ index 12a214c..32e1056 100644
dev->xmit_lock_owner = -1;
#ifdef CONFIG_NET_CLS_ACT
spin_lock_init(&dev->ingress_lock);
-@@ -2714,9 +2789,7 @@ #endif
+@@ -2714,9 +2789,7 @@ int register_netdevice(struct net_device
/* Fix illegal SG+CSUM combinations. */
if ((dev->features & NETIF_F_SG) &&
@@ -1582,11 +1537,10 @@ index 12a214c..32e1056 100644
EXPORT_SYMBOL(dev_valid_name);
EXPORT_SYMBOL(dev_add_pack);
EXPORT_SYMBOL(dev_alloc_name);
-diff --git a/net/core/dev_mcast.c b/net/core/dev_mcast.c
-index 05d6085..c57d887 100644
---- a/net/core/dev_mcast.c
-+++ b/net/core/dev_mcast.c
-@@ -62,7 +62,7 @@ #include <net/arp.h>
+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
+@@ -62,7 +62,7 @@
* Device mc lists are changed by bh at least if IPv6 is enabled,
* so that it must be bh protected.
*
@@ -1700,10 +1654,9 @@ index 05d6085..c57d887 100644
return 0;
}
-diff --git a/net/core/ethtool.c b/net/core/ethtool.c
-index e6f7610..27ce168 100644
---- a/net/core/ethtool.c
-+++ b/net/core/ethtool.c
+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
u32 ethtool_op_get_tx_csum(struct net_device *dev)
@@ -1724,24 +1677,16 @@ index e6f7610..27ce168 100644
return -EINVAL;
return __ethtool_set_sg(dev, edata.data);
-@@ -591,7 +589,7 @@ static int ethtool_set_tso(struct net_de
+@@ -561,7 +559,7 @@ static int ethtool_set_sg(struct net_dev
- static int ethtool_get_ufo(struct net_device *dev, char __user *useraddr)
+ static int ethtool_get_tso(struct net_device *dev, char __user *useraddr)
{
- struct ethtool_value edata = { ETHTOOL_GTSO };
+ struct ethtool_value edata = { ETHTOOL_GUFO };
- if (!dev->ethtool_ops->get_ufo)
+ if (!dev->ethtool_ops->get_tso)
return -EOPNOTSUPP;
-@@ -600,6 +598,7 @@ static int ethtool_get_ufo(struct net_de
- return -EFAULT;
- return 0;
- }
-+
- static int ethtool_set_ufo(struct net_device *dev, char __user *useraddr)
- {
- struct ethtool_value edata;
-@@ -615,6 +614,29 @@ static int ethtool_set_ufo(struct net_de
+@@ -616,6 +614,29 @@ static int ethtool_set_ufo(struct net_de
return dev->ethtool_ops->set_ufo(dev, edata.data);
}
@@ -1771,7 +1716,7 @@ index e6f7610..27ce168 100644
static int ethtool_self_test(struct net_device *dev, char __user *useraddr)
{
struct ethtool_test test;
-@@ -906,6 +928,12 @@ int dev_ethtool(struct ifreq *ifr)
+@@ -907,6 +928,12 @@ int dev_ethtool(struct ifreq *ifr)
case ETHTOOL_SUFO:
rc = ethtool_set_ufo(dev, useraddr);
break;
@@ -1784,10 +1729,9 @@ index e6f7610..27ce168 100644
default:
rc = -EOPNOTSUPP;
}
-diff --git a/net/core/netpoll.c b/net/core/netpoll.c
-index ea51f8d..ec28d3b 100644
---- a/net/core/netpoll.c
-+++ b/net/core/netpoll.c
+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
do {
@@ -1816,11 +1760,10 @@ index ea51f8d..ec28d3b 100644
/* success */
if(!status) {
-diff --git a/net/core/pktgen.c b/net/core/pktgen.c
-index da16f8f..2380347 100644
---- a/net/core/pktgen.c
-+++ b/net/core/pktgen.c
-@@ -2582,7 +2582,7 @@ static __inline__ void pktgen_xmit(struc
+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
}
}
@@ -1829,7 +1772,7 @@ index da16f8f..2380347 100644
if (!netif_queue_stopped(odev)) {
atomic_inc(&(pkt_dev->skb->users));
-@@ -2627,7 +2627,7 @@ retry_now:
+@@ -2631,7 +2631,7 @@ retry_now:
pkt_dev->next_tx_ns = 0;
}
@@ -1838,10 +1781,9 @@ index da16f8f..2380347 100644
/* If pkt_dev->count is zero, then run forever */
if ((pkt_dev->count != 0) && (pkt_dev->sofar >= pkt_dev->count)) {
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 2144952..46f56af 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
+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
shinfo = skb_shinfo(skb);
atomic_set(&shinfo->dataref, 1);
@@ -1867,7 +1809,7 @@ index 2144952..46f56af 100644
skb_shinfo(skb)->frag_list = NULL;
out:
return skb;
-@@ -501,8 +502,9 @@ #endif
+@@ -501,8 +502,9 @@ static void copy_skb_header(struct sk_bu
new->tc_index = old->tc_index;
#endif
atomic_set(&new->users, 1);
@@ -2013,10 +1955,9 @@ index 2144952..46f56af 100644
void __init skb_init(void)
{
skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
-diff --git a/net/decnet/dn_nsp_in.c b/net/decnet/dn_nsp_in.c
-index 44bda85..2e3323a 100644
---- a/net/decnet/dn_nsp_in.c
-+++ b/net/decnet/dn_nsp_in.c
+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:
* We linearize everything except data segments here.
*/
@@ -2027,10 +1968,9 @@ index 44bda85..2e3323a 100644
goto free_out;
}
-diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c
-index 3407f19..a0a25e0 100644
---- a/net/decnet/dn_route.c
-+++ b/net/decnet/dn_route.c
+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
padlen);
@@ -2041,10 +1981,9 @@ index 3407f19..a0a25e0 100644
goto dump_it;
switch(flags & DN_RT_CNTL_MSK) {
-diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
-index 97c276f..5ba719e 100644
---- a/net/ipv4/af_inet.c
-+++ b/net/ipv4/af_inet.c
+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
@@ -68,6 +68,7 @@
*/
@@ -2108,7 +2047,7 @@ index 97c276f..5ba719e 100644
#ifdef CONFIG_IP_MULTICAST
static struct net_protocol igmp_protocol = {
.handler = igmp_rcv,
-@@ -1093,6 +1142,7 @@ #endif
+@@ -1093,6 +1142,7 @@ static struct net_protocol igmp_protocol
static struct net_protocol tcp_protocol = {
.handler = tcp_v4_rcv,
.err_handler = tcp_v4_err,
@@ -2124,11 +2063,10 @@ index 97c276f..5ba719e 100644
};
static int __init inet_init(void)
-diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
-index 8dcba38..19c3c73 100644
---- a/net/ipv4/ip_output.c
-+++ b/net/ipv4/ip_output.c
-@@ -210,8 +210,7 @@ #if defined(CONFIG_NETFILTER) && defined
+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
return dst_output(skb);
}
#endif
@@ -2186,10 +2124,9 @@ index 8dcba38..19c3c73 100644
len = size;
else {
-diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c
-index d64e2ec..7494823 100644
---- a/net/ipv4/ipcomp.c
-+++ b/net/ipv4/ipcomp.c
+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
struct xfrm_decap_state *decap, struct sk_buff *skb)
{
@@ -2224,11 +2161,10 @@ index d64e2ec..7494823 100644
err = ipcomp_compress(x, skb);
iph = skb->nh.iph;
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 00aa80e..84130c9 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -257,6 +257,7 @@ #include <linux/smp_lock.h>
+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
+@@ -257,6 +257,7 @@
#include <linux/fs.h>
#include <linux/random.h>
#include <linux/bootmem.h>
@@ -2353,10 +2289,9 @@ index 00aa80e..84130c9 100644
extern void __skb_cb_too_small_for_tcp(int, int);
extern struct tcp_congestion_ops tcp_reno;
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index e9a54ae..defe77a 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
+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,
else
pkt_len = (end_seq -
@@ -2366,10 +2301,9 @@ index e9a54ae..defe77a 100644
break;
pcount = tcp_skb_pcount(skb);
}
-diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
-index 310f2e6..ee01f69 100644
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
+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
/* Avoid the costly divide in the normal
* non-TSO case.
@@ -2485,10 +2419,9 @@ index 310f2e6..ee01f69 100644
/* Use a previous sequence. This should cause the other
* end to send an ack. Don't queue or clone SKB, just
-diff --git a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c
-index 32ad229..737c1db 100644
---- a/net/ipv4/xfrm4_output.c
-+++ b/net/ipv4/xfrm4_output.c
+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
@@ -9,6 +9,8 @@
*/
@@ -2498,7 +2431,7 @@ index 32ad229..737c1db 100644
#include <linux/skbuff.h>
#include <linux/spinlock.h>
#include <linux/netfilter_ipv4.h>
-@@ -152,16 +154,10 @@ error_nolock:
+@@ -158,16 +160,10 @@ error_nolock:
goto out_exit;
}
@@ -2516,7 +2449,7 @@ index 32ad229..737c1db 100644
while (likely((err = xfrm4_output_one(skb)) == 0)) {
nf_reset(skb);
-@@ -174,7 +170,7 @@ #endif
+@@ -180,7 +176,7 @@ static int xfrm4_output_finish(struct sk
return dst_output(skb);
err = nf_hook(PF_INET, NF_IP_POST_ROUTING, &skb, NULL,
@@ -2525,7 +2458,7 @@ index 32ad229..737c1db 100644
if (unlikely(err != 1))
break;
}
-@@ -182,6 +178,48 @@ #endif
+@@ -188,6 +184,48 @@ static int xfrm4_output_finish(struct sk
return err;
}
@@ -2574,10 +2507,9 @@ index 32ad229..737c1db 100644
int xfrm4_output(struct sk_buff *skb)
{
return NF_HOOK_COND(PF_INET, NF_IP_POST_ROUTING, skb, NULL, skb->dst->dev,
-diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
-index 5bf70b1..cf5d17e 100644
---- a/net/ipv6/ip6_output.c
-+++ b/net/ipv6/ip6_output.c
+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
int ip6_output(struct sk_buff *skb)
@@ -2599,10 +2531,9 @@ index 5bf70b1..cf5d17e 100644
ipv6_select_ident(skb, &fhdr);
skb_shinfo(skb)->ip6_frag_id = fhdr.identification;
__skb_queue_tail(&sk->sk_write_queue, skb);
-diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c
-index d511a88..ef56d5d 100644
---- a/net/ipv6/ipcomp6.c
-+++ b/net/ipv6/ipcomp6.c
+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);
static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb)
@@ -2637,10 +2568,9 @@ index d511a88..ef56d5d 100644
/* compression */
plen = skb->len - hdr_len;
-diff --git a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c
-index 8024217..39bdeec 100644
---- a/net/ipv6/xfrm6_output.c
-+++ b/net/ipv6/xfrm6_output.c
+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:
goto out_exit;
}
@@ -2701,10 +2631,9 @@ index 8024217..39bdeec 100644
int xfrm6_output(struct sk_buff *skb)
{
return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dst->dev,
-diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
-index 99ceb91..28c9efd 100644
---- a/net/sched/sch_generic.c
-+++ b/net/sched/sch_generic.c
+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
dev->queue_lock serializes queue accesses for this device
AND dev->qdisc pointer itself.
@@ -2877,10 +2806,9 @@ index 99ceb91..28c9efd 100644
-EXPORT_SYMBOL(qdisc_restart);
EXPORT_SYMBOL(qdisc_lock_tree);
EXPORT_SYMBOL(qdisc_unlock_tree);
-diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c
-index 79b8ef3..4c16ad5 100644
---- a/net/sched/sch_teql.c
-+++ b/net/sched/sch_teql.c
+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:
switch (teql_resolve(skb, skb_res, slave)) {
diff --git a/patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch b/patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch
index ab8812af61..db2ea2321b 100644
--- a/patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch
+++ b/patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch
@@ -1,6 +1,6 @@
-diff -urp a/net/ipv4/tcp.c b/net/ipv4/tcp.c
---- a/net/ipv4/tcp.c 2006-07-25 14:42:53.194910626 +0100
-+++ b/net/ipv4/tcp.c 2006-07-25 14:41:00.955501910 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/ipv4/tcp.c 2006-09-19 13:59:42.000000000 +0100
@@ -2042,13 +2042,19 @@ struct sk_buff *tcp_tso_segment(struct s
if (!pskb_may_pull(skb, thlen))
goto out;
diff --git a/patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch b/patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch
index d8b7ba7a75..430be5fbbf 100644
--- a/patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch
+++ b/patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch
@@ -1,6 +1,6 @@
-diff -urp a/drivers/net/bnx2.c b/drivers/net/bnx2.c
---- a/drivers/net/bnx2.c 2006-07-25 14:41:00.905507519 +0100
-+++ b/drivers/net/bnx2.c 2006-07-25 14:36:00.288561400 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/bnx2.c 2006-09-19 13:59:46.000000000 +0100
@@ -1593,7 +1593,7 @@ bnx2_tx_int(struct bnx2 *bp)
skb = tx_buf->skb;
#ifdef BCM_TSO
@@ -10,9 +10,9 @@ diff -urp a/drivers/net/bnx2.c b/drivers/net/bnx2.c
u16 last_idx, last_ring_idx;
last_idx = sw_cons +
-diff -urp a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c
---- a/drivers/net/chelsio/sge.c 2006-07-25 14:41:00.908507183 +0100
-+++ b/drivers/net/chelsio/sge.c 2006-07-25 14:36:00.291561087 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/chelsio/sge.c 2006-09-19 13:59:46.000000000 +0100
@@ -1419,7 +1419,7 @@ int t1_start_xmit(struct sk_buff *skb, s
struct cpl_tx_pkt *cpl;
@@ -22,9 +22,9 @@ diff -urp a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c
int eth_type;
struct cpl_tx_pkt_lso *hdr;
-diff -urp a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
---- a/drivers/net/e1000/e1000_main.c 2006-07-25 14:41:00.910506958 +0100
-+++ b/drivers/net/e1000/e1000_main.c 2006-07-25 14:36:00.293560878 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/e1000/e1000_main.c 2006-09-19 13:59:46.000000000 +0100
@@ -2526,7 +2526,7 @@ e1000_tso(struct e1000_adapter *adapter,
uint8_t ipcss, ipcso, tucss, tucso, hdr_len;
int err;
@@ -53,9 +53,9 @@ diff -urp a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
count++;
#endif
-diff -urp a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
---- a/drivers/net/forcedeth.c 2006-07-25 14:41:00.912506734 +0100
-+++ b/drivers/net/forcedeth.c 2006-07-25 14:36:00.295560669 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/forcedeth.c 2006-09-19 13:59:46.000000000 +0100
@@ -1105,7 +1105,7 @@ static int nv_start_xmit(struct sk_buff
np->tx_skbuff[nr] = skb;
@@ -65,9 +65,9 @@ diff -urp a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
tx_flags_extra = NV_TX2_TSO | (skb_shinfo(skb)->gso_size << NV_TX2_TSO_SHIFT);
else
#endif
-diff -urp a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
---- a/drivers/net/ixgb/ixgb_main.c 2006-07-25 14:41:00.915506397 +0100
-+++ b/drivers/net/ixgb/ixgb_main.c 2006-07-25 14:36:00.298560355 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/ixgb/ixgb_main.c 2006-09-19 13:59:46.000000000 +0100
@@ -1163,7 +1163,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s
uint16_t ipcse, tucse, mss;
int err;
@@ -77,9 +77,9 @@ diff -urp a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
if (skb_header_cloned(skb)) {
err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
if (err)
-diff -urp a/drivers/net/loopback.c b/drivers/net/loopback.c
---- a/drivers/net/loopback.c 2006-07-25 14:41:00.915506397 +0100
-+++ b/drivers/net/loopback.c 2006-07-25 14:36:00.298560355 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/loopback.c 2006-09-19 13:59:46.000000000 +0100
@@ -139,7 +139,7 @@ static int loopback_xmit(struct sk_buff
#endif
@@ -89,9 +89,9 @@ diff -urp a/drivers/net/loopback.c b/drivers/net/loopback.c
BUG_ON(skb->protocol != htons(ETH_P_IP));
BUG_ON(skb->nh.iph->protocol != IPPROTO_TCP);
-diff -urp a/drivers/net/sky2.c b/drivers/net/sky2.c
---- a/drivers/net/sky2.c 2006-07-25 14:41:00.924505388 +0100
-+++ b/drivers/net/sky2.c 2006-07-25 14:36:00.306559519 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/sky2.c 2006-09-19 13:59:46.000000000 +0100
@@ -1125,7 +1125,7 @@ static unsigned tx_le_req(const struct s
count = sizeof(dma_addr_t) / sizeof(u32);
count += skb_shinfo(skb)->nr_frags * count;
@@ -101,9 +101,9 @@ diff -urp a/drivers/net/sky2.c b/drivers/net/sky2.c
++count;
if (skb->ip_summed == CHECKSUM_HW)
-diff -urp a/drivers/net/typhoon.c b/drivers/net/typhoon.c
---- a/drivers/net/typhoon.c 2006-07-25 14:41:00.931504603 +0100
-+++ b/drivers/net/typhoon.c 2006-07-25 14:36:00.314558683 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/net/typhoon.c 2006-09-19 13:59:46.000000000 +0100
@@ -805,7 +805,7 @@ typhoon_start_tx(struct sk_buff *skb, st
* If problems develop with TSO, check this first.
*/
@@ -122,9 +122,9 @@ diff -urp a/drivers/net/typhoon.c b/drivers/net/typhoon.c
first_txd->processFlags |= TYPHOON_TX_PF_TCP_SEGMENT;
first_txd->numDesc++;
-diff -urp a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
---- a/drivers/s390/net/qeth_main.c 2006-07-25 14:41:00.939503705 +0100
-+++ b/drivers/s390/net/qeth_main.c 2006-07-25 14:36:00.321557952 +0100
+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-19 13:59:20.000000000 +0100
++++ ./drivers/s390/net/qeth_main.c 2006-09-19 13:59:46.000000000 +0100
@@ -4454,7 +4454,7 @@ qeth_send_packet(struct qeth_card *card,
queue = card->qdio.out_qs
[qeth_get_priority_queue(card, skb, ipv, cast_type)];
@@ -144,9 +144,9 @@ diff -urp a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
card->perf_stats.large_send_bytes += skb->len;
card->perf_stats.large_send_cnt++;
}
-diff -urp a/include/linux/netdevice.h b/include/linux/netdevice.h
---- a/include/linux/netdevice.h 2006-07-25 14:41:00.940503593 +0100
-+++ b/include/linux/netdevice.h 2006-07-25 14:36:00.323557743 +0100
+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-19 13:59:20.000000000 +0100
++++ ./include/linux/netdevice.h 2006-09-19 13:59:46.000000000 +0100
@@ -541,6 +541,7 @@ struct packet_type {
struct net_device *);
struct sk_buff *(*gso_segment)(struct sk_buff *skb,
@@ -174,9 +174,9 @@ diff -urp a/include/linux/netdevice.h b/include/linux/netdevice.h
}
#endif /* __KERNEL__ */
-diff -urp a/include/linux/skbuff.h b/include/linux/skbuff.h
---- a/include/linux/skbuff.h 2006-07-25 14:41:00.941503481 +0100
-+++ b/include/linux/skbuff.h 2006-07-25 14:36:00.323557743 +0100
+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-19 13:59:20.000000000 +0100
++++ ./include/linux/skbuff.h 2006-09-19 13:59:46.000000000 +0100
@@ -1403,5 +1403,10 @@ static inline void nf_bridge_get(struct
static inline void nf_reset(struct sk_buff *skb) {}
#endif /* CONFIG_NETFILTER */
@@ -188,9 +188,9 @@ diff -urp a/include/linux/skbuff.h b/include/linux/skbuff.h
+
#endif /* __KERNEL__ */
#endif /* _LINUX_SKBUFF_H */
-diff -urp a/include/net/protocol.h b/include/net/protocol.h
---- a/include/net/protocol.h 2006-07-25 14:41:00.942503369 +0100
-+++ b/include/net/protocol.h 2006-07-25 14:36:00.324557639 +0100
+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-19 13:59:20.000000000 +0100
++++ ./include/net/protocol.h 2006-09-19 13:59:46.000000000 +0100
@@ -37,6 +37,7 @@
struct net_protocol {
int (*handler)(struct sk_buff *skb);
@@ -199,9 +199,9 @@ diff -urp a/include/net/protocol.h b/include/net/protocol.h
struct sk_buff *(*gso_segment)(struct sk_buff *skb,
int features);
int no_policy;
-diff -urp a/include/net/tcp.h b/include/net/tcp.h
---- a/include/net/tcp.h 2006-07-25 14:41:00.943503256 +0100
-+++ b/include/net/tcp.h 2006-07-25 14:36:00.325557534 +0100
+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-19 13:59:20.000000000 +0100
++++ ./include/net/tcp.h 2006-09-19 13:59:46.000000000 +0100
@@ -1063,6 +1063,7 @@ extern struct request_sock_ops tcp_reque
extern int tcp_v4_destroy_sock(struct sock *sk);
@@ -210,9 +210,9 @@ diff -urp a/include/net/tcp.h b/include/net/tcp.h
extern struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features);
#ifdef CONFIG_PROC_FS
-diff -urp a/net/bridge/br_forward.c b/net/bridge/br_forward.c
---- a/net/bridge/br_forward.c 2006-07-25 14:41:00.944503144 +0100
-+++ b/net/bridge/br_forward.c 2006-07-25 14:36:00.326557430 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/bridge/br_forward.c 2006-09-19 13:59:46.000000000 +0100
@@ -32,7 +32,7 @@ static inline int should_deliver(const s
int br_dev_queue_push_xmit(struct sk_buff *skb)
{
@@ -222,9 +222,9 @@ diff -urp a/net/bridge/br_forward.c b/net/bridge/br_forward.c
kfree_skb(skb);
else {
#ifdef CONFIG_BRIDGE_NETFILTER
-diff -urp a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
---- a/net/bridge/br_netfilter.c 2006-07-25 14:41:00.945503032 +0100
-+++ b/net/bridge/br_netfilter.c 2006-07-25 14:36:00.327557325 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/bridge/br_netfilter.c 2006-09-19 13:59:46.000000000 +0100
@@ -743,7 +743,7 @@ static int br_nf_dev_queue_xmit(struct s
{
if (skb->protocol == htons(ETH_P_IP) &&
@@ -234,9 +234,9 @@ diff -urp a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
return ip_fragment(skb, br_dev_queue_push_xmit);
else
return br_dev_queue_push_xmit(skb);
-diff -urp a/net/core/dev.c b/net/core/dev.c
---- a/net/core/dev.c 2006-07-25 14:41:00.947502808 +0100
-+++ b/net/core/dev.c 2006-07-25 14:36:00.329557116 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/core/dev.c 2006-09-19 13:59:46.000000000 +0100
@@ -1083,9 +1083,17 @@ int skb_checksum_help(struct sk_buff *sk
unsigned int csum;
int ret = 0, offset = skb->h.raw - skb->data;
@@ -304,9 +304,9 @@ diff -urp a/net/core/dev.c b/net/core/dev.c
segs = ptype->gso_segment(skb, features);
break;
}
-diff -urp a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
---- a/net/ipv4/af_inet.c 2006-07-25 14:41:00.952502247 +0100
-+++ b/net/ipv4/af_inet.c 2006-07-25 14:36:00.334556594 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/ipv4/af_inet.c 2006-09-19 13:59:46.000000000 +0100
@@ -1085,6 +1085,40 @@ int inet_sk_rebuild_header(struct sock *
EXPORT_SYMBOL(inet_sk_rebuild_header);
@@ -364,9 +364,9 @@ diff -urp a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
.gso_segment = inet_gso_segment,
};
-diff -urp a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
---- a/net/ipv4/ip_output.c 2006-07-25 14:41:00.953502135 +0100
-+++ b/net/ipv4/ip_output.c 2006-07-25 14:36:00.335556489 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/ipv4/ip_output.c 2006-09-19 13:59:46.000000000 +0100
@@ -210,7 +210,7 @@ static inline int ip_finish_output(struc
return dst_output(skb);
}
@@ -385,9 +385,9 @@ diff -urp a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
len = size;
else {
-diff -urp a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
---- a/net/ipv4/tcp_ipv4.c 2006-07-25 14:39:15.985080788 +0100
-+++ b/net/ipv4/tcp_ipv4.c 2006-07-25 14:36:00.339556071 +0100
+diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_ipv4.c ./net/ipv4/tcp_ipv4.c
+--- ../orig-linux-2.6.16.29/net/ipv4/tcp_ipv4.c 2006-09-12 19:02:10.000000000 +0100
++++ ./net/ipv4/tcp_ipv4.c 2006-09-19 13:59:46.000000000 +0100
@@ -495,6 +495,24 @@ void tcp_v4_send_check(struct sock *sk,
}
}
@@ -413,10 +413,10 @@ diff -urp a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
/*
* This routine will send an RST to the other tcp.
*
-diff -urp a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c
---- a/net/ipv4/xfrm4_output.c 2006-07-25 14:41:00.958501574 +0100
-+++ b/net/ipv4/xfrm4_output.c 2006-07-25 14:36:00.341555862 +0100
-@@ -189,7 +189,7 @@ static int xfrm4_output_finish(struct sk
+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:20.000000000 +0100
++++ ./net/ipv4/xfrm4_output.c 2006-09-19 13:59:46.000000000 +0100
+@@ -195,7 +195,7 @@ static int xfrm4_output_finish(struct sk
}
#endif
@@ -425,9 +425,9 @@ diff -urp a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c
return xfrm4_output_finish2(skb);
skb->protocol = htons(ETH_P_IP);
-diff -urp a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
---- a/net/ipv6/ip6_output.c 2006-07-25 14:41:00.959501461 +0100
-+++ b/net/ipv6/ip6_output.c 2006-07-25 14:36:00.341555862 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/ipv6/ip6_output.c 2006-09-19 13:59:46.000000000 +0100
@@ -147,7 +147,7 @@ static int ip6_output2(struct sk_buff *s
int ip6_output(struct sk_buff *skb)
@@ -437,9 +437,9 @@ diff -urp a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
dst_allfrag(skb->dst))
return ip6_fragment(skb, ip6_output2);
else
-diff -urp a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c
---- a/net/ipv6/xfrm6_output.c 2006-07-25 14:41:00.960501349 +0100
-+++ b/net/ipv6/xfrm6_output.c 2006-07-25 14:36:00.342555758 +0100
+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-19 13:59:20.000000000 +0100
++++ ./net/ipv6/xfrm6_output.c 2006-09-19 13:59:46.000000000 +0100
@@ -179,7 +179,7 @@ static int xfrm6_output_finish(struct sk
{
struct sk_buff *segs;
diff --git a/patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch b/patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch
index 0b3dfd2870..0c373223d8 100644
--- a/patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch
+++ b/patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch
@@ -1,6 +1,6 @@
-diff -urp a/include/linux/netdevice.h b/include/linux/netdevice.h
---- a/include/linux/netdevice.h 2006-07-25 15:16:39.314333975 +0100
-+++ b/include/linux/netdevice.h 2006-07-25 15:19:37.298320799 +0100
+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-19 13:59:46.000000000 +0100
++++ ./include/linux/netdevice.h 2006-09-19 14:05:28.000000000 +0100
@@ -930,10 +930,10 @@ static inline void netif_tx_lock_bh(stru
static inline int netif_tx_trylock(struct net_device *dev)
diff --git a/patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch b/patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch
index caefc4a1f5..86cd7a2b47 100644
--- a/patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch
+++ b/patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch
@@ -1,8 +1,6 @@
-508c578140642a641bb9b888369719c510ae2a00
-diff --git a/net/core/dev.c b/net/core/dev.c
-index e814a89..240773b 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
+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-19 13:59:46.000000000 +0100
++++ ./net/core/dev.c 2006-09-19 14:05:32.000000000 +0100
@@ -1087,11 +1087,6 @@ int skb_checksum_help(struct sk_buff *sk
goto out_set_summed;
diff --git a/patches/linux-2.6.16.13/pmd-shared.patch b/patches/linux-2.6.16.29/pmd-shared.patch
index 2af0a737f4..f8123a96ba 100644
--- a/patches/linux-2.6.16.13/pmd-shared.patch
+++ b/patches/linux-2.6.16.29/pmd-shared.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c ./arch/i386/mm/pageattr.c
---- ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/mm/pageattr.c 2006-05-04 17:41:40.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/mm/pageattr.c ./arch/i386/mm/pageattr.c
+--- ../orig-linux-2.6.16.29/arch/i386/mm/pageattr.c 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/mm/pageattr.c 2006-09-19 14:05:35.000000000 +0100
@@ -78,7 +78,7 @@ static void set_pmd_pte(pte_t *kpte, uns
unsigned long flags;
@@ -10,9 +10,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c ./arch/i386/mm/pa
return;
spin_lock_irqsave(&pgd_lock, flags);
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c ./arch/i386/mm/pgtable.c
---- ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/mm/pgtable.c 2006-05-04 17:41:40.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/mm/pgtable.c ./arch/i386/mm/pgtable.c
+--- ../orig-linux-2.6.16.29/arch/i386/mm/pgtable.c 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/mm/pgtable.c 2006-09-19 14:05:35.000000000 +0100
@@ -215,9 +215,10 @@ void pgd_ctor(void *pgd, kmem_cache_t *c
spin_lock_irqsave(&pgd_lock, flags);
}
@@ -85,9 +85,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c ./arch/i386/mm/pgt
/* in the non-PAE case, free_pgtables() clears user pgd entries */
kmem_cache_free(pgd_cache, pgd);
}
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h ./include/asm-i386/pgtable-2level-defs.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/pgtable-2level-defs.h 2006-05-04 17:41:40.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/pgtable-2level-defs.h ./include/asm-i386/pgtable-2level-defs.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/pgtable-2level-defs.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/pgtable-2level-defs.h 2006-09-19 14:05:35.000000000 +0100
@@ -1,6 +1,8 @@
#ifndef _I386_PGTABLE_2LEVEL_DEFS_H
#define _I386_PGTABLE_2LEVEL_DEFS_H
@@ -97,9 +97,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h ./
/*
* traditional i386 two-level paging structure:
*/
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-3level-defs.h ./include/asm-i386/pgtable-3level-defs.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-3level-defs.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/pgtable-3level-defs.h 2006-05-04 17:41:40.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/pgtable-3level-defs.h ./include/asm-i386/pgtable-3level-defs.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/pgtable-3level-defs.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/pgtable-3level-defs.h 2006-09-19 14:05:35.000000000 +0100
@@ -1,6 +1,8 @@
#ifndef _I386_PGTABLE_3LEVEL_DEFS_H
#define _I386_PGTABLE_3LEVEL_DEFS_H
diff --git a/patches/linux-2.6.16.13/rcu_needs_cpu.patch b/patches/linux-2.6.16.29/rcu_needs_cpu.patch
index f2d60f7b02..c8f3b79229 100644
--- a/patches/linux-2.6.16.13/rcu_needs_cpu.patch
+++ b/patches/linux-2.6.16.29/rcu_needs_cpu.patch
@@ -1,5 +1,17 @@
---- ../pristine-linux-2.6.16.13/kernel/rcupdate.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./kernel/rcupdate.c 2006-06-09 20:27:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/linux/rcupdate.h ./include/linux/rcupdate.h
+--- ../orig-linux-2.6.16.29/include/linux/rcupdate.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/linux/rcupdate.h 2006-09-19 14:05:39.000000000 +0100
+@@ -134,6 +134,7 @@ static inline void rcu_bh_qsctr_inc(int
+ }
+
+ extern int rcu_pending(int cpu);
++extern int rcu_needs_cpu(int cpu);
+
+ /**
+ * rcu_read_lock - mark the beginning of an RCU read-side critical section.
+diff -pruN ../orig-linux-2.6.16.29/kernel/rcupdate.c ./kernel/rcupdate.c
+--- ../orig-linux-2.6.16.29/kernel/rcupdate.c 2006-09-12 19:02:10.000000000 +0100
++++ ./kernel/rcupdate.c 2006-09-19 14:05:39.000000000 +0100
@@ -485,6 +485,20 @@ int rcu_pending(int cpu)
__rcu_pending(&rcu_bh_ctrlblk, &per_cpu(rcu_bh_data, cpu));
}
@@ -21,13 +33,3 @@
void rcu_check_callbacks(int cpu, int user)
{
if (user ||
---- ../pristine-linux-2.6.16.13/include/linux/rcupdate.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/linux/rcupdate.h 2006-06-09 20:28:57.000000000 +0100
-@@ -134,6 +134,7 @@ static inline void rcu_bh_qsctr_inc(int
- }
-
- extern int rcu_pending(int cpu);
-+extern int rcu_needs_cpu(int cpu);
-
- /**
- * rcu_read_lock - mark the beginning of an RCU read-side critical section.
diff --git a/patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch b/patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
index 0f318dee73..31788cc3bc 100644
--- a/patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
+++ b/patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/kernel/entry.S 2006-05-04 17:41:44.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/kernel/entry.S 2006-09-19 14:05:44.000000000 +0100
@@ -177,7 +177,7 @@ need_resched:
# sysenter call handler stub
diff --git a/patches/linux-2.6.16.13/series b/patches/linux-2.6.16.29/series
index 63774a0bd7..63774a0bd7 100644
--- a/patches/linux-2.6.16.13/series
+++ b/patches/linux-2.6.16.29/series
diff --git a/patches/linux-2.6.16.13/smp-alts.patch b/patches/linux-2.6.16.29/smp-alts.patch
index 0e0d597da9..fbcd4a29ac 100644
--- a/patches/linux-2.6.16.13/smp-alts.patch
+++ b/patches/linux-2.6.16.29/smp-alts.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/Kconfig ./arch/i386/Kconfig
---- ../pristine-linux-2.6.16.13/arch/i386/Kconfig 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/Kconfig 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/Kconfig ./arch/i386/Kconfig
+--- ../orig-linux-2.6.16.29/arch/i386/Kconfig 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/Kconfig 2006-09-19 14:05:48.000000000 +0100
@@ -202,6 +202,19 @@ config SMP
If you don't know what to do here, say N.
@@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/Kconfig ./arch/i386/Kconfig
config NR_CPUS
int "Maximum number of CPUs (2-255)"
range 2 255
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/kernel/Makefile 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/Makefile 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/kernel/Makefile 2006-09-19 14:05:48.000000000 +0100
@@ -37,6 +37,7 @@ obj-$(CONFIG_EFI) += efi.o efi_stub.o
obj-$(CONFIG_DOUBLEFAULT) += doublefault.o
obj-$(CONFIG_VM86) += vm86.o
@@ -32,9 +32,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile ./arch/i386/ker
EXTRA_AFLAGS := -traditional
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100
-+++ ./arch/i386/kernel/smpalts.c 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100
++++ ./arch/i386/kernel/smpalts.c 2006-09-19 14:05:48.000000000 +0100
@@ -0,0 +1,85 @@
+#include <linux/kernel.h>
+#include <asm/system.h>
@@ -121,9 +121,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c ./arch/i386/ke
+ asm volatile ("jmp 1f\n1:");
+ mb();
+}
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/kernel/smpboot.c 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/smpboot.c 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/kernel/smpboot.c 2006-09-19 14:05:48.000000000 +0100
@@ -1218,6 +1218,11 @@ static void __init smp_boot_cpus(unsigne
if (max_cpus <= cpucount+1)
continue;
@@ -148,9 +148,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c ./arch/i386/ke
local_irq_enable();
per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;
/* Unleash the CPU! */
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/kernel/vmlinux.lds.S 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/kernel/vmlinux.lds.S 2006-09-19 14:05:48.000000000 +0100
@@ -34,6 +34,13 @@ SECTIONS
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { *(__ex_table) }
__stop___ex_table = .;
@@ -165,9 +165,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S ./arch/i38
RODATA
/* writeable */
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h ./include/asm-i386/atomic.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/atomic.h 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/atomic.h ./include/asm-i386/atomic.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/atomic.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/atomic.h 2006-09-19 14:05:48.000000000 +0100
@@ -4,18 +4,13 @@
#include <linux/config.h>
#include <linux/compiler.h>
@@ -188,9 +188,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h ./include/asm-i
/*
* Make sure gcc doesn't try to be clever and move things around
* on us. We need to use _exactly_ the address the user gave us,
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h ./include/asm-i386/bitops.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/bitops.h 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/bitops.h ./include/asm-i386/bitops.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/bitops.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/bitops.h 2006-09-19 14:05:48.000000000 +0100
@@ -7,6 +7,7 @@
#include <linux/config.h>
@@ -266,9 +266,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h ./include/asm-i
"btcl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"Ir" (nr) : "memory");
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/futex.h ./include/asm-i386/futex.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/futex.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/futex.h 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/futex.h ./include/asm-i386/futex.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/futex.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/futex.h 2006-09-19 14:05:48.000000000 +0100
@@ -28,7 +28,7 @@
"1: movl %2, %0\n\
movl %0, %3\n" \
@@ -287,9 +287,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/futex.h ./include/asm-i3
oldval, uaddr, oparg);
break;
case FUTEX_OP_OR:
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/rwsem.h 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/rwsem.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/rwsem.h 2006-09-19 14:05:48.000000000 +0100
@@ -40,6 +40,7 @@
#include <linux/list.h>
@@ -370,9 +370,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h ./include/asm-i3
: "+r"(tmp), "=m"(sem->count)
: "r"(sem), "m"(sem->count)
: "memory");
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100
-+++ ./include/asm-i386/smp_alt.h 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100
++++ ./include/asm-i386/smp_alt.h 2006-09-19 14:05:48.000000000 +0100
@@ -0,0 +1,32 @@
+#ifndef __ASM_SMP_ALT_H__
+#define __ASM_SMP_ALT_H__
@@ -406,9 +406,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h ./include/asm-
+#endif
+
+#endif /* __ASM_SMP_ALT_H__ */
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/spinlock.h 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/spinlock.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/spinlock.h 2006-09-19 14:05:48.000000000 +0100
@@ -6,6 +6,7 @@
#include <asm/page.h>
#include <linux/config.h>
@@ -488,9 +488,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h ./include/asm
: "=m" (rw->lock) : : "memory");
}
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/system.h ./include/asm-i386/system.h
---- ../pristine-linux-2.6.16.13/include/asm-i386/system.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-i386/system.h 2006-05-04 17:41:45.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/system.h ./include/asm-i386/system.h
+--- ../orig-linux-2.6.16.29/include/asm-i386/system.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-i386/system.h 2006-09-19 14:05:48.000000000 +0100
@@ -5,7 +5,7 @@
#include <linux/kernel.h>
#include <asm/segment.h>
diff --git a/patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch b/patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch
index df0bc02e78..71a22017b5 100644
--- a/patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch
+++ b/patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.c ./drivers/char/tpm/tpm_atmel.c
---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.c 2006-06-26 18:05:03.000000000 -0400
-+++ ./drivers/char/tpm/tpm_atmel.c 2006-06-26 18:16:33.000000000 -0400
+diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.c ./drivers/char/tpm/tpm_atmel.c
+--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/char/tpm/tpm_atmel.c 2006-09-19 14:05:52.000000000 +0100
@@ -47,12 +47,12 @@ static int tpm_atml_recv(struct tpm_chip
return -EIO;
@@ -151,9 +151,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.c ./drivers/ch
err_unreg_drv:
driver_unregister(&atml_drv);
return rc;
-diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.h ./drivers/char/tpm/tpm_atmel.h
---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.h 2006-06-26 18:05:03.000000000 -0400
-+++ ./drivers/char/tpm/tpm_atmel.h 2006-06-26 18:16:33.000000000 -0400
+diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.h ./drivers/char/tpm/tpm_atmel.h
+--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.h 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/char/tpm/tpm_atmel.h 2006-09-19 14:05:52.000000000 +0100
@@ -28,13 +28,12 @@
#define atmel_request_region request_mem_region
#define atmel_release_region release_mem_region
@@ -214,9 +214,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.h ./drivers/ch
+ return ioport_map(*base, *region_size);
}
#endif
-diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_bios.c ./drivers/char/tpm/tpm_bios.c
---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_bios.c 2006-06-26 18:05:03.000000000 -0400
-+++ ./drivers/char/tpm/tpm_bios.c 2006-06-26 18:16:33.000000000 -0400
+diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_bios.c ./drivers/char/tpm/tpm_bios.c
+--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_bios.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/char/tpm/tpm_bios.c 2006-09-19 14:05:52.000000000 +0100
@@ -29,6 +29,11 @@
#define MAX_TEXT_EVENT 1000 /* Max event string length */
#define ACPI_TCPA_SIG "TCPA" /* 0x41504354 /'TCPA' */
@@ -469,9 +469,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_bios.c ./drivers/cha
return 0;
}
-diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_infineon.c ./drivers/char/tpm/tpm_infineon.c
---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_infineon.c 2006-06-26 18:05:03.000000000 -0400
-+++ ./drivers/char/tpm/tpm_infineon.c 2006-06-26 18:16:33.000000000 -0400
+diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_infineon.c ./drivers/char/tpm/tpm_infineon.c
+--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_infineon.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/char/tpm/tpm_infineon.c 2006-09-19 14:05:52.000000000 +0100
@@ -15,6 +15,7 @@
* License.
*/
@@ -684,9 +684,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_infineon.c ./drivers
-MODULE_VERSION("1.7");
+MODULE_VERSION("1.8");
MODULE_LICENSE("GPL");
-diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_nsc.c ./drivers/char/tpm/tpm_nsc.c
---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_nsc.c 2006-06-26 18:05:03.000000000 -0400
-+++ ./drivers/char/tpm/tpm_nsc.c 2006-06-26 18:16:33.000000000 -0400
+diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_nsc.c ./drivers/char/tpm/tpm_nsc.c
+--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_nsc.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/char/tpm/tpm_nsc.c 2006-09-19 14:05:52.000000000 +0100
@@ -71,7 +71,7 @@ static int wait_for_stat(struct tpm_chip
unsigned long stop;
@@ -874,9 +874,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_nsc.c ./drivers/char
err_unreg_dev:
platform_device_unregister(pdev);
err_free_dev:
-diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_tis.c ./drivers/char/tpm/tpm_tis.c
---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_tis.c 1969-12-31 19:00:00.000000000 -0500
-+++ ./drivers/char/tpm/tpm_tis.c 2006-06-26 18:16:33.000000000 -0400
+diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_tis.c ./drivers/char/tpm/tpm_tis.c
+--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_tis.c 1970-01-01 01:00:00.000000000 +0100
++++ ./drivers/char/tpm/tpm_tis.c 2006-09-19 14:05:52.000000000 +0100
@@ -0,0 +1,665 @@
+/*
+ * Copyright (C) 2005, 2006 IBM Corporation
@@ -1543,4 +1543,3 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_tis.c ./drivers/char
+MODULE_DESCRIPTION("TPM Driver");
+MODULE_VERSION("2.0");
+MODULE_LICENSE("GPL");
-
diff --git a/patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch b/patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch
index 208573b424..3dcae42ffd 100644
--- a/patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch
+++ b/patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch
@@ -1,7 +1,6 @@
-
-diff -r 4b7cd997c08f include/linux/elfnote.h
---- a/include/linux/elfnote.h Wed Aug 23 11:48:46 2006 +0100
-+++ b/include/linux/elfnote.h Wed Aug 23 12:44:27 2006 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/linux/elfnote.h ./include/linux/elfnote.h
+--- ../orig-linux-2.6.16.29/include/linux/elfnote.h 2006-09-19 14:06:10.000000000 +0100
++++ ./include/linux/elfnote.h 2006-09-19 14:06:20.000000000 +0100
@@ -31,22 +31,24 @@
/*
* Generate a structure with the same shape as Elf{32,64}_Nhdr (which
diff --git a/patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch b/patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch
index 1bff3be41e..0ac84e4aca 100644
--- a/patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch
+++ b/patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch
@@ -1,6 +1,6 @@
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/kernel/entry.S 2006-05-04 17:41:49.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S 2006-09-19 14:05:44.000000000 +0100
++++ ./arch/i386/kernel/entry.S 2006-09-19 14:05:56.000000000 +0100
@@ -406,7 +406,7 @@ vector=0
ENTRY(irq_entries_start)
.rept NR_IRQS
@@ -19,9 +19,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kern
SAVE_ALL \
movl %esp,%eax; \
call smp_/**/name; \
-diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c ./arch/i386/kernel/irq.c
---- ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/i386/kernel/irq.c 2006-05-04 17:41:49.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/irq.c ./arch/i386/kernel/irq.c
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/irq.c 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/i386/kernel/irq.c 2006-09-19 14:05:56.000000000 +0100
@@ -53,8 +53,8 @@ static union irq_ctx *softirq_ctx[NR_CPU
*/
fastcall unsigned int do_IRQ(struct pt_regs *regs)
@@ -33,10 +33,10 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c ./arch/i386/kernel
#ifdef CONFIG_4KSTACKS
union irq_ctx *curctx, *irqctx;
u32 *isp;
-diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S ./arch/x86_64/kernel/entry.S
---- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/x86_64/kernel/entry.S 2006-05-04 17:41:49.000000000 +0100
-@@ -601,7 +601,7 @@ retint_kernel:
+diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/entry.S ./arch/x86_64/kernel/entry.S
+--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/entry.S 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/x86_64/kernel/entry.S 2006-09-19 14:05:56.000000000 +0100
+@@ -596,7 +596,7 @@ retint_kernel:
*/
.macro apicinterrupt num,func
INTR_FRAME
@@ -45,9 +45,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S ./arch/x86_64/
CFI_ADJUST_CFA_OFFSET 8
interrupt \func
jmp ret_from_intr
-diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c ./arch/x86_64/kernel/irq.c
---- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/x86_64/kernel/irq.c 2006-05-04 17:41:49.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/irq.c ./arch/x86_64/kernel/irq.c
+--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/irq.c 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/x86_64/kernel/irq.c 2006-09-19 14:05:56.000000000 +0100
@@ -96,8 +96,8 @@ skip:
*/
asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
@@ -59,9 +59,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c ./arch/x86_64/ke
exit_idle();
irq_enter();
-diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c ./arch/x86_64/kernel/smp.c
---- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./arch/x86_64/kernel/smp.c 2006-05-04 17:41:49.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/smp.c ./arch/x86_64/kernel/smp.c
+--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/smp.c 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/x86_64/kernel/smp.c 2006-09-19 14:05:56.000000000 +0100
@@ -135,10 +135,10 @@ asmlinkage void smp_invalidate_interrupt
cpu = smp_processor_id();
@@ -75,9 +75,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c ./arch/x86_64/ke
f = &per_cpu(flush_state, sender);
if (!cpu_isset(cpu, f->flush_cpumask))
-diff -pruN ../pristine-linux-2.6.16.13/include/asm-x86_64/hw_irq.h ./include/asm-x86_64/hw_irq.h
---- ../pristine-linux-2.6.16.13/include/asm-x86_64/hw_irq.h 2006-05-02 22:38:44.000000000 +0100
-+++ ./include/asm-x86_64/hw_irq.h 2006-05-04 17:41:49.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/include/asm-x86_64/hw_irq.h ./include/asm-x86_64/hw_irq.h
+--- ../orig-linux-2.6.16.29/include/asm-x86_64/hw_irq.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-x86_64/hw_irq.h 2006-09-19 14:05:56.000000000 +0100
@@ -127,7 +127,7 @@ asmlinkage void IRQ_NAME(nr); \
__asm__( \
"\n.p2align\n" \
diff --git a/patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch b/patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
index 6f2422f517..1047ee417c 100644
--- a/patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
+++ b/patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
@@ -1,37 +1,7 @@
-Taken from 2.6.18-rc4-mm1.
-
-From: Jeremy Fitzhardinge <jeremy@xensource.com>
-
-This patch will pack any .note.* section into a PT_NOTE segment in the output
-file.
-
-To do this, we tell ld that we need a PT_NOTE segment. This requires us to
-start explicitly mapping sections to segments, so we also need to explicitly
-create PT_LOAD segments for text and data, and map the sections to them
-appropriately. Fortunately, each section will default to its previous
-section's segment, so it doesn't take many changes to vmlinux.lds.S.
-
-This only changes i386 for now, but I presume the corresponding changes for
-other architectures will be as simple.
-
-This change also adds <linux/elfnote.h>, which defines C and Assembler macros
-for actually creating ELF notes.
-
-Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
-Cc: Eric W. Biederman <ebiederm@xmission.com>
-Cc: Hollis Blanchard <hollisb@us.ibm.com>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
----
-
- arch/i386/kernel/vmlinux.lds.S | 12 +++
- include/asm-generic/vmlinux.lds.h | 3
- include/linux/elfnote.h | 88 ++++++++++++++++++++++++++++
- 3 files changed, 101 insertions(+), 2 deletions(-)
-
-diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux arch/i386/kernel/vmlinux.lds.S
---- a/arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux
-+++ a/arch/i386/kernel/vmlinux.lds.S
-@@ -13,6 +13,12 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386"
+diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S
+--- ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S 2006-09-19 14:05:48.000000000 +0100
++++ ./arch/i386/kernel/vmlinux.lds.S 2006-09-19 14:06:10.000000000 +0100
+@@ -12,6 +12,12 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386"
OUTPUT_ARCH(i386)
ENTRY(phys_startup_32)
jiffies = jiffies_64;
@@ -44,7 +14,7 @@ diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-se
SECTIONS
{
. = __KERNEL_START;
-@@ -26,7 +32,7 @@ SECTIONS
+@@ -25,7 +31,7 @@ SECTIONS
KPROBES_TEXT
*(.fixup)
*(.gnu.warning)
@@ -53,7 +23,7 @@ diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-se
_etext = .; /* End of text section */
-@@ -50,7 +56,7 @@ SECTIONS
+@@ -47,7 +53,7 @@ SECTIONS
.data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */
*(.data)
CONSTRUCTORS
@@ -62,26 +32,26 @@ diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-se
. = ALIGN(4096);
__nosave_begin = .;
-@@ -186,4 +192,6 @@ SECTIONS
+@@ -154,4 +160,6 @@ SECTIONS
STABS_DEBUG
DWARF_DEBUG
+
+ NOTES
}
-diff -puN include/asm-generic/vmlinux.lds.h~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux include/asm-generic/vmlinux.lds.h
---- a/include/asm-generic/vmlinux.lds.h~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux
-+++ a/include/asm-generic/vmlinux.lds.h
-@@ -194,3 +194,6 @@
+diff -pruN ../orig-linux-2.6.16.29/include/asm-generic/vmlinux.lds.h ./include/asm-generic/vmlinux.lds.h
+--- ../orig-linux-2.6.16.29/include/asm-generic/vmlinux.lds.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/asm-generic/vmlinux.lds.h 2006-09-19 14:06:10.000000000 +0100
+@@ -152,3 +152,6 @@
.stab.index 0 : { *(.stab.index) } \
.stab.indexstr 0 : { *(.stab.indexstr) } \
.comment 0 : { *(.comment) }
+
+#define NOTES \
+ .notes : { *(.note.*) } :note
-diff -puN /dev/null include/linux/elfnote.h
---- /dev/null
-+++ a/include/linux/elfnote.h
+diff -pruN ../orig-linux-2.6.16.29/include/linux/elfnote.h ./include/linux/elfnote.h
+--- ../orig-linux-2.6.16.29/include/linux/elfnote.h 1970-01-01 01:00:00.000000000 +0100
++++ ./include/linux/elfnote.h 2006-09-19 14:06:10.000000000 +0100
@@ -0,0 +1,88 @@
+#ifndef _LINUX_ELFNOTE_H
+#define _LINUX_ELFNOTE_H
@@ -171,4 +141,3 @@ diff -puN /dev/null include/linux/elfnote.h
+#endif /* __ASSEMBLER__ */
+
+#endif /* _LINUX_ELFNOTE_H */
-_
diff --git a/patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch b/patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
index 9c0cd81d76..7e44d833b4 100644
--- a/patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
+++ b/patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
@@ -1,6 +1,7 @@
---- a/arch/x86_64/kernel/vmlinux.lds.S
-+++ b/arch/x86_64/kernel/vmlinux.lds.S
-@@ -13,6 +13,12 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86
+diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/vmlinux.lds.S ./arch/x86_64/kernel/vmlinux.lds.S
+--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/vmlinux.lds.S 2006-09-12 19:02:10.000000000 +0100
++++ ./arch/x86_64/kernel/vmlinux.lds.S 2006-09-19 14:06:15.000000000 +0100
+@@ -14,6 +14,12 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86
OUTPUT_ARCH(i386:x86-64)
ENTRY(phys_startup_64)
jiffies_64 = jiffies;
@@ -13,7 +14,7 @@
SECTIONS
{
. = __START_KERNEL;
-@@ -31,7 +37,7 @@ SECTIONS
+@@ -26,7 +32,7 @@ SECTIONS
KPROBES_TEXT
*(.fixup)
*(.gnu.warning)
@@ -22,7 +23,7 @@
/* out-of-line lock text */
.text.lock : AT(ADDR(.text.lock) - LOAD_OFFSET) { *(.text.lock) }
-@@ -57,17 +63,10 @@ #endif
+@@ -43,17 +49,10 @@ SECTIONS
.data : AT(ADDR(.data) - LOAD_OFFSET) {
*(.data)
CONSTRUCTORS
@@ -41,7 +42,7 @@
. = ALIGN(PAGE_SIZE);
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
-@@ -89,7 +88,7 @@ #define VVIRT_OFFSET (VSYSCALL_ADDR - VS
+@@ -75,7 +74,7 @@ SECTIONS
#define VVIRT(x) (ADDR(x) - VVIRT_OFFSET)
. = VSYSCALL_ADDR;
@@ -50,7 +51,7 @@
__vsyscall_0 = VSYSCALL_VIRT_ADDR;
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
-@@ -132,7 +131,7 @@ #undef VVIRT
+@@ -118,7 +117,7 @@ SECTIONS
. = ALIGN(8192); /* init_task */
.data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
*(.data.init_task)
@@ -59,7 +60,7 @@
. = ALIGN(4096);
.data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
-@@ -222,6 +221,14 @@ SECTIONS
+@@ -188,6 +187,14 @@ SECTIONS
. = ALIGN(4096);
__nosave_end = .;
@@ -74,7 +75,7 @@
_end = . ;
/* Sections to be discarded */
-@@ -235,4 +242,6 @@ #endif
+@@ -201,4 +208,6 @@ SECTIONS
STABS_DEBUG
DWARF_DEBUG
diff --git a/patches/linux-2.6.16.13/xen-hotplug.patch b/patches/linux-2.6.16.29/xen-hotplug.patch
index 529cd568c1..06abdda41b 100644
--- a/patches/linux-2.6.16.13/xen-hotplug.patch
+++ b/patches/linux-2.6.16.29/xen-hotplug.patch
@@ -1,5 +1,6 @@
---- ../pristine-linux-2.6.16.13/fs/proc/proc_misc.c 2006-05-02 22:38:44.000000000 +0100
-+++ ./fs/proc/proc_misc.c 2006-05-22 15:29:34.000000000 +0100
+diff -pruN ../orig-linux-2.6.16.29/fs/proc/proc_misc.c ./fs/proc/proc_misc.c
+--- ../orig-linux-2.6.16.29/fs/proc/proc_misc.c 2006-09-12 19:02:10.000000000 +0100
++++ ./fs/proc/proc_misc.c 2006-09-19 14:06:00.000000000 +0100
@@ -433,7 +433,7 @@ static int show_stat(struct seq_file *p,
(unsigned long long)cputime64_to_clock_t(irq),
(unsigned long long)cputime64_to_clock_t(softirq),
diff --git a/patches/linux-2.6.16.13/xenoprof-generic.patch b/patches/linux-2.6.16.29/xenoprof-generic.patch
index 66b17ba2f3..6521fd7c7d 100644
--- a/patches/linux-2.6.16.13/xenoprof-generic.patch
+++ b/patches/linux-2.6.16.29/xenoprof-generic.patch
@@ -1,6 +1,6 @@
-diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.c
---- orig/drivers/oprofile/buffer_sync.c 2006-05-02 14:38:44.000000000 -0700
-+++ new/drivers/oprofile/buffer_sync.c 2006-07-06 18:19:05.000000000 -0700
+diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/buffer_sync.c ./drivers/oprofile/buffer_sync.c
+--- ../orig-linux-2.6.16.29/drivers/oprofile/buffer_sync.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/oprofile/buffer_sync.c 2006-09-19 14:06:05.000000000 +0100
@@ -6,6 +6,10 @@
*
* @author John Levon <levon@movementarian.org>
@@ -12,7 +12,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.
* This is the core of the buffer management. Each
* CPU buffer is processed and entered into the
* global event buffer. Such processing is necessary
-@@ -275,15 +279,31 @@
+@@ -275,15 +279,31 @@ static void add_cpu_switch(int i)
last_cookie = INVALID_COOKIE;
}
@@ -50,7 +50,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.
static void
add_user_ctx_switch(struct task_struct const * task, unsigned long cookie)
{
-@@ -348,9 +368,9 @@
+@@ -348,9 +368,9 @@ static int add_us_sample(struct mm_struc
* for later lookup from userspace.
*/
static int
@@ -62,7 +62,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.
add_sample_entry(s->eip, s->event);
return 1;
} else if (mm) {
-@@ -496,10 +516,11 @@
+@@ -496,10 +516,11 @@ void sync_buffer(int cpu)
struct mm_struct *mm = NULL;
struct task_struct * new;
unsigned long cookie = 0;
@@ -75,7 +75,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.
down(&buffer_sem);
-@@ -512,16 +533,18 @@
+@@ -512,16 +533,18 @@ void sync_buffer(int cpu)
for (i = 0; i < available; ++i) {
struct op_sample * s = &cpu_buf->buffer[cpu_buf->tail_pos];
@@ -99,7 +99,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.
} else {
struct mm_struct * oldmm = mm;
-@@ -535,11 +558,16 @@
+@@ -535,11 +558,16 @@ void sync_buffer(int cpu)
add_user_ctx_switch(new, cookie);
}
} else {
@@ -121,9 +121,9 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.
}
}
}
-diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
---- orig/drivers/oprofile/cpu_buffer.c 2006-05-02 14:38:44.000000000 -0700
-+++ new/drivers/oprofile/cpu_buffer.c 2006-07-06 18:19:05.000000000 -0700
+diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.c ./drivers/oprofile/cpu_buffer.c
+--- ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/oprofile/cpu_buffer.c 2006-09-19 14:06:05.000000000 +0100
@@ -6,6 +6,10 @@
*
* @author John Levon <levon@movementarian.org>
@@ -135,7 +135,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
* Each CPU has a local buffer that stores PC value/event
* pairs. We also log context switches when we notice them.
* Eventually each CPU's buffer is processed into the global
-@@ -34,6 +38,8 @@
+@@ -34,6 +38,8 @@ static void wq_sync_buffer(void *);
#define DEFAULT_TIMER_EXPIRE (HZ / 10)
static int work_enabled;
@@ -144,7 +144,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
void free_cpu_buffers(void)
{
int i;
-@@ -58,7 +64,7 @@
+@@ -58,7 +64,7 @@ int alloc_cpu_buffers(void)
goto fail;
b->last_task = NULL;
@@ -153,7 +153,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
b->tracing = 0;
b->buffer_size = buffer_size;
b->tail_pos = 0;
-@@ -114,7 +120,7 @@
+@@ -114,7 +120,7 @@ void cpu_buffer_reset(struct oprofile_cp
* collected will populate the buffer with proper
* values to initialize the buffer
*/
@@ -162,7 +162,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
cpu_buf->last_task = NULL;
}
-@@ -164,13 +170,13 @@
+@@ -164,13 +170,13 @@ add_code(struct oprofile_cpu_buffer * bu
* because of the head/tail separation of the writer and reader
* of the CPU buffer.
*
@@ -180,7 +180,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
{
struct task_struct * task;
-@@ -181,18 +187,18 @@
+@@ -181,18 +187,18 @@ static int log_sample(struct oprofile_cp
return 0;
}
@@ -206,7 +206,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
cpu_buf->last_task = task;
add_code(cpu_buf, (unsigned long)task);
}
-@@ -269,6 +275,25 @@
+@@ -269,6 +275,25 @@ void oprofile_add_trace(unsigned long pc
add_sample(cpu_buf, pc, 0);
}
@@ -232,10 +232,10 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
/*
* This serves to avoid cpu buffer overflow, and makes sure
* the task mortuary progresses
-diff -Naur orig/drivers/oprofile/cpu_buffer.h new/drivers/oprofile/cpu_buffer.h
---- orig/drivers/oprofile/cpu_buffer.h 2006-05-02 14:38:44.000000000 -0700
-+++ new/drivers/oprofile/cpu_buffer.h 2006-07-06 18:19:05.000000000 -0700
-@@ -36,7 +36,7 @@
+diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.h ./drivers/oprofile/cpu_buffer.h
+--- ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.h 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/oprofile/cpu_buffer.h 2006-09-19 14:06:05.000000000 +0100
+@@ -36,7 +36,7 @@ struct oprofile_cpu_buffer {
volatile unsigned long tail_pos;
unsigned long buffer_size;
struct task_struct * last_task;
@@ -244,7 +244,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.h new/drivers/oprofile/cpu_buffer.h
int tracing;
struct op_sample * buffer;
unsigned long sample_received;
-@@ -51,7 +51,10 @@
+@@ -51,7 +51,10 @@ extern struct oprofile_cpu_buffer cpu_bu
void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf);
/* transient events for the CPU buffer -> event buffer */
@@ -257,10 +257,10 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.h new/drivers/oprofile/cpu_buffer.h
+#define CPU_DOMAIN_SWITCH 4
#endif /* OPROFILE_CPU_BUFFER_H */
-diff -Naur orig/drivers/oprofile/event_buffer.h new/drivers/oprofile/event_buffer.h
---- orig/drivers/oprofile/event_buffer.h 2006-05-02 14:38:44.000000000 -0700
-+++ new/drivers/oprofile/event_buffer.h 2006-07-06 18:19:05.000000000 -0700
-@@ -29,15 +29,20 @@
+diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/event_buffer.h ./drivers/oprofile/event_buffer.h
+--- ../orig-linux-2.6.16.29/drivers/oprofile/event_buffer.h 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/oprofile/event_buffer.h 2006-09-19 14:06:05.000000000 +0100
+@@ -29,15 +29,20 @@ void wake_up_buffer_waiter(void);
#define CPU_SWITCH_CODE 2
#define COOKIE_SWITCH_CODE 3
#define KERNEL_ENTER_SWITCH_CODE 4
@@ -282,9 +282,9 @@ diff -Naur orig/drivers/oprofile/event_buffer.h new/drivers/oprofile/event_buffe
/* add data to the event buffer */
void add_event_entry(unsigned long data);
-diff -Naur orig/drivers/oprofile/oprof.c new/drivers/oprofile/oprof.c
---- orig/drivers/oprofile/oprof.c 2006-05-02 14:38:44.000000000 -0700
-+++ new/drivers/oprofile/oprof.c 2006-07-06 18:19:05.000000000 -0700
+diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/oprof.c ./drivers/oprofile/oprof.c
+--- ../orig-linux-2.6.16.29/drivers/oprofile/oprof.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/oprofile/oprof.c 2006-09-19 14:06:05.000000000 +0100
@@ -5,6 +5,10 @@
* @remark Read the file COPYING
*
@@ -305,7 +305,7 @@ diff -Naur orig/drivers/oprofile/oprof.c new/drivers/oprofile/oprof.c
struct oprofile_operations oprofile_ops;
unsigned long oprofile_started;
-@@ -33,6 +37,32 @@
+@@ -33,6 +37,32 @@ static DECLARE_MUTEX(start_sem);
*/
static int timer = 0;
@@ -338,10 +338,10 @@ diff -Naur orig/drivers/oprofile/oprof.c new/drivers/oprofile/oprof.c
int oprofile_setup(void)
{
int err;
-diff -Naur orig/drivers/oprofile/oprof.h new/drivers/oprofile/oprof.h
---- orig/drivers/oprofile/oprof.h 2006-05-02 14:38:44.000000000 -0700
-+++ new/drivers/oprofile/oprof.h 2006-07-06 18:19:05.000000000 -0700
-@@ -35,5 +35,8 @@
+diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/oprof.h ./drivers/oprofile/oprof.h
+--- ../orig-linux-2.6.16.29/drivers/oprofile/oprof.h 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/oprofile/oprof.h 2006-09-19 14:06:05.000000000 +0100
+@@ -35,5 +35,8 @@ void oprofile_create_files(struct super_
void oprofile_timer_init(struct oprofile_operations * ops);
int oprofile_set_backtrace(unsigned long depth);
@@ -350,9 +350,9 @@ diff -Naur orig/drivers/oprofile/oprof.h new/drivers/oprofile/oprof.h
+int oprofile_set_passive(int passive_domains[], unsigned int pdomains);
#endif /* OPROF_H */
-diff -Naur orig/drivers/oprofile/oprofile_files.c new/drivers/oprofile/oprofile_files.c
---- orig/drivers/oprofile/oprofile_files.c 2006-05-02 14:38:44.000000000 -0700
-+++ new/drivers/oprofile/oprofile_files.c 2006-07-06 18:19:05.000000000 -0700
+diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/oprofile_files.c ./drivers/oprofile/oprofile_files.c
+--- ../orig-linux-2.6.16.29/drivers/oprofile/oprofile_files.c 2006-09-12 19:02:10.000000000 +0100
++++ ./drivers/oprofile/oprofile_files.c 2006-09-19 14:06:05.000000000 +0100
@@ -5,15 +5,21 @@
* @remark Read the file COPYING
*
@@ -376,7 +376,7 @@ diff -Naur orig/drivers/oprofile/oprofile_files.c new/drivers/oprofile/oprofile_
unsigned long fs_buffer_size = 131072;
unsigned long fs_cpu_buffer_size = 8192;
unsigned long fs_buffer_watershed = 32768; /* FIXME: tune */
-@@ -117,11 +123,202 @@
+@@ -117,11 +123,202 @@ static ssize_t dump_write(struct file *
static struct file_operations dump_fops = {
.write = dump_write,
};
@@ -580,9 +580,9 @@ diff -Naur orig/drivers/oprofile/oprofile_files.c new/drivers/oprofile/oprofile_
oprofilefs_create_file(sb, root, "buffer", &event_buffer_fops);
oprofilefs_create_ulong(sb, root, "buffer_size", &fs_buffer_size);
oprofilefs_create_ulong(sb, root, "buffer_watershed", &fs_buffer_watershed);
-diff -Naur orig/include/linux/oprofile.h new/include/linux/oprofile.h
---- orig/include/linux/oprofile.h 2006-05-02 14:38:44.000000000 -0700
-+++ new/include/linux/oprofile.h 2006-07-06 18:19:31.000000000 -0700
+diff -pruN ../orig-linux-2.6.16.29/include/linux/oprofile.h ./include/linux/oprofile.h
+--- ../orig-linux-2.6.16.29/include/linux/oprofile.h 2006-09-12 19:02:10.000000000 +0100
++++ ./include/linux/oprofile.h 2006-09-19 14:06:05.000000000 +0100
@@ -16,6 +16,8 @@
#include <linux/types.h>
#include <linux/spinlock.h>
@@ -592,7 +592,7 @@ diff -Naur orig/include/linux/oprofile.h new/include/linux/oprofile.h
struct super_block;
struct dentry;
-@@ -27,6 +29,11 @@
+@@ -27,6 +29,11 @@ struct oprofile_operations {
/* create any necessary configuration files in the oprofile fs.
* Optional. */
int (*create_files)(struct super_block * sb, struct dentry * root);
@@ -604,7 +604,7 @@ diff -Naur orig/include/linux/oprofile.h new/include/linux/oprofile.h
/* Do any necessary interrupt setup. Optional. */
int (*setup)(void);
/* Do any necessary interrupt shutdown. Optional. */
-@@ -68,6 +75,8 @@
+@@ -68,6 +75,8 @@ void oprofile_add_pc(unsigned long pc, i
/* add a backtrace entry, to be called from the ->backtrace callback */
void oprofile_add_trace(unsigned long eip);