diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2014-05-03 10:28:45 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2014-05-03 10:28:48 -0400 |
commit | 001ef40b869b9eb7792adadd41dc23a9aaf76dfe (patch) | |
tree | fe68f675f281a06553d7b7d5e0c9a63c941f363c | |
parent | eec70ea73150bfbc98bab3e28d9f1b8e862f3b42 (diff) | |
download | kernel-001ef40b869b9eb7792adadd41dc23a9aaf76dfe.tar.gz kernel-001ef40b869b9eb7792adadd41dc23a9aaf76dfe.tar.xz kernel-001ef40b869b9eb7792adadd41dc23a9aaf76dfe.zip |
Fix TUN performance regression (rhbz 1093931)
-rw-r--r-- | kernel.spec | 7 | ||||
-rw-r--r-- | net-Start-with-correct-mac_len-in-skb_network_protoc.patch | 48 |
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 + |