tcp: always timestamp on every skb transmission
authorYuchung Cheng <ycheng@google.com>
Wed, 16 Jan 2019 23:05:29 +0000 (15:05 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 17 Jan 2019 23:12:26 +0000 (15:12 -0800)
commit7f12422c4873e9b274bc151ea59cb0cdf9415cf1
tree4fcc9a7b9a4c31aa9c470fc8fc5a4a8c59b01177
parent88f8598d0a302a08380eadefd09b9f5cb1c4c428
tcp: always timestamp on every skb transmission

Previously TCP skbs are not always timestamped if the transmission
failed due to memory or other local issues. This makes deciding
when to abort a socket tricky and complicated because the first
unacknowledged skb's timestamp may be 0 on TCP timeout.

The straight-forward fix is to always timestamp skb on every
transmission attempt. Also every skb retransmission needs to be
flagged properly to avoid RTT under-estimation. This can happen
upon receiving an ACK for the original packet and the a previous
(spurious) retransmission has failed.

It's worth noting that this reverts to the old time-stamping
style before commit 8c72c65b426b ("tcp: update skb->skb_mstamp more
carefully") which addresses a problem in computing the elapsed time
of a stalled window-probing socket. The problem will be addressed
differently in the next patches with a simpler approach.

Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
Reviewed-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c