Skip to content
  • Yuchung Cheng's avatar
    tcp: detect loss above high_seq in recovery · 974c1236
    Yuchung Cheng authored
    
    
    Correctly implement a loss detection heuristic: New sequences (above
    high_seq) sent during the fast recovery are deemed lost when higher
    sequences are SACKed.
    
    Current code does not catch these losses, because tcp_mark_head_lost()
    does not check packets beyond high_seq. The fix is straight-forward by
    checking packets until the highest sacked packet. In addition, all the
    FLAG_DATA_LOST logic are in-effective and redundant and can be removed.
    
    Update the loss heuristic comments. The algorithm above is documented
    as heuristic B, but it is redundant too because heuristic A already
    covers B.
    
    Note that this change only marks some forward-retransmitted packets LOST.
    It does NOT forbid TCP performing further CWR on new losses. A potential
    follow-up patch under preparation is to perform another CWR on "new"
    losses such as
    1) sequence above high_seq is lost (by resetting high_seq to snd_nxt)
    2) retransmission is lost.
    
    Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    974c1236