tcp: fix tcp_disordered_ack() vs usec TS resolution
authorEric Dumazet <edumazet@google.com>
Thu, 7 Dec 2023 18:13:42 +0000 (18:13 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 9 Dec 2023 01:15:51 +0000 (17:15 -0800)
commit9c25aae0132b8babbe71ebb2160186d69231d9b3
tree86bd1fd6f173616afa85e8322459c36f0aa4f99a
parenta45f1e46274256852990c479fbb1198a7d84529b
tcp: fix tcp_disordered_ack() vs usec TS resolution

After commit 939463016b7a ("tcp: change data receiver flowlabel after one dup")
we noticed an increase of TCPACKSkippedPAWS events.

Neal Cardwell tracked the issue to tcp_disordered_ack() assumption
about remote peer TS clock.

RFC 1323 & 7323 are suggesting the following:
  "timestamp clock frequency in the range 1 ms to 1 sec per tick
   between 1ms and 1sec."

This has to be adjusted for 1 MHz clock frequency.

This hints at reorders of SACK packets on send side,
this might deserve a future patch.
(skb->ooo_okay is always set for pure ACK packets)

Fixes: 614e8316aa4c ("tcp: add support for usec resolution in TCP TS values")
Co-developed-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: David Morley <morleyd@google.com>
Link: https://lore.kernel.org/r/20231207181342.525181-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp_input.c