From: Herbert Xu Date: Wed, 14 Jan 2009 22:36:12 +0000 (-0800) Subject: gro: Check for GSO packets and packets with frag_list X-Git-Tag: v2.6.29-rc2~11^2~42 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=f17f5c91ae3bfeb5cfc37fa132a5fdfceb8927be;p=linux-2.6-omap-h63xx.git gro: Check for GSO packets and packets with frag_list As GRO cannot be applied to packets with frag_list we need to make sure that we reject such packets if they are fed to us, e.g., through a tunnel device. Also there is no point in applying GRO on GSO packets so they too should be rejected. This allows GRO to be used in virtio-net which may produce GSO packets directly but may still benefit from GRO if the other end of it doesn't support GSO. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller --- diff --git a/net/core/dev.c b/net/core/dev.c index b715a55cccc..7dec715293b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2392,6 +2392,9 @@ int dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb) if (!(skb->dev->features & NETIF_F_GRO)) goto normal; + if (skb_is_gso(skb) || skb_shinfo(skb)->frag_list) + goto normal; + rcu_read_lock(); list_for_each_entry_rcu(ptype, head, list) { struct sk_buff *p;