diff options
-rw-r--r-- | net/ipv4/tcp_timer.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index f3c8c6c019ae..74a6aa003657 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c | |||
@@ -367,18 +367,19 @@ void tcp_retransmit_timer(struct sock *sk) | |||
367 | if (icsk->icsk_retransmits == 0) { | 367 | if (icsk->icsk_retransmits == 0) { |
368 | int mib_idx; | 368 | int mib_idx; |
369 | 369 | ||
370 | if (icsk->icsk_ca_state == TCP_CA_Disorder) { | 370 | if (icsk->icsk_ca_state == TCP_CA_Recovery) { |
371 | if (tcp_is_sack(tp)) | ||
372 | mib_idx = LINUX_MIB_TCPSACKFAILURES; | ||
373 | else | ||
374 | mib_idx = LINUX_MIB_TCPRENOFAILURES; | ||
375 | } else if (icsk->icsk_ca_state == TCP_CA_Recovery) { | ||
376 | if (tcp_is_sack(tp)) | 371 | if (tcp_is_sack(tp)) |
377 | mib_idx = LINUX_MIB_TCPSACKRECOVERYFAIL; | 372 | mib_idx = LINUX_MIB_TCPSACKRECOVERYFAIL; |
378 | else | 373 | else |
379 | mib_idx = LINUX_MIB_TCPRENORECOVERYFAIL; | 374 | mib_idx = LINUX_MIB_TCPRENORECOVERYFAIL; |
380 | } else if (icsk->icsk_ca_state == TCP_CA_Loss) { | 375 | } else if (icsk->icsk_ca_state == TCP_CA_Loss) { |
381 | mib_idx = LINUX_MIB_TCPLOSSFAILURES; | 376 | mib_idx = LINUX_MIB_TCPLOSSFAILURES; |
377 | } else if ((icsk->icsk_ca_state == TCP_CA_Disorder) || | ||
378 | tp->sacked_out) { | ||
379 | if (tcp_is_sack(tp)) | ||
380 | mib_idx = LINUX_MIB_TCPSACKFAILURES; | ||
381 | else | ||
382 | mib_idx = LINUX_MIB_TCPRENOFAILURES; | ||
382 | } else { | 383 | } else { |
383 | mib_idx = LINUX_MIB_TCPTIMEOUTS; | 384 | mib_idx = LINUX_MIB_TCPTIMEOUTS; |
384 | } | 385 | } |