Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ebe183c authored by Yuchung Cheng's avatar Yuchung Cheng Committed by David S. Miller
Browse files

tcp: undo spurious timeout after SACK reneging



On SACK reneging the sender immediately retransmits and forces a
timeout but disables Eifel (undo). If the (buggy) receiver does not
drop any packet this can trigger a false slow-start retransmit storm
driven by the ACKs of the original packets. This can be detected with
undo and TCP timestamps.

Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8fe7f99a
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -2059,11 +2059,8 @@ void tcp_enter_loss(struct sock *sk, int how)
	if (tcp_is_reno(tp))
		tcp_reset_reno_sack(tp);

	if (!how) {
		/* Push undo marker, if it was plain RTO and nothing
		 * was retransmitted. */
	tp->undo_marker = tp->snd_una;
	} else {
	if (how) {
		tp->sacked_out = 0;
		tp->fackets_out = 0;
	}