tcp: more accurately check DSACKs to grow RACK reordering window
authorNeal Cardwell <ncardwell@google.com>
Tue, 27 Jul 2021 14:42:58 +0000 (10:42 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 27 Jul 2021 19:07:21 +0000 (20:07 +0100)
commita657db0350bb8f568897835b6189c84a89f13292
tree40699aa991aa192060e472048665088a7029bfd1
parent63f367d9de77b30f58722c1be9e334fb0f5f342d
tcp: more accurately check DSACKs to grow RACK reordering window

Previously, a DSACK could expand the RACK reordering window when no
reordering has been seen, and/or when the DSACK was due to an
unnecessary TLP retransmit (rather than a spurious fast recovery due
to reordering). This could result in unnecessarily growing the RACK
reordering window and thus unnecessarily delaying RACK-based fast
recovery episodes.

To avoid these issues, this commit tightens the conditions under which
a DSACK triggers the RACK reordering window to grow, so that a
connection only expands its RACK reordering window if:

(a) reordering has been seen in the connection
(b) a DSACKed range does not match the most recent TLP retransmit

Signed-off-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Yuchung Cheng <ycheng@google.com>
Acked-by: Priyaranjan Jha <priyarjha@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c
net/ipv4/tcp_recovery.c