• Neal Cardwell's avatar
    tcp: use SACKs and DSACKs that arrive on ACKs below snd_una · e95ae2f2
    Neal Cardwell authored
    The bug: When the ACK field is below snd_una (which can happen when
    ACKs are reordered), senders ignored DSACKs (preventing undo) and did
    not call tcp_fastretrans_alert, so they did not increment
    prr_delivered to reflect newly-SACKed sequence ranges, and did not
    call tcp_xmit_retransmit_queue, thus passing up chances to send out
    more retransmitted and new packets based on any newly-SACKed packets.
    
    The change: When the ACK field is below snd_una (the "old_ack" goto
    label), call tcp_fastretrans_alert to allow undo based on any
    newly-arrived DSACKs and try to send out more packets based on
    newly-SACKed packets.
    
    Other patches in this series will provide other changes that are
    necessary to fully fix this problem.
    Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
    Acked-by: default avatarIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e95ae2f2
tcp_input.c 171 KB