aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_timer.c')
-rw-r--r--net/ipv4/tcp_timer.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index c36089aa3515..d7399a89469d 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -500,14 +500,13 @@ void tcp_retransmit_timer(struct sock *sk)
500 500
501 tcp_enter_loss(sk); 501 tcp_enter_loss(sk);
502 502
503 icsk->icsk_retransmits++;
503 if (tcp_retransmit_skb(sk, tcp_rtx_queue_head(sk), 1) > 0) { 504 if (tcp_retransmit_skb(sk, tcp_rtx_queue_head(sk), 1) > 0) {
504 /* Retransmission failed because of local congestion, 505 /* Retransmission failed because of local congestion,
505 * do not backoff. 506 * Let senders fight for local resources conservatively.
506 */ 507 */
507 if (!icsk->icsk_retransmits)
508 icsk->icsk_retransmits = 1;
509 inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, 508 inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS,
510 min(icsk->icsk_rto, TCP_RESOURCE_PROBE_INTERVAL), 509 TCP_RESOURCE_PROBE_INTERVAL,
511 TCP_RTO_MAX); 510 TCP_RTO_MAX);
512 goto out; 511 goto out;
513 } 512 }
@@ -528,7 +527,6 @@ void tcp_retransmit_timer(struct sock *sk)
528 * the 120 second clamps though! 527 * the 120 second clamps though!
529 */ 528 */
530 icsk->icsk_backoff++; 529 icsk->icsk_backoff++;
531 icsk->icsk_retransmits++;
532 530
533out_reset_timer: 531out_reset_timer:
534 /* If stream is thin, use linear timeouts. Since 'icsk_backoff' is 532 /* If stream is thin, use linear timeouts. Since 'icsk_backoff' is