This is a note to let you know that I've just added the patch titled net: Start with correct mac_len in skb_network_protocol to the 3.14-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: net-start-with-correct-mac_len-in-skb_network_protocol.patch and it can be found in the queue-3.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Wed May 28 21:03:54 PDT 2014 From: Vlad Yasevich <vyasevic@xxxxxxxxxx> Date: Mon, 14 Apr 2014 17:37:26 -0400 Subject: net: Start with correct mac_len in skb_network_protocol From: Vlad Yasevich <vyasevic@xxxxxxxxxx> [ Upstream commit 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@xxxxxxxxx> CC: Daniel Borkman <dborkman@xxxxxxxxxx> Tested-by: Martin Filip <nexus+kernel@xxxxxxxxxx> Signed-off-by: Vlad Yasevich <vyasevic@xxxxxxxxxx> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- 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)) { Patches currently in stable-queue which might be from vyasevic@xxxxxxxxxx are queue-3.14/net-start-with-correct-mac_len-in-skb_network_protocol.patch queue-3.14/net-find-the-nesting-level-of-a-given-device-by-type.patch queue-3.14/mactap-fix-checksum-errors-for-non-gso-packets-in.patch queue-3.14/net-allow-for-more-then-a-single-subclass-for.patch queue-3.14/macvlan-fix-lockdep-warnings-with-stacked-macvlan.patch queue-3.14/revert-macvlan-fix-checksums-error-when-we-are-in.patch queue-3.14/net-sctp-cache-auth_enable-per-endpoint.patch queue-3.14/net-sctp-test-if-association-is-dead-in-sctp_wake_up_waiters.patch queue-3.14/net-sctp-wake-up-all-assocs-if-sndbuf-policy-is-per-socket.patch queue-3.14/vlan-fix-lockdep-warning-with-stacked-vlan-devices.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html