diff options
Diffstat (limited to 'net/ipv4/tcp_metrics.c')
| -rw-r--r-- | net/ipv4/tcp_metrics.c | 4 | 
1 files changed, 3 insertions, 1 deletions
| diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c index 4a22f3e715df..52f3c6b971d2 100644 --- a/net/ipv4/tcp_metrics.c +++ b/net/ipv4/tcp_metrics.c @@ -502,7 +502,9 @@ reset:  	 * ACKs, wait for troubles.  	 */  	if (crtt > tp->srtt) { -		inet_csk(sk)->icsk_rto = crtt + max(crtt >> 2, tcp_rto_min(sk)); +		/* Set RTO like tcp_rtt_estimator(), but from cached RTT. */ +		crtt >>= 3; +		inet_csk(sk)->icsk_rto = crtt + max(2 * crtt, tcp_rto_min(sk));  	} else if (tp->srtt == 0) {  		/* RFC6298: 5.7 We've failed to get a valid RTT sample from  		 * 3WHS. This is most likely due to retransmission, | 
