mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 07:00:48 +00:00
tcp: fix RTO calculated from cached RTT
Commit 1b7fdd2ab5852 ("tcp: do not use cached RTT for RTT estimation") did not correctly account for the fact that crtt is the RTT shifted left 3 bits. Fix the calculation to consistently reflect this fact. Signed-off-by: Neal Cardwell <ncardwell@google.com> Cc: Eric Dumazet <edumazet@google.com> Cc: Yuchung Cheng <ycheng@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Acked-By: Yuchung Cheng <ycheng@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4bdf259763
commit
269aa759b4
@ -502,7 +502,9 @@ reset:
|
|||||||
* ACKs, wait for troubles.
|
* ACKs, wait for troubles.
|
||||||
*/
|
*/
|
||||||
if (crtt > tp->srtt) {
|
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) {
|
} else if (tp->srtt == 0) {
|
||||||
/* RFC6298: 5.7 We've failed to get a valid RTT sample from
|
/* RFC6298: 5.7 We've failed to get a valid RTT sample from
|
||||||
* 3WHS. This is most likely due to retransmission,
|
* 3WHS. This is most likely due to retransmission,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user