Message ID | 1513131772.25033.60.camel@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net] tcp: refresh tcp_mstamp from timers callbacks | expand |
On Tue, Dec 12, 2017 at 9:22 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > From: Eric Dumazet <edumazet@google.com> > > 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: 385e20706fac ("tcp: use tp->tcp_mstamp in output path") > Signed-off-by: Eric 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: Neal Cardwell <ncardwell@google.com> Thanks, Eric! neal
On Tue, Dec 12, 2017 at 9:26 PM, Neal Cardwell <ncardwell@google.com> wrote: > On Tue, Dec 12, 2017 at 9:22 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: >> From: Eric Dumazet <edumazet@google.com> >> >> 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: 385e20706fac ("tcp: use tp->tcp_mstamp in output path") >> Signed-off-by: Eric 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: Neal Cardwell <ncardwell@google.com> > > Thanks, Eric! > > neal Acked-by: Soheil Hassas Yeganeh <soheil@google.com> This is a very nice catch! Thank you Eric!
Acked-by: Mike Maloney <maloney@google.com> Thanks for the quick fix! On Tue, Dec 12, 2017 at 9:42 PM, Soheil Hassas Yeganeh <soheil.kdev@gmail.com> wrote: > On Tue, Dec 12, 2017 at 9:26 PM, Neal Cardwell <ncardwell@google.com> wrote: >> On Tue, Dec 12, 2017 at 9:22 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: >>> From: Eric Dumazet <edumazet@google.com> >>> >>> 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: 385e20706fac ("tcp: use tp->tcp_mstamp in output path") >>> Signed-off-by: Eric 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: Neal Cardwell <ncardwell@google.com> >> >> Thanks, Eric! >> >> neal > > Acked-by: Soheil Hassas Yeganeh <soheil@google.com> > > This is a very nice catch! Thank you Eric!
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 12 Dec 2017 18:22:52 -0800 > From: Eric Dumazet <edumazet@google.com> > > 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: 385e20706fac ("tcp: use tp->tcp_mstamp in output path") > Signed-off-by: Eric Dumazet <edumazet@google.com> Applied and queued up for -stable, thanks Eric.
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index 16df6dd44b988a128d97df3a7953437499a216e8..968fda1983762e6d7c078a28ccfcbd9066788daf 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c @@ -264,6 +264,7 @@ void tcp_delack_timer_handler(struct sock *sk) icsk->icsk_ack.pingpong = 0; icsk->icsk_ack.ato = TCP_ATO_MIN; } + tcp_mstamp_refresh(tcp_sk(sk)); tcp_send_ack(sk); __NET_INC_STATS(sock_net(sk), LINUX_MIB_DELAYEDACKS); } @@ -632,6 +633,7 @@ static void tcp_keepalive_timer (struct timer_list *t) goto out; } + tcp_mstamp_refresh(tp); if (sk->sk_state == TCP_FIN_WAIT2 && sock_flag(sk, SOCK_DEAD)) { if (tp->linger2 >= 0) { const int tmo = tcp_fin_time(sk) - TCP_TIMEWAIT_LEN;