diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/tcp_input.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index b61274b666f6..e965cc7b87ff 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1877,8 +1877,13 @@ void tcp_enter_loss(struct sock *sk, int how) | |||
1877 | } | 1877 | } |
1878 | tcp_verify_left_out(tp); | 1878 | tcp_verify_left_out(tp); |
1879 | 1879 | ||
1880 | tp->reordering = min_t(unsigned int, tp->reordering, | 1880 | /* Timeout in disordered state after receiving substantial DUPACKs |
1881 | sysctl_tcp_reordering); | 1881 | * suggests that the degree of reordering is over-estimated. |
1882 | */ | ||
1883 | if (icsk->icsk_ca_state <= TCP_CA_Disorder && | ||
1884 | tp->sacked_out >= sysctl_tcp_reordering) | ||
1885 | tp->reordering = min_t(unsigned int, tp->reordering, | ||
1886 | sysctl_tcp_reordering); | ||
1882 | tcp_set_ca_state(sk, TCP_CA_Loss); | 1887 | tcp_set_ca_state(sk, TCP_CA_Loss); |
1883 | tp->high_seq = tp->snd_nxt; | 1888 | tp->high_seq = tp->snd_nxt; |
1884 | TCP_ECN_queue_cwr(tp); | 1889 | TCP_ECN_queue_cwr(tp); |