Thread (20 messages) flat view 20 messages, 6 authors, 2017-09-16

Re: [PATCH net] tcp: update skb->skb_mstamp more carefully

From: Eric Dumazet <hidden>
Date: 2017-09-15 23:16:54

On Fri, 2017-09-15 at 14:37 -0700, David Miller wrote:
From: Eric Dumazet <redacted>
Date: Wed, 13 Sep 2017 20:30:39 -0700
quoted
From: Eric Dumazet <redacted>

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:
...
quoted
Signed-off-by: Eric Dumazet <redacted>
Reported-by: liujian <redacted>
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help