Commit 4688eb7c authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

tcp: refresh tcp_mstamp from timers callbacks

Only the retransmit timer currently refreshes tcp_mstamp

We should do the same for delayed acks and keepalives.

Even if RFC 7323 does not request it, this is consistent to what linux
did in the past, when TS values were based on jiffies.

Fixes: 385e2070 ("tcp: use tp->tcp_mstamp in output path")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: Soheil Hassas Yeganeh <soheil@google.com>
Cc: Mike Maloney <maloney@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
Acked-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
Acked-by: default avatarMike Maloney <maloney@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9ee11bd0
...@@ -264,6 +264,7 @@ void tcp_delack_timer_handler(struct sock *sk) ...@@ -264,6 +264,7 @@ void tcp_delack_timer_handler(struct sock *sk)
icsk->icsk_ack.pingpong = 0; icsk->icsk_ack.pingpong = 0;
icsk->icsk_ack.ato = TCP_ATO_MIN; icsk->icsk_ack.ato = TCP_ATO_MIN;
} }
tcp_mstamp_refresh(tcp_sk(sk));
tcp_send_ack(sk); tcp_send_ack(sk);
__NET_INC_STATS(sock_net(sk), LINUX_MIB_DELAYEDACKS); __NET_INC_STATS(sock_net(sk), LINUX_MIB_DELAYEDACKS);
} }
...@@ -632,6 +633,7 @@ static void tcp_keepalive_timer (struct timer_list *t) ...@@ -632,6 +633,7 @@ static void tcp_keepalive_timer (struct timer_list *t)
goto out; goto out;
} }
tcp_mstamp_refresh(tp);
if (sk->sk_state == TCP_FIN_WAIT2 && sock_flag(sk, SOCK_DEAD)) { if (sk->sk_state == TCP_FIN_WAIT2 && sock_flag(sk, SOCK_DEAD)) {
if (tp->linger2 >= 0) { if (tp->linger2 >= 0) {
const int tmo = tcp_fin_time(sk) - TCP_TIMEWAIT_LEN; const int tmo = tcp_fin_time(sk) - TCP_TIMEWAIT_LEN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment