summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2014-05-03 10:28:45 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2014-05-03 10:28:48 -0400
commit001ef40b869b9eb7792adadd41dc23a9aaf76dfe (patch)
treefe68f675f281a06553d7b7d5e0c9a63c941f363c
parenteec70ea73150bfbc98bab3e28d9f1b8e862f3b42 (diff)
downloadkernel-001ef40b869b9eb7792adadd41dc23a9aaf76dfe.tar.gz
kernel-001ef40b869b9eb7792adadd41dc23a9aaf76dfe.tar.xz
kernel-001ef40b869b9eb7792adadd41dc23a9aaf76dfe.zip
Fix TUN performance regression (rhbz 1093931)
-rw-r--r--kernel.spec7
-rw-r--r--net-Start-with-correct-mac_len-in-skb_network_protoc.patch48
2 files changed, 55 insertions, 0 deletions
diff --git a/kernel.spec b/kernel.spec
index d61e1191..c12b202d 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -760,6 +760,9 @@ Patch25070: 0001-acpi-video-Add-4-new-models-to-the-use_native_backli.patch
#rhbz 1060327
Patch25071: drm-fix-qxl-mode-flags-backport.patch
+#rhbz 1093931
+Patch25073: net-Start-with-correct-mac_len-in-skb_network_protoc.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -1473,6 +1476,9 @@ ApplyPatch 0001-acpi-video-Add-4-new-models-to-the-use_native_backli.patch
#rhbz 1060327
ApplyPatch drm-fix-qxl-mode-flags-backport.patch
+#rhbz 1093931
+ApplyPatch net-Start-with-correct-mac_len-in-skb_network_protoc.patch
+
# END OF PATCH APPLICATIONS
%endif
@@ -2285,6 +2291,7 @@ fi
# || ||
%changelog
* Sat May 03 2014 Josh Boyer <jwboyer@fedoraproject.org>
+- Fix TUN performance regression (rhbz 1093931)
- Add patch to fix HID rmi driver from Benjamin Tissoires (rhbz 1090161)
* Thu May 01 2014 Josh Boyer <jwboyer@fedoraproject.org>
diff --git a/net-Start-with-correct-mac_len-in-skb_network_protoc.patch b/net-Start-with-correct-mac_len-in-skb_network_protoc.patch
new file mode 100644
index 00000000..fc3262d8
--- /dev/null
+++ b/net-Start-with-correct-mac_len-in-skb_network_protoc.patch
@@ -0,0 +1,48 @@
+Bugzilla: 1093931
+Upstream-status: 3.15 and queued for stable (3.14.y only)
+
+From 1e785f48d29a09b6cf96db7b49b6320dada332e1 Mon Sep 17 00:00:00 2001
+From: Vlad Yasevich <vyasevic@redhat.com>
+Date: Mon, 14 Apr 2014 17:37:26 -0400
+Subject: [PATCH] net: Start with correct mac_len in skb_network_protocol
+
+Sometimes, when the packet arrives at skb_mac_gso_segment()
+its skb->mac_len already accounts for some of the mac lenght
+headers in the packet. This seems to happen when forwarding
+through and OpenSSL tunnel.
+
+When we start looking for any vlan headers in skb_network_protocol()
+we seem to ignore any of the already known mac headers and start
+with an ETH_HLEN. This results in an incorrect offset, dropped
+TSO frames and general slowness of the connection.
+
+We can start counting from the known skb->mac_len
+and return at least that much if all mac level headers
+are known and accounted for.
+
+Fixes: 53d6471cef17262d3ad1c7ce8982a234244f68ec (net: Account for all vlan headers in skb_mac_gso_segment)
+CC: Eric Dumazet <eric.dumazet@gmail.com>
+CC: Daniel Borkman <dborkman@redhat.com>
+Tested-by: Martin Filip <nexus+kernel@smoula.net>
+Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ net/core/dev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 14dac0654f28..5b3042e69f85 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2284,7 +2284,7 @@ EXPORT_SYMBOL(skb_checksum_help);
+ __be16 skb_network_protocol(struct sk_buff *skb, int *depth)
+ {
+ __be16 type = skb->protocol;
+- int vlan_depth = ETH_HLEN;
++ int vlan_depth = skb->mac_len;
+
+ /* Tunnel gso handlers can set protocol to ethernet. */
+ if (type == htons(ETH_P_TEB)) {
+--
+1.9.0
+