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

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

From: Yuchung Cheng <hidden>
Date: 2017-09-14 16:33:11

On Thu, Sep 14, 2017 at 6:57 AM, Neal Cardwell [off-list ref] wrote:
On Wed, Sep 13, 2017 at 11:30 PM, Eric Dumazet [off-list ref] wrote:
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.
...
quoted
Signed-off-by: Eric Dumazet <redacted>
Reported-by: liujian <redacted>
---
 net/ipv4/tcp_output.c |   19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)
Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Yuchung Cheng <redacted>

nicely done!
Thanks, Eric!

neal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help