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.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index b78aac30c498..ecd61d54147f 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -342,10 +342,6 @@ void tcp_retransmit_timer(struct sock *sk)
342 struct tcp_sock *tp = tcp_sk(sk); 342 struct tcp_sock *tp = tcp_sk(sk);
343 struct inet_connection_sock *icsk = inet_csk(sk); 343 struct inet_connection_sock *icsk = inet_csk(sk);
344 344
345 if (tp->early_retrans_delayed) {
346 tcp_resume_early_retransmit(sk);
347 return;
348 }
349 if (tp->fastopen_rsk) { 345 if (tp->fastopen_rsk) {
350 WARN_ON_ONCE(sk->sk_state != TCP_SYN_RECV && 346 WARN_ON_ONCE(sk->sk_state != TCP_SYN_RECV &&
351 sk->sk_state != TCP_FIN_WAIT1); 347 sk->sk_state != TCP_FIN_WAIT1);
@@ -495,13 +491,20 @@ void tcp_write_timer_handler(struct sock *sk)
495 } 491 }
496 492
497 event = icsk->icsk_pending; 493 event = icsk->icsk_pending;
498 icsk->icsk_pending = 0;
499 494
500 switch (event) { 495 switch (event) {
496 case ICSK_TIME_EARLY_RETRANS:
497 tcp_resume_early_retransmit(sk);
498 break;
499 case ICSK_TIME_LOSS_PROBE:
500 tcp_send_loss_probe(sk);
501 break;
501 case ICSK_TIME_RETRANS: 502 case ICSK_TIME_RETRANS:
503 icsk->icsk_pending = 0;
502 tcp_retransmit_timer(sk); 504 tcp_retransmit_timer(sk);
503 break; 505 break;
504 case ICSK_TIME_PROBE0: 506 case ICSK_TIME_PROBE0:
507 icsk->icsk_pending = 0;
505 tcp_probe_timer(sk); 508 tcp_probe_timer(sk);
506 break; 509 break;
507 } 510 }