summaryrefslogtreecommitdiff
path: root/target/linux/patches
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/patches')
-rw-r--r--target/linux/patches/2.6.32.67/cris-header.patch (renamed from target/linux/patches/2.6.32.65/cris-header.patch)0
-rw-r--r--target/linux/patches/2.6.32.67/cris-initramfs.patch (renamed from target/linux/patches/2.6.32.65/cris-initramfs.patch)0
-rw-r--r--target/linux/patches/3.10.81/bsd-compatibility.patch (renamed from target/linux/patches/3.10.75/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.10.81/headers-install.patch (renamed from target/linux/patches/3.10.75/headers-install.patch)0
-rw-r--r--target/linux/patches/3.10.81/mkpiggy.patch (renamed from target/linux/patches/3.10.75/mkpiggy.patch)0
-rw-r--r--target/linux/patches/3.10.81/relocs.patch (renamed from target/linux/patches/3.10.75/relocs.patch)0
-rw-r--r--target/linux/patches/3.10.81/sgidefs.patch (renamed from target/linux/patches/3.10.75/sgidefs.patch)0
-rw-r--r--target/linux/patches/3.10.81/sortext.patch (renamed from target/linux/patches/3.10.75/sortext.patch)0
-rw-r--r--target/linux/patches/3.10.81/startup.patch (renamed from target/linux/patches/3.10.75/startup.patch)0
-rw-r--r--target/linux/patches/3.10.81/yaffs2.patch (renamed from target/linux/patches/3.10.75/yaffs2.patch)0
-rw-r--r--target/linux/patches/3.12.40/vga-cons-default-off.patch12
-rw-r--r--target/linux/patches/3.12.44/bsd-compatibility.patch (renamed from target/linux/patches/3.12.40/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.12.44/cleankernel.patch (renamed from target/linux/patches/3.12.40/cleankernel.patch)0
-rw-r--r--target/linux/patches/3.12.44/defaults.patch (renamed from target/linux/patches/3.12.40/defaults.patch)0
-rw-r--r--target/linux/patches/3.12.44/disable-netfilter.patch (renamed from target/linux/patches/3.12.40/disable-netfilter.patch)0
-rw-r--r--target/linux/patches/3.12.44/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.12.40/export-symbol-for-exmap.patch)0
-rw-r--r--target/linux/patches/3.12.44/gemalto.patch (renamed from target/linux/patches/3.12.40/gemalto.patch)0
-rw-r--r--target/linux/patches/3.12.44/lemote-rfkill.patch (renamed from target/linux/patches/3.12.40/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.12.44/microblaze-ethernet.patch (renamed from target/linux/patches/3.12.40/microblaze-ethernet.patch)0
-rw-r--r--target/linux/patches/3.12.44/microblaze-setup.patch (renamed from target/linux/patches/3.12.40/microblaze-setup.patch)0
-rw-r--r--target/linux/patches/3.12.44/mips-lzo-fix.patch (renamed from target/linux/patches/3.12.40/mips-lzo-fix.patch)0
-rw-r--r--target/linux/patches/3.12.44/mkpiggy.patch (renamed from target/linux/patches/3.12.40/mkpiggy.patch)0
-rw-r--r--target/linux/patches/3.12.44/mtd-rootfs.patch (renamed from target/linux/patches/3.12.40/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/3.12.44/non-static.patch (renamed from target/linux/patches/3.12.40/non-static.patch)0
-rw-r--r--target/linux/patches/3.12.44/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.12.40/ppc64-missing-zlib.patch)0
-rw-r--r--target/linux/patches/3.12.44/regmap-bool.patch (renamed from target/linux/patches/3.12.40/regmap-bool.patch)0
-rw-r--r--target/linux/patches/3.12.44/relocs.patch (renamed from target/linux/patches/3.12.40/relocs.patch)0
-rw-r--r--target/linux/patches/3.12.44/sgidefs.patch (renamed from target/linux/patches/3.12.40/sgidefs.patch)0
-rw-r--r--target/linux/patches/3.12.44/sortext.patch (renamed from target/linux/patches/3.12.40/sortext.patch)0
-rw-r--r--target/linux/patches/3.12.44/startup.patch (renamed from target/linux/patches/3.12.40/startup.patch)0
-rw-r--r--target/linux/patches/3.12.44/usb-defaults-off.patch (renamed from target/linux/patches/3.12.40/usb-defaults-off.patch)0
-rw-r--r--target/linux/patches/3.12.44/wlan-cf.patch (renamed from target/linux/patches/3.12.40/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.12.44/xargs.patch (renamed from target/linux/patches/3.12.40/xargs.patch)0
-rw-r--r--target/linux/patches/3.12.44/yaffs2.patch (renamed from target/linux/patches/3.12.40/yaffs2.patch)0
-rw-r--r--target/linux/patches/3.12.44/zlib-inflate.patch (renamed from target/linux/patches/3.12.40/zlib-inflate.patch)0
-rw-r--r--target/linux/patches/3.14.45/bsd-compatibility.patch (renamed from target/linux/patches/3.14.43/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.14.45/cleankernel.patch (renamed from target/linux/patches/3.14.43/cleankernel.patch)0
-rw-r--r--target/linux/patches/3.14.45/defaults.patch (renamed from target/linux/patches/3.14.43/defaults.patch)0
-rw-r--r--target/linux/patches/3.14.45/disable-netfilter.patch (renamed from target/linux/patches/3.14.43/disable-netfilter.patch)0
-rw-r--r--target/linux/patches/3.14.45/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.14.43/export-symbol-for-exmap.patch)0
-rw-r--r--target/linux/patches/3.14.45/fblogo.patch (renamed from target/linux/patches/3.14.43/fblogo.patch)0
-rw-r--r--target/linux/patches/3.14.45/gemalto.patch (renamed from target/linux/patches/3.14.43/gemalto.patch)0
-rw-r--r--target/linux/patches/3.14.45/initramfs-nosizelimit.patch (renamed from target/linux/patches/3.14.43/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/3.14.45/lemote-rfkill.patch (renamed from target/linux/patches/3.14.43/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.14.45/microblaze-axi.patch (renamed from target/linux/patches/3.14.43/microblaze-axi.patch)0
-rw-r--r--target/linux/patches/3.14.45/microblaze-ethernet.patch (renamed from target/linux/patches/3.14.43/microblaze-ethernet.patch)0
-rw-r--r--target/linux/patches/3.14.45/mkpiggy.patch (renamed from target/linux/patches/3.14.43/mkpiggy.patch)0
-rw-r--r--target/linux/patches/3.14.45/mptcp.patch (renamed from target/linux/patches/3.14.43/mptcp.patch)970
-rw-r--r--target/linux/patches/3.14.45/mtd-rootfs.patch (renamed from target/linux/patches/3.14.43/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/3.14.45/nfsv3-tcp.patch (renamed from target/linux/patches/3.14.43/nfsv3-tcp.patch)0
-rw-r--r--target/linux/patches/3.14.45/non-static.patch (renamed from target/linux/patches/3.14.43/non-static.patch)0
-rw-r--r--target/linux/patches/3.14.45/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.14.43/ppc64-missing-zlib.patch)0
-rw-r--r--target/linux/patches/3.14.45/regmap-boolean.patch (renamed from target/linux/patches/3.14.43/regmap-boolean.patch)0
-rw-r--r--target/linux/patches/3.14.45/relocs.patch (renamed from target/linux/patches/3.14.43/relocs.patch)0
-rw-r--r--target/linux/patches/3.14.45/sgidefs.patch (renamed from target/linux/patches/3.14.43/sgidefs.patch)0
-rw-r--r--target/linux/patches/3.14.45/sortext.patch (renamed from target/linux/patches/3.14.43/sortext.patch)0
-rw-r--r--target/linux/patches/3.14.45/startup.patch (renamed from target/linux/patches/3.14.43/startup.patch)0
-rw-r--r--target/linux/patches/3.14.45/wlan-cf.patch (renamed from target/linux/patches/3.14.43/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.14.45/xargs.patch (renamed from target/linux/patches/3.14.43/xargs.patch)0
-rw-r--r--target/linux/patches/3.14.45/yaffs2.patch (renamed from target/linux/patches/3.14.43/yaffs2.patch)0
-rw-r--r--target/linux/patches/3.14.45/zlib-inflate.patch (renamed from target/linux/patches/3.14.43/zlib-inflate.patch)0
-rw-r--r--target/linux/patches/3.18.16/bsd-compatibility.patch (renamed from target/linux/patches/3.18.14/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.18.16/cleankernel.patch (renamed from target/linux/patches/3.18.14/cleankernel.patch)0
-rw-r--r--target/linux/patches/3.18.16/cris-header.patch (renamed from target/linux/patches/3.18.14/cris-header.patch)0
-rw-r--r--target/linux/patches/3.18.16/cris-initramfs.patch (renamed from target/linux/patches/3.18.14/cris-initramfs.patch)0
-rw-r--r--target/linux/patches/3.18.16/defaults.patch (renamed from target/linux/patches/3.18.14/defaults.patch)0
-rw-r--r--target/linux/patches/3.18.16/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.18.14/export-symbol-for-exmap.patch)0
-rw-r--r--target/linux/patches/3.18.16/fblogo.patch (renamed from target/linux/patches/3.18.14/fblogo.patch)0
-rw-r--r--target/linux/patches/3.18.16/gemalto.patch (renamed from target/linux/patches/3.18.14/gemalto.patch)0
-rw-r--r--target/linux/patches/3.18.16/initramfs-nosizelimit.patch (renamed from target/linux/patches/3.18.14/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/3.18.16/lemote-rfkill.patch (renamed from target/linux/patches/3.18.14/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.18.16/microblaze-ethernet.patch (renamed from target/linux/patches/3.18.14/microblaze-ethernet.patch)0
-rw-r--r--target/linux/patches/3.18.16/mkpiggy.patch (renamed from target/linux/patches/3.18.14/mkpiggy.patch)0
-rw-r--r--target/linux/patches/3.18.16/mtd-rootfs.patch (renamed from target/linux/patches/3.18.14/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/3.18.16/nfsv3-tcp.patch (renamed from target/linux/patches/3.18.14/nfsv3-tcp.patch)0
-rw-r--r--target/linux/patches/3.18.16/non-static.patch (renamed from target/linux/patches/3.18.14/non-static.patch)0
-rw-r--r--target/linux/patches/3.18.16/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.18.14/ppc64-missing-zlib.patch)0
-rw-r--r--target/linux/patches/3.18.16/realtime.patch (renamed from target/linux/patches/3.18.14/realtime.patch)0
-rw-r--r--target/linux/patches/3.18.16/regmap-bool.patch (renamed from target/linux/patches/3.18.14/regmap-bool.patch)0
-rw-r--r--target/linux/patches/3.18.16/relocs.patch (renamed from target/linux/patches/3.18.14/relocs.patch)0
-rw-r--r--target/linux/patches/3.18.16/sgidefs.patch (renamed from target/linux/patches/3.18.14/sgidefs.patch)0
-rw-r--r--target/linux/patches/3.18.16/sortext.patch (renamed from target/linux/patches/3.18.14/sortext.patch)0
-rw-r--r--target/linux/patches/3.18.16/startup.patch (renamed from target/linux/patches/3.18.14/startup.patch)0
-rw-r--r--target/linux/patches/3.18.16/wlan-cf.patch (renamed from target/linux/patches/3.18.14/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.18.16/xargs.patch (renamed from target/linux/patches/3.18.14/xargs.patch)0
-rw-r--r--target/linux/patches/3.18.16/yaffs2.patch (renamed from target/linux/patches/3.18.14/yaffs2.patch)0
-rw-r--r--target/linux/patches/3.2.69/sparc-aout.patch (renamed from target/linux/patches/3.2.68/sparc-aout.patch)0
-rw-r--r--target/linux/patches/3.4.108/aufs2.patch (renamed from target/linux/patches/3.4.107/aufs2.patch)0
-rw-r--r--target/linux/patches/3.4.108/bsd-compatibility.patch (renamed from target/linux/patches/3.4.107/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.4.108/defaults.patch (renamed from target/linux/patches/3.4.107/defaults.patch)0
-rw-r--r--target/linux/patches/3.4.108/gemalto.patch (renamed from target/linux/patches/3.4.107/gemalto.patch)0
-rw-r--r--target/linux/patches/3.4.108/lemote-rfkill.patch (renamed from target/linux/patches/3.4.107/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.4.108/linux-gcc-check.patch (renamed from target/linux/patches/3.4.107/linux-gcc-check.patch)0
-rw-r--r--target/linux/patches/3.4.108/mips-error.patch (renamed from target/linux/patches/3.4.107/mips-error.patch)0
-rw-r--r--target/linux/patches/3.4.108/mkpiggy.patch (renamed from target/linux/patches/3.4.107/mkpiggy.patch)0
-rw-r--r--target/linux/patches/3.4.108/module-alloc-size-check.patch (renamed from target/linux/patches/3.4.107/module-alloc-size-check.patch)0
-rw-r--r--target/linux/patches/3.4.108/non-static.patch (renamed from target/linux/patches/3.4.107/non-static.patch)0
-rw-r--r--target/linux/patches/3.4.108/relocs.patch (renamed from target/linux/patches/3.4.107/relocs.patch)0
-rw-r--r--target/linux/patches/3.4.108/sparc-aout.patch (renamed from target/linux/patches/3.4.107/sparc-aout.patch)0
-rw-r--r--target/linux/patches/3.4.108/sparc-include.patch (renamed from target/linux/patches/3.4.107/sparc-include.patch)0
-rw-r--r--target/linux/patches/3.4.108/startup.patch (renamed from target/linux/patches/3.4.107/startup.patch)0
-rw-r--r--target/linux/patches/3.4.108/usb-defaults-off.patch (renamed from target/linux/patches/3.4.107/usb-defaults-off.patch)0
-rw-r--r--target/linux/patches/3.4.108/vga-cons-default-off.patch (renamed from target/linux/patches/3.4.107/vga-cons-default-off.patch)0
-rw-r--r--target/linux/patches/3.4.108/wlan-cf.patch (renamed from target/linux/patches/3.4.107/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.4.108/yaffs2.patch (renamed from target/linux/patches/3.4.107/yaffs2.patch)0
-rw-r--r--target/linux/patches/3.4.108/zlib-inflate.patch (renamed from target/linux/patches/3.4.107/zlib-inflate.patch)0
-rw-r--r--target/linux/patches/4.0.6/aufs4.patch (renamed from target/linux/patches/4.0.5/aufs4.patch)0
-rw-r--r--target/linux/patches/4.0.6/cleankernel.patch (renamed from target/linux/patches/4.0.5/cleankernel.patch)0
-rw-r--r--target/linux/patches/4.0.6/cris-header.patch (renamed from target/linux/patches/4.0.5/cris-header.patch)0
-rw-r--r--target/linux/patches/4.0.6/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.0.5/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/4.0.6/startup.patch (renamed from target/linux/patches/4.0.5/startup.patch)0
-rw-r--r--target/linux/patches/4.1/cris-header.patch (renamed from target/linux/patches/4.1-rc5/cris-header.patch)0
-rw-r--r--target/linux/patches/4.1/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.1-rc5/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/4.1/startup.patch (renamed from target/linux/patches/4.1-rc5/startup.patch)0
114 files changed, 450 insertions, 532 deletions
diff --git a/target/linux/patches/2.6.32.65/cris-header.patch b/target/linux/patches/2.6.32.67/cris-header.patch
index 1645d519c..1645d519c 100644
--- a/target/linux/patches/2.6.32.65/cris-header.patch
+++ b/target/linux/patches/2.6.32.67/cris-header.patch
diff --git a/target/linux/patches/2.6.32.65/cris-initramfs.patch b/target/linux/patches/2.6.32.67/cris-initramfs.patch
index b709e705e..b709e705e 100644
--- a/target/linux/patches/2.6.32.65/cris-initramfs.patch
+++ b/target/linux/patches/2.6.32.67/cris-initramfs.patch
diff --git a/target/linux/patches/3.10.75/bsd-compatibility.patch b/target/linux/patches/3.10.81/bsd-compatibility.patch
index b954b658f..b954b658f 100644
--- a/target/linux/patches/3.10.75/bsd-compatibility.patch
+++ b/target/linux/patches/3.10.81/bsd-compatibility.patch
diff --git a/target/linux/patches/3.10.75/headers-install.patch b/target/linux/patches/3.10.81/headers-install.patch
index 46dc9fe13..46dc9fe13 100644
--- a/target/linux/patches/3.10.75/headers-install.patch
+++ b/target/linux/patches/3.10.81/headers-install.patch
diff --git a/target/linux/patches/3.10.75/mkpiggy.patch b/target/linux/patches/3.10.81/mkpiggy.patch
index d4e815cd2..d4e815cd2 100644
--- a/target/linux/patches/3.10.75/mkpiggy.patch
+++ b/target/linux/patches/3.10.81/mkpiggy.patch
diff --git a/target/linux/patches/3.10.75/relocs.patch b/target/linux/patches/3.10.81/relocs.patch
index 649b9e73e..649b9e73e 100644
--- a/target/linux/patches/3.10.75/relocs.patch
+++ b/target/linux/patches/3.10.81/relocs.patch
diff --git a/target/linux/patches/3.10.75/sgidefs.patch b/target/linux/patches/3.10.81/sgidefs.patch
index f00a284d9..f00a284d9 100644
--- a/target/linux/patches/3.10.75/sgidefs.patch
+++ b/target/linux/patches/3.10.81/sgidefs.patch
diff --git a/target/linux/patches/3.10.75/sortext.patch b/target/linux/patches/3.10.81/sortext.patch
index 65bbbb64b..65bbbb64b 100644
--- a/target/linux/patches/3.10.75/sortext.patch
+++ b/target/linux/patches/3.10.81/sortext.patch
diff --git a/target/linux/patches/3.10.75/startup.patch b/target/linux/patches/3.10.81/startup.patch
index 3ebc5db1e..3ebc5db1e 100644
--- a/target/linux/patches/3.10.75/startup.patch
+++ b/target/linux/patches/3.10.81/startup.patch
diff --git a/target/linux/patches/3.10.75/yaffs2.patch b/target/linux/patches/3.10.81/yaffs2.patch
index 172629530..172629530 100644
--- a/target/linux/patches/3.10.75/yaffs2.patch
+++ b/target/linux/patches/3.10.81/yaffs2.patch
diff --git a/target/linux/patches/3.12.40/vga-cons-default-off.patch b/target/linux/patches/3.12.40/vga-cons-default-off.patch
deleted file mode 100644
index 08a57f783..000000000
--- a/target/linux/patches/3.12.40/vga-cons-default-off.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur linux-3.11.5.orig/drivers/video/console/Kconfig linux-3.11.5/drivers/video/console/Kconfig
---- linux-3.11.5.orig/drivers/video/console/Kconfig 2013-10-14 03:14:45.000000000 +0200
-+++ linux-3.11.5/drivers/video/console/Kconfig 2013-10-16 18:04:45.000000000 +0200
-@@ -9,7 +9,7 @@
- depends on !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && \
- !SUPERH && !BLACKFIN && !AVR32 && !MN10300 && !CRIS && \
- (!ARM || ARCH_FOOTBRIDGE || ARCH_INTEGRATOR || ARCH_NETWINDER)
-- default y
-+ default n
- help
- Saying Y here will allow you to use Linux in text mode through a
- display that complies with the generic VGA standard. Virtually
diff --git a/target/linux/patches/3.12.40/bsd-compatibility.patch b/target/linux/patches/3.12.44/bsd-compatibility.patch
index b954b658f..b954b658f 100644
--- a/target/linux/patches/3.12.40/bsd-compatibility.patch
+++ b/target/linux/patches/3.12.44/bsd-compatibility.patch
diff --git a/target/linux/patches/3.12.40/cleankernel.patch b/target/linux/patches/3.12.44/cleankernel.patch
index d8c055dc3..d8c055dc3 100644
--- a/target/linux/patches/3.12.40/cleankernel.patch
+++ b/target/linux/patches/3.12.44/cleankernel.patch
diff --git a/target/linux/patches/3.12.40/defaults.patch b/target/linux/patches/3.12.44/defaults.patch
index 6cdca084e..6cdca084e 100644
--- a/target/linux/patches/3.12.40/defaults.patch
+++ b/target/linux/patches/3.12.44/defaults.patch
diff --git a/target/linux/patches/3.12.40/disable-netfilter.patch b/target/linux/patches/3.12.44/disable-netfilter.patch
index 7b1ca013a..7b1ca013a 100644
--- a/target/linux/patches/3.12.40/disable-netfilter.patch
+++ b/target/linux/patches/3.12.44/disable-netfilter.patch
diff --git a/target/linux/patches/3.12.40/export-symbol-for-exmap.patch b/target/linux/patches/3.12.44/export-symbol-for-exmap.patch
index 4f0fc8449..4f0fc8449 100644
--- a/target/linux/patches/3.12.40/export-symbol-for-exmap.patch
+++ b/target/linux/patches/3.12.44/export-symbol-for-exmap.patch
diff --git a/target/linux/patches/3.12.40/gemalto.patch b/target/linux/patches/3.12.44/gemalto.patch
index 65f7af1d7..65f7af1d7 100644
--- a/target/linux/patches/3.12.40/gemalto.patch
+++ b/target/linux/patches/3.12.44/gemalto.patch
diff --git a/target/linux/patches/3.12.40/lemote-rfkill.patch b/target/linux/patches/3.12.44/lemote-rfkill.patch
index a61488434..a61488434 100644
--- a/target/linux/patches/3.12.40/lemote-rfkill.patch
+++ b/target/linux/patches/3.12.44/lemote-rfkill.patch
diff --git a/target/linux/patches/3.12.40/microblaze-ethernet.patch b/target/linux/patches/3.12.44/microblaze-ethernet.patch
index 742ab477e..742ab477e 100644
--- a/target/linux/patches/3.12.40/microblaze-ethernet.patch
+++ b/target/linux/patches/3.12.44/microblaze-ethernet.patch
diff --git a/target/linux/patches/3.12.40/microblaze-setup.patch b/target/linux/patches/3.12.44/microblaze-setup.patch
index 43815f274..43815f274 100644
--- a/target/linux/patches/3.12.40/microblaze-setup.patch
+++ b/target/linux/patches/3.12.44/microblaze-setup.patch
diff --git a/target/linux/patches/3.12.40/mips-lzo-fix.patch b/target/linux/patches/3.12.44/mips-lzo-fix.patch
index 0740bdc6a..0740bdc6a 100644
--- a/target/linux/patches/3.12.40/mips-lzo-fix.patch
+++ b/target/linux/patches/3.12.44/mips-lzo-fix.patch
diff --git a/target/linux/patches/3.12.40/mkpiggy.patch b/target/linux/patches/3.12.44/mkpiggy.patch
index d4e815cd2..d4e815cd2 100644
--- a/target/linux/patches/3.12.40/mkpiggy.patch
+++ b/target/linux/patches/3.12.44/mkpiggy.patch
diff --git a/target/linux/patches/3.12.40/mtd-rootfs.patch b/target/linux/patches/3.12.44/mtd-rootfs.patch
index 775d5fc80..775d5fc80 100644
--- a/target/linux/patches/3.12.40/mtd-rootfs.patch
+++ b/target/linux/patches/3.12.44/mtd-rootfs.patch
diff --git a/target/linux/patches/3.12.40/non-static.patch b/target/linux/patches/3.12.44/non-static.patch
index a967703d0..a967703d0 100644
--- a/target/linux/patches/3.12.40/non-static.patch
+++ b/target/linux/patches/3.12.44/non-static.patch
diff --git a/target/linux/patches/3.12.40/ppc64-missing-zlib.patch b/target/linux/patches/3.12.44/ppc64-missing-zlib.patch
index c6e0616be..c6e0616be 100644
--- a/target/linux/patches/3.12.40/ppc64-missing-zlib.patch
+++ b/target/linux/patches/3.12.44/ppc64-missing-zlib.patch
diff --git a/target/linux/patches/3.12.40/regmap-bool.patch b/target/linux/patches/3.12.44/regmap-bool.patch
index c3fd9a318..c3fd9a318 100644
--- a/target/linux/patches/3.12.40/regmap-bool.patch
+++ b/target/linux/patches/3.12.44/regmap-bool.patch
diff --git a/target/linux/patches/3.12.40/relocs.patch b/target/linux/patches/3.12.44/relocs.patch
index 649b9e73e..649b9e73e 100644
--- a/target/linux/patches/3.12.40/relocs.patch
+++ b/target/linux/patches/3.12.44/relocs.patch
diff --git a/target/linux/patches/3.12.40/sgidefs.patch b/target/linux/patches/3.12.44/sgidefs.patch
index f00a284d9..f00a284d9 100644
--- a/target/linux/patches/3.12.40/sgidefs.patch
+++ b/target/linux/patches/3.12.44/sgidefs.patch
diff --git a/target/linux/patches/3.12.40/sortext.patch b/target/linux/patches/3.12.44/sortext.patch
index 8fd4e1d6b..8fd4e1d6b 100644
--- a/target/linux/patches/3.12.40/sortext.patch
+++ b/target/linux/patches/3.12.44/sortext.patch
diff --git a/target/linux/patches/3.12.40/startup.patch b/target/linux/patches/3.12.44/startup.patch
index 4cd477da1..4cd477da1 100644
--- a/target/linux/patches/3.12.40/startup.patch
+++ b/target/linux/patches/3.12.44/startup.patch
diff --git a/target/linux/patches/3.12.40/usb-defaults-off.patch b/target/linux/patches/3.12.44/usb-defaults-off.patch
index 54dff2bd4..54dff2bd4 100644
--- a/target/linux/patches/3.12.40/usb-defaults-off.patch
+++ b/target/linux/patches/3.12.44/usb-defaults-off.patch
diff --git a/target/linux/patches/3.12.40/wlan-cf.patch b/target/linux/patches/3.12.44/wlan-cf.patch
index fc20759e2..fc20759e2 100644
--- a/target/linux/patches/3.12.40/wlan-cf.patch
+++ b/target/linux/patches/3.12.44/wlan-cf.patch
diff --git a/target/linux/patches/3.12.40/xargs.patch b/target/linux/patches/3.12.44/xargs.patch
index 2c7b3df59..2c7b3df59 100644
--- a/target/linux/patches/3.12.40/xargs.patch
+++ b/target/linux/patches/3.12.44/xargs.patch
diff --git a/target/linux/patches/3.12.40/yaffs2.patch b/target/linux/patches/3.12.44/yaffs2.patch
index 306814439..306814439 100644
--- a/target/linux/patches/3.12.40/yaffs2.patch
+++ b/target/linux/patches/3.12.44/yaffs2.patch
diff --git a/target/linux/patches/3.12.40/zlib-inflate.patch b/target/linux/patches/3.12.44/zlib-inflate.patch
index 58e1f6d21..58e1f6d21 100644
--- a/target/linux/patches/3.12.40/zlib-inflate.patch
+++ b/target/linux/patches/3.12.44/zlib-inflate.patch
diff --git a/target/linux/patches/3.14.43/bsd-compatibility.patch b/target/linux/patches/3.14.45/bsd-compatibility.patch
index b954b658f..b954b658f 100644
--- a/target/linux/patches/3.14.43/bsd-compatibility.patch
+++ b/target/linux/patches/3.14.45/bsd-compatibility.patch
diff --git a/target/linux/patches/3.14.43/cleankernel.patch b/target/linux/patches/3.14.45/cleankernel.patch
index d8c055dc3..d8c055dc3 100644
--- a/target/linux/patches/3.14.43/cleankernel.patch
+++ b/target/linux/patches/3.14.45/cleankernel.patch
diff --git a/target/linux/patches/3.14.43/defaults.patch b/target/linux/patches/3.14.45/defaults.patch
index f071fd1dd..f071fd1dd 100644
--- a/target/linux/patches/3.14.43/defaults.patch
+++ b/target/linux/patches/3.14.45/defaults.patch
diff --git a/target/linux/patches/3.14.43/disable-netfilter.patch b/target/linux/patches/3.14.45/disable-netfilter.patch
index 7b1ca013a..7b1ca013a 100644
--- a/target/linux/patches/3.14.43/disable-netfilter.patch
+++ b/target/linux/patches/3.14.45/disable-netfilter.patch
diff --git a/target/linux/patches/3.14.43/export-symbol-for-exmap.patch b/target/linux/patches/3.14.45/export-symbol-for-exmap.patch
index 4f0fc8449..4f0fc8449 100644
--- a/target/linux/patches/3.14.43/export-symbol-for-exmap.patch
+++ b/target/linux/patches/3.14.45/export-symbol-for-exmap.patch
diff --git a/target/linux/patches/3.14.43/fblogo.patch b/target/linux/patches/3.14.45/fblogo.patch
index cbbb4216f..cbbb4216f 100644
--- a/target/linux/patches/3.14.43/fblogo.patch
+++ b/target/linux/patches/3.14.45/fblogo.patch
diff --git a/target/linux/patches/3.14.43/gemalto.patch b/target/linux/patches/3.14.45/gemalto.patch
index 65f7af1d7..65f7af1d7 100644
--- a/target/linux/patches/3.14.43/gemalto.patch
+++ b/target/linux/patches/3.14.45/gemalto.patch
diff --git a/target/linux/patches/3.14.43/initramfs-nosizelimit.patch b/target/linux/patches/3.14.45/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/3.14.43/initramfs-nosizelimit.patch
+++ b/target/linux/patches/3.14.45/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/3.14.43/lemote-rfkill.patch b/target/linux/patches/3.14.45/lemote-rfkill.patch
index a61488434..a61488434 100644
--- a/target/linux/patches/3.14.43/lemote-rfkill.patch
+++ b/target/linux/patches/3.14.45/lemote-rfkill.patch
diff --git a/target/linux/patches/3.14.43/microblaze-axi.patch b/target/linux/patches/3.14.45/microblaze-axi.patch
index 1a4b17d8c..1a4b17d8c 100644
--- a/target/linux/patches/3.14.43/microblaze-axi.patch
+++ b/target/linux/patches/3.14.45/microblaze-axi.patch
diff --git a/target/linux/patches/3.14.43/microblaze-ethernet.patch b/target/linux/patches/3.14.45/microblaze-ethernet.patch
index 742ab477e..742ab477e 100644
--- a/target/linux/patches/3.14.43/microblaze-ethernet.patch
+++ b/target/linux/patches/3.14.45/microblaze-ethernet.patch
diff --git a/target/linux/patches/3.14.43/mkpiggy.patch b/target/linux/patches/3.14.45/mkpiggy.patch
index 751678b74..751678b74 100644
--- a/target/linux/patches/3.14.43/mkpiggy.patch
+++ b/target/linux/patches/3.14.45/mkpiggy.patch
diff --git a/target/linux/patches/3.14.43/mptcp.patch b/target/linux/patches/3.14.45/mptcp.patch
index 9784e0577..af2dc7837 100644
--- a/target/linux/patches/3.14.43/mptcp.patch
+++ b/target/linux/patches/3.14.45/mptcp.patch
@@ -1,8 +1,7 @@
-diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
-index d286bde..34d56d7 100644
---- a/drivers/infiniband/hw/cxgb4/cm.c
-+++ b/drivers/infiniband/hw/cxgb4/cm.c
-@@ -3162,7 +3162,7 @@ static void build_cpl_pass_accept_req(struct sk_buff *skb, int stid , u8 tos)
+diff -Nur linux-3.14.45.orig/drivers/infiniband/hw/cxgb4/cm.c linux-3.14.45/drivers/infiniband/hw/cxgb4/cm.c
+--- linux-3.14.45.orig/drivers/infiniband/hw/cxgb4/cm.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/drivers/infiniband/hw/cxgb4/cm.c 2015-06-24 14:15:48.871862463 +0200
+@@ -3162,7 +3162,7 @@
*/
memset(&tmp_opt, 0, sizeof(tmp_opt));
tcp_clear_options(&tmp_opt);
@@ -11,11 +10,10 @@ index d286bde..34d56d7 100644
req = (struct cpl_pass_accept_req *)__skb_push(skb, sizeof(*req));
memset(req, 0, sizeof(*req));
-diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
-index 2faef33..9c12362 100644
---- a/include/linux/ipv6.h
-+++ b/include/linux/ipv6.h
-@@ -309,12 +309,6 @@ static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk)
+diff -Nur linux-3.14.45.orig/include/linux/ipv6.h linux-3.14.45/include/linux/ipv6.h
+--- linux-3.14.45.orig/include/linux/ipv6.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/linux/ipv6.h 2015-06-24 14:15:48.871862463 +0200
+@@ -309,12 +309,6 @@
return NULL;
}
@@ -28,11 +26,10 @@ index 2faef33..9c12362 100644
static inline struct raw6_sock *raw6_sk(const struct sock *sk)
{
return NULL;
-diff --git a/include/linux/tcp.h b/include/linux/tcp.h
-index 4ad0706..a230dd0 100644
---- a/include/linux/tcp.h
-+++ b/include/linux/tcp.h
-@@ -72,6 +72,53 @@ struct tcp_sack_block {
+diff -Nur linux-3.14.45.orig/include/linux/tcp.h linux-3.14.45/include/linux/tcp.h
+--- linux-3.14.45.orig/include/linux/tcp.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/linux/tcp.h 2015-06-24 14:15:48.871862463 +0200
+@@ -72,6 +72,53 @@
u32 end_seq;
};
@@ -86,7 +83,7 @@ index 4ad0706..a230dd0 100644
/*These are used to set the sack_ok field in struct tcp_options_received */
#define TCP_SACK_SEEN (1 << 0) /*1 = peer is SACK capable, */
#define TCP_FACK_ENABLED (1 << 1) /*1 = FACK is enabled locally*/
-@@ -95,6 +142,9 @@ struct tcp_options_received {
+@@ -95,6 +142,9 @@
u16 mss_clamp; /* Maximal mss, negotiated at connection setup */
};
@@ -96,7 +93,7 @@ index 4ad0706..a230dd0 100644
static inline void tcp_clear_options(struct tcp_options_received *rx_opt)
{
rx_opt->tstamp_ok = rx_opt->sack_ok = 0;
-@@ -123,6 +173,7 @@ struct tcp_request_sock {
+@@ -123,6 +173,7 @@
* FastOpen it's the seq#
* after data-in-SYN.
*/
@@ -104,7 +101,7 @@ index 4ad0706..a230dd0 100644
};
static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req)
-@@ -130,6 +181,8 @@ static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req)
+@@ -130,6 +181,8 @@
return (struct tcp_request_sock *)req;
}
@@ -113,7 +110,7 @@ index 4ad0706..a230dd0 100644
struct tcp_sock {
/* inet_connection_sock has to be the first member of tcp_sock */
struct inet_connection_sock inet_conn;
-@@ -323,6 +376,45 @@ struct tcp_sock {
+@@ -323,6 +376,45 @@
* socket. Used to retransmit SYNACKs etc.
*/
struct request_sock *fastopen_rsk;
@@ -159,7 +156,7 @@ index 4ad0706..a230dd0 100644
};
enum tsq_flags {
-@@ -334,6 +426,8 @@ enum tsq_flags {
+@@ -334,6 +426,8 @@
TCP_MTU_REDUCED_DEFERRED, /* tcp_v{4|6}_err() could not call
* tcp_v{4|6}_mtu_reduced()
*/
@@ -168,7 +165,7 @@ index 4ad0706..a230dd0 100644
};
static inline struct tcp_sock *tcp_sk(const struct sock *sk)
-@@ -352,6 +446,7 @@ struct tcp_timewait_sock {
+@@ -352,6 +446,7 @@
#ifdef CONFIG_TCP_MD5SIG
struct tcp_md5sig_key *tw_md5_key;
#endif
@@ -176,11 +173,10 @@ index 4ad0706..a230dd0 100644
};
static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk)
-diff --git a/include/net/inet6_connection_sock.h b/include/net/inet6_connection_sock.h
-index f981ba7..0144c65 100644
---- a/include/net/inet6_connection_sock.h
-+++ b/include/net/inet6_connection_sock.h
-@@ -27,6 +27,8 @@ int inet6_csk_bind_conflict(const struct sock *sk,
+diff -Nur linux-3.14.45.orig/include/net/inet6_connection_sock.h linux-3.14.45/include/net/inet6_connection_sock.h
+--- linux-3.14.45.orig/include/net/inet6_connection_sock.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/net/inet6_connection_sock.h 2015-06-24 14:15:48.871862463 +0200
+@@ -27,6 +27,8 @@
struct dst_entry *inet6_csk_route_req(struct sock *sk, struct flowi6 *fl6,
const struct request_sock *req);
@@ -189,10 +185,9 @@ index f981ba7..0144c65 100644
struct request_sock *inet6_csk_search_req(const struct sock *sk,
struct request_sock ***prevp,
-diff --git a/include/net/inet_common.h b/include/net/inet_common.h
-index fe7994c..780f229 100644
---- a/include/net/inet_common.h
-+++ b/include/net/inet_common.h
+diff -Nur linux-3.14.45.orig/include/net/inet_common.h linux-3.14.45/include/net/inet_common.h
+--- linux-3.14.45.orig/include/net/inet_common.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/net/inet_common.h 2015-06-24 14:15:48.871862463 +0200
@@ -1,6 +1,8 @@
#ifndef _INET_COMMON_H
#define _INET_COMMON_H
@@ -202,7 +197,7 @@ index fe7994c..780f229 100644
extern const struct proto_ops inet_stream_ops;
extern const struct proto_ops inet_dgram_ops;
-@@ -13,6 +15,8 @@ struct sock;
+@@ -13,6 +15,8 @@
struct sockaddr;
struct socket;
@@ -211,11 +206,10 @@ index fe7994c..780f229 100644
int inet_release(struct socket *sock);
int inet_stream_connect(struct socket *sock, struct sockaddr *uaddr,
int addr_len, int flags);
-diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
-index c55aeed..84d1927 100644
---- a/include/net/inet_connection_sock.h
-+++ b/include/net/inet_connection_sock.h
-@@ -243,6 +243,9 @@ static inline void inet_csk_reset_xmit_timer(struct sock *sk, const int what,
+diff -Nur linux-3.14.45.orig/include/net/inet_connection_sock.h linux-3.14.45/include/net/inet_connection_sock.h
+--- linux-3.14.45.orig/include/net/inet_connection_sock.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/net/inet_connection_sock.h 2015-06-24 14:15:48.871862463 +0200
+@@ -244,6 +244,9 @@
struct sock *inet_csk_accept(struct sock *sk, int flags, int *err);
@@ -225,11 +219,9 @@ index c55aeed..84d1927 100644
struct request_sock *inet_csk_search_req(const struct sock *sk,
struct request_sock ***prevp,
const __be16 rport,
-diff --git a/include/net/mptcp.h b/include/net/mptcp.h
-new file mode 100644
-index 0000000..6454535
---- /dev/null
-+++ b/include/net/mptcp.h
+diff -Nur linux-3.14.45.orig/include/net/mptcp.h linux-3.14.45/include/net/mptcp.h
+--- linux-3.14.45.orig/include/net/mptcp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/include/net/mptcp.h 2015-06-24 14:15:48.871862463 +0200
@@ -0,0 +1,1471 @@
+/*
+ * MPTCP implementation
@@ -1702,11 +1694,9 @@ index 0000000..6454535
+#endif /* CONFIG_MPTCP */
+
+#endif /* _MPTCP_H */
-diff --git a/include/net/mptcp_v4.h b/include/net/mptcp_v4.h
-new file mode 100644
-index 0000000..047884c
---- /dev/null
-+++ b/include/net/mptcp_v4.h
+diff -Nur linux-3.14.45.orig/include/net/mptcp_v4.h linux-3.14.45/include/net/mptcp_v4.h
+--- linux-3.14.45.orig/include/net/mptcp_v4.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/include/net/mptcp_v4.h 2015-06-24 14:15:48.871862463 +0200
@@ -0,0 +1,69 @@
+/*
+ * MPTCP implementation
@@ -1777,11 +1767,9 @@ index 0000000..047884c
+#endif /* CONFIG_MPTCP */
+
+#endif /* MPTCP_V4_H_ */
-diff --git a/include/net/mptcp_v6.h b/include/net/mptcp_v6.h
-new file mode 100644
-index 0000000..c303208
---- /dev/null
-+++ b/include/net/mptcp_v6.h
+diff -Nur linux-3.14.45.orig/include/net/mptcp_v6.h linux-3.14.45/include/net/mptcp_v6.h
+--- linux-3.14.45.orig/include/net/mptcp_v6.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/include/net/mptcp_v6.h 2015-06-24 14:15:48.871862463 +0200
@@ -0,0 +1,72 @@
+/*
+ * MPTCP implementation
@@ -1855,10 +1843,9 @@ index 0000000..c303208
+#endif /* CONFIG_MPTCP */
+
+#endif /* _MPTCP_V6_H */
-diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
-index 991dcd9..6297c97 100644
---- a/include/net/net_namespace.h
-+++ b/include/net/net_namespace.h
+diff -Nur linux-3.14.45.orig/include/net/net_namespace.h linux-3.14.45/include/net/net_namespace.h
+--- linux-3.14.45.orig/include/net/net_namespace.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/net/net_namespace.h 2015-06-24 14:15:48.871862463 +0200
@@ -15,6 +15,7 @@
#include <net/netns/packet.h>
#include <net/netns/ipv4.h>
@@ -1867,7 +1854,7 @@ index 991dcd9..6297c97 100644
#include <net/netns/sctp.h>
#include <net/netns/dccp.h>
#include <net/netns/netfilter.h>
-@@ -90,6 +91,9 @@ struct net {
+@@ -90,6 +91,9 @@
#if IS_ENABLED(CONFIG_IPV6)
struct netns_ipv6 ipv6;
#endif
@@ -1877,11 +1864,9 @@ index 991dcd9..6297c97 100644
#if defined(CONFIG_IP_SCTP) || defined(CONFIG_IP_SCTP_MODULE)
struct netns_sctp sctp;
#endif
-diff --git a/include/net/netns/mptcp.h b/include/net/netns/mptcp.h
-new file mode 100644
-index 0000000..bad418b
---- /dev/null
-+++ b/include/net/netns/mptcp.h
+diff -Nur linux-3.14.45.orig/include/net/netns/mptcp.h linux-3.14.45/include/net/netns/mptcp.h
+--- linux-3.14.45.orig/include/net/netns/mptcp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/include/net/netns/mptcp.h 2015-06-24 14:15:48.871862463 +0200
@@ -0,0 +1,44 @@
+/*
+ * MPTCP implementation - MPTCP namespace
@@ -1927,11 +1912,10 @@ index 0000000..bad418b
+};
+
+#endif /* __NETNS_MPTCP_H__ */
-diff --git a/include/net/request_sock.h b/include/net/request_sock.h
-index 7f830ff..e79e87a 100644
---- a/include/net/request_sock.h
-+++ b/include/net/request_sock.h
-@@ -164,7 +164,7 @@ struct request_sock_queue {
+diff -Nur linux-3.14.45.orig/include/net/request_sock.h linux-3.14.45/include/net/request_sock.h
+--- linux-3.14.45.orig/include/net/request_sock.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/net/request_sock.h 2015-06-24 14:15:48.871862463 +0200
+@@ -164,7 +164,7 @@
};
int reqsk_queue_alloc(struct request_sock_queue *queue,
@@ -1940,11 +1924,10 @@ index 7f830ff..e79e87a 100644
void __reqsk_queue_destroy(struct request_sock_queue *queue);
void reqsk_queue_destroy(struct request_sock_queue *queue);
-diff --git a/include/net/sock.h b/include/net/sock.h
-index b9586a1..09a682e 100644
---- a/include/net/sock.h
-+++ b/include/net/sock.h
-@@ -899,6 +899,16 @@ void sk_clear_memalloc(struct sock *sk);
+diff -Nur linux-3.14.45.orig/include/net/sock.h linux-3.14.45/include/net/sock.h
+--- linux-3.14.45.orig/include/net/sock.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/net/sock.h 2015-06-24 14:15:48.871862463 +0200
+@@ -899,6 +899,16 @@
int sk_wait_data(struct sock *sk, long *timeo);
@@ -1961,11 +1944,10 @@ index b9586a1..09a682e 100644
struct request_sock_ops;
struct timewait_sock_ops;
struct inet_hashinfo;
-diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 743acce..db0cc04 100644
---- a/include/net/tcp.h
-+++ b/include/net/tcp.h
-@@ -176,6 +176,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
+diff -Nur linux-3.14.45.orig/include/net/tcp.h linux-3.14.45/include/net/tcp.h
+--- linux-3.14.45.orig/include/net/tcp.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/net/tcp.h 2015-06-24 14:15:48.875862469 +0200
+@@ -176,6 +176,7 @@
#define TCPOPT_SACK 5 /* SACK Block */
#define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */
#define TCPOPT_MD5SIG 19 /* MD5 Signature (RFC2385) */
@@ -1973,7 +1955,7 @@ index 743acce..db0cc04 100644
#define TCPOPT_EXP 254 /* Experimental */
/* Magic number to be after the option value for sharing TCP
* experimental options. See draft-ietf-tcpm-experimental-options-00.txt
-@@ -234,6 +235,27 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
+@@ -234,6 +235,27 @@
*/
#define TFO_SERVER_ALWAYS 0x1000
@@ -2001,7 +1983,7 @@ index 743acce..db0cc04 100644
extern struct inet_timewait_death_row tcp_death_row;
/* sysctl variables for tcp */
-@@ -349,6 +371,112 @@ extern struct proto tcp_prot;
+@@ -349,6 +371,112 @@
#define TCP_ADD_STATS_USER(net, field, val) SNMP_ADD_STATS_USER((net)->mib.tcp_statistics, field, val)
#define TCP_ADD_STATS(net, field, val) SNMP_ADD_STATS((net)->mib.tcp_statistics, field, val)
@@ -2114,7 +2096,7 @@ index 743acce..db0cc04 100644
void tcp_tasklet_init(void);
void tcp_v4_err(struct sk_buff *skb, u32);
-@@ -445,6 +573,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
+@@ -445,6 +573,7 @@
size_t len, int nonblock, int flags, int *addr_len);
void tcp_parse_options(const struct sk_buff *skb,
struct tcp_options_received *opt_rx,
@@ -2122,7 +2104,7 @@ index 743acce..db0cc04 100644
int estab, struct tcp_fastopen_cookie *foc);
const u8 *tcp_parse_md5sig_option(const struct tcphdr *th);
-@@ -557,11 +686,15 @@ void tcp_send_delayed_ack(struct sock *sk);
+@@ -558,11 +687,15 @@
void tcp_send_loss_probe(struct sock *sk);
bool tcp_schedule_loss_probe(struct sock *sk);
@@ -2138,7 +2120,7 @@ index 743acce..db0cc04 100644
/* tcp_timer.c */
void tcp_init_xmit_timers(struct sock *);
-@@ -705,14 +838,24 @@ void tcp_send_window_probe(struct sock *sk);
+@@ -706,14 +839,24 @@
*/
struct tcp_skb_cb {
union {
@@ -2148,12 +2130,12 @@ index 743acce..db0cc04 100644
#if IS_ENABLED(CONFIG_IPV6)
- struct inet6_skb_parm h6;
+ struct inet6_skb_parm h6;
- #endif
-- } header; /* For incoming frames */
++#endif
+ } header; /* For incoming frames */
+#ifdef CONFIG_MPTCP
+ __u32 path_mask; /* path indices that tried to send this skb */
-+#endif
+ #endif
+- } header; /* For incoming frames */
+ };
__u32 seq; /* Starting sequence number */
__u32 end_seq; /* SEQ + FIN + SYN + datalen */
@@ -2166,7 +2148,7 @@ index 743acce..db0cc04 100644
__u8 tcp_flags; /* TCP header flags. (tcp[13]) */
__u8 sacked; /* State flags for SACK/FACK. */
-@@ -1058,7 +1201,8 @@ u32 tcp_default_init_rwnd(u32 mss);
+@@ -1061,7 +1204,8 @@
/* Determine a window scaling and initial window to offer. */
void tcp_select_initial_window(int __space, __u32 mss, __u32 *rcv_wnd,
__u32 *window_clamp, int wscale_ok,
@@ -2176,7 +2158,7 @@ index 743acce..db0cc04 100644
static inline int tcp_win_from_space(int space)
{
-@@ -1070,12 +1214,18 @@ static inline int tcp_win_from_space(int space)
+@@ -1073,12 +1217,18 @@
/* Note: caller must be prepared to deal with negative returns */
static inline int tcp_space(const struct sock *sk)
{
@@ -2195,7 +2177,7 @@ index 743acce..db0cc04 100644
return tcp_win_from_space(sk->sk_rcvbuf);
}
-@@ -1090,6 +1240,7 @@ static inline void tcp_openreq_init(struct request_sock *req,
+@@ -1093,6 +1243,7 @@
tcp_rsk(req)->rcv_isn = TCP_SKB_CB(skb)->seq;
tcp_rsk(req)->rcv_nxt = TCP_SKB_CB(skb)->seq + 1;
tcp_rsk(req)->snt_synack = 0;
@@ -2203,10 +2185,9 @@ index 743acce..db0cc04 100644
req->mss = rx_opt->mss_clamp;
req->ts_recent = rx_opt->saw_tstamp ? rx_opt->rcv_tsval : 0;
ireq->tstamp_ok = rx_opt->tstamp_ok;
-diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
-index d758163..3d81e49 100644
---- a/include/uapi/linux/if.h
-+++ b/include/uapi/linux/if.h
+diff -Nur linux-3.14.45.orig/include/uapi/linux/if.h linux-3.14.45/include/uapi/linux/if.h
+--- linux-3.14.45.orig/include/uapi/linux/if.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/uapi/linux/if.h 2015-06-24 14:15:48.875862469 +0200
@@ -53,6 +53,9 @@
#define IFF_ECHO 0x40000 /* echo sent packets */
@@ -2217,11 +2198,10 @@ index d758163..3d81e49 100644
#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
-diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
-index 377f1e5..2ffcb03 100644
---- a/include/uapi/linux/tcp.h
-+++ b/include/uapi/linux/tcp.h
-@@ -112,6 +112,7 @@ enum {
+diff -Nur linux-3.14.45.orig/include/uapi/linux/tcp.h linux-3.14.45/include/uapi/linux/tcp.h
+--- linux-3.14.45.orig/include/uapi/linux/tcp.h 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/include/uapi/linux/tcp.h 2015-06-24 14:15:48.875862469 +0200
+@@ -112,6 +112,7 @@
#define TCP_FASTOPEN 23 /* Enable FastOpen on listeners */
#define TCP_TIMESTAMP 24
#define TCP_NOTSENT_LOWAT 25 /* limit number of unsent bytes in write queue */
@@ -2229,11 +2209,10 @@ index 377f1e5..2ffcb03 100644
struct tcp_repair_opt {
__u32 opt_code;
-diff --git a/net/Kconfig b/net/Kconfig
-index e411046..3e4b278 100644
---- a/net/Kconfig
-+++ b/net/Kconfig
-@@ -79,6 +79,7 @@ if INET
+diff -Nur linux-3.14.45.orig/net/Kconfig linux-3.14.45/net/Kconfig
+--- linux-3.14.45.orig/net/Kconfig 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/Kconfig 2015-06-24 14:15:48.875862469 +0200
+@@ -79,6 +79,7 @@
source "net/ipv4/Kconfig"
source "net/ipv6/Kconfig"
source "net/netlabel/Kconfig"
@@ -2241,11 +2220,10 @@ index e411046..3e4b278 100644
endif # if INET
-diff --git a/net/Makefile b/net/Makefile
-index cbbbe6d..244bac1 100644
---- a/net/Makefile
-+++ b/net/Makefile
-@@ -20,6 +20,7 @@ obj-$(CONFIG_INET) += ipv4/
+diff -Nur linux-3.14.45.orig/net/Makefile linux-3.14.45/net/Makefile
+--- linux-3.14.45.orig/net/Makefile 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/Makefile 2015-06-24 14:15:48.875862469 +0200
+@@ -20,6 +20,7 @@
obj-$(CONFIG_XFRM) += xfrm/
obj-$(CONFIG_UNIX) += unix/
obj-$(CONFIG_NET) += ipv6/
@@ -2253,11 +2231,10 @@ index cbbbe6d..244bac1 100644
obj-$(CONFIG_PACKET) += packet/
obj-$(CONFIG_NET_KEY) += key/
obj-$(CONFIG_BRIDGE) += bridge/
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 45fa2f1..3cfdbc0 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -5271,7 +5271,7 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags)
+diff -Nur linux-3.14.45.orig/net/core/dev.c linux-3.14.45/net/core/dev.c
+--- linux-3.14.45.orig/net/core/dev.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/core/dev.c 2015-06-24 14:15:48.875862469 +0200
+@@ -5399,7 +5399,7 @@
dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
@@ -2266,11 +2243,10 @@ index 45fa2f1..3cfdbc0 100644
(dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC |
IFF_ALLMULTI));
-diff --git a/net/core/request_sock.c b/net/core/request_sock.c
-index 4425148..e128f08 100644
---- a/net/core/request_sock.c
-+++ b/net/core/request_sock.c
-@@ -38,7 +38,8 @@ int sysctl_max_syn_backlog = 256;
+diff -Nur linux-3.14.45.orig/net/core/request_sock.c linux-3.14.45/net/core/request_sock.c
+--- linux-3.14.45.orig/net/core/request_sock.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/core/request_sock.c 2015-06-24 14:15:48.875862469 +0200
+@@ -38,7 +38,8 @@
EXPORT_SYMBOL(sysctl_max_syn_backlog);
int reqsk_queue_alloc(struct request_sock_queue *queue,
@@ -2280,7 +2256,7 @@ index 4425148..e128f08 100644
{
size_t lopt_size = sizeof(struct listen_sock);
struct listen_sock *lopt;
-@@ -48,9 +49,11 @@ int reqsk_queue_alloc(struct request_sock_queue *queue,
+@@ -48,9 +49,11 @@
nr_table_entries = roundup_pow_of_two(nr_table_entries + 1);
lopt_size += nr_table_entries * sizeof(struct request_sock *);
if (lopt_size > PAGE_SIZE)
@@ -2294,11 +2270,10 @@ index 4425148..e128f08 100644
if (lopt == NULL)
return -ENOMEM;
-diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 90b96a1..2564d89 100644
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -472,7 +472,7 @@ static inline void skb_drop_fraglist(struct sk_buff *skb)
+diff -Nur linux-3.14.45.orig/net/core/skbuff.c linux-3.14.45/net/core/skbuff.c
+--- linux-3.14.45.orig/net/core/skbuff.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/core/skbuff.c 2015-06-24 14:15:48.875862469 +0200
+@@ -491,7 +491,7 @@
skb_drop_list(&skb_shinfo(skb)->frag_list);
}
@@ -2307,7 +2282,7 @@ index 90b96a1..2564d89 100644
{
struct sk_buff *list;
-@@ -894,7 +894,7 @@ static void skb_headers_offset_update(struct sk_buff *skb, int off)
+@@ -913,7 +913,7 @@
skb->inner_mac_header += off;
}
@@ -2316,11 +2291,10 @@ index 90b96a1..2564d89 100644
{
__copy_skb_header(new, old);
-diff --git a/net/core/sock.c b/net/core/sock.c
-index c0fc6bd..7314971 100644
---- a/net/core/sock.c
-+++ b/net/core/sock.c
-@@ -231,7 +231,7 @@ static const char *const af_family_slock_key_strings[AF_MAX+1] = {
+diff -Nur linux-3.14.45.orig/net/core/sock.c linux-3.14.45/net/core/sock.c
+--- linux-3.14.45.orig/net/core/sock.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/core/sock.c 2015-06-24 14:15:48.875862469 +0200
+@@ -280,7 +280,7 @@
"slock-AF_IEEE802154", "slock-AF_CAIF" , "slock-AF_ALG" ,
"slock-AF_NFC" , "slock-AF_VSOCK" ,"slock-AF_MAX"
};
@@ -2329,7 +2303,7 @@ index c0fc6bd..7314971 100644
"clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" ,
"clock-AF_AX25" , "clock-AF_IPX" , "clock-AF_APPLETALK",
"clock-AF_NETROM", "clock-AF_BRIDGE" , "clock-AF_ATMPVC" ,
-@@ -252,7 +252,7 @@ static const char *const af_family_clock_key_strings[AF_MAX+1] = {
+@@ -301,7 +301,7 @@
* sk_callback_lock locking rules are per-address-family,
* so split the lock classes by using a per-AF key:
*/
@@ -2338,7 +2312,7 @@ index c0fc6bd..7314971 100644
/* Take into consideration the size of the struct sk_buff overhead in the
* determination of these values, since that is non-constant across
-@@ -602,7 +602,7 @@ out:
+@@ -651,7 +651,7 @@
return ret;
}
@@ -2347,7 +2321,7 @@ index c0fc6bd..7314971 100644
{
if (valbool)
sock_set_flag(sk, bit);
-@@ -1204,7 +1204,7 @@ lenout:
+@@ -1272,7 +1272,7 @@
*
* (We also register the sk_lock with the lock validator.)
*/
@@ -2356,7 +2330,7 @@ index c0fc6bd..7314971 100644
{
sock_lock_init_class_and_name(sk,
af_family_slock_key_strings[sk->sk_family],
-@@ -1252,7 +1252,7 @@ void sk_prot_clear_portaddr_nulls(struct sock *sk, int size)
+@@ -1320,7 +1320,7 @@
}
EXPORT_SYMBOL(sk_prot_clear_portaddr_nulls);
@@ -2365,7 +2339,7 @@ index c0fc6bd..7314971 100644
int family)
{
struct sock *sk;
-@@ -2184,7 +2184,7 @@ static void sock_def_wakeup(struct sock *sk)
+@@ -2252,7 +2252,7 @@
rcu_read_unlock();
}
@@ -2374,11 +2348,10 @@ index c0fc6bd..7314971 100644
{
struct socket_wq *wq;
-diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
-index 05c57f0..630434d 100644
---- a/net/ipv4/Kconfig
-+++ b/net/ipv4/Kconfig
-@@ -556,6 +556,30 @@ config TCP_CONG_ILLINOIS
+diff -Nur linux-3.14.45.orig/net/ipv4/Kconfig linux-3.14.45/net/ipv4/Kconfig
+--- linux-3.14.45.orig/net/ipv4/Kconfig 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/Kconfig 2015-06-24 14:15:48.875862469 +0200
+@@ -556,6 +556,30 @@
For further details see:
http://www.ews.uiuc.edu/~shaoliu/tcpillinois/index.html
@@ -2409,7 +2382,7 @@ index 05c57f0..630434d 100644
choice
prompt "Default TCP congestion control"
default DEFAULT_CUBIC
-@@ -584,6 +608,15 @@ choice
+@@ -584,6 +608,15 @@
config DEFAULT_WESTWOOD
bool "Westwood" if TCP_CONG_WESTWOOD=y
@@ -2425,7 +2398,7 @@ index 05c57f0..630434d 100644
config DEFAULT_RENO
bool "Reno"
-@@ -605,6 +638,8 @@ config DEFAULT_TCP_CONG
+@@ -605,6 +638,8 @@
default "vegas" if DEFAULT_VEGAS
default "westwood" if DEFAULT_WESTWOOD
default "veno" if DEFAULT_VENO
@@ -2434,10 +2407,9 @@ index 05c57f0..630434d 100644
default "reno" if DEFAULT_RENO
default "cubic"
-diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
-index 19ab78a..567918a 100644
---- a/net/ipv4/af_inet.c
-+++ b/net/ipv4/af_inet.c
+diff -Nur linux-3.14.45.orig/net/ipv4/af_inet.c linux-3.14.45/net/ipv4/af_inet.c
+--- linux-3.14.45.orig/net/ipv4/af_inet.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/af_inet.c 2015-06-24 14:15:48.875862469 +0200
@@ -104,6 +104,7 @@
#include <net/ip_fib.h>
#include <net/inet_connection_sock.h>
@@ -2446,7 +2418,7 @@ index 19ab78a..567918a 100644
#include <net/udp.h>
#include <net/udplite.h>
#include <net/ping.h>
-@@ -246,8 +247,7 @@ EXPORT_SYMBOL(inet_listen);
+@@ -246,8 +247,7 @@
* Create an inet socket.
*/
@@ -2456,7 +2428,7 @@ index 19ab78a..567918a 100644
{
struct sock *sk;
struct inet_protosw *answer;
-@@ -679,6 +679,23 @@ int inet_accept(struct socket *sock, struct socket *newsock, int flags)
+@@ -679,6 +679,23 @@
lock_sock(sk2);
sock_rps_record_flow(sk2);
@@ -2480,7 +2452,7 @@ index 19ab78a..567918a 100644
WARN_ON(!((1 << sk2->sk_state) &
(TCPF_ESTABLISHED | TCPF_SYN_RECV |
TCPF_CLOSE_WAIT | TCPF_CLOSE)));
-@@ -1767,6 +1784,9 @@ static int __init inet_init(void)
+@@ -1770,6 +1787,9 @@
ip_init();
@@ -2490,10 +2462,9 @@ index 19ab78a..567918a 100644
tcp_v4_init();
/* Setup TCP slab cache for open requests. */
-diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
-index 0d1e2cb..423dfb6 100644
---- a/net/ipv4/inet_connection_sock.c
-+++ b/net/ipv4/inet_connection_sock.c
+diff -Nur linux-3.14.45.orig/net/ipv4/inet_connection_sock.c linux-3.14.45/net/ipv4/inet_connection_sock.c
+--- linux-3.14.45.orig/net/ipv4/inet_connection_sock.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/inet_connection_sock.c 2015-06-24 14:15:48.875862469 +0200
@@ -23,6 +23,7 @@
#include <net/route.h>
#include <net/tcp_states.h>
@@ -2502,7 +2473,7 @@ index 0d1e2cb..423dfb6 100644
#ifdef INET_CSK_DEBUG
const char inet_csk_timer_bug_msg[] = "inet_csk BUG: unknown timer value\n";
-@@ -468,8 +469,8 @@ no_route:
+@@ -468,8 +469,8 @@
}
EXPORT_SYMBOL_GPL(inet_csk_route_child_sock);
@@ -2513,7 +2484,7 @@ index 0d1e2cb..423dfb6 100644
{
return jhash_2words((__force u32)raddr, (__force u32)rport, rnd) & (synq_hsize - 1);
}
-@@ -667,7 +668,12 @@ struct sock *inet_csk_clone_lock(const struct sock *sk,
+@@ -667,7 +668,12 @@
const struct request_sock *req,
const gfp_t priority)
{
@@ -2527,7 +2498,7 @@ index 0d1e2cb..423dfb6 100644
if (newsk != NULL) {
struct inet_connection_sock *newicsk = inet_csk(newsk);
-@@ -744,7 +750,8 @@ int inet_csk_listen_start(struct sock *sk, const int nr_table_entries)
+@@ -744,7 +750,8 @@
{
struct inet_sock *inet = inet_sk(sk);
struct inet_connection_sock *icsk = inet_csk(sk);
@@ -2537,7 +2508,7 @@ index 0d1e2cb..423dfb6 100644
if (rc != 0)
return rc;
-@@ -802,9 +809,14 @@ void inet_csk_listen_stop(struct sock *sk)
+@@ -802,9 +809,14 @@
while ((req = acc_req) != NULL) {
struct sock *child = req->sk;
@@ -2552,7 +2523,7 @@ index 0d1e2cb..423dfb6 100644
local_bh_disable();
bh_lock_sock(child);
WARN_ON(sock_owned_by_user(child));
-@@ -833,6 +845,8 @@ void inet_csk_listen_stop(struct sock *sk)
+@@ -833,6 +845,8 @@
bh_unlock_sock(child);
local_bh_enable();
@@ -2561,11 +2532,10 @@ index 0d1e2cb..423dfb6 100644
sock_put(child);
sk_acceptq_removed(sk);
-diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
-index f2ed13c..f08addc 100644
---- a/net/ipv4/syncookies.c
-+++ b/net/ipv4/syncookies.c
-@@ -284,7 +284,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
+diff -Nur linux-3.14.45.orig/net/ipv4/syncookies.c linux-3.14.45/net/ipv4/syncookies.c
+--- linux-3.14.45.orig/net/ipv4/syncookies.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/syncookies.c 2015-06-24 14:15:48.875862469 +0200
+@@ -284,7 +284,7 @@
/* check for timestamp cookie support */
memset(&tcp_opt, 0, sizeof(tcp_opt));
@@ -2574,7 +2544,7 @@ index f2ed13c..f08addc 100644
if (!cookie_check_timestamp(&tcp_opt, sock_net(sk), &ecn_ok))
goto out;
-@@ -354,10 +354,10 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
+@@ -354,10 +354,10 @@
/* Try to redo what tcp_v4_send_synack did. */
req->window_clamp = tp->window_clamp ? :dst_metric(&rt->dst, RTAX_WINDOW);
@@ -2587,10 +2557,9 @@ index f2ed13c..f08addc 100644
ireq->rcv_wscale = rcv_wscale;
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 97c8f56..be72a40 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
+diff -Nur linux-3.14.45.orig/net/ipv4/tcp.c linux-3.14.45/net/ipv4/tcp.c
+--- linux-3.14.45.orig/net/ipv4/tcp.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/tcp.c 2015-06-24 14:15:48.879862472 +0200
@@ -271,6 +271,7 @@
#include <net/icmp.h>
@@ -2599,7 +2568,7 @@ index 97c8f56..be72a40 100644
#include <net/tcp.h>
#include <net/xfrm.h>
#include <net/ip.h>
-@@ -419,6 +420,9 @@ void tcp_init_sock(struct sock *sk)
+@@ -419,6 +420,9 @@
sk->sk_sndbuf = sysctl_tcp_wmem[1];
sk->sk_rcvbuf = sysctl_tcp_rmem[1];
@@ -2609,7 +2578,7 @@ index 97c8f56..be72a40 100644
local_bh_disable();
sock_update_memcg(sk);
sk_sockets_allocated_inc(sk);
-@@ -607,6 +611,8 @@ static inline void skb_entail(struct sock *sk, struct sk_buff *skb)
+@@ -607,6 +611,8 @@
tcb->seq = tcb->end_seq = tp->write_seq;
tcb->tcp_flags = TCPHDR_ACK;
tcb->sacked = 0;
@@ -2618,7 +2587,7 @@ index 97c8f56..be72a40 100644
skb_header_release(skb);
tcp_add_write_queue_tail(sk, skb);
sk->sk_wmem_queued += skb->truesize;
-@@ -640,8 +646,8 @@ static bool tcp_should_autocork(struct sock *sk, struct sk_buff *skb,
+@@ -640,8 +646,8 @@
atomic_read(&sk->sk_wmem_alloc) > skb->truesize;
}
@@ -2629,7 +2598,7 @@ index 97c8f56..be72a40 100644
{
struct tcp_sock *tp = tcp_sk(sk);
struct sk_buff *skb;
-@@ -726,6 +732,14 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,
+@@ -726,6 +732,14 @@
int ret;
sock_rps_record_flow(sk);
@@ -2644,7 +2613,7 @@ index 97c8f56..be72a40 100644
/*
* We can't seek on a socket input
*/
-@@ -821,8 +835,7 @@ struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp)
+@@ -821,8 +835,7 @@
return NULL;
}
@@ -2654,7 +2623,7 @@ index 97c8f56..be72a40 100644
{
struct tcp_sock *tp = tcp_sk(sk);
u32 xmit_size_goal, old_size_goal;
-@@ -872,8 +885,13 @@ static int tcp_send_mss(struct sock *sk, int *size_goal, int flags)
+@@ -872,8 +885,13 @@
{
int mss_now;
@@ -2670,7 +2639,7 @@ index 97c8f56..be72a40 100644
return mss_now;
}
-@@ -897,6 +915,26 @@ static ssize_t do_tcp_sendpages(struct sock *sk, struct page *page, int offset,
+@@ -897,6 +915,26 @@
goto out_err;
}
@@ -2697,7 +2666,7 @@ index 97c8f56..be72a40 100644
clear_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
mss_now = tcp_send_mss(sk, &size_goal, flags);
-@@ -1001,8 +1039,9 @@ int tcp_sendpage(struct sock *sk, struct page *page, int offset,
+@@ -1001,8 +1039,9 @@
{
ssize_t res;
@@ -2709,7 +2678,7 @@ index 97c8f56..be72a40 100644
return sock_no_sendpage(sk->sk_socket, page, offset, size,
flags);
-@@ -1018,6 +1057,9 @@ static inline int select_size(const struct sock *sk, bool sg)
+@@ -1018,6 +1057,9 @@
const struct tcp_sock *tp = tcp_sk(sk);
int tmp = tp->mss_cache;
@@ -2719,7 +2688,7 @@ index 97c8f56..be72a40 100644
if (sg) {
if (sk_can_gso(sk)) {
/* Small frames wont use a full page:
-@@ -1105,6 +1147,12 @@ int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
+@@ -1105,6 +1147,12 @@
goto do_error;
}
@@ -2732,7 +2701,7 @@ index 97c8f56..be72a40 100644
if (unlikely(tp->repair)) {
if (tp->repair_queue == TCP_RECV_QUEUE) {
copied = tcp_send_rcvq(sk, msg, size);
-@@ -1132,7 +1180,10 @@ int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
+@@ -1132,7 +1180,10 @@
if (sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN))
goto out_err;
@@ -2744,7 +2713,7 @@ index 97c8f56..be72a40 100644
while (--iovlen >= 0) {
size_t seglen = iov->iov_len;
-@@ -1183,8 +1234,15 @@ new_segment:
+@@ -1176,8 +1227,15 @@
/*
* Check whether we can use HW checksum.
@@ -2761,7 +2730,7 @@ index 97c8f56..be72a40 100644
skb->ip_summed = CHECKSUM_PARTIAL;
skb_entail(sk, skb);
-@@ -1385,6 +1443,11 @@ void tcp_cleanup_rbuf(struct sock *sk, int copied)
+@@ -1386,6 +1444,11 @@
struct sk_buff *skb = skb_peek(&sk->sk_receive_queue);
@@ -2773,7 +2742,7 @@ index 97c8f56..be72a40 100644
WARN(skb && !before(tp->copied_seq, TCP_SKB_CB(skb)->end_seq),
"cleanup rbuf bug: copied %X seq %X rcvnxt %X\n",
tp->copied_seq, TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt);
-@@ -1421,7 +1484,7 @@ void tcp_cleanup_rbuf(struct sock *sk, int copied)
+@@ -1422,7 +1485,7 @@
/* Optimize, __tcp_select_window() is not cheap. */
if (2*rcv_window_now <= tp->window_clamp) {
@@ -2782,7 +2751,7 @@ index 97c8f56..be72a40 100644
/* Send ACK now, if this read freed lots of space
* in our buffer. Certainly, new_window is new window.
-@@ -1622,6 +1685,14 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
+@@ -1623,6 +1686,14 @@
lock_sock(sk);
@@ -2797,7 +2766,7 @@ index 97c8f56..be72a40 100644
err = -ENOTCONN;
if (sk->sk_state == TCP_LISTEN)
goto out;
-@@ -2069,7 +2140,7 @@ static const unsigned char new_state[16] = {
+@@ -2070,7 +2141,7 @@
/* TCP_CLOSING */ TCP_CLOSING,
};
@@ -2806,7 +2775,7 @@ index 97c8f56..be72a40 100644
{
int next = (int)new_state[sk->sk_state];
int ns = next & TCP_STATE_MASK;
-@@ -2098,8 +2169,12 @@ void tcp_shutdown(struct sock *sk, int how)
+@@ -2099,8 +2170,12 @@
(TCPF_ESTABLISHED | TCPF_SYN_SENT |
TCPF_SYN_RECV | TCPF_CLOSE_WAIT)) {
/* Clear out any half completed packets. FIN if needed. */
@@ -2821,7 +2790,7 @@ index 97c8f56..be72a40 100644
}
}
EXPORT_SYMBOL(tcp_shutdown);
-@@ -2124,6 +2199,11 @@ void tcp_close(struct sock *sk, long timeout)
+@@ -2125,6 +2200,11 @@
int data_was_unread = 0;
int state;
@@ -2833,7 +2802,7 @@ index 97c8f56..be72a40 100644
lock_sock(sk);
sk->sk_shutdown = SHUTDOWN_MASK;
-@@ -2290,15 +2370,6 @@ out:
+@@ -2291,15 +2371,6 @@
}
EXPORT_SYMBOL(tcp_close);
@@ -2849,7 +2818,7 @@ index 97c8f56..be72a40 100644
int tcp_disconnect(struct sock *sk, int flags)
{
struct inet_sock *inet = inet_sk(sk);
-@@ -2339,6 +2410,13 @@ int tcp_disconnect(struct sock *sk, int flags)
+@@ -2340,6 +2411,13 @@
if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK))
inet_reset_saddr(sk);
@@ -2863,7 +2832,7 @@ index 97c8f56..be72a40 100644
sk->sk_shutdown = 0;
sock_reset_flag(sk, SOCK_DONE);
tp->srtt = 0;
-@@ -2698,6 +2776,18 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
+@@ -2699,6 +2777,18 @@
tp->notsent_lowat = val;
sk->sk_write_space(sk);
break;
@@ -2882,7 +2851,7 @@ index 97c8f56..be72a40 100644
default:
err = -ENOPROTOOPT;
break;
-@@ -2917,6 +3007,11 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
+@@ -2918,6 +3008,11 @@
case TCP_NOTSENT_LOWAT:
val = tp->notsent_lowat;
break;
@@ -2894,7 +2863,7 @@ index 97c8f56..be72a40 100644
default:
return -ENOPROTOOPT;
}
-@@ -3106,8 +3201,11 @@ void tcp_done(struct sock *sk)
+@@ -3088,8 +3183,11 @@
if (sk->sk_state == TCP_SYN_SENT || sk->sk_state == TCP_SYN_RECV)
TCP_INC_STATS_BH(sock_net(sk), TCP_MIB_ATTEMPTFAILS);
@@ -2906,10 +2875,9 @@ index 97c8f56..be72a40 100644
if (req != NULL)
reqsk_fastopen_remove(sk, req, false);
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index eeaac39..cb06531 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
+diff -Nur linux-3.14.45.orig/net/ipv4/tcp_input.c linux-3.14.45/net/ipv4/tcp_input.c
+--- linux-3.14.45.orig/net/ipv4/tcp_input.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/tcp_input.c 2015-06-24 14:15:48.883862476 +0200
@@ -74,6 +74,9 @@
#include <linux/ipsec.h>
#include <asm/unaligned.h>
@@ -2920,7 +2888,7 @@ index eeaac39..cb06531 100644
int sysctl_tcp_timestamps __read_mostly = 1;
int sysctl_tcp_window_scaling __read_mostly = 1;
-@@ -99,25 +102,6 @@ int sysctl_tcp_thin_dupack __read_mostly;
+@@ -99,25 +102,6 @@
int sysctl_tcp_moderate_rcvbuf __read_mostly = 1;
int sysctl_tcp_early_retrans __read_mostly = 3;
@@ -2946,7 +2914,7 @@ index eeaac39..cb06531 100644
#define TCP_REMNANT (TCP_FLAG_FIN|TCP_FLAG_URG|TCP_FLAG_SYN|TCP_FLAG_PSH)
#define TCP_HP_BITS (~(TCP_RESERVED_BITS|TCP_FLAG_PSH))
-@@ -283,8 +267,12 @@ static void tcp_sndbuf_expand(struct sock *sk)
+@@ -283,8 +267,12 @@
per_mss = roundup_pow_of_two(per_mss) +
SKB_DATA_ALIGN(sizeof(struct sk_buff));
@@ -2961,7 +2929,7 @@ index eeaac39..cb06531 100644
/* Fast Recovery (RFC 5681 3.2) :
* Cubic needs 1.7 factor, rounded to 2 to include
-@@ -292,8 +280,16 @@ static void tcp_sndbuf_expand(struct sock *sk)
+@@ -292,8 +280,16 @@
*/
sndmem = 2 * nr_segs * per_mss;
@@ -2979,7 +2947,7 @@ index eeaac39..cb06531 100644
}
/* 2. Tuning advertised window (window_clamp, rcv_ssthresh)
-@@ -342,10 +338,12 @@ static int __tcp_grow_window(const struct sock *sk, const struct sk_buff *skb)
+@@ -342,10 +338,12 @@
static void tcp_grow_window(struct sock *sk, const struct sk_buff *skb)
{
struct tcp_sock *tp = tcp_sk(sk);
@@ -2994,7 +2962,7 @@ index eeaac39..cb06531 100644
!sk_under_memory_pressure(sk)) {
int incr;
-@@ -353,14 +351,14 @@ static void tcp_grow_window(struct sock *sk, const struct sk_buff *skb)
+@@ -353,14 +351,14 @@
* will fit to rcvbuf in future.
*/
if (tcp_win_from_space(skb->truesize) <= skb->len)
@@ -3013,7 +2981,7 @@ index eeaac39..cb06531 100644
inet_csk(sk)->icsk_ack.quick |= 1;
}
}
-@@ -543,7 +541,10 @@ void tcp_rcv_space_adjust(struct sock *sk)
+@@ -543,7 +541,10 @@
int copied;
time = tcp_time_stamp - tp->rcvq_space.time;
@@ -3025,7 +2993,7 @@ index eeaac39..cb06531 100644
return;
/* Number of bytes copied to user in last RTT */
-@@ -768,7 +769,7 @@ static void tcp_update_pacing_rate(struct sock *sk)
+@@ -768,7 +769,7 @@
/* Calculate rto without backoff. This is the second half of Van Jacobson's
* routine referred to above.
*/
@@ -3034,7 +3002,7 @@ index eeaac39..cb06531 100644
{
const struct tcp_sock *tp = tcp_sk(sk);
/* Old crap is replaced with new one. 8)
-@@ -2914,7 +2915,7 @@ static inline bool tcp_ack_update_rtt(struct sock *sk, const int flag,
+@@ -2909,7 +2910,7 @@
return false;
tcp_rtt_estimator(sk, seq_rtt);
@@ -3043,7 +3011,7 @@ index eeaac39..cb06531 100644
/* RFC6298: only reset backoff on valid RTT measurement. */
inet_csk(sk)->icsk_backoff = 0;
-@@ -2998,7 +2999,7 @@ void tcp_resume_early_retransmit(struct sock *sk)
+@@ -2993,7 +2994,7 @@
}
/* If we get here, the whole TSO packet has not been acked. */
@@ -3052,7 +3020,7 @@ index eeaac39..cb06531 100644
{
struct tcp_sock *tp = tcp_sk(sk);
u32 packets_acked;
-@@ -3092,6 +3093,8 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
+@@ -3088,6 +3089,8 @@
*/
if (!(scb->tcp_flags & TCPHDR_SYN)) {
flag |= FLAG_DATA_ACKED;
@@ -3061,7 +3029,7 @@ index eeaac39..cb06531 100644
} else {
flag |= FLAG_SYN_ACKED;
tp->retrans_stamp = 0;
-@@ -3194,7 +3197,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
+@@ -3190,7 +3193,7 @@
return flag;
}
@@ -3070,7 +3038,7 @@ index eeaac39..cb06531 100644
{
const struct tcp_sock *tp = tcp_sk(sk);
struct inet_connection_sock *icsk = inet_csk(sk);
-@@ -3241,9 +3244,8 @@ static inline bool tcp_may_raise_cwnd(const struct sock *sk, const int flag)
+@@ -3237,9 +3240,8 @@
/* Check that window update is acceptable.
* The function assumes that snd_una<=ack<=snd_next.
*/
@@ -3082,7 +3050,7 @@ index eeaac39..cb06531 100644
{
return after(ack, tp->snd_una) ||
after(ack_seq, tp->snd_wl1) ||
-@@ -3362,7 +3364,7 @@ static void tcp_process_tlp_ack(struct sock *sk, u32 ack, int flag)
+@@ -3358,7 +3360,7 @@
}
/* This routine deals with incoming acks, but not outgoing ones. */
@@ -3091,7 +3059,7 @@ index eeaac39..cb06531 100644
{
struct inet_connection_sock *icsk = inet_csk(sk);
struct tcp_sock *tp = tcp_sk(sk);
-@@ -3455,6 +3457,16 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
+@@ -3453,6 +3455,16 @@
flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una, sack_rtt);
acked -= tp->packets_out;
@@ -3108,7 +3076,7 @@ index eeaac39..cb06531 100644
/* Advance cwnd if state allows */
if (tcp_may_raise_cwnd(sk, flag))
tcp_cong_avoid(sk, ack, acked, prior_in_flight);
-@@ -3519,8 +3531,9 @@ old_ack:
+@@ -3517,8 +3529,9 @@
* the fast version below fails.
*/
void tcp_parse_options(const struct sk_buff *skb,
@@ -3120,7 +3088,7 @@ index eeaac39..cb06531 100644
{
const unsigned char *ptr;
const struct tcphdr *th = tcp_hdr(skb);
-@@ -3603,6 +3616,10 @@ void tcp_parse_options(const struct sk_buff *skb,
+@@ -3601,6 +3614,10 @@
*/
break;
#endif
@@ -3131,7 +3099,7 @@ index eeaac39..cb06531 100644
case TCPOPT_EXP:
/* Fast Open option shares code 254 using a
* 16 bits magic number. It's valid only in
-@@ -3664,8 +3681,8 @@ static bool tcp_fast_parse_options(const struct sk_buff *skb,
+@@ -3662,8 +3679,8 @@
if (tcp_parse_aligned_timestamp(tp, th))
return true;
}
@@ -3142,7 +3110,7 @@ index eeaac39..cb06531 100644
if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr)
tp->rx_opt.rcv_tsecr -= tp->tsoffset;
-@@ -3838,6 +3855,8 @@ static void tcp_fin(struct sock *sk)
+@@ -3836,6 +3853,8 @@
dst = __sk_dst_get(sk);
if (!dst || !dst_metric(dst, RTAX_QUICKACK))
inet_csk(sk)->icsk_ack.pingpong = 1;
@@ -3151,7 +3119,7 @@ index eeaac39..cb06531 100644
break;
case TCP_CLOSE_WAIT:
-@@ -3859,6 +3878,13 @@ static void tcp_fin(struct sock *sk)
+@@ -3857,6 +3876,13 @@
tcp_set_state(sk, TCP_CLOSING);
break;
case TCP_FIN_WAIT2:
@@ -3165,7 +3133,7 @@ index eeaac39..cb06531 100644
/* Received a FIN -- send ACK and enter TIME_WAIT. */
tcp_send_ack(sk);
tcp_time_wait(sk, TCP_TIME_WAIT, 0);
-@@ -3883,6 +3909,10 @@ static void tcp_fin(struct sock *sk)
+@@ -3881,6 +3907,10 @@
if (!sock_flag(sk, SOCK_DEAD)) {
sk->sk_state_change(sk);
@@ -3176,7 +3144,7 @@ index eeaac39..cb06531 100644
/* Do not send POLL_HUP for half duplex close. */
if (sk->sk_shutdown == SHUTDOWN_MASK ||
sk->sk_state == TCP_CLOSE)
-@@ -4080,7 +4110,11 @@ static void tcp_ofo_queue(struct sock *sk)
+@@ -4078,7 +4108,11 @@
tcp_dsack_extend(sk, TCP_SKB_CB(skb)->seq, dsack);
}
@@ -3189,7 +3157,7 @@ index eeaac39..cb06531 100644
SOCK_DEBUG(sk, "ofo packet was already received\n");
__skb_unlink(skb, &tp->out_of_order_queue);
__kfree_skb(skb);
-@@ -4104,6 +4138,9 @@ static int tcp_prune_queue(struct sock *sk);
+@@ -4102,6 +4136,9 @@
static int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb,
unsigned int size)
{
@@ -3199,7 +3167,7 @@ index eeaac39..cb06531 100644
if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf ||
!sk_rmem_schedule(sk, skb, size)) {
-@@ -4134,15 +4171,16 @@ static int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb,
+@@ -4132,15 +4169,16 @@
* Better try to coalesce them right now to avoid future collapses.
* Returns true if caller should free @from instead of queueing it
*/
@@ -3220,7 +3188,7 @@ index eeaac39..cb06531 100644
if (tcp_hdr(from)->fin)
return false;
-@@ -4232,7 +4270,9 @@ static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb)
+@@ -4230,7 +4268,9 @@
/* Do skb overlap to previous one? */
if (skb1 && before(seq, TCP_SKB_CB(skb1)->end_seq)) {
@@ -3231,7 +3199,7 @@ index eeaac39..cb06531 100644
/* All the bits are present. Drop. */
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPOFOMERGE);
__kfree_skb(skb);
-@@ -4270,6 +4310,9 @@ static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb)
+@@ -4268,6 +4308,9 @@
end_seq);
break;
}
@@ -3241,7 +3209,7 @@ index eeaac39..cb06531 100644
__skb_unlink(skb1, &tp->out_of_order_queue);
tcp_dsack_extend(sk, TCP_SKB_CB(skb1)->seq,
TCP_SKB_CB(skb1)->end_seq);
-@@ -4287,8 +4330,8 @@ end:
+@@ -4285,8 +4328,8 @@
}
}
@@ -3252,7 +3220,7 @@ index eeaac39..cb06531 100644
{
int eaten;
struct sk_buff *tail = skb_peek_tail(&sk->sk_receive_queue);
-@@ -4350,7 +4393,10 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
+@@ -4348,7 +4391,10 @@
int eaten = -1;
bool fragstolen = false;
@@ -3264,7 +3232,7 @@ index eeaac39..cb06531 100644
goto drop;
skb_dst_drop(skb);
-@@ -4396,7 +4442,7 @@ queue_and_out:
+@@ -4394,7 +4440,7 @@
eaten = tcp_queue_rcv(sk, skb, 0, &fragstolen);
}
tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq;
@@ -3273,7 +3241,7 @@ index eeaac39..cb06531 100644
tcp_event_data_recv(sk, skb);
if (th->fin)
tcp_fin(sk);
-@@ -4418,7 +4464,11 @@ queue_and_out:
+@@ -4416,7 +4462,11 @@
if (eaten > 0)
kfree_skb_partial(skb, fragstolen);
@@ -3286,7 +3254,7 @@ index eeaac39..cb06531 100644
sk->sk_data_ready(sk, 0);
return;
}
-@@ -4470,6 +4520,8 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb,
+@@ -4468,6 +4518,8 @@
next = skb_queue_next(list, skb);
__skb_unlink(skb, list);
@@ -3295,7 +3263,7 @@ index eeaac39..cb06531 100644
__kfree_skb(skb);
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPRCVCOLLAPSED);
-@@ -4642,6 +4694,18 @@ static bool tcp_prune_ofo_queue(struct sock *sk)
+@@ -4640,6 +4692,18 @@
struct tcp_sock *tp = tcp_sk(sk);
bool res = false;
@@ -3314,7 +3282,7 @@ index eeaac39..cb06531 100644
if (!skb_queue_empty(&tp->out_of_order_queue)) {
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_OFOPRUNED);
__skb_queue_purge(&tp->out_of_order_queue);
-@@ -4731,7 +4795,7 @@ void tcp_cwnd_application_limited(struct sock *sk)
+@@ -4729,7 +4793,7 @@
tp->snd_cwnd_stamp = tcp_time_stamp;
}
@@ -3323,7 +3291,7 @@ index eeaac39..cb06531 100644
{
const struct tcp_sock *tp = tcp_sk(sk);
-@@ -4766,7 +4830,7 @@ static void tcp_new_space(struct sock *sk)
+@@ -4764,7 +4828,7 @@
{
struct tcp_sock *tp = tcp_sk(sk);
@@ -3332,7 +3300,7 @@ index eeaac39..cb06531 100644
tcp_sndbuf_expand(sk);
tp->snd_cwnd_stamp = tcp_time_stamp;
}
-@@ -4778,8 +4842,9 @@ static void tcp_check_space(struct sock *sk)
+@@ -4776,8 +4840,9 @@
{
if (sock_flag(sk, SOCK_QUEUE_SHRUNK)) {
sock_reset_flag(sk, SOCK_QUEUE_SHRUNK);
@@ -3344,7 +3312,7 @@ index eeaac39..cb06531 100644
tcp_new_space(sk);
}
}
-@@ -4802,7 +4867,7 @@ static void __tcp_ack_snd_check(struct sock *sk, int ofo_possible)
+@@ -4800,7 +4865,7 @@
/* ... and right edge of window advances far enough.
* (tcp_recvmsg() will send ACK otherwise). Or...
*/
@@ -3353,7 +3321,7 @@ index eeaac39..cb06531 100644
/* We ACK each frame or... */
tcp_in_quickack_mode(sk) ||
/* We have out of order data. */
-@@ -4904,6 +4969,10 @@ static void tcp_urg(struct sock *sk, struct sk_buff *skb, const struct tcphdr *t
+@@ -4902,6 +4967,10 @@
{
struct tcp_sock *tp = tcp_sk(sk);
@@ -3364,7 +3332,7 @@ index eeaac39..cb06531 100644
/* Check if we get a new urgent pointer - normally not. */
if (th->urg)
tcp_check_urg(sk, th);
-@@ -4971,8 +5040,7 @@ static inline bool tcp_checksum_complete_user(struct sock *sk,
+@@ -4969,8 +5038,7 @@
}
#ifdef CONFIG_NET_DMA
@@ -3374,7 +3342,7 @@ index eeaac39..cb06531 100644
{
struct tcp_sock *tp = tcp_sk(sk);
int chunk = skb->len - hlen;
-@@ -5081,9 +5149,15 @@ syn_challenge:
+@@ -5079,9 +5147,15 @@
goto discard;
}
@@ -3390,7 +3358,7 @@ index eeaac39..cb06531 100644
__kfree_skb(skb);
return false;
}
-@@ -5135,6 +5209,10 @@ void tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
+@@ -5133,6 +5207,10 @@
tp->rx_opt.saw_tstamp = 0;
@@ -3401,7 +3369,7 @@ index eeaac39..cb06531 100644
/* pred_flags is 0xS?10 << 16 + snd_wnd
* if header_prediction is to be made
* 'S' will always be tp->tcp_header_len >> 2
-@@ -5349,7 +5427,7 @@ void tcp_finish_connect(struct sock *sk, struct sk_buff *skb)
+@@ -5347,7 +5425,7 @@
*/
tp->lsndtime = tcp_time_stamp;
@@ -3410,7 +3378,7 @@ index eeaac39..cb06531 100644
if (sock_flag(sk, SOCK_KEEPOPEN))
inet_csk_reset_keepalive_timer(sk, keepalive_time_when(tp));
-@@ -5379,7 +5457,7 @@ static bool tcp_rcv_fastopen_synack(struct sock *sk, struct sk_buff *synack,
+@@ -5377,7 +5455,7 @@
/* Get original SYNACK MSS value if user MSS sets mss_clamp */
tcp_clear_options(&opt);
opt.user_mss = opt.mss_clamp = 0;
@@ -3419,7 +3387,7 @@ index eeaac39..cb06531 100644
mss = opt.mss_clamp;
}
-@@ -5414,8 +5492,11 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5412,8 +5490,11 @@
struct tcp_sock *tp = tcp_sk(sk);
struct tcp_fastopen_cookie foc = { .len = -1 };
int saved_clamp = tp->rx_opt.mss_clamp;
@@ -3432,7 +3400,7 @@ index eeaac39..cb06531 100644
if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr)
tp->rx_opt.rcv_tsecr -= tp->tsoffset;
-@@ -5462,6 +5543,21 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5460,6 +5541,21 @@
if (!th->syn)
goto discard_and_undo;
@@ -3454,7 +3422,7 @@ index eeaac39..cb06531 100644
/* rfc793:
* "If the SYN bit is on ...
* are acceptable then ...
-@@ -5474,6 +5570,15 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5472,6 +5568,15 @@
tcp_init_wl(tp, TCP_SKB_CB(skb)->seq);
tcp_ack(sk, skb, FLAG_SLOWPATH);
@@ -3470,7 +3438,7 @@ index eeaac39..cb06531 100644
/* Ok.. it's good. Set up sequence numbers and
* move to established.
*/
-@@ -5500,6 +5605,11 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5498,6 +5603,11 @@
tp->tcp_header_len = sizeof(struct tcphdr);
}
@@ -3482,7 +3450,7 @@ index eeaac39..cb06531 100644
if (tcp_is_sack(tp) && sysctl_tcp_fack)
tcp_enable_fack(tp);
-@@ -5520,7 +5630,9 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5518,7 +5628,9 @@
tcp_rcv_fastopen_synack(sk, skb, &foc))
return -1;
@@ -3493,7 +3461,7 @@ index eeaac39..cb06531 100644
icsk->icsk_accept_queue.rskq_defer_accept ||
icsk->icsk_ack.pingpong) {
/* Save one ACK. Data will be ready after
-@@ -5562,6 +5674,7 @@ discard:
+@@ -5560,6 +5672,7 @@
tcp_paws_reject(&tp->rx_opt, 0))
goto discard_and_undo;
@@ -3501,7 +3469,7 @@ index eeaac39..cb06531 100644
if (th->syn) {
/* We see SYN without ACK. It is attempt of
* simultaneous connect with crossed SYNs.
-@@ -5578,6 +5691,11 @@ discard:
+@@ -5576,6 +5689,11 @@
tp->tcp_header_len = sizeof(struct tcphdr);
}
@@ -3513,7 +3481,7 @@ index eeaac39..cb06531 100644
tp->rcv_nxt = TCP_SKB_CB(skb)->seq + 1;
tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1;
-@@ -5636,6 +5754,7 @@ reset_and_undo:
+@@ -5634,6 +5752,7 @@
int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
const struct tcphdr *th, unsigned int len)
@@ -3521,7 +3489,7 @@ index eeaac39..cb06531 100644
{
struct tcp_sock *tp = tcp_sk(sk);
struct inet_connection_sock *icsk = inet_csk(sk);
-@@ -5687,6 +5806,10 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5685,6 +5804,10 @@
case TCP_SYN_SENT:
queued = tcp_rcv_synsent_state_process(sk, skb, th, len);
@@ -3532,7 +3500,7 @@ index eeaac39..cb06531 100644
if (queued >= 0)
return queued;
-@@ -5694,6 +5817,8 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5692,6 +5815,8 @@
tcp_urg(sk, skb, th);
__kfree_skb(skb);
tcp_data_snd_check(sk);
@@ -3541,7 +3509,7 @@ index eeaac39..cb06531 100644
return 0;
}
-@@ -5736,7 +5861,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5734,7 +5859,7 @@
tcp_mtup_init(sk);
tp->copied_seq = tp->rcv_nxt;
@@ -3550,7 +3518,7 @@ index eeaac39..cb06531 100644
}
smp_mb();
tcp_set_state(sk, TCP_ESTABLISHED);
-@@ -5756,6 +5881,8 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5754,6 +5879,8 @@
if (tp->rx_opt.tstamp_ok)
tp->advmss -= TCPOLEN_TSTAMP_ALIGNED;
@@ -3559,7 +3527,7 @@ index eeaac39..cb06531 100644
if (req) {
/* Re-arm the timer because data may have been sent out.
-@@ -5777,6 +5904,12 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5775,6 +5902,12 @@
tcp_initialize_rcv_mss(sk);
tcp_fast_path_on(tp);
@@ -3572,7 +3540,7 @@ index eeaac39..cb06531 100644
break;
case TCP_FIN_WAIT1: {
-@@ -5828,7 +5961,8 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5826,7 +5959,8 @@
tmo = tcp_fin_time(sk);
if (tmo > TCP_TIMEWAIT_LEN) {
inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN);
@@ -3582,7 +3550,7 @@ index eeaac39..cb06531 100644
/* Bad case. We could lose such FIN otherwise.
* It is not a big problem, but it looks confusing
* and not so rare event. We still can lose it now,
-@@ -5857,6 +5991,9 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5855,6 +5989,9 @@
goto discard;
}
break;
@@ -3592,7 +3560,7 @@ index eeaac39..cb06531 100644
}
/* step 6: check the URG bit */
-@@ -5877,7 +6014,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5875,7 +6012,11 @@
*/
if (sk->sk_shutdown & RCV_SHUTDOWN) {
if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
@@ -3605,10 +3573,9 @@ index eeaac39..cb06531 100644
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
tcp_reset(sk);
return 1;
-diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
-index 1e4eac7..5891fa6 100644
---- a/net/ipv4/tcp_ipv4.c
-+++ b/net/ipv4/tcp_ipv4.c
+diff -Nur linux-3.14.45.orig/net/ipv4/tcp_ipv4.c linux-3.14.45/net/ipv4/tcp_ipv4.c
+--- linux-3.14.45.orig/net/ipv4/tcp_ipv4.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/tcp_ipv4.c 2015-06-24 14:15:48.883862476 +0200
@@ -67,6 +67,8 @@
#include <net/icmp.h>
#include <net/inet_hashtables.h>
@@ -3618,7 +3585,7 @@ index 1e4eac7..5891fa6 100644
#include <net/transp_v6.h>
#include <net/ipv6.h>
#include <net/inet_common.h>
-@@ -99,7 +101,7 @@ static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
+@@ -99,7 +101,7 @@
struct inet_hashinfo tcp_hashinfo;
EXPORT_SYMBOL(tcp_hashinfo);
@@ -3627,7 +3594,7 @@ index 1e4eac7..5891fa6 100644
{
return secure_tcp_sequence_number(ip_hdr(skb)->daddr,
ip_hdr(skb)->saddr,
-@@ -334,7 +336,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -335,7 +337,7 @@
struct inet_sock *inet;
const int type = icmp_hdr(icmp_skb)->type;
const int code = icmp_hdr(icmp_skb)->code;
@@ -3636,7 +3603,7 @@ index 1e4eac7..5891fa6 100644
struct sk_buff *skb;
struct request_sock *req;
__u32 seq;
-@@ -358,13 +360,19 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -359,13 +361,19 @@
return;
}
@@ -3658,7 +3625,7 @@ index 1e4eac7..5891fa6 100644
if (!(type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED))
NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS);
}
-@@ -377,7 +385,6 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -378,7 +386,6 @@
}
icsk = inet_csk(sk);
@@ -3666,7 +3633,7 @@ index 1e4eac7..5891fa6 100644
req = tp->fastopen_rsk;
seq = ntohl(th->seq);
if (sk->sk_state != TCP_LISTEN &&
-@@ -411,11 +418,13 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -412,11 +419,13 @@
goto out;
tp->mtu_info = info;
@@ -3681,7 +3648,7 @@ index 1e4eac7..5891fa6 100644
}
goto out;
}
-@@ -431,7 +440,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -432,7 +441,7 @@
/* XXX (TFO) - revisit the following logic for TFO */
@@ -3690,7 +3657,7 @@ index 1e4eac7..5891fa6 100644
break;
icsk->icsk_backoff--;
-@@ -473,7 +482,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -474,7 +483,7 @@
switch (sk->sk_state) {
struct request_sock *req, **prev;
case TCP_LISTEN:
@@ -3699,7 +3666,7 @@ index 1e4eac7..5891fa6 100644
goto out;
req = inet_csk_search_req(sk, &prev, th->dest,
-@@ -506,7 +515,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -507,7 +516,7 @@
It can f.e. if SYNs crossed,
or Fast Open.
*/
@@ -3708,7 +3675,7 @@ index 1e4eac7..5891fa6 100644
sk->sk_err = err;
sk->sk_error_report(sk);
-@@ -535,7 +544,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -536,7 +545,7 @@
*/
inet = inet_sk(sk);
@@ -3717,7 +3684,7 @@ index 1e4eac7..5891fa6 100644
sk->sk_err = err;
sk->sk_error_report(sk);
} else { /* Only an error on timeout */
-@@ -543,7 +552,7 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
+@@ -544,7 +553,7 @@
}
out:
@@ -3726,7 +3693,7 @@ index 1e4eac7..5891fa6 100644
sock_put(sk);
}
-@@ -585,7 +594,7 @@ EXPORT_SYMBOL(tcp_v4_send_check);
+@@ -586,7 +595,7 @@
* Exception: precedence violation. We do not implement it in any case.
*/
@@ -3735,7 +3702,7 @@ index 1e4eac7..5891fa6 100644
{
const struct tcphdr *th = tcp_hdr(skb);
struct {
-@@ -709,10 +718,10 @@ release_sk1:
+@@ -711,10 +720,10 @@
outside socket context is ugly, certainly. What can I do?
*/
@@ -3748,7 +3715,7 @@ index 1e4eac7..5891fa6 100644
{
const struct tcphdr *th = tcp_hdr(skb);
struct {
-@@ -721,6 +730,10 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
+@@ -723,6 +732,10 @@
#ifdef CONFIG_TCP_MD5SIG
+ (TCPOLEN_MD5SIG_ALIGNED >> 2)
#endif
@@ -3759,7 +3726,7 @@ index 1e4eac7..5891fa6 100644
];
} rep;
struct ip_reply_arg arg;
-@@ -765,6 +778,21 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
+@@ -767,6 +780,21 @@
ip_hdr(skb)->daddr, &rep.th);
}
#endif
@@ -3781,7 +3748,7 @@ index 1e4eac7..5891fa6 100644
arg.flags = reply_flags;
arg.csum = csum_tcpudp_nofold(ip_hdr(skb)->daddr,
ip_hdr(skb)->saddr, /* XXX */
-@@ -783,36 +811,44 @@ static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb)
+@@ -786,36 +814,44 @@
{
struct inet_timewait_sock *tw = inet_twsk(sk);
struct tcp_timewait_sock *tcptw = tcp_twsk(sk);
@@ -3831,7 +3798,7 @@ index 1e4eac7..5891fa6 100644
}
/*
-@@ -820,9 +856,9 @@ static void tcp_v4_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
+@@ -823,9 +859,9 @@
* This still operates on a request_sock only, not on a big
* socket.
*/
@@ -3844,7 +3811,7 @@ index 1e4eac7..5891fa6 100644
{
const struct inet_request_sock *ireq = inet_rsk(req);
struct flowi4 fl4;
-@@ -850,7 +886,7 @@ static int tcp_v4_send_synack(struct sock *sk, struct dst_entry *dst,
+@@ -853,7 +889,7 @@
return err;
}
@@ -3853,7 +3820,7 @@ index 1e4eac7..5891fa6 100644
{
int res = tcp_v4_send_synack(sk, NULL, req, 0);
-@@ -862,7 +898,7 @@ static int tcp_v4_rtx_synack(struct sock *sk, struct request_sock *req)
+@@ -865,7 +901,7 @@
/*
* IPv4 request_sock destructor.
*/
@@ -3862,7 +3829,7 @@ index 1e4eac7..5891fa6 100644
{
kfree(inet_rsk(req)->opt);
}
-@@ -902,7 +938,7 @@ EXPORT_SYMBOL(tcp_syn_flood_action);
+@@ -905,7 +941,7 @@
/*
* Save and compile IPv4 options into the request_sock if needed.
*/
@@ -3871,7 +3838,7 @@ index 1e4eac7..5891fa6 100644
{
const struct ip_options *opt = &(IPCB(skb)->opt);
struct ip_options_rcu *dopt = NULL;
-@@ -1254,7 +1290,7 @@ struct request_sock_ops tcp_request_sock_ops __read_mostly = {
+@@ -1257,7 +1293,7 @@
};
#ifdef CONFIG_TCP_MD5SIG
@@ -3880,7 +3847,7 @@ index 1e4eac7..5891fa6 100644
.md5_lookup = tcp_v4_reqsk_md5_lookup,
.calc_md5_hash = tcp_v4_md5_hash_skb,
};
-@@ -1412,7 +1448,7 @@ static int tcp_v4_conn_req_fastopen(struct sock *sk,
+@@ -1415,7 +1451,7 @@
tcp_init_congestion_control(child);
tcp_mtup_init(child);
tcp_init_metrics(child);
@@ -3889,7 +3856,7 @@ index 1e4eac7..5891fa6 100644
/* Queue the data carried in the SYN packet. We need to first
* bump skb's refcnt because the caller will attempt to free it.
-@@ -1444,6 +1480,7 @@ static int tcp_v4_conn_req_fastopen(struct sock *sk,
+@@ -1447,6 +1483,7 @@
int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
{
struct tcp_options_received tmp_opt;
@@ -3897,7 +3864,7 @@ index 1e4eac7..5891fa6 100644
struct request_sock *req;
struct inet_request_sock *ireq;
struct tcp_sock *tp = tcp_sk(sk);
-@@ -1458,6 +1495,22 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
+@@ -1461,6 +1498,22 @@
struct sk_buff *skb_synack;
int do_fastopen;
@@ -3920,7 +3887,7 @@ index 1e4eac7..5891fa6 100644
/* Never answer to SYNs send to broadcast or multicast */
if (skb_rtable(skb)->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST))
goto drop;
-@@ -1483,7 +1536,22 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
+@@ -1486,7 +1539,22 @@
goto drop;
}
@@ -3944,7 +3911,7 @@ index 1e4eac7..5891fa6 100644
if (!req)
goto drop;
-@@ -1491,17 +1559,15 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
+@@ -1494,17 +1562,15 @@
tcp_rsk(req)->af_specific = &tcp_request_sock_ipv4_ops;
#endif
@@ -3965,7 +3932,7 @@ index 1e4eac7..5891fa6 100644
ireq = inet_rsk(req);
ireq->ir_loc_addr = daddr;
ireq->ir_rmt_addr = saddr;
-@@ -1713,7 +1779,7 @@ put_and_exit:
+@@ -1716,7 +1782,7 @@
}
EXPORT_SYMBOL(tcp_v4_syn_recv_sock);
@@ -3974,7 +3941,7 @@ index 1e4eac7..5891fa6 100644
{
struct tcphdr *th = tcp_hdr(skb);
const struct iphdr *iph = ip_hdr(skb);
-@@ -1730,8 +1796,15 @@ static struct sock *tcp_v4_hnd_req(struct sock *sk, struct sk_buff *skb)
+@@ -1733,8 +1799,15 @@
if (nsk) {
if (nsk->sk_state != TCP_TIME_WAIT) {
@@ -3990,7 +3957,7 @@ index 1e4eac7..5891fa6 100644
}
inet_twsk_put(inet_twsk(nsk));
return NULL;
-@@ -1788,6 +1861,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -1791,6 +1864,9 @@
goto discard;
#endif
@@ -4000,7 +3967,7 @@ index 1e4eac7..5891fa6 100644
if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
struct dst_entry *dst = sk->sk_rx_dst;
-@@ -1919,7 +1995,7 @@ bool tcp_prequeue(struct sock *sk, struct sk_buff *skb)
+@@ -1922,7 +1998,7 @@
} else if (skb_queue_len(&tp->ucopy.prequeue) == 1) {
wake_up_interruptible_sync_poll(sk_sleep(sk),
POLLIN | POLLRDNORM | POLLRDBAND);
@@ -4009,7 +3976,7 @@ index 1e4eac7..5891fa6 100644
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK,
(3 * tcp_rto_min(sk)) / 4,
TCP_RTO_MAX);
-@@ -1936,7 +2012,7 @@ int tcp_v4_rcv(struct sk_buff *skb)
+@@ -1939,7 +2015,7 @@
{
const struct iphdr *iph;
const struct tcphdr *th;
@@ -4018,7 +3985,7 @@ index 1e4eac7..5891fa6 100644
int ret;
struct net *net = dev_net(skb->dev);
-@@ -1969,18 +2045,42 @@ int tcp_v4_rcv(struct sk_buff *skb)
+@@ -1972,18 +2048,42 @@
TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin +
skb->len - th->doff * 4);
TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq);
@@ -4064,7 +4031,7 @@ index 1e4eac7..5891fa6 100644
if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
goto discard_and_relse;
-@@ -1996,11 +2096,21 @@ process:
+@@ -1999,11 +2099,21 @@
sk_mark_napi_id(sk, skb);
skb->dev = NULL;
@@ -4089,7 +4056,7 @@ index 1e4eac7..5891fa6 100644
if (!tp->ucopy.dma_chan && tp->ucopy.pinned_list)
tp->ucopy.dma_chan = net_dma_find_channel();
if (tp->ucopy.dma_chan)
-@@ -2008,16 +2118,16 @@ process:
+@@ -2011,16 +2121,16 @@
else
#endif
{
@@ -4111,7 +4078,7 @@ index 1e4eac7..5891fa6 100644
sock_put(sk);
-@@ -2072,6 +2182,18 @@ do_time_wait:
+@@ -2075,6 +2185,18 @@
sk = sk2;
goto process;
}
@@ -4130,7 +4097,7 @@ index 1e4eac7..5891fa6 100644
/* Fall through to ACK */
}
case TCP_TW_ACK:
-@@ -2154,6 +2276,11 @@ void tcp_v4_destroy_sock(struct sock *sk)
+@@ -2158,6 +2280,11 @@
tcp_cleanup_congestion_control(sk);
@@ -4142,10 +4109,9 @@ index 1e4eac7..5891fa6 100644
/* Cleanup up the write buffer. */
tcp_write_queue_purge(sk);
-diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
-index 7a436c5..72f9b8e 100644
---- a/net/ipv4/tcp_minisocks.c
-+++ b/net/ipv4/tcp_minisocks.c
+diff -Nur linux-3.14.45.orig/net/ipv4/tcp_minisocks.c linux-3.14.45/net/ipv4/tcp_minisocks.c
+--- linux-3.14.45.orig/net/ipv4/tcp_minisocks.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/tcp_minisocks.c 2015-06-24 14:15:48.887862480 +0200
@@ -18,11 +18,13 @@
* Jorge Cwik, <jorge@laser.satlink.net>
*/
@@ -4160,7 +4126,7 @@ index 7a436c5..72f9b8e 100644
#include <net/tcp.h>
#include <net/inet_common.h>
#include <net/xfrm.h>
-@@ -95,10 +97,13 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
+@@ -95,10 +97,13 @@
struct tcp_options_received tmp_opt;
struct tcp_timewait_sock *tcptw = tcp_twsk((struct sock *)tw);
bool paws_reject = false;
@@ -4175,7 +4141,7 @@ index 7a436c5..72f9b8e 100644
if (tmp_opt.saw_tstamp) {
tmp_opt.rcv_tsecr -= tcptw->tw_ts_offset;
-@@ -106,6 +111,11 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
+@@ -106,6 +111,11 @@
tmp_opt.ts_recent_stamp = tcptw->tw_ts_recent_stamp;
paws_reject = tcp_paws_reject(&tmp_opt, th->rst);
}
@@ -4187,7 +4153,7 @@ index 7a436c5..72f9b8e 100644
}
if (tw->tw_substate == TCP_FIN_WAIT2) {
-@@ -128,6 +138,16 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
+@@ -128,6 +138,16 @@
if (!th->ack ||
!after(TCP_SKB_CB(skb)->end_seq, tcptw->tw_rcv_nxt) ||
TCP_SKB_CB(skb)->end_seq == TCP_SKB_CB(skb)->seq) {
@@ -4204,7 +4170,7 @@ index 7a436c5..72f9b8e 100644
inet_twsk_put(tw);
return TCP_TW_SUCCESS;
}
-@@ -270,6 +290,11 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
+@@ -270,6 +290,11 @@
const struct tcp_sock *tp = tcp_sk(sk);
bool recycle_ok = false;
@@ -4216,7 +4182,7 @@ index 7a436c5..72f9b8e 100644
if (tcp_death_row.sysctl_tw_recycle && tp->rx_opt.ts_recent_stamp)
recycle_ok = tcp_remember_stamp(sk);
-@@ -290,6 +315,15 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
+@@ -290,6 +315,15 @@
tcptw->tw_ts_recent_stamp = tp->rx_opt.ts_recent_stamp;
tcptw->tw_ts_offset = tp->tsoffset;
@@ -4232,7 +4198,7 @@ index 7a436c5..72f9b8e 100644
#if IS_ENABLED(CONFIG_IPV6)
if (tw->tw_family == PF_INET6) {
struct ipv6_pinfo *np = inet6_sk(sk);
-@@ -347,15 +381,19 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
+@@ -347,15 +381,19 @@
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPTIMEWAITOVERFLOW);
}
@@ -4253,7 +4219,7 @@ index 7a436c5..72f9b8e 100644
if (twsk->tw_md5_key)
kfree_rcu(twsk->tw_md5_key, rcu);
#endif
-@@ -392,6 +430,9 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
+@@ -392,6 +430,9 @@
newtp->snd_sml = newtp->snd_una =
newtp->snd_nxt = newtp->snd_up = treq->snt_isn + 1;
@@ -4263,7 +4229,7 @@ index 7a436c5..72f9b8e 100644
tcp_prequeue_init(newtp);
INIT_LIST_HEAD(&newtp->tsq_node);
-@@ -436,7 +477,11 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
+@@ -436,7 +477,11 @@
newtp->urg_data = 0;
@@ -4276,7 +4242,7 @@ index 7a436c5..72f9b8e 100644
inet_csk_reset_keepalive_timer(newsk,
keepalive_time_when(newtp));
-@@ -468,6 +513,8 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
+@@ -468,6 +513,8 @@
newtp->rx_opt.ts_recent_stamp = 0;
newtp->tcp_header_len = sizeof(struct tcphdr);
}
@@ -4285,7 +4251,7 @@ index 7a436c5..72f9b8e 100644
newtp->tsoffset = 0;
#ifdef CONFIG_TCP_MD5SIG
newtp->md5sig_info = NULL; /*XXX*/
-@@ -504,16 +551,20 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
+@@ -504,16 +551,20 @@
bool fastopen)
{
struct tcp_options_received tmp_opt;
@@ -4308,7 +4274,7 @@ index 7a436c5..72f9b8e 100644
if (tmp_opt.saw_tstamp) {
tmp_opt.ts_recent = req->ts_recent;
-@@ -552,7 +603,14 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
+@@ -552,7 +603,14 @@
*
* Reset timer after retransmitting SYNACK, similar to
* the idea of fast retransmit in recovery.
@@ -4323,7 +4289,7 @@ index 7a436c5..72f9b8e 100644
if (!inet_rtx_syn_ack(sk, req))
req->expires = min(TCP_TIMEOUT_INIT << req->num_timeout,
TCP_RTO_MAX) + jiffies;
-@@ -674,7 +732,20 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
+@@ -674,7 +732,20 @@
/* While TCP_DEFER_ACCEPT is active, drop bare ACK. */
if (req->num_timeout < inet_csk(sk)->icsk_accept_queue.rskq_defer_accept &&
@@ -4345,7 +4311,7 @@ index 7a436c5..72f9b8e 100644
inet_rsk(req)->acked = 1;
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPDEFERACCEPTDROP);
return NULL;
-@@ -686,10 +757,29 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
+@@ -686,10 +757,29 @@
* ESTABLISHED STATE. If it will be dropped after
* socket is created, wait for troubles.
*/
@@ -4376,7 +4342,7 @@ index 7a436c5..72f9b8e 100644
inet_csk_reqsk_queue_unlink(sk, req, prev);
inet_csk_reqsk_queue_removed(sk, req);
-@@ -739,8 +829,9 @@ int tcp_child_process(struct sock *parent, struct sock *child,
+@@ -739,8 +829,9 @@
{
int ret = 0;
int state = child->sk_state;
@@ -4387,7 +4353,7 @@ index 7a436c5..72f9b8e 100644
ret = tcp_rcv_state_process(child, skb, tcp_hdr(skb),
skb->len);
/* Wakeup parent, send SIGIO */
-@@ -751,10 +842,14 @@ int tcp_child_process(struct sock *parent, struct sock *child,
+@@ -751,10 +842,14 @@
* in main socket hash table and lock on listening
* socket does not protect us more.
*/
@@ -4404,10 +4370,9 @@ index 7a436c5..72f9b8e 100644
sock_put(child);
return ret;
}
-diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
-index 17a11e6..6b45057 100644
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
+diff -Nur linux-3.14.45.orig/net/ipv4/tcp_output.c linux-3.14.45/net/ipv4/tcp_output.c
+--- linux-3.14.45.orig/net/ipv4/tcp_output.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/tcp_output.c 2015-06-24 14:15:48.887862480 +0200
@@ -36,6 +36,12 @@
#define pr_fmt(fmt) "TCP: " fmt
@@ -4421,7 +4386,7 @@ index 17a11e6..6b45057 100644
#include <net/tcp.h>
#include <linux/compiler.h>
-@@ -72,7 +78,7 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
+@@ -72,7 +78,7 @@
int push_one, gfp_t gfp);
/* Account for new data that has been sent to the network. */
@@ -4430,7 +4395,7 @@ index 17a11e6..6b45057 100644
{
struct inet_connection_sock *icsk = inet_csk(sk);
struct tcp_sock *tp = tcp_sk(sk);
-@@ -211,7 +217,7 @@ u32 tcp_default_init_rwnd(u32 mss)
+@@ -211,7 +217,7 @@
void tcp_select_initial_window(int __space, __u32 mss,
__u32 *rcv_wnd, __u32 *window_clamp,
int wscale_ok, __u8 *rcv_wscale,
@@ -4439,7 +4404,7 @@ index 17a11e6..6b45057 100644
{
unsigned int space = (__space < 0 ? 0 : __space);
-@@ -266,11 +272,15 @@ EXPORT_SYMBOL(tcp_select_initial_window);
+@@ -266,11 +272,15 @@
* value can be stuffed directly into th->window for an outgoing
* frame.
*/
@@ -4458,7 +4423,7 @@ index 17a11e6..6b45057 100644
/* Never shrink the offered window */
if (new_win < cur_win) {
-@@ -283,6 +293,7 @@ static u16 tcp_select_window(struct sock *sk)
+@@ -283,6 +293,7 @@
*/
new_win = ALIGN(cur_win, 1 << tp->rx_opt.rcv_wscale);
}
@@ -4466,7 +4431,7 @@ index 17a11e6..6b45057 100644
tp->rcv_wnd = new_win;
tp->rcv_wup = tp->rcv_nxt;
-@@ -361,7 +372,7 @@ static inline void TCP_ECN_send(struct sock *sk, struct sk_buff *skb,
+@@ -361,7 +372,7 @@
/* Constructs common control bits of non-data skb. If SYN/FIN is present,
* auto increment end seqno.
*/
@@ -4475,7 +4440,7 @@ index 17a11e6..6b45057 100644
{
struct skb_shared_info *shinfo = skb_shinfo(skb);
-@@ -381,7 +392,7 @@ static void tcp_init_nondata_skb(struct sk_buff *skb, u32 seq, u8 flags)
+@@ -381,7 +392,7 @@
TCP_SKB_CB(skb)->end_seq = seq;
}
@@ -4484,7 +4449,7 @@ index 17a11e6..6b45057 100644
{
return tp->snd_una != tp->snd_up;
}
-@@ -391,17 +402,7 @@ static inline bool tcp_urg_mode(const struct tcp_sock *tp)
+@@ -391,17 +402,7 @@
#define OPTION_MD5 (1 << 2)
#define OPTION_WSCALE (1 << 3)
#define OPTION_FAST_OPEN_COOKIE (1 << 8)
@@ -4503,7 +4468,7 @@ index 17a11e6..6b45057 100644
/* Write previously computed TCP options to the packet.
*
-@@ -417,7 +418,7 @@ struct tcp_out_options {
+@@ -417,7 +418,7 @@
* (but it may well be that other scenarios fail similarly).
*/
static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
@@ -4512,7 +4477,7 @@ index 17a11e6..6b45057 100644
{
u16 options = opts->options; /* mungable copy */
-@@ -500,6 +501,9 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
+@@ -500,6 +501,9 @@
}
ptr += (foc->len + 3) >> 2;
}
@@ -4522,7 +4487,7 @@ index 17a11e6..6b45057 100644
}
/* Compute TCP options for SYN packets. This is not the final
-@@ -551,6 +555,8 @@ static unsigned int tcp_syn_options(struct sock *sk, struct sk_buff *skb,
+@@ -551,6 +555,8 @@
if (unlikely(!(OPTION_TS & opts->options)))
remaining -= TCPOLEN_SACKPERM_ALIGNED;
}
@@ -4531,7 +4496,7 @@ index 17a11e6..6b45057 100644
if (fastopen && fastopen->cookie.len >= 0) {
u32 need = TCPOLEN_EXP_FASTOPEN_BASE + fastopen->cookie.len;
-@@ -624,6 +630,9 @@ static unsigned int tcp_synack_options(struct sock *sk,
+@@ -624,6 +630,9 @@
}
}
@@ -4541,7 +4506,7 @@ index 17a11e6..6b45057 100644
return MAX_TCP_OPTION_SPACE - remaining;
}
-@@ -657,16 +666,22 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb
+@@ -657,16 +666,22 @@
opts->tsecr = tp->rx_opt.ts_recent;
size += TCPOLEN_TSTAMP_ALIGNED;
}
@@ -4571,7 +4536,7 @@ index 17a11e6..6b45057 100644
}
return size;
-@@ -714,7 +729,7 @@ static void tcp_tasklet_func(unsigned long data)
+@@ -714,7 +729,7 @@
unsigned long flags;
struct list_head *q, *n;
struct tcp_sock *tp;
@@ -4580,7 +4545,7 @@ index 17a11e6..6b45057 100644
local_irq_save(flags);
list_splice_init(&tsq->head, &list);
-@@ -725,15 +740,27 @@ static void tcp_tasklet_func(unsigned long data)
+@@ -725,15 +740,27 @@
list_del(&tp->tsq_node);
sk = (struct sock *)tp;
@@ -4611,7 +4576,7 @@ index 17a11e6..6b45057 100644
clear_bit(TSQ_QUEUED, &tp->tsq_flags);
sk_free(sk);
-@@ -743,7 +770,10 @@ static void tcp_tasklet_func(unsigned long data)
+@@ -743,7 +770,10 @@
#define TCP_DEFERRED_ALL ((1UL << TCP_TSQ_DEFERRED) | \
(1UL << TCP_WRITE_TIMER_DEFERRED) | \
(1UL << TCP_DELACK_TIMER_DEFERRED) | \
@@ -4623,8 +4588,8 @@ index 17a11e6..6b45057 100644
/**
* tcp_release_cb - tcp release_sock() callback
* @sk: socket
-@@ -790,6 +820,13 @@ void tcp_release_cb(struct sock *sk)
- sk->sk_prot->mtu_reduced(sk);
+@@ -790,6 +820,13 @@
+ inet_csk(sk)->icsk_af_ops->mtu_reduced(sk);
__sock_put(sk);
}
+ if (flags & (1UL << MPTCP_PATH_MANAGER)) {
@@ -4637,7 +4602,7 @@ index 17a11e6..6b45057 100644
}
EXPORT_SYMBOL(tcp_release_cb);
-@@ -849,8 +886,8 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -849,8 +886,8 @@
* We are working here with either a clone of the original
* SKB, or a fresh unique copy made by the retransmit engine.
*/
@@ -4648,7 +4613,7 @@ index 17a11e6..6b45057 100644
{
const struct inet_connection_sock *icsk = inet_csk(sk);
struct inet_sock *inet;
-@@ -878,10 +915,28 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
+@@ -878,10 +915,28 @@
NET_INC_STATS(sock_net(sk),
LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES);
@@ -4680,7 +4645,7 @@ index 17a11e6..6b45057 100644
if (unlikely(!skb))
return -ENOBUFS;
}
-@@ -929,7 +984,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
+@@ -929,7 +984,7 @@
*/
th->window = htons(min(tp->rcv_wnd, 65535U));
} else {
@@ -4689,7 +4654,7 @@ index 17a11e6..6b45057 100644
}
th->check = 0;
th->urg_ptr = 0;
-@@ -945,7 +1000,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
+@@ -945,7 +1000,7 @@
}
}
@@ -4698,7 +4663,7 @@ index 17a11e6..6b45057 100644
if (likely((tcb->tcp_flags & TCPHDR_SYN) == 0))
TCP_ECN_send(sk, skb, tcp_header_size);
-@@ -984,7 +1039,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
+@@ -984,7 +1039,7 @@
* NOTE: probe0 timer is not checked, do not forget tcp_push_pending_frames,
* otherwise socket can stall.
*/
@@ -4707,7 +4672,7 @@ index 17a11e6..6b45057 100644
{
struct tcp_sock *tp = tcp_sk(sk);
-@@ -997,15 +1052,16 @@ static void tcp_queue_skb(struct sock *sk, struct sk_buff *skb)
+@@ -997,15 +1052,16 @@
}
/* Initialize TSO segments for a packet. */
@@ -4727,7 +4692,7 @@ index 17a11e6..6b45057 100644
/* Avoid the costly divide in the normal
* non-TSO case.
*/
-@@ -1037,7 +1093,7 @@ static void tcp_adjust_fackets_out(struct sock *sk, const struct sk_buff *skb,
+@@ -1037,7 +1093,7 @@
/* Pcount in the middle of the write queue got changed, we need to do various
* tweaks to fix counters
*/
@@ -4736,7 +4701,7 @@ index 17a11e6..6b45057 100644
{
struct tcp_sock *tp = tcp_sk(sk);
-@@ -1078,6 +1134,9 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len,
+@@ -1078,6 +1134,9 @@
int nlen;
u8 flags;
@@ -4746,7 +4711,7 @@ index 17a11e6..6b45057 100644
if (WARN_ON(len > skb->len))
return -EINVAL;
-@@ -1160,7 +1219,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len,
+@@ -1160,7 +1219,7 @@
* eventually). The difference is that pulled data not copied, but
* immediately discarded.
*/
@@ -4755,7 +4720,7 @@ index 17a11e6..6b45057 100644
{
struct skb_shared_info *shinfo;
int i, k, eat;
-@@ -1201,6 +1260,9 @@ static void __pskb_trim_head(struct sk_buff *skb, int len)
+@@ -1201,6 +1260,9 @@
/* Remove acked data from a packet in the transmit queue. */
int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len)
{
@@ -4765,7 +4730,7 @@ index 17a11e6..6b45057 100644
if (skb_unclone(skb, GFP_ATOMIC))
return -ENOMEM;
-@@ -1218,6 +1280,15 @@ int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len)
+@@ -1218,6 +1280,15 @@
if (tcp_skb_pcount(skb) > 1)
tcp_set_skb_tso_segs(sk, skb, tcp_skb_mss(skb));
@@ -4781,7 +4746,7 @@ index 17a11e6..6b45057 100644
return 0;
}
-@@ -1377,7 +1448,7 @@ unsigned int tcp_current_mss(struct sock *sk)
+@@ -1377,7 +1448,7 @@
}
/* Congestion window validation. (RFC2861) */
@@ -4790,7 +4755,7 @@ index 17a11e6..6b45057 100644
{
struct tcp_sock *tp = tcp_sk(sk);
-@@ -1411,8 +1482,8 @@ static bool tcp_minshall_check(const struct tcp_sock *tp)
+@@ -1411,8 +1482,8 @@
* But we can avoid doing the divide again given we already have
* skb_pcount = skb->len / mss_now
*/
@@ -4801,7 +4766,7 @@ index 17a11e6..6b45057 100644
{
if (skb->len < tcp_skb_pcount(skb) * mss_now)
tp->snd_sml = TCP_SKB_CB(skb)->end_seq;
-@@ -1433,19 +1504,28 @@ static bool tcp_nagle_check(bool partial, const struct tcp_sock *tp,
+@@ -1433,19 +1504,28 @@
(!nonagle && tp->packets_out && tcp_minshall_check(tp)));
}
/* Returns the portion of skb which can be sent right away */
@@ -4837,7 +4802,7 @@ index 17a11e6..6b45057 100644
return max_len;
needed = min(skb->len, window);
-@@ -1467,13 +1547,14 @@ static unsigned int tcp_mss_split_point(const struct sock *sk,
+@@ -1467,13 +1547,14 @@
/* Can at least one segment of SKB be sent right now, according to the
* congestion window rules? If so, return how many segments are allowed.
*/
@@ -4855,7 +4820,7 @@ index 17a11e6..6b45057 100644
tcp_skb_pcount(skb) == 1)
return 1;
-@@ -1489,8 +1570,8 @@ static inline unsigned int tcp_cwnd_test(const struct tcp_sock *tp,
+@@ -1489,8 +1570,8 @@
* This must be invoked the first time we consider transmitting
* SKB onto the wire.
*/
@@ -4866,7 +4831,7 @@ index 17a11e6..6b45057 100644
{
int tso_segs = tcp_skb_pcount(skb);
-@@ -1505,8 +1586,8 @@ static int tcp_init_tso_segs(const struct sock *sk, struct sk_buff *skb,
+@@ -1505,8 +1586,8 @@
/* Return true if the Nagle test allows this packet to be
* sent now.
*/
@@ -4877,7 +4842,7 @@ index 17a11e6..6b45057 100644
{
/* Nagle rule does not apply to frames, which sit in the middle of the
* write_queue (they have no chances to get new data).
-@@ -1518,7 +1599,8 @@ static inline bool tcp_nagle_test(const struct tcp_sock *tp, const struct sk_buf
+@@ -1518,7 +1599,8 @@
return true;
/* Don't use the nagle rule for urgent data (or for the final FIN). */
@@ -4887,7 +4852,7 @@ index 17a11e6..6b45057 100644
return true;
if (!tcp_nagle_check(skb->len < cur_mss, tp, cur_mss, nonagle))
-@@ -1528,9 +1610,8 @@ static inline bool tcp_nagle_test(const struct tcp_sock *tp, const struct sk_buf
+@@ -1528,9 +1610,8 @@
}
/* Does at least the first segment of SKB fit into the send window? */
@@ -4899,7 +4864,7 @@ index 17a11e6..6b45057 100644
{
u32 end_seq = TCP_SKB_CB(skb)->end_seq;
-@@ -1549,14 +1630,16 @@ static unsigned int tcp_snd_test(const struct sock *sk, struct sk_buff *skb,
+@@ -1549,14 +1630,16 @@
{
const struct tcp_sock *tp = tcp_sk(sk);
unsigned int cwnd_quota;
@@ -4919,7 +4884,7 @@ index 17a11e6..6b45057 100644
cwnd_quota = 0;
return cwnd_quota;
-@@ -1566,12 +1649,16 @@ static unsigned int tcp_snd_test(const struct sock *sk, struct sk_buff *skb,
+@@ -1566,12 +1649,16 @@
bool tcp_may_send_now(struct sock *sk)
{
const struct tcp_sock *tp = tcp_sk(sk);
@@ -4939,7 +4904,7 @@ index 17a11e6..6b45057 100644
}
/* Trim TSO SKB to LEN bytes, put the remaining data into a new packet
-@@ -1588,6 +1675,9 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len,
+@@ -1588,6 +1675,9 @@
int nlen = skb->len - len;
u8 flags;
@@ -4949,7 +4914,7 @@ index 17a11e6..6b45057 100644
/* All of a TSO frame must be composed of paged data. */
if (skb->len != skb->data_len)
return tcp_fragment(sk, skb, len, mss_now);
-@@ -1633,29 +1723,39 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len,
+@@ -1633,29 +1723,39 @@
*
* This algorithm is from John Heffner.
*/
@@ -4994,7 +4959,7 @@ index 17a11e6..6b45057 100644
/* From in_flight test above, we know that cwnd > in_flight. */
cong_win = (tp->snd_cwnd - in_flight) * tp->mss_cache;
-@@ -1668,7 +1768,7 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb)
+@@ -1668,7 +1768,7 @@
goto send_now;
/* Middle in queue won't get any more data, full sendable already? */
@@ -5003,7 +4968,7 @@ index 17a11e6..6b45057 100644
goto send_now;
win_divisor = ACCESS_ONCE(sysctl_tcp_tso_win_divisor);
-@@ -1694,13 +1794,13 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb)
+@@ -1694,13 +1794,13 @@
/* Ok, it looks like it is advisable to defer.
* Do not rearm the timer if already set to not break TCP ACK clocking.
*/
@@ -5020,7 +4985,7 @@ index 17a11e6..6b45057 100644
return false;
}
-@@ -1713,7 +1813,7 @@ send_now:
+@@ -1713,7 +1813,7 @@
* 1 if a probe was sent,
* -1 otherwise
*/
@@ -5029,7 +4994,7 @@ index 17a11e6..6b45057 100644
{
struct tcp_sock *tp = tcp_sk(sk);
struct inet_connection_sock *icsk = inet_csk(sk);
-@@ -1858,6 +1958,9 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
+@@ -1858,6 +1958,9 @@
int cwnd_quota;
int result;
@@ -5039,7 +5004,7 @@ index 17a11e6..6b45057 100644
sent_pkts = 0;
if (!push_one) {
-@@ -2313,6 +2416,10 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *to,
+@@ -2314,6 +2417,10 @@
if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_SYN)
return;
@@ -5050,7 +5015,7 @@ index 17a11e6..6b45057 100644
tcp_for_write_queue_from_safe(skb, tmp, sk) {
if (!tcp_can_collapse(sk, skb))
break;
-@@ -2410,10 +2517,26 @@ int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
+@@ -2411,10 +2518,26 @@
*/
if (unlikely((NET_IP_ALIGN && ((unsigned long)skb->data & 3)) ||
skb_headroom(skb) >= 0xFFFF)) {
@@ -5080,7 +5045,7 @@ index 17a11e6..6b45057 100644
} else {
err = tcp_transmit_skb(sk, skb, 1, GFP_ATOMIC);
}
-@@ -2640,6 +2763,11 @@ void tcp_send_active_reset(struct sock *sk, gfp_t priority)
+@@ -2665,6 +2788,11 @@
{
struct sk_buff *skb;
@@ -5092,7 +5057,7 @@ index 17a11e6..6b45057 100644
/* NOTE: No TCP options attached and we never retransmit this. */
skb = alloc_skb(MAX_TCP_HEADER, priority);
if (!skb) {
-@@ -2742,14 +2870,14 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
+@@ -2767,14 +2895,14 @@
(req->window_clamp > tcp_full_space(sk) || req->window_clamp == 0))
req->window_clamp = tcp_full_space(sk);
@@ -5111,7 +5076,7 @@ index 17a11e6..6b45057 100644
ireq->rcv_wscale = rcv_wscale;
}
-@@ -2785,7 +2913,7 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
+@@ -2810,7 +2938,7 @@
/* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */
th->window = htons(min(req->rcv_wnd, 65535U));
@@ -5120,7 +5085,7 @@ index 17a11e6..6b45057 100644
th->doff = (tcp_header_size >> 2);
TCP_ADD_STATS(sock_net(sk), TCP_MIB_OUTSEGS, tcp_skb_pcount(skb));
-@@ -2839,13 +2967,13 @@ static void tcp_connect_init(struct sock *sk)
+@@ -2866,13 +2994,13 @@
(tp->window_clamp > tcp_full_space(sk) || tp->window_clamp == 0))
tp->window_clamp = tcp_full_space(sk);
@@ -5136,7 +5101,7 @@ index 17a11e6..6b45057 100644
tp->rx_opt.rcv_wscale = rcv_wscale;
tp->rcv_ssthresh = tp->rcv_wnd;
-@@ -2869,6 +2997,38 @@ static void tcp_connect_init(struct sock *sk)
+@@ -2896,6 +3024,38 @@
inet_csk(sk)->icsk_rto = TCP_TIMEOUT_INIT;
inet_csk(sk)->icsk_retransmits = 0;
tcp_clear_retrans(tp);
@@ -5175,7 +5140,7 @@ index 17a11e6..6b45057 100644
}
static void tcp_connect_queue_skb(struct sock *sk, struct sk_buff *skb)
-@@ -3111,6 +3271,7 @@ void tcp_send_ack(struct sock *sk)
+@@ -3131,6 +3291,7 @@
TCP_SKB_CB(buff)->when = tcp_time_stamp;
tcp_transmit_skb(sk, buff, 0, sk_gfp_atomic(sk, GFP_ATOMIC));
}
@@ -5183,7 +5148,7 @@ index 17a11e6..6b45057 100644
/* This routine sends a packet with an out of date sequence
* number. It assumes the other end will try to ack it.
-@@ -3123,7 +3284,7 @@ void tcp_send_ack(struct sock *sk)
+@@ -3143,7 +3304,7 @@
* one is with SEG.SEQ=SND.UNA to deliver urgent pointer, another is
* out-of-date with SND.UNA-1 to probe window.
*/
@@ -5192,7 +5157,7 @@ index 17a11e6..6b45057 100644
{
struct tcp_sock *tp = tcp_sk(sk);
struct sk_buff *skb;
-@@ -3161,6 +3322,9 @@ int tcp_write_wakeup(struct sock *sk)
+@@ -3181,6 +3342,9 @@
if (sk->sk_state == TCP_CLOSE)
return -1;
@@ -5202,10 +5167,9 @@ index 17a11e6..6b45057 100644
if ((skb = tcp_send_head(sk)) != NULL &&
before(TCP_SKB_CB(skb)->seq, tcp_wnd_end(tp))) {
int err;
-diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
-index 64f0354..7b55b9a 100644
---- a/net/ipv4/tcp_timer.c
-+++ b/net/ipv4/tcp_timer.c
+diff -Nur linux-3.14.45.orig/net/ipv4/tcp_timer.c linux-3.14.45/net/ipv4/tcp_timer.c
+--- linux-3.14.45.orig/net/ipv4/tcp_timer.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv4/tcp_timer.c 2015-06-24 14:15:48.891862483 +0200
@@ -20,6 +20,7 @@
#include <linux/module.h>
@@ -5214,7 +5178,7 @@ index 64f0354..7b55b9a 100644
#include <net/tcp.h>
int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
-@@ -32,7 +33,7 @@ int sysctl_tcp_retries2 __read_mostly = TCP_RETR2;
+@@ -32,7 +33,7 @@
int sysctl_tcp_orphan_retries __read_mostly;
int sysctl_tcp_thin_linear_timeouts __read_mostly;
@@ -5223,7 +5187,7 @@ index 64f0354..7b55b9a 100644
{
sk->sk_err = sk->sk_err_soft ? : ETIMEDOUT;
sk->sk_error_report(sk);
-@@ -124,10 +125,8 @@ static void tcp_mtu_probing(struct inet_connection_sock *icsk, struct sock *sk)
+@@ -124,10 +125,8 @@
* retransmissions with an initial RTO of TCP_RTO_MIN or TCP_TIMEOUT_INIT if
* syn_set flag is set.
*/
@@ -5236,7 +5200,7 @@ index 64f0354..7b55b9a 100644
{
unsigned int linear_backoff_thresh, start_ts;
unsigned int rto_base = syn_set ? TCP_TIMEOUT_INIT : TCP_RTO_MIN;
-@@ -153,7 +152,7 @@ static bool retransmits_timed_out(struct sock *sk,
+@@ -153,7 +152,7 @@
}
/* A write timeout has occurred. Process the after effects. */
@@ -5245,7 +5209,7 @@ index 64f0354..7b55b9a 100644
{
struct inet_connection_sock *icsk = inet_csk(sk);
struct tcp_sock *tp = tcp_sk(sk);
-@@ -168,6 +167,10 @@ static int tcp_write_timeout(struct sock *sk)
+@@ -168,6 +167,10 @@
}
retry_until = icsk->icsk_syn_retries ? : sysctl_tcp_syn_retries;
syn_set = true;
@@ -5256,7 +5220,7 @@ index 64f0354..7b55b9a 100644
} else {
if (retransmits_timed_out(sk, sysctl_tcp_retries1, 0, 0)) {
/* Black hole detection */
-@@ -248,18 +251,22 @@ out:
+@@ -248,18 +251,22 @@
static void tcp_delack_timer(unsigned long data)
{
struct sock *sk = (struct sock *)data;
@@ -5283,7 +5247,7 @@ index 64f0354..7b55b9a 100644
sock_put(sk);
}
-@@ -421,6 +428,9 @@ void tcp_retransmit_timer(struct sock *sk)
+@@ -421,6 +428,9 @@
tcp_enter_loss(sk, 0);
@@ -5293,7 +5257,7 @@ index 64f0354..7b55b9a 100644
if (tcp_retransmit_skb(sk, tcp_write_queue_head(sk)) > 0) {
/* Retransmission failed because of local congestion,
* do not backoff.
-@@ -471,6 +481,8 @@ out_reset_timer:
+@@ -471,6 +481,8 @@
/* Use normal (exponential) backoff */
icsk->icsk_rto = min(icsk->icsk_rto << 1, TCP_RTO_MAX);
}
@@ -5302,7 +5266,7 @@ index 64f0354..7b55b9a 100644
inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, icsk->icsk_rto, TCP_RTO_MAX);
if (retransmits_timed_out(sk, sysctl_tcp_retries1 + 1, 0, 0))
__sk_dst_reset(sk);
-@@ -502,7 +514,10 @@ void tcp_write_timer_handler(struct sock *sk)
+@@ -502,7 +514,10 @@
break;
case ICSK_TIME_RETRANS:
icsk->icsk_pending = 0;
@@ -5314,7 +5278,7 @@ index 64f0354..7b55b9a 100644
break;
case ICSK_TIME_PROBE0:
icsk->icsk_pending = 0;
-@@ -517,16 +532,19 @@ out:
+@@ -517,16 +532,19 @@
static void tcp_write_timer(unsigned long data)
{
struct sock *sk = (struct sock *)data;
@@ -5337,7 +5301,7 @@ index 64f0354..7b55b9a 100644
sock_put(sk);
}
-@@ -563,11 +581,12 @@ static void tcp_keepalive_timer (unsigned long data)
+@@ -563,11 +581,12 @@
struct sock *sk = (struct sock *) data;
struct inet_connection_sock *icsk = inet_csk(sk);
struct tcp_sock *tp = tcp_sk(sk);
@@ -5352,7 +5316,7 @@ index 64f0354..7b55b9a 100644
/* Try again later. */
inet_csk_reset_keepalive_timer (sk, HZ/20);
goto out;
-@@ -578,6 +597,29 @@ static void tcp_keepalive_timer (unsigned long data)
+@@ -578,6 +597,29 @@
goto out;
}
@@ -5382,7 +5346,7 @@ index 64f0354..7b55b9a 100644
if (sk->sk_state == TCP_FIN_WAIT2 && sock_flag(sk, SOCK_DEAD)) {
if (tp->linger2 >= 0) {
const int tmo = tcp_fin_time(sk) - TCP_TIMEWAIT_LEN;
-@@ -639,7 +681,7 @@ death:
+@@ -639,7 +681,7 @@
tcp_done(sk);
out:
@@ -5391,11 +5355,10 @@ index 64f0354..7b55b9a 100644
sock_put(sk);
}
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index 6c7fa08..733d602 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -765,6 +765,7 @@ void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp)
+diff -Nur linux-3.14.45.orig/net/ipv6/addrconf.c linux-3.14.45/net/ipv6/addrconf.c
+--- linux-3.14.45.orig/net/ipv6/addrconf.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv6/addrconf.c 2015-06-24 14:15:48.891862483 +0200
+@@ -765,6 +765,7 @@
kfree_rcu(ifp, rcu);
}
@@ -5403,11 +5366,10 @@ index 6c7fa08..733d602 100644
static void
ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
-diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
-index d935889..9f0fd80 100644
---- a/net/ipv6/af_inet6.c
-+++ b/net/ipv6/af_inet6.c
-@@ -97,8 +97,7 @@ static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk)
+diff -Nur linux-3.14.45.orig/net/ipv6/af_inet6.c linux-3.14.45/net/ipv6/af_inet6.c
+--- linux-3.14.45.orig/net/ipv6/af_inet6.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv6/af_inet6.c 2015-06-24 14:15:48.891862483 +0200
+@@ -97,8 +97,7 @@
return (struct ipv6_pinfo *)(((u8 *)sk) + offset);
}
@@ -5417,11 +5379,10 @@ index d935889..9f0fd80 100644
{
struct inet_sock *inet;
struct ipv6_pinfo *np;
-diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
-index c913818..2f5b4c5 100644
---- a/net/ipv6/inet6_connection_sock.c
-+++ b/net/ipv6/inet6_connection_sock.c
-@@ -96,8 +96,8 @@ struct dst_entry *inet6_csk_route_req(struct sock *sk,
+diff -Nur linux-3.14.45.orig/net/ipv6/inet6_connection_sock.c linux-3.14.45/net/ipv6/inet6_connection_sock.c
+--- linux-3.14.45.orig/net/ipv6/inet6_connection_sock.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv6/inet6_connection_sock.c 2015-06-24 14:15:48.891862483 +0200
+@@ -96,8 +96,8 @@
/*
* request_sock (formerly open request) hash tables.
*/
@@ -5432,11 +5393,10 @@ index c913818..2f5b4c5 100644
{
u32 c;
-diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c
-index bb53a5e7..0d29995 100644
---- a/net/ipv6/syncookies.c
-+++ b/net/ipv6/syncookies.c
-@@ -181,7 +181,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
+diff -Nur linux-3.14.45.orig/net/ipv6/syncookies.c linux-3.14.45/net/ipv6/syncookies.c
+--- linux-3.14.45.orig/net/ipv6/syncookies.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv6/syncookies.c 2015-06-24 14:15:48.891862483 +0200
+@@ -181,7 +181,7 @@
/* check for timestamp cookie support */
memset(&tcp_opt, 0, sizeof(tcp_opt));
@@ -5445,7 +5405,7 @@ index bb53a5e7..0d29995 100644
if (!cookie_check_timestamp(&tcp_opt, sock_net(sk), &ecn_ok))
goto out;
-@@ -253,10 +253,10 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
+@@ -253,10 +253,10 @@
}
req->window_clamp = tp->window_clamp ? :dst_metric(dst, RTAX_WINDOW);
@@ -5458,10 +5418,9 @@ index bb53a5e7..0d29995 100644
ireq->rcv_wscale = rcv_wscale;
-diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
-index 889079b..d7f8b5f 100644
---- a/net/ipv6/tcp_ipv6.c
-+++ b/net/ipv6/tcp_ipv6.c
+diff -Nur linux-3.14.45.orig/net/ipv6/tcp_ipv6.c linux-3.14.45/net/ipv6/tcp_ipv6.c
+--- linux-3.14.45.orig/net/ipv6/tcp_ipv6.c 2015-06-23 02:01:36.000000000 +0200
++++ linux-3.14.45/net/ipv6/tcp_ipv6.c 2015-06-24 14:44:57.517799806 +0200
@@ -63,6 +63,8 @@
#include <net/inet_common.h>
#include <net/secure_seq.h>
@@ -5486,7 +5445,7 @@ index 889079b..d7f8b5f 100644
#ifdef CONFIG_TCP_MD5SIG
static const struct tcp_sock_af_ops tcp_sock_ipv6_specific;
static const struct tcp_sock_af_ops tcp_sock_ipv6_mapped_specific;
-@@ -92,7 +86,7 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk,
+@@ -92,7 +86,7 @@
}
#endif
@@ -5495,7 +5454,7 @@ index 889079b..d7f8b5f 100644
{
struct dst_entry *dst = skb_dst(skb);
const struct rt6_info *rt = (const struct rt6_info *)dst;
-@@ -104,7 +98,7 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
+@@ -104,7 +98,7 @@
inet6_sk(sk)->rx_dst_cookie = rt->rt6i_node->fn_sernum;
}
@@ -5504,7 +5463,7 @@ index 889079b..d7f8b5f 100644
{
if (sk->sk_state != TCP_CLOSE) {
if (inet_csk(sk)->icsk_af_ops == &ipv6_mapped) {
-@@ -117,7 +111,7 @@ static void tcp_v6_hash(struct sock *sk)
+@@ -117,7 +111,7 @@
}
}
@@ -5513,7 +5472,7 @@ index 889079b..d7f8b5f 100644
{
return secure_tcpv6_sequence_number(ipv6_hdr(skb)->daddr.s6_addr32,
ipv6_hdr(skb)->saddr.s6_addr32,
-@@ -125,7 +119,7 @@ static __u32 tcp_v6_init_sequence(const struct sk_buff *skb)
+@@ -125,7 +119,7 @@
tcp_hdr(skb)->source);
}
@@ -5522,7 +5481,7 @@ index 889079b..d7f8b5f 100644
int addr_len)
{
struct sockaddr_in6 *usin = (struct sockaddr_in6 *) uaddr;
-@@ -339,7 +333,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+@@ -339,7 +333,7 @@
const struct ipv6hdr *hdr = (const struct ipv6hdr *)skb->data;
const struct tcphdr *th = (struct tcphdr *)(skb->data+offset);
struct ipv6_pinfo *np;
@@ -5531,7 +5490,7 @@ index 889079b..d7f8b5f 100644
int err;
struct tcp_sock *tp;
__u32 seq;
-@@ -359,8 +353,14 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+@@ -359,8 +353,14 @@
return;
}
@@ -5548,7 +5507,7 @@ index 889079b..d7f8b5f 100644
NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS);
if (sk->sk_state == TCP_CLOSE)
-@@ -371,7 +371,6 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+@@ -371,7 +371,6 @@
goto out;
}
@@ -5556,7 +5515,7 @@ index 889079b..d7f8b5f 100644
seq = ntohl(th->seq);
if (sk->sk_state != TCP_LISTEN &&
!between(seq, tp->snd_una, tp->snd_nxt)) {
-@@ -401,11 +400,15 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+@@ -401,11 +400,15 @@
goto out;
tp->mtu_info = ntohl(info);
@@ -5575,7 +5534,7 @@ index 889079b..d7f8b5f 100644
goto out;
}
-@@ -415,7 +418,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+@@ -415,7 +418,7 @@
switch (sk->sk_state) {
struct request_sock *req, **prev;
case TCP_LISTEN:
@@ -5584,7 +5543,7 @@ index 889079b..d7f8b5f 100644
goto out;
req = inet6_csk_search_req(sk, &prev, th->dest, &hdr->daddr,
-@@ -440,7 +443,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+@@ -440,7 +443,7 @@
case TCP_SYN_SENT:
case TCP_SYN_RECV: /* Cannot happen.
It can, it SYNs are crossed. --ANK */
@@ -5593,7 +5552,7 @@ index 889079b..d7f8b5f 100644
sk->sk_err = err;
sk->sk_error_report(sk); /* Wake people up to see the error (see connect in sock.c) */
-@@ -450,22 +453,22 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+@@ -450,22 +453,22 @@
goto out;
}
@@ -5622,7 +5581,7 @@ index 889079b..d7f8b5f 100644
{
struct inet_request_sock *ireq = inet_rsk(req);
struct ipv6_pinfo *np = inet6_sk(sk);
-@@ -495,7 +498,7 @@ done:
+@@ -495,7 +498,7 @@
return err;
}
@@ -5631,7 +5590,7 @@ index 889079b..d7f8b5f 100644
{
struct flowi6 fl6;
int res;
-@@ -506,7 +509,7 @@ static int tcp_v6_rtx_synack(struct sock *sk, struct request_sock *req)
+@@ -506,7 +509,7 @@
return res;
}
@@ -5640,7 +5599,7 @@ index 889079b..d7f8b5f 100644
{
kfree_skb(inet_rsk(req)->pktopts);
}
-@@ -719,16 +722,16 @@ struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
+@@ -719,16 +722,16 @@
};
#ifdef CONFIG_TCP_MD5SIG
@@ -5661,7 +5620,7 @@ index 889079b..d7f8b5f 100644
{
const struct tcphdr *th = tcp_hdr(skb);
struct tcphdr *t1;
-@@ -746,7 +749,10 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
+@@ -746,7 +749,10 @@
if (key)
tot_len += TCPOLEN_MD5SIG_ALIGNED;
#endif
@@ -5673,7 +5632,7 @@ index 889079b..d7f8b5f 100644
buff = alloc_skb(MAX_HEADER + sizeof(struct ipv6hdr) + tot_len,
GFP_ATOMIC);
if (buff == NULL)
-@@ -784,6 +790,17 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
+@@ -784,6 +790,17 @@
tcp_v6_md5_hash_hdr((__u8 *)topt, key,
&ipv6_hdr(skb)->saddr,
&ipv6_hdr(skb)->daddr, t1);
@@ -5691,7 +5650,7 @@ index 889079b..d7f8b5f 100644
}
#endif
-@@ -821,7 +838,7 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
+@@ -821,7 +838,7 @@
kfree_skb(buff);
}
@@ -5700,7 +5659,7 @@ index 889079b..d7f8b5f 100644
{
const struct tcphdr *th = tcp_hdr(skb);
u32 seq = 0, ack_seq = 0;
-@@ -876,7 +893,7 @@ static void tcp_v6_send_reset(struct sock *sk, struct sk_buff *skb)
+@@ -876,7 +893,7 @@
ack_seq = ntohl(th->seq) + th->syn + th->fin + skb->len -
(th->doff << 2);
@@ -5709,7 +5668,7 @@ index 889079b..d7f8b5f 100644
#ifdef CONFIG_TCP_MD5SIG
release_sk1:
-@@ -887,40 +904,47 @@ release_sk1:
+@@ -887,40 +904,48 @@
#endif
}
@@ -5721,10 +5680,9 @@ index 889079b..d7f8b5f 100644
+ struct tcp_md5sig_key *key, u8 tclass, u32 label,
+ int mptcp)
{
-- tcp_v6_send_response(skb, seq, ack, win, tsval, tsecr, key, 0, tclass,
+ tcp_v6_send_response(skb, seq, ack, win, tsval, tsecr, key, 0, tclass,
- label);
-+ tcp_v6_send_response(skb, seq, ack, data_ack, win, tsval, tsecr, key, 0,
-+ tclass, label, mptcp);
++ label, mptcp);
}
static void tcp_v6_timewait_ack(struct sock *sk, struct sk_buff *skb)
@@ -5733,26 +5691,26 @@ index 889079b..d7f8b5f 100644
struct tcp_timewait_sock *tcptw = tcp_twsk(sk);
+ u32 data_ack = 0;
+ int mptcp = 0;
-
++
+ if (tcptw->mptcp_tw && tcptw->mptcp_tw->meta_tw) {
+ data_ack = (u32)tcptw->mptcp_tw->rcv_nxt;
+ mptcp = 1;
+ }
+
tcp_v6_send_ack(skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt,
+ data_ack,
tcptw->tw_rcv_wnd >> tw->tw_rcv_wscale,
tcp_time_stamp + tcptw->tw_ts_offset,
tcptw->tw_ts_recent, tcp_twsk_md5_key(tcptw),
-- tw->tw_tclass, (tw->tw_flowlabel << 12));
-+ tw->tw_tclass, (tw->tw_flowlabel << 12), mptcp);
+- tw->tw_tclass, cpu_to_be32(tw->tw_flowlabel));
++ tw->tw_tclass, cpu_to_be32(tw->tw_flowlabel), mptcp);
inet_twsk_put(tw);
}
-static void tcp_v6_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
-- struct request_sock *req)
+void tcp_v6_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
-+ struct request_sock *req)
+ struct request_sock *req)
{
tcp_v6_send_ack(skb, tcp_rsk(req)->snt_isn + 1, tcp_rsk(req)->rcv_isn + 1,
- req->rcv_wnd, tcp_time_stamp, req->ts_recent,
@@ -5768,7 +5726,7 @@ index 889079b..d7f8b5f 100644
{
struct request_sock *req, **prev;
const struct tcphdr *th = tcp_hdr(skb);
-@@ -939,7 +963,13 @@ static struct sock *tcp_v6_hnd_req(struct sock *sk, struct sk_buff *skb)
+@@ -939,7 +964,13 @@
if (nsk) {
if (nsk->sk_state != TCP_TIME_WAIT) {
@@ -5782,7 +5740,7 @@ index 889079b..d7f8b5f 100644
return nsk;
}
inet_twsk_put(inet_twsk(nsk));
-@@ -959,6 +989,7 @@ static struct sock *tcp_v6_hnd_req(struct sock *sk, struct sk_buff *skb)
+@@ -959,6 +990,7 @@
static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
{
struct tcp_options_received tmp_opt;
@@ -5790,7 +5748,7 @@ index 889079b..d7f8b5f 100644
struct request_sock *req;
struct inet_request_sock *ireq;
struct ipv6_pinfo *np = inet6_sk(sk);
-@@ -971,6 +1002,23 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
+@@ -971,6 +1003,23 @@
if (skb->protocol == htons(ETH_P_IP))
return tcp_v4_conn_request(sk, skb);
@@ -5814,7 +5772,7 @@ index 889079b..d7f8b5f 100644
if (!ipv6_unicast_destination(skb))
goto drop;
-@@ -986,7 +1034,22 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
+@@ -986,7 +1035,22 @@
goto drop;
}
@@ -5838,7 +5796,7 @@ index 889079b..d7f8b5f 100644
if (req == NULL)
goto drop;
-@@ -994,17 +1057,15 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
+@@ -994,17 +1058,15 @@
tcp_rsk(req)->af_specific = &tcp_request_sock_ipv6_ops;
#endif
@@ -5859,7 +5817,7 @@ index 889079b..d7f8b5f 100644
ireq = inet_rsk(req);
ireq->ir_v6_rmt_addr = ipv6_hdr(skb)->saddr;
ireq->ir_v6_loc_addr = ipv6_hdr(skb)->daddr;
-@@ -1094,9 +1155,9 @@ drop:
+@@ -1094,9 +1156,9 @@
return 0; /* don't send reset */
}
@@ -5872,7 +5830,7 @@ index 889079b..d7f8b5f 100644
{
struct inet_request_sock *ireq;
struct ipv6_pinfo *newnp, *np = inet6_sk(sk);
-@@ -1317,7 +1378,7 @@ static __sum16 tcp_v6_checksum_init(struct sk_buff *skb)
+@@ -1317,7 +1379,7 @@
* This is because we cannot sleep with the original spinlock
* held.
*/
@@ -5881,7 +5839,7 @@ index 889079b..d7f8b5f 100644
{
struct ipv6_pinfo *np = inet6_sk(sk);
struct tcp_sock *tp;
-@@ -1339,6 +1400,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -1339,6 +1401,9 @@
goto discard;
#endif
@@ -5891,7 +5849,7 @@ index 889079b..d7f8b5f 100644
if (sk_filter(sk, skb))
goto discard;
-@@ -1460,7 +1524,7 @@ static int tcp_v6_rcv(struct sk_buff *skb)
+@@ -1460,7 +1525,7 @@
{
const struct tcphdr *th;
const struct ipv6hdr *hdr;
@@ -5900,7 +5858,7 @@ index 889079b..d7f8b5f 100644
int ret;
struct net *net = dev_net(skb->dev);
-@@ -1491,18 +1555,43 @@ static int tcp_v6_rcv(struct sk_buff *skb)
+@@ -1491,18 +1556,43 @@
TCP_SKB_CB(skb)->end_seq = (TCP_SKB_CB(skb)->seq + th->syn + th->fin +
skb->len - th->doff*4);
TCP_SKB_CB(skb)->ack_seq = ntohl(th->ack_seq);
@@ -5947,7 +5905,7 @@ index 889079b..d7f8b5f 100644
if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
goto discard_and_relse;
-@@ -1517,11 +1606,21 @@ process:
+@@ -1517,11 +1607,21 @@
sk_mark_napi_id(sk, skb);
skb->dev = NULL;
@@ -5972,7 +5930,7 @@ index 889079b..d7f8b5f 100644
if (!tp->ucopy.dma_chan && tp->ucopy.pinned_list)
tp->ucopy.dma_chan = net_dma_find_channel();
if (tp->ucopy.dma_chan)
-@@ -1529,16 +1628,17 @@ process:
+@@ -1529,16 +1629,17 @@
else
#endif
{
@@ -5995,7 +5953,7 @@ index 889079b..d7f8b5f 100644
sock_put(sk);
return ret ? -1 : 0;
-@@ -1595,6 +1695,18 @@ do_time_wait:
+@@ -1595,6 +1696,18 @@
sk = sk2;
goto process;
}
@@ -6014,7 +5972,7 @@ index 889079b..d7f8b5f 100644
/* Fall through to ACK */
}
case TCP_TW_ACK:
-@@ -1644,13 +1756,13 @@ static void tcp_v6_early_demux(struct sk_buff *skb)
+@@ -1644,13 +1757,13 @@
}
}
@@ -6030,7 +5988,7 @@ index 889079b..d7f8b5f 100644
.queue_xmit = inet6_csk_xmit,
.send_check = tcp_v6_send_check,
.rebuild_header = inet6_sk_rebuild_header,
-@@ -1682,7 +1794,7 @@ static const struct tcp_sock_af_ops tcp_sock_ipv6_specific = {
+@@ -1683,7 +1796,7 @@
* TCP over IPv4 via INET6 API
*/
@@ -6039,7 +5997,7 @@ index 889079b..d7f8b5f 100644
.queue_xmit = ip_queue_xmit,
.send_check = tcp_v4_send_check,
.rebuild_header = inet_sk_rebuild_header,
-@@ -1727,7 +1839,7 @@ static int tcp_v6_init_sock(struct sock *sk)
+@@ -1729,7 +1842,7 @@
return 0;
}
@@ -6048,11 +6006,9 @@ index 889079b..d7f8b5f 100644
{
tcp_v4_destroy_sock(sk);
inet6_destroy_sock(sk);
-diff --git a/net/mptcp/Kconfig b/net/mptcp/Kconfig
-new file mode 100644
-index 0000000..88a05b1
---- /dev/null
-+++ b/net/mptcp/Kconfig
+diff -Nur linux-3.14.45.orig/net/mptcp/Kconfig linux-3.14.45/net/mptcp/Kconfig
+--- linux-3.14.45.orig/net/mptcp/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/Kconfig 2015-06-24 14:15:48.891862483 +0200
@@ -0,0 +1,58 @@
+#
+# MPTCP configuration
@@ -6112,11 +6068,9 @@ index 0000000..88a05b1
+ default "fullmesh" if DEFAULT_FULLMESH
+ default "ndiffports" if DEFAULT_NDIFFPORTS
+ default "default"
-diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile
-new file mode 100644
-index 0000000..e7238f5
---- /dev/null
-+++ b/net/mptcp/Makefile
+diff -Nur linux-3.14.45.orig/net/mptcp/Makefile linux-3.14.45/net/mptcp/Makefile
+--- linux-3.14.45.orig/net/mptcp/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/Makefile 2015-06-24 14:15:48.891862483 +0200
@@ -0,0 +1,18 @@
+#
+## Makefile for MultiPath TCP support code.
@@ -6136,11 +6090,9 @@ index 0000000..e7238f5
+
+mptcp-$(subst m,y,$(CONFIG_IPV6)) += mptcp_ipv6.o
+
-diff --git a/net/mptcp/mptcp_coupled.c b/net/mptcp/mptcp_coupled.c
-new file mode 100644
-index 0000000..d71f96e
---- /dev/null
-+++ b/net/mptcp/mptcp_coupled.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_coupled.c linux-3.14.45/net/mptcp/mptcp_coupled.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_coupled.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_coupled.c 2015-06-24 14:15:48.891862483 +0200
@@ -0,0 +1,273 @@
+/*
+ * MPTCP implementation - Coupled Congestion Control
@@ -6415,11 +6367,9 @@ index 0000000..d71f96e
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("MPTCP COUPLED CONGESTION CONTROL");
+MODULE_VERSION("0.1");
-diff --git a/net/mptcp/mptcp_ctrl.c b/net/mptcp/mptcp_ctrl.c
-new file mode 100644
-index 0000000..6a7654d
---- /dev/null
-+++ b/net/mptcp/mptcp_ctrl.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ctrl.c linux-3.14.45/net/mptcp/mptcp_ctrl.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_ctrl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_ctrl.c 2015-06-24 14:15:48.891862483 +0200
@@ -0,0 +1,2270 @@
+/*
+ * MPTCP implementation - MPTCP-control
@@ -8691,11 +8641,9 @@ index 0000000..6a7654d
+mptcp_sock_cache_failed:
+ mptcp_init_failed = true;
+}
-diff --git a/net/mptcp/mptcp_fullmesh.c b/net/mptcp/mptcp_fullmesh.c
-new file mode 100644
-index 0000000..49bddf3
---- /dev/null
-+++ b/net/mptcp/mptcp_fullmesh.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_fullmesh.c linux-3.14.45/net/mptcp/mptcp_fullmesh.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_fullmesh.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_fullmesh.c 2015-06-24 14:15:48.891862483 +0200
@@ -0,0 +1,1313 @@
+#include <linux/module.h>
+
@@ -10010,11 +9958,9 @@ index 0000000..49bddf3
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Full-Mesh MPTCP");
+MODULE_VERSION("0.88");
-diff --git a/net/mptcp/mptcp_input.c b/net/mptcp/mptcp_input.c
-new file mode 100644
-index 0000000..f3c9057
---- /dev/null
-+++ b/net/mptcp/mptcp_input.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_input.c linux-3.14.45/net/mptcp/mptcp_input.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_input.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_input.c 2015-06-24 14:15:48.895862487 +0200
@@ -0,0 +1,2254 @@
+/*
+ * MPTCP implementation - Sending side
@@ -12270,11 +12216,9 @@ index 0000000..f3c9057
+ tcp_set_rto(sk);
+ mptcp_set_rto(sk);
+}
-diff --git a/net/mptcp/mptcp_ipv4.c b/net/mptcp/mptcp_ipv4.c
-new file mode 100644
-index 0000000..b6053f1
---- /dev/null
-+++ b/net/mptcp/mptcp_ipv4.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ipv4.c linux-3.14.45/net/mptcp/mptcp_ipv4.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_ipv4.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_ipv4.c 2015-06-24 14:15:48.895862487 +0200
@@ -0,0 +1,603 @@
+/*
+ * MPTCP implementation - IPv4-specific functions
@@ -12879,11 +12823,9 @@ index 0000000..b6053f1
+}
+
+
-diff --git a/net/mptcp/mptcp_ipv6.c b/net/mptcp/mptcp_ipv6.c
-new file mode 100644
-index 0000000..b6b444d
---- /dev/null
-+++ b/net/mptcp/mptcp_ipv6.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ipv6.c linux-3.14.45/net/mptcp/mptcp_ipv6.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_ipv6.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_ipv6.c 2015-06-24 14:15:48.931862523 +0200
@@ -0,0 +1,822 @@
+/*
+ * MPTCP implementation - IPv6-specific functions
@@ -13707,11 +13649,9 @@ index 0000000..b6b444d
+ kmem_cache_destroy(mptcp6_request_sock_ops.slab);
+ kfree(mptcp6_request_sock_ops.slab_name);
+}
-diff --git a/net/mptcp/mptcp_ndiffports.c b/net/mptcp/mptcp_ndiffports.c
-new file mode 100644
-index 0000000..a126325
---- /dev/null
-+++ b/net/mptcp/mptcp_ndiffports.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ndiffports.c linux-3.14.45/net/mptcp/mptcp_ndiffports.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_ndiffports.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_ndiffports.c 2015-06-24 14:15:48.931862523 +0200
@@ -0,0 +1,171 @@
+#include <linux/module.h>
+
@@ -13884,11 +13824,9 @@ index 0000000..a126325
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("NDIFF-PORTS MPTCP");
+MODULE_VERSION("0.88");
-diff --git a/net/mptcp/mptcp_ofo_queue.c b/net/mptcp/mptcp_ofo_queue.c
-new file mode 100644
-index 0000000..e182855
---- /dev/null
-+++ b/net/mptcp/mptcp_ofo_queue.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_ofo_queue.c linux-3.14.45/net/mptcp/mptcp_ofo_queue.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_ofo_queue.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_ofo_queue.c 2015-06-24 14:15:48.931862523 +0200
@@ -0,0 +1,278 @@
+/*
+ * MPTCP implementation - Fast algorithm for MPTCP meta-reordering
@@ -14168,11 +14106,9 @@ index 0000000..e182855
+ kfree_skb(skb);
+ }
+}
-diff --git a/net/mptcp/mptcp_olia.c b/net/mptcp/mptcp_olia.c
-new file mode 100644
-index 0000000..43d821e
---- /dev/null
-+++ b/net/mptcp/mptcp_olia.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_olia.c linux-3.14.45/net/mptcp/mptcp_olia.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_olia.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_olia.c 2015-06-24 14:15:48.931862523 +0200
@@ -0,0 +1,314 @@
+/*
+ * MPTCP implementation - OPPORTUNISTIC LINKED INCREASES CONGESTION CONTROL:
@@ -14488,11 +14424,9 @@ index 0000000..43d821e
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("MPTCP COUPLED CONGESTION CONTROL");
+MODULE_VERSION("0.1");
-diff --git a/net/mptcp/mptcp_output.c b/net/mptcp/mptcp_output.c
-new file mode 100644
-index 0000000..807b79e
---- /dev/null
-+++ b/net/mptcp/mptcp_output.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_output.c linux-3.14.45/net/mptcp/mptcp_output.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_output.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_output.c 2015-06-24 14:15:48.931862523 +0200
@@ -0,0 +1,2255 @@
+/*
+ * MPTCP implementation - Sending side
@@ -16749,11 +16683,9 @@ index 0000000..807b79e
+
+ return 0;
+}
-diff --git a/net/mptcp/mptcp_pm.c b/net/mptcp/mptcp_pm.c
-new file mode 100644
-index 0000000..1f78ae1
---- /dev/null
-+++ b/net/mptcp/mptcp_pm.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_pm.c linux-3.14.45/net/mptcp/mptcp_pm.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_pm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_pm.c 2015-06-24 14:15:48.931862523 +0200
@@ -0,0 +1,170 @@
+/*
+ * MPTCP implementation - MPTCP-subflow-management
@@ -16925,11 +16857,9 @@ index 0000000..1f78ae1
+ return mptcp_set_default_path_manager(CONFIG_DEFAULT_MPTCP_PM);
+}
+late_initcall(mptcp_path_manager_default);
-diff --git a/net/mptcp/mptcp_wvegas.c b/net/mptcp/mptcp_wvegas.c
-new file mode 100644
-index 0000000..8e1fd50
---- /dev/null
-+++ b/net/mptcp/mptcp_wvegas.c
+diff -Nur linux-3.14.45.orig/net/mptcp/mptcp_wvegas.c linux-3.14.45/net/mptcp/mptcp_wvegas.c
+--- linux-3.14.45.orig/net/mptcp/mptcp_wvegas.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.45/net/mptcp/mptcp_wvegas.c 2015-06-24 14:15:48.931862523 +0200
@@ -0,0 +1,270 @@
+/*
+ * MPTCP implementation - WEIGHTED VEGAS
diff --git a/target/linux/patches/3.14.43/mtd-rootfs.patch b/target/linux/patches/3.14.45/mtd-rootfs.patch
index 775d5fc80..775d5fc80 100644
--- a/target/linux/patches/3.14.43/mtd-rootfs.patch
+++ b/target/linux/patches/3.14.45/mtd-rootfs.patch
diff --git a/target/linux/patches/3.14.43/nfsv3-tcp.patch b/target/linux/patches/3.14.45/nfsv3-tcp.patch
index 68ed95b08..68ed95b08 100644
--- a/target/linux/patches/3.14.43/nfsv3-tcp.patch
+++ b/target/linux/patches/3.14.45/nfsv3-tcp.patch
diff --git a/target/linux/patches/3.14.43/non-static.patch b/target/linux/patches/3.14.45/non-static.patch
index a967703d0..a967703d0 100644
--- a/target/linux/patches/3.14.43/non-static.patch
+++ b/target/linux/patches/3.14.45/non-static.patch
diff --git a/target/linux/patches/3.14.43/ppc64-missing-zlib.patch b/target/linux/patches/3.14.45/ppc64-missing-zlib.patch
index c6e0616be..c6e0616be 100644
--- a/target/linux/patches/3.14.43/ppc64-missing-zlib.patch
+++ b/target/linux/patches/3.14.45/ppc64-missing-zlib.patch
diff --git a/target/linux/patches/3.14.43/regmap-boolean.patch b/target/linux/patches/3.14.45/regmap-boolean.patch
index d73620e4d..d73620e4d 100644
--- a/target/linux/patches/3.14.43/regmap-boolean.patch
+++ b/target/linux/patches/3.14.45/regmap-boolean.patch
diff --git a/target/linux/patches/3.14.43/relocs.patch b/target/linux/patches/3.14.45/relocs.patch
index 69a7c88a9..69a7c88a9 100644
--- a/target/linux/patches/3.14.43/relocs.patch
+++ b/target/linux/patches/3.14.45/relocs.patch
diff --git a/target/linux/patches/3.14.43/sgidefs.patch b/target/linux/patches/3.14.45/sgidefs.patch
index f00a284d9..f00a284d9 100644
--- a/target/linux/patches/3.14.43/sgidefs.patch
+++ b/target/linux/patches/3.14.45/sgidefs.patch
diff --git a/target/linux/patches/3.14.43/sortext.patch b/target/linux/patches/3.14.45/sortext.patch
index 8fd4e1d6b..8fd4e1d6b 100644
--- a/target/linux/patches/3.14.43/sortext.patch
+++ b/target/linux/patches/3.14.45/sortext.patch
diff --git a/target/linux/patches/3.14.43/startup.patch b/target/linux/patches/3.14.45/startup.patch
index d396b75e4..d396b75e4 100644
--- a/target/linux/patches/3.14.43/startup.patch
+++ b/target/linux/patches/3.14.45/startup.patch
diff --git a/target/linux/patches/3.14.43/wlan-cf.patch b/target/linux/patches/3.14.45/wlan-cf.patch
index fc20759e2..fc20759e2 100644
--- a/target/linux/patches/3.14.43/wlan-cf.patch
+++ b/target/linux/patches/3.14.45/wlan-cf.patch
diff --git a/target/linux/patches/3.14.43/xargs.patch b/target/linux/patches/3.14.45/xargs.patch
index 2c7b3df59..2c7b3df59 100644
--- a/target/linux/patches/3.14.43/xargs.patch
+++ b/target/linux/patches/3.14.45/xargs.patch
diff --git a/target/linux/patches/3.14.43/yaffs2.patch b/target/linux/patches/3.14.45/yaffs2.patch
index 30e4a790e..30e4a790e 100644
--- a/target/linux/patches/3.14.43/yaffs2.patch
+++ b/target/linux/patches/3.14.45/yaffs2.patch
diff --git a/target/linux/patches/3.14.43/zlib-inflate.patch b/target/linux/patches/3.14.45/zlib-inflate.patch
index 58e1f6d21..58e1f6d21 100644
--- a/target/linux/patches/3.14.43/zlib-inflate.patch
+++ b/target/linux/patches/3.14.45/zlib-inflate.patch
diff --git a/target/linux/patches/3.18.14/bsd-compatibility.patch b/target/linux/patches/3.18.16/bsd-compatibility.patch
index b954b658f..b954b658f 100644
--- a/target/linux/patches/3.18.14/bsd-compatibility.patch
+++ b/target/linux/patches/3.18.16/bsd-compatibility.patch
diff --git a/target/linux/patches/3.18.14/cleankernel.patch b/target/linux/patches/3.18.16/cleankernel.patch
index d8c055dc3..d8c055dc3 100644
--- a/target/linux/patches/3.18.14/cleankernel.patch
+++ b/target/linux/patches/3.18.16/cleankernel.patch
diff --git a/target/linux/patches/3.18.14/cris-header.patch b/target/linux/patches/3.18.16/cris-header.patch
index 3db07e530..3db07e530 100644
--- a/target/linux/patches/3.18.14/cris-header.patch
+++ b/target/linux/patches/3.18.16/cris-header.patch
diff --git a/target/linux/patches/3.18.14/cris-initramfs.patch b/target/linux/patches/3.18.16/cris-initramfs.patch
index b709e705e..b709e705e 100644
--- a/target/linux/patches/3.18.14/cris-initramfs.patch
+++ b/target/linux/patches/3.18.16/cris-initramfs.patch
diff --git a/target/linux/patches/3.18.14/defaults.patch b/target/linux/patches/3.18.16/defaults.patch
index 6cdca084e..6cdca084e 100644
--- a/target/linux/patches/3.18.14/defaults.patch
+++ b/target/linux/patches/3.18.16/defaults.patch
diff --git a/target/linux/patches/3.18.14/export-symbol-for-exmap.patch b/target/linux/patches/3.18.16/export-symbol-for-exmap.patch
index 4f0fc8449..4f0fc8449 100644
--- a/target/linux/patches/3.18.14/export-symbol-for-exmap.patch
+++ b/target/linux/patches/3.18.16/export-symbol-for-exmap.patch
diff --git a/target/linux/patches/3.18.14/fblogo.patch b/target/linux/patches/3.18.16/fblogo.patch
index 5b9070242..5b9070242 100644
--- a/target/linux/patches/3.18.14/fblogo.patch
+++ b/target/linux/patches/3.18.16/fblogo.patch
diff --git a/target/linux/patches/3.18.14/gemalto.patch b/target/linux/patches/3.18.16/gemalto.patch
index 65f7af1d7..65f7af1d7 100644
--- a/target/linux/patches/3.18.14/gemalto.patch
+++ b/target/linux/patches/3.18.16/gemalto.patch
diff --git a/target/linux/patches/3.18.14/initramfs-nosizelimit.patch b/target/linux/patches/3.18.16/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/3.18.14/initramfs-nosizelimit.patch
+++ b/target/linux/patches/3.18.16/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/3.18.14/lemote-rfkill.patch b/target/linux/patches/3.18.16/lemote-rfkill.patch
index a61488434..a61488434 100644
--- a/target/linux/patches/3.18.14/lemote-rfkill.patch
+++ b/target/linux/patches/3.18.16/lemote-rfkill.patch
diff --git a/target/linux/patches/3.18.14/microblaze-ethernet.patch b/target/linux/patches/3.18.16/microblaze-ethernet.patch
index 742ab477e..742ab477e 100644
--- a/target/linux/patches/3.18.14/microblaze-ethernet.patch
+++ b/target/linux/patches/3.18.16/microblaze-ethernet.patch
diff --git a/target/linux/patches/3.18.14/mkpiggy.patch b/target/linux/patches/3.18.16/mkpiggy.patch
index 751678b74..751678b74 100644
--- a/target/linux/patches/3.18.14/mkpiggy.patch
+++ b/target/linux/patches/3.18.16/mkpiggy.patch
diff --git a/target/linux/patches/3.18.14/mtd-rootfs.patch b/target/linux/patches/3.18.16/mtd-rootfs.patch
index 775d5fc80..775d5fc80 100644
--- a/target/linux/patches/3.18.14/mtd-rootfs.patch
+++ b/target/linux/patches/3.18.16/mtd-rootfs.patch
diff --git a/target/linux/patches/3.18.14/nfsv3-tcp.patch b/target/linux/patches/3.18.16/nfsv3-tcp.patch
index d5e07e1c2..d5e07e1c2 100644
--- a/target/linux/patches/3.18.14/nfsv3-tcp.patch
+++ b/target/linux/patches/3.18.16/nfsv3-tcp.patch
diff --git a/target/linux/patches/3.18.14/non-static.patch b/target/linux/patches/3.18.16/non-static.patch
index a967703d0..a967703d0 100644
--- a/target/linux/patches/3.18.14/non-static.patch
+++ b/target/linux/patches/3.18.16/non-static.patch
diff --git a/target/linux/patches/3.18.14/ppc64-missing-zlib.patch b/target/linux/patches/3.18.16/ppc64-missing-zlib.patch
index c6e0616be..c6e0616be 100644
--- a/target/linux/patches/3.18.14/ppc64-missing-zlib.patch
+++ b/target/linux/patches/3.18.16/ppc64-missing-zlib.patch
diff --git a/target/linux/patches/3.18.14/realtime.patch b/target/linux/patches/3.18.16/realtime.patch
index 28b9b271c..28b9b271c 100644
--- a/target/linux/patches/3.18.14/realtime.patch
+++ b/target/linux/patches/3.18.16/realtime.patch
diff --git a/target/linux/patches/3.18.14/regmap-bool.patch b/target/linux/patches/3.18.16/regmap-bool.patch
index 5c0ff5e2c..5c0ff5e2c 100644
--- a/target/linux/patches/3.18.14/regmap-bool.patch
+++ b/target/linux/patches/3.18.16/regmap-bool.patch
diff --git a/target/linux/patches/3.18.14/relocs.patch b/target/linux/patches/3.18.16/relocs.patch
index 69a7c88a9..69a7c88a9 100644
--- a/target/linux/patches/3.18.14/relocs.patch
+++ b/target/linux/patches/3.18.16/relocs.patch
diff --git a/target/linux/patches/3.18.14/sgidefs.patch b/target/linux/patches/3.18.16/sgidefs.patch
index f00a284d9..f00a284d9 100644
--- a/target/linux/patches/3.18.14/sgidefs.patch
+++ b/target/linux/patches/3.18.16/sgidefs.patch
diff --git a/target/linux/patches/3.18.14/sortext.patch b/target/linux/patches/3.18.16/sortext.patch
index 8fd4e1d6b..8fd4e1d6b 100644
--- a/target/linux/patches/3.18.14/sortext.patch
+++ b/target/linux/patches/3.18.16/sortext.patch
diff --git a/target/linux/patches/3.18.14/startup.patch b/target/linux/patches/3.18.16/startup.patch
index d396b75e4..d396b75e4 100644
--- a/target/linux/patches/3.18.14/startup.patch
+++ b/target/linux/patches/3.18.16/startup.patch
diff --git a/target/linux/patches/3.18.14/wlan-cf.patch b/target/linux/patches/3.18.16/wlan-cf.patch
index fc20759e2..fc20759e2 100644
--- a/target/linux/patches/3.18.14/wlan-cf.patch
+++ b/target/linux/patches/3.18.16/wlan-cf.patch
diff --git a/target/linux/patches/3.18.14/xargs.patch b/target/linux/patches/3.18.16/xargs.patch
index 2c7b3df59..2c7b3df59 100644
--- a/target/linux/patches/3.18.14/xargs.patch
+++ b/target/linux/patches/3.18.16/xargs.patch
diff --git a/target/linux/patches/3.18.14/yaffs2.patch b/target/linux/patches/3.18.16/yaffs2.patch
index 2ade5bf7e..2ade5bf7e 100644
--- a/target/linux/patches/3.18.14/yaffs2.patch
+++ b/target/linux/patches/3.18.16/yaffs2.patch
diff --git a/target/linux/patches/3.2.68/sparc-aout.patch b/target/linux/patches/3.2.69/sparc-aout.patch
index 6ad252479..6ad252479 100644
--- a/target/linux/patches/3.2.68/sparc-aout.patch
+++ b/target/linux/patches/3.2.69/sparc-aout.patch
diff --git a/target/linux/patches/3.4.107/aufs2.patch b/target/linux/patches/3.4.108/aufs2.patch
index d40c9a3fe..d40c9a3fe 100644
--- a/target/linux/patches/3.4.107/aufs2.patch
+++ b/target/linux/patches/3.4.108/aufs2.patch
diff --git a/target/linux/patches/3.4.107/bsd-compatibility.patch b/target/linux/patches/3.4.108/bsd-compatibility.patch
index 9e91a62de..9e91a62de 100644
--- a/target/linux/patches/3.4.107/bsd-compatibility.patch
+++ b/target/linux/patches/3.4.108/bsd-compatibility.patch
diff --git a/target/linux/patches/3.4.107/defaults.patch b/target/linux/patches/3.4.108/defaults.patch
index 58aae610b..58aae610b 100644
--- a/target/linux/patches/3.4.107/defaults.patch
+++ b/target/linux/patches/3.4.108/defaults.patch
diff --git a/target/linux/patches/3.4.107/gemalto.patch b/target/linux/patches/3.4.108/gemalto.patch
index 65f7af1d7..65f7af1d7 100644
--- a/target/linux/patches/3.4.107/gemalto.patch
+++ b/target/linux/patches/3.4.108/gemalto.patch
diff --git a/target/linux/patches/3.4.107/lemote-rfkill.patch b/target/linux/patches/3.4.108/lemote-rfkill.patch
index a61488434..a61488434 100644
--- a/target/linux/patches/3.4.107/lemote-rfkill.patch
+++ b/target/linux/patches/3.4.108/lemote-rfkill.patch
diff --git a/target/linux/patches/3.4.107/linux-gcc-check.patch b/target/linux/patches/3.4.108/linux-gcc-check.patch
index 7cc381845..7cc381845 100644
--- a/target/linux/patches/3.4.107/linux-gcc-check.patch
+++ b/target/linux/patches/3.4.108/linux-gcc-check.patch
diff --git a/target/linux/patches/3.4.107/mips-error.patch b/target/linux/patches/3.4.108/mips-error.patch
index 800abc80d..800abc80d 100644
--- a/target/linux/patches/3.4.107/mips-error.patch
+++ b/target/linux/patches/3.4.108/mips-error.patch
diff --git a/target/linux/patches/3.4.107/mkpiggy.patch b/target/linux/patches/3.4.108/mkpiggy.patch
index d4e815cd2..d4e815cd2 100644
--- a/target/linux/patches/3.4.107/mkpiggy.patch
+++ b/target/linux/patches/3.4.108/mkpiggy.patch
diff --git a/target/linux/patches/3.4.107/module-alloc-size-check.patch b/target/linux/patches/3.4.108/module-alloc-size-check.patch
index a792ac60a..a792ac60a 100644
--- a/target/linux/patches/3.4.107/module-alloc-size-check.patch
+++ b/target/linux/patches/3.4.108/module-alloc-size-check.patch
diff --git a/target/linux/patches/3.4.107/non-static.patch b/target/linux/patches/3.4.108/non-static.patch
index a967703d0..a967703d0 100644
--- a/target/linux/patches/3.4.107/non-static.patch
+++ b/target/linux/patches/3.4.108/non-static.patch
diff --git a/target/linux/patches/3.4.107/relocs.patch b/target/linux/patches/3.4.108/relocs.patch
index 43c5bb580..43c5bb580 100644
--- a/target/linux/patches/3.4.107/relocs.patch
+++ b/target/linux/patches/3.4.108/relocs.patch
diff --git a/target/linux/patches/3.4.107/sparc-aout.patch b/target/linux/patches/3.4.108/sparc-aout.patch
index 5cd74c2e7..5cd74c2e7 100644
--- a/target/linux/patches/3.4.107/sparc-aout.patch
+++ b/target/linux/patches/3.4.108/sparc-aout.patch
diff --git a/target/linux/patches/3.4.107/sparc-include.patch b/target/linux/patches/3.4.108/sparc-include.patch
index 2f8ffd061..2f8ffd061 100644
--- a/target/linux/patches/3.4.107/sparc-include.patch
+++ b/target/linux/patches/3.4.108/sparc-include.patch
diff --git a/target/linux/patches/3.4.107/startup.patch b/target/linux/patches/3.4.108/startup.patch
index c26430bcb..c26430bcb 100644
--- a/target/linux/patches/3.4.107/startup.patch
+++ b/target/linux/patches/3.4.108/startup.patch
diff --git a/target/linux/patches/3.4.107/usb-defaults-off.patch b/target/linux/patches/3.4.108/usb-defaults-off.patch
index 31367108a..31367108a 100644
--- a/target/linux/patches/3.4.107/usb-defaults-off.patch
+++ b/target/linux/patches/3.4.108/usb-defaults-off.patch
diff --git a/target/linux/patches/3.4.107/vga-cons-default-off.patch b/target/linux/patches/3.4.108/vga-cons-default-off.patch
index 178aeeeb9..178aeeeb9 100644
--- a/target/linux/patches/3.4.107/vga-cons-default-off.patch
+++ b/target/linux/patches/3.4.108/vga-cons-default-off.patch
diff --git a/target/linux/patches/3.4.107/wlan-cf.patch b/target/linux/patches/3.4.108/wlan-cf.patch
index fc20759e2..fc20759e2 100644
--- a/target/linux/patches/3.4.107/wlan-cf.patch
+++ b/target/linux/patches/3.4.108/wlan-cf.patch
diff --git a/target/linux/patches/3.4.107/yaffs2.patch b/target/linux/patches/3.4.108/yaffs2.patch
index 44c95915f..44c95915f 100644
--- a/target/linux/patches/3.4.107/yaffs2.patch
+++ b/target/linux/patches/3.4.108/yaffs2.patch
diff --git a/target/linux/patches/3.4.107/zlib-inflate.patch b/target/linux/patches/3.4.108/zlib-inflate.patch
index 58e1f6d21..58e1f6d21 100644
--- a/target/linux/patches/3.4.107/zlib-inflate.patch
+++ b/target/linux/patches/3.4.108/zlib-inflate.patch
diff --git a/target/linux/patches/4.0.5/aufs4.patch b/target/linux/patches/4.0.6/aufs4.patch
index 73b035010..73b035010 100644
--- a/target/linux/patches/4.0.5/aufs4.patch
+++ b/target/linux/patches/4.0.6/aufs4.patch
diff --git a/target/linux/patches/4.0.5/cleankernel.patch b/target/linux/patches/4.0.6/cleankernel.patch
index d8c055dc3..d8c055dc3 100644
--- a/target/linux/patches/4.0.5/cleankernel.patch
+++ b/target/linux/patches/4.0.6/cleankernel.patch
diff --git a/target/linux/patches/4.0.5/cris-header.patch b/target/linux/patches/4.0.6/cris-header.patch
index 2b5a88461..2b5a88461 100644
--- a/target/linux/patches/4.0.5/cris-header.patch
+++ b/target/linux/patches/4.0.6/cris-header.patch
diff --git a/target/linux/patches/4.0.5/initramfs-nosizelimit.patch b/target/linux/patches/4.0.6/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/4.0.5/initramfs-nosizelimit.patch
+++ b/target/linux/patches/4.0.6/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/4.0.5/startup.patch b/target/linux/patches/4.0.6/startup.patch
index d396b75e4..d396b75e4 100644
--- a/target/linux/patches/4.0.5/startup.patch
+++ b/target/linux/patches/4.0.6/startup.patch
diff --git a/target/linux/patches/4.1-rc5/cris-header.patch b/target/linux/patches/4.1/cris-header.patch
index 2b5a88461..2b5a88461 100644
--- a/target/linux/patches/4.1-rc5/cris-header.patch
+++ b/target/linux/patches/4.1/cris-header.patch
diff --git a/target/linux/patches/4.1-rc5/initramfs-nosizelimit.patch b/target/linux/patches/4.1/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/4.1-rc5/initramfs-nosizelimit.patch
+++ b/target/linux/patches/4.1/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/4.1-rc5/startup.patch b/target/linux/patches/4.1/startup.patch
index d396b75e4..d396b75e4 100644
--- a/target/linux/patches/4.1-rc5/startup.patch
+++ b/target/linux/patches/4.1/startup.patch