On Thu, Apr 27, 2017 at 12:10 AM, Eric Dumazet <eric.duma...@gmail.com> wrote: > From: Eric Dumazet <eduma...@google.com> > > I wrongly assumed tp->tcp_mstamp was up to date at the time > tcp_rack_reo_timeout() was called. > > It is not true, since we only update tcp->tcp_mstamp when receiving > a packet (as initially done in commit 69e996c58a35 ("tcp: add > tp->tcp_mstamp field") > > tcp_rack_reo_timeout() being called by a timer and not an incoming > packet, we need to refresh tp->tcp_mstamp > > Fixes: 7c1c7308592f ("tcp: do not pass timestamp to tcp_rack_detect_loss()") > Signed-off-by: Eric Dumazet <eduma...@google.com>
Acked-by: Soheil Hassas Yeganeh <soh...@google.com> > Cc: Soheil Hassas Yeganeh <soh...@google.com> > Cc: Neal Cardwell <ncardw...@google.com> > Cc: Yuchung Cheng <ych...@google.com> > --- > net/ipv4/tcp_recovery.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/net/ipv4/tcp_recovery.c b/net/ipv4/tcp_recovery.c > index > cd72b3d3879e88181c8a4639f0334a24e4cda852..362b8c75bfab44cf87c2a01398a146a271bc1119 > 100644 > --- a/net/ipv4/tcp_recovery.c > +++ b/net/ipv4/tcp_recovery.c > @@ -166,6 +166,7 @@ void tcp_rack_reo_timeout(struct sock *sk) > u32 timeout, prior_inflight; > > prior_inflight = tcp_packets_in_flight(tp); > + skb_mstamp_get(&tp->tcp_mstamp); > tcp_rack_detect_loss(sk, &timeout); > if (prior_inflight != tcp_packets_in_flight(tp)) { > if (inet_csk(sk)->icsk_ca_state != TCP_CA_Recovery) { > > Thanks for the fix!