diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
| -rw-r--r-- | net/ipv4/tcp_input.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 316ebdf8151d..6b6b57000dad 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -6124,7 +6124,11 @@ static void tcp_rcv_synrecv_state_fastopen(struct sock *sk)  {  	struct request_sock *req; -	tcp_try_undo_loss(sk, false); +	/* If we are still handling the SYNACK RTO, see if timestamp ECR allows +	 * undo. If peer SACKs triggered fast recovery, we can't undo here. +	 */ +	if (inet_csk(sk)->icsk_ca_state == TCP_CA_Loss) +		tcp_try_undo_loss(sk, false);  	/* Reset rtx states to prevent spurious retransmits_timed_out() */  	tcp_sk(sk)->retrans_stamp = 0;  |