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)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 9 Jun 2014 12:28:55 +0000 (13:28 +0100)
commit17573c6a806f7d727cd1b1762526575ea97a0cfc
treea4bb79bd2ef85c0492921190e040e48af9742530
parent109d10d19ff823dd63d0045cc2667708c923b83d
net: core: don't account for udp header size when computing seglen

[ Upstream commit 6d39d589bb76ee8a1c6cde6822006ae0053decff ]

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>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/core/skbuff.c