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 ]
|
||||
* [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
|
||||
|
||||
|
|
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/PHY-sunxi-Add-driver-for-sunxi-usb-phy.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