net: core: don't account for udp header size when computing seglen
authorFlorian Westphal <fw@strlen.de>
Wed, 9 Apr 2014 08:28:50 +0000 (10:28 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 11 Apr 2014 01:41:25 +0000 (21:41 -0400)
commit6d39d589bb76ee8a1c6cde6822006ae0053decff
tree1b54b48a6b8c3b95df7f6fadc6741e4683c70dc0
parentf34c4a35d87949fbb0e0f31eba3c054e9f8199ba
net: core: don't account for udp header size when computing seglen

In case of tcp, gso_size contains the tcpmss.

For UFO (udp fragmentation offloading) skbs, gso_size is the fragment
payload size, i.e. we must not account for udp header size.

Otherwise, when using virtio drivers, a to-be-forwarded UFO GSO packet
will be needlessly fragmented in the forward path, because we think its
individual segments are too large for the outgoing link.

Fixes: fe6cc55f3a9a053 ("net: ip, ipv6: handle gso skbs in forwarding path")
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Reported-by: Tobias Brunner <tobias@strongswan.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/skbuff.c