diff options
author | Yuchung Cheng <ycheng@google.com> | 2017-12-07 20:33:31 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-08 20:14:11 +0100 |
commit | cd1fc85b4399d47e3d6626301741ba8c38cd475a (patch) | |
tree | 86125c235e1df3c21686d6c4625f47d1b6ce20e3 /net | |
parent | tcp: correctly test congestion state in RACK (diff) | |
download | linux-cd1fc85b4399d47e3d6626301741ba8c38cd475a.tar.xz linux-cd1fc85b4399d47e3d6626301741ba8c38cd475a.zip |
tcp: always evaluate losses in RACK upon undo
When sender detects spurious retransmission, all packets
marked lost are remarked to be in-flight. However some may
be considered lost based on its timestamps in RACK. This patch
forces RACK to re-evaluate, which may be skipped previously if
the ACK does not advance RACK timestamp.
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
Reviewed-by: Priyaranjan Jha <priyarjha@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/tcp_input.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 075c559570e6..9550cc42de2d 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2329,6 +2329,7 @@ static void tcp_undo_cwnd_reduction(struct sock *sk, bool unmark_loss) } tp->snd_cwnd_stamp = tcp_jiffies32; tp->undo_marker = 0; + tp->rack.advanced = 1; /* Force RACK to re-exam losses */ } static inline bool tcp_may_undo(const struct tcp_sock *tp) |