tcp: support TCP_RTO_MIN_US for set/getsockopt use
authorJason Xing <kerneljasonxing@gmail.com>
Mon, 17 Mar 2025 12:03:13 +0000 (20:03 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 25 Mar 2025 11:27:19 +0000 (04:27 -0700)
commitf38805c5d26fe4af97837c10d58074a7496638bf
treed19c016a9c6069ab703e7c2d7d64abcd95952674
parent98b2c048e2e2f1810e106bd2a0b4ad50b241af1b
tcp: support TCP_RTO_MIN_US for set/getsockopt use

Support adjusting/reading RTO MIN for socket level by using set/getsockopt().

This new option has the same effect as TCP_BPF_RTO_MIN, which means it
doesn't affect RTAX_RTO_MIN usage (by using ip route...). Considering that
bpf option was implemented before this patch, so we need to use a standalone
new option for pure tcp set/getsockopt() use.

When the socket is created, its icsk_rto_min is set to the default
value that is controlled by sysctl_tcp_rto_min_us. Then if application
calls setsockopt() with TCP_RTO_MIN_US flag to pass a valid value, then
icsk_rto_min will be overridden in jiffies unit.

This patch adds WRITE_ONCE/READ_ONCE to avoid data-race around
icsk_rto_min.

Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20250317120314.41404-2-kerneljasonxing@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Documentation/networking/ip-sysctl.rst
include/net/tcp.h
include/uapi/linux/tcp.h
net/ipv4/tcp.c