On Fri, 2017-09-15 at 14:37 -0700, David Miller wrote:
> From: Eric Dumazet <eric.duma...@gmail.com>
> Date: Wed, 13 Sep 2017 20:30:39 -0700
> 
> > From: Eric Dumazet <eduma...@googl.com>
> > 
> > liujian reported a problem in TCP_USER_TIMEOUT processing with a patch
> > in tcp_probe_timer() :
> >       https://www.spinics.net/lists/netdev/msg454496.html
> > 
> > After investigations, the root cause of the problem is that we update
> > skb->skb_mstamp of skbs in write queue, even if the attempt to send a
> > clone or copy of it failed. One reason being a routing problem.
> > 
> > This patch prevents this, solving liujian issue.
> > 
> > It also removes a potential RTT miscalculation, since
> > __tcp_retransmit_skb() is not OR-ing TCP_SKB_CB(skb)->sacked with
> > TCPCB_EVER_RETRANS if a failure happens, but skb->skb_mstamp has
> > been changed.
> > 
> > A future ACK would then lead to a very small RTT sample and min_rtt
> > would then be lowered to this too small value.
> > 
> > Tested:
> ...
> > Signed-off-by: Eric Dumazet <eduma...@googl.com>
> > Reported-by: liujian <liujia...@huawei.com>
> 
> Applied and queued up for -stable, thanks.

Thanks David.

It seems I forgot to move the call to tcp_rate_skb_sent(sk, skb),
as this function depended on skb->skb_mstamp being up to date.

I will send a fix, sorry for not catching this earlier.



Reply via email to