aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2014-02-20 17:07:44 +0000
committerGabor Juhos <juhosg@openwrt.org>2014-02-20 17:07:44 +0000
commitab6e3af7fc94d3c04e13f468c56c097f88644a7c (patch)
treeeb28ac3f54f3b22a4363a48d096ad0509318600e
parentfcbfe67e2affc07e398726c18dcac1b0844df984 (diff)
downloadupstream-ab6e3af7fc94d3c04e13f468c56c097f88644a7c.tar.gz
upstream-ab6e3af7fc94d3c04e13f468c56c097f88644a7c.tar.bz2
upstream-ab6e3af7fc94d3c04e13f468c56c097f88644a7c.zip
kernel/3.10: improve fq_codel hashing for 6in4 6to4 801.ad and IPIP cases
This is a backport of code to improve the quality of fq_codel hashing for 3.10 for some encapsulated protocols. Not needed in 3.11 and later. Patch-by: Dave Taht <dave.taht@bufferbloat.net> Patchwork: http://patchwork.openwrt.org/patch/4902/ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 39640
-rw-r--r--target/linux/generic/patches-3.10/686-flow_dissector-clean-up-IPIP-case.patch25
-rw-r--r--target/linux/generic/patches-3.10/687-flow_dissector-add-support-for-IPPROTO_IPV6.patch25
-rw-r--r--target/linux/generic/patches-3.10/688-net-flow_dissector-add-802.1ad-support.patch24
3 files changed, 74 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.10/686-flow_dissector-clean-up-IPIP-case.patch b/target/linux/generic/patches-3.10/686-flow_dissector-clean-up-IPIP-case.patch
new file mode 100644
index 0000000000..467ca00f23
--- /dev/null
+++ b/target/linux/generic/patches-3.10/686-flow_dissector-clean-up-IPIP-case.patch
@@ -0,0 +1,25 @@
+From de03a7f8eddba389668e3c35d4a31d985d29778f Mon Sep 17 00:00:00 2001
+From: Tom Herbert <therbert@google.com>
+Date: Mon, 29 Jul 2013 11:07:36 -0700
+Subject: [PATCH 3/5] flow_dissector: clean up IPIP case
+
+Explicitly set proto to ETH_P_IP and jump directly to ip processing.
+
+Signed-off-by: Tom Herbert <therbert@google.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ net/core/flow_dissector.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/net/core/flow_dissector.c
++++ b/net/core/flow_dissector.c
+@@ -139,7 +139,8 @@ ipv6:
+ break;
+ }
+ case IPPROTO_IPIP:
+- goto again;
++ proto = htons(ETH_P_IP);
++ goto ip;
+ default:
+ break;
+ }
diff --git a/target/linux/generic/patches-3.10/687-flow_dissector-add-support-for-IPPROTO_IPV6.patch b/target/linux/generic/patches-3.10/687-flow_dissector-add-support-for-IPPROTO_IPV6.patch
new file mode 100644
index 0000000000..8c807d896a
--- /dev/null
+++ b/target/linux/generic/patches-3.10/687-flow_dissector-add-support-for-IPPROTO_IPV6.patch
@@ -0,0 +1,25 @@
+From 9c60237cd842c337539b1d72582b8cc410aeb3a6 Mon Sep 17 00:00:00 2001
+From: Tom Herbert <therbert@google.com>
+Date: Mon, 29 Jul 2013 11:07:42 -0700
+Subject: [PATCH 4/5] flow_dissector: add support for IPPROTO_IPV6
+
+Support IPPROTO_IPV6 similar to IPPROTO_IPIP
+
+Signed-off-by: Tom Herbert <therbert@google.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ net/core/flow_dissector.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/net/core/flow_dissector.c
++++ b/net/core/flow_dissector.c
+@@ -141,6 +141,9 @@ ipv6:
+ case IPPROTO_IPIP:
+ proto = htons(ETH_P_IP);
+ goto ip;
++ case IPPROTO_IPV6:
++ proto = htons(ETH_P_IPV6);
++ goto ipv6;
+ default:
+ break;
+ }
diff --git a/target/linux/generic/patches-3.10/688-net-flow_dissector-add-802.1ad-support.patch b/target/linux/generic/patches-3.10/688-net-flow_dissector-add-802.1ad-support.patch
new file mode 100644
index 0000000000..e020d61bae
--- /dev/null
+++ b/target/linux/generic/patches-3.10/688-net-flow_dissector-add-802.1ad-support.patch
@@ -0,0 +1,24 @@
+From 017879b546ee5f85d13f90236a251d56605c9e86 Mon Sep 17 00:00:00 2001
+From: Eric Dumazet <edumazet@google.com>
+Date: Tue, 6 Aug 2013 04:35:06 -0700
+Subject: [PATCH 5/5] net: flow_dissector: add 802.1ad support
+
+Same behavior than 802.1q : finds the encapsulated protocol and
+skip 32bit header.
+
+Signed-off-by: Eric Dumazet <edumazet@google.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ net/core/flow_dissector.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/net/core/flow_dissector.c
++++ b/net/core/flow_dissector.c
+@@ -65,6 +65,7 @@ ipv6:
+ nhoff += sizeof(struct ipv6hdr);
+ break;
+ }
++ case __constant_htons(ETH_P_8021AD):
+ case __constant_htons(ETH_P_8021Q): {
+ const struct vlan_hdr *vlan;
+ struct vlan_hdr _vlan;