We have two problem in ipv4 and ipv6 wrt. to
fragmentation on output. Both of which result
in fragmentation when it is really not needed.
When fragmenting both ipv4 and ipv6 need to make
the post IP-header portion of the packet have a
length of modulo 8. This means that if the PMTU
is not a multiple of 8 after the IP header size
is subtracted, we will fragment for full sized
frames for the modulo 8 bytes.
Furthermore, IPV6 subtracts out space for the
fragmentation header it must add, making unnecessary
fragmentation even more likely.
We still need to handle ip*_append_page() and that
will happen in a followup fix.
Signed-off-by: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>