diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2009-04-14 15:11:06 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-14 15:11:06 -0700 |
commit | fc59f9a3bf8096a1f68a8b78ada7a0e0ab9236b2 (patch) | |
tree | d713e3270eafb70bb6af27dd2bbdc84b1a2c8c79 /net/core | |
parent | ce8632ba6b3ed0bf2efa98672e2808de34250389 (diff) | |
download | op-kernel-dev-fc59f9a3bf8096a1f68a8b78ada7a0e0ab9236b2.zip op-kernel-dev-fc59f9a3bf8096a1f68a8b78ada7a0e0ab9236b2.tar.gz |
gro: Restore correct value to gso_size
Since everybody has been focusing on baremetal GRO performance
no one noticed when I added a bug that zapped gso_size for all
GRO packets. This only gets picked up when you forward the skb
out of an interface.
Thanks to Mark Wagner for noticing this bug when testing kvm.
Reported-by: Mark Wagner <mwagner@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index ea8eb22..343883f 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2328,8 +2328,10 @@ static int napi_gro_complete(struct sk_buff *skb) struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK]; int err = -ENOENT; - if (NAPI_GRO_CB(skb)->count == 1) + if (NAPI_GRO_CB(skb)->count == 1) { + skb_shinfo(skb)->gso_size = 0; goto out; + } rcu_read_lock(); list_for_each_entry_rcu(ptype, head, list) { @@ -2348,7 +2350,6 @@ static int napi_gro_complete(struct sk_buff *skb) } out: - skb_shinfo(skb)->gso_size = 0; return netif_receive_skb(skb); } |