net: Start with correct mac_len in skb_network_protocol (Closes: #746453)
svn path=/dists/sid/linux/; revision=21290
This commit is contained in:
parent
2d536d1527
commit
35d4acaf37
|
@ -2,6 +2,7 @@ linux (3.14.2-2) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
[ Ben Hutchings ]
|
[ Ben Hutchings ]
|
||||||
* [or1k] Build a linux-libc-dev package (Closes: #746309)
|
* [or1k] Build a linux-libc-dev package (Closes: #746309)
|
||||||
|
* net: Start with correct mac_len in skb_network_protocol (Closes: #746453)
|
||||||
|
|
||||||
-- Ben Hutchings <ben@decadent.org.uk> Thu, 01 May 2014 01:50:30 +0100
|
-- Ben Hutchings <ben@decadent.org.uk> Thu, 01 May 2014 01:50:30 +0100
|
||||||
|
|
||||||
|
|
40
debian/patches/bugfix/all/net-Start-with-correct-mac_len-in-skb_network_protoc.patch
vendored
Normal file
40
debian/patches/bugfix/all/net-Start-with-correct-mac_len-in-skb_network_protoc.patch
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
From: Vlad Yasevich <vyasevic@redhat.com>
|
||||||
|
Date: Mon, 14 Apr 2014 17:37:26 -0400
|
||||||
|
Subject: net: Start with correct mac_len in skb_network_protocol
|
||||||
|
Origin: https://git.kernel.org/linus/1e785f48d29a09b6cf96db7b49b6320dada332e1
|
||||||
|
|
||||||
|
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(-)
|
||||||
|
|
||||||
|
--- a/net/core/dev.c
|
||||||
|
+++ b/net/core/dev.c
|
||||||
|
@@ -2289,7 +2289,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)) {
|
|
@ -82,3 +82,4 @@ features/arm/0003-spi-sun6i-Set-bits_per_word_mask-to-only-support-8-b.patch
|
||||||
features/arm/ARM-dt-sun4i-Add-A10-SPI-controller-nodes.patch
|
features/arm/ARM-dt-sun4i-Add-A10-SPI-controller-nodes.patch
|
||||||
features/arm/PHY-sunxi-Add-driver-for-sunxi-usb-phy.patch
|
features/arm/PHY-sunxi-Add-driver-for-sunxi-usb-phy.patch
|
||||||
features/arm/ARM-sun4i-dt-Add-USB-host-bindings.patch
|
features/arm/ARM-sun4i-dt-Add-USB-host-bindings.patch
|
||||||
|
bugfix/all/net-Start-with-correct-mac_len-in-skb_network_protoc.patch
|
||||||
|
|
Loading…
Reference in New Issue