tcp: fix TCP socket rehash stats mis-accounting
authorYuchung Cheng <ycheng@google.com>
Tue, 19 Jan 2021 19:26:19 +0000 (11:26 -0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 20 Jan 2021 03:47:20 +0000 (19:47 -0800)
commit9c30ae8398b0813e237bde387d67a7f74ab2db2d
treed7bd663b98e76378c3a279078746b22962a30932
parent8e4052c32d6b4b39c1e13c652c7e33748d447409
tcp: fix TCP socket rehash stats mis-accounting

The previous commit 32efcc06d2a1 ("tcp: export count for rehash attempts")
would mis-account rehashing SNMP and socket stats:

  a. During handshake of an active open, only counts the first
     SYN timeout

  b. After handshake of passive and active open, stop updating
     after (roughly) TCP_RETRIES1 recurring RTOs

  c. After the socket aborts, over count timeout_rehash by 1

This patch fixes this by checking the rehash result from sk_rethink_txhash.

Fixes: 32efcc06d2a1 ("tcp: export count for rehash attempts")
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Link: https://lore.kernel.org/r/20210119192619.1848270-1-ycheng@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/sock.h
net/ipv4/tcp_input.c
net/ipv4/tcp_timer.c