• Patrick McHardy's avatar
    [IPV4/IPV6]: Fix suboptimal fragment sizing for last fragment · 041d6e04
    Patrick McHardy authored
    Yoshifuji's recent fragment patch prevents unnecessary fragmentation
    when the data can be kept in a single packet, but only for the first
    packet. When fragmenting, all fragments are still truncated to
    multiples of 8 and we might end up creating an unnecessary fragment.
    
    This dump shows the problem (MTU 1499):
    
    172.16.1.123.32771 > 172.16.195.3.4135: udp 2937 (frag 7066:1472@0+)
    172.16.1.123 > 172.16.195.3: udp (frag 7066:1472@1472+)
    172.16.1.123 > 172.16.195.3: udp (frag 7066:1@2944)
    
    This patch always builds mtu sized fragments and truncates the previous
    fragment to a multiple of 8 bytes when allocating a new one. With the
    patch the dump looks like this:
    
    
    172.16.1.123.32772 > 172.16.195.3.4135: udp 2937 (frag 49641:1472@0+)
    172.16.1.123 > 172.16.195.3: udp (frag 49641:1473@1472)
    Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    041d6e04
ip6_output.c 28.6 KB