Message ID | 534BF402.6010505@gmail.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
Vlad Yasevich píše v Po 14. 04. 2014 v 10:43 -0400: > On 04/14/2014 07:42 AM, Martin Filip wrote: > >> Hello, > >> > >> I've noticed significant TUN device performance drop between 3.13 and > >> 3.14 kernels, problem seems to persist until current git version. > >> > >> With good kernel I can achieve full 100mbps through openvpn without any > >> problem, with problematic kernel TX performance drops down to ~50kbps. > >> > >> According to git bisect it seems that root of all evil is commit > >> 53d6471cef17262d3ad1c7ce8982a234244f68ec. > >> > >> I can confirm that performance is great again with current kernel when I > >> revert this one. > >> > > I've forgot to mention kernel bug: > > https://bugzilla.kernel.org/show_bug.cgi?id=74051 > > > > Could you please try this patch. > > --- > net/core/dev.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/net/core/dev.c b/net/core/dev.c > index 45fa2f1..6088927 100644 > --- 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)) { Hello, thank you for your quick response. This seems to fix the problem, my test case worked fine with it!
On Mon, Apr 14, 2014 at 10:43:14AM -0400, Vlad Yasevich wrote:
> Could you please try this patch.
I was recently bitten by this issue as well and I can confirm that
this patch fixes the issue for me as well in 3.14.1.
Greetings
Marc
diff --git a/net/core/dev.c b/net/core/dev.c index 45fa2f1..6088927 100644 --- 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)) {