• Ilpo Järvinen's avatar
    tcp: make urg+gso work for real this time · f8269a49
    Ilpo Järvinen authored
    I should have noticed this earlier... :-) The previous solution
    to URG+GSO/TSO will cause SACK block tcp_fragment to do zig-zig
    patterns, or even worse, a steep downward slope into packet
    counting because each skb pcount would be truncated to pcount
    of 2 and then the following fragments of the later portion would
    restore the window again.
    
    Basically this reverts "tcp: Do not use TSO/GSO when there is
    urgent data" (33cf71ce). It also removes some unnecessary code
    from tcp_current_mss that didn't work as intented either (could
    be that something was changed down the road, or it might have
    been broken since the dawn of time) because it only works once
    urg is already written while this bug shows up starting from
    ~64k before the urg point.
    
    The retransmissions already are split to mss sized chunks, so
    only new data sending paths need splitting in case they have
    a segment otherwise suitable for gso/tso. The actually check
    can be improved to be more narrow but since this is late -rc
    already, I'll postpone thinking the more fine-grained things.
    Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f8269a49
tcp_output.c 75.6 KB