On Wed, Sep 13, 2017 at 11:30 PM, Eric Dumazet <[email protected]> wrote: > > From: Eric Dumazet <[email protected]> > > 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. ... > > Signed-off-by: Eric Dumazet <[email protected]> > Reported-by: liujian <[email protected]> > --- > net/ipv4/tcp_output.c | 19 ++++++++++++------- > 1 file changed, 12 insertions(+), 7 deletions(-)
Acked-by: Neal Cardwell <[email protected]> Thanks, Eric! neal
