diff options
Diffstat (limited to 'net/ipv4/tcp_timer.c')
-rw-r--r-- | net/ipv4/tcp_timer.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index 0170e914f1b0..b144a26359bc 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c | |||
@@ -328,19 +328,16 @@ static void tcp_retransmit_timer(struct sock *sk) | |||
328 | if (icsk->icsk_retransmits == 0) { | 328 | if (icsk->icsk_retransmits == 0) { |
329 | int mib_idx; | 329 | int mib_idx; |
330 | 330 | ||
331 | if (icsk->icsk_ca_state == TCP_CA_Disorder || | 331 | if (icsk->icsk_ca_state == TCP_CA_Disorder) { |
332 | icsk->icsk_ca_state == TCP_CA_Recovery) { | 332 | if (tcp_is_sack(tp)) |
333 | if (tcp_is_sack(tp)) { | 333 | mib_idx = LINUX_MIB_TCPSACKFAILURES; |
334 | if (icsk->icsk_ca_state == TCP_CA_Recovery) | 334 | else |
335 | mib_idx = LINUX_MIB_TCPSACKRECOVERYFAIL; | 335 | mib_idx = LINUX_MIB_TCPRENOFAILURES; |
336 | else | 336 | } else if (icsk->icsk_ca_state == TCP_CA_Recovery) { |
337 | mib_idx = LINUX_MIB_TCPSACKFAILURES; | 337 | if (tcp_is_sack(tp)) |
338 | } else { | 338 | mib_idx = LINUX_MIB_TCPSACKRECOVERYFAIL; |
339 | if (icsk->icsk_ca_state == TCP_CA_Recovery) | 339 | else |
340 | mib_idx = LINUX_MIB_TCPRENORECOVERYFAIL; | 340 | mib_idx = LINUX_MIB_TCPRENORECOVERYFAIL; |
341 | else | ||
342 | mib_idx = LINUX_MIB_TCPRENOFAILURES; | ||
343 | } | ||
344 | } else if (icsk->icsk_ca_state == TCP_CA_Loss) { | 341 | } else if (icsk->icsk_ca_state == TCP_CA_Loss) { |
345 | mib_idx = LINUX_MIB_TCPLOSSFAILURES; | 342 | mib_idx = LINUX_MIB_TCPLOSSFAILURES; |
346 | } else { | 343 | } else { |