Add minimum value definition as the lower bound of RTO MAX set by users. In the next patch, bpf_sol_tcp_setsockopt() will use this in the test statement. Signed-off-by: Jason Xing <kerneljasonxing@xxxxxxxxx> --- include/net/tcp.h | 1 + net/ipv4/sysctl_net_ipv4.c | 3 ++- net/ipv4/tcp.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/net/tcp.h b/include/net/tcp.h index 7fd2d7fa4532..b6bedbe68636 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -143,6 +143,7 @@ static_assert((1 << ATO_BITS) > TCP_DELACK_MAX); #define TCP_DELACK_MIN 4U #define TCP_ATO_MIN 4U #endif +#define TCP_RTO_MAX_MIN_SEC 1 #define TCP_RTO_MAX_SEC 120 #define TCP_RTO_MAX ((unsigned)(TCP_RTO_MAX_SEC * HZ)) #define TCP_RTO_MIN ((unsigned)(HZ / 5)) diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index 3a43010d726f..53942c225e0b 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c @@ -28,6 +28,7 @@ static int tcp_adv_win_scale_max = 31; static int tcp_app_win_max = 31; static int tcp_min_snd_mss_min = TCP_MIN_SND_MSS; static int tcp_min_snd_mss_max = 65535; +static int tcp_rto_max_min = TCP_RTO_MAX_MIN_SEC * MSEC_PER_SEC; static int tcp_rto_max_max = TCP_RTO_MAX_SEC * MSEC_PER_SEC; static int ip_privileged_port_min; static int ip_privileged_port_max = 65535; @@ -1590,7 +1591,7 @@ static struct ctl_table ipv4_net_table[] = { .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec_minmax, - .extra1 = SYSCTL_ONE_THOUSAND, + .extra1 = &tcp_rto_max_min, .extra2 = &tcp_rto_max_max, }, }; diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 992d5c9b2487..2373ab1a1d47 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -3812,7 +3812,8 @@ int do_tcp_setsockopt(struct sock *sk, int level, int optname, TCP_RTO_MAX / HZ)); return 0; case TCP_RTO_MAX_MS: - if (val < MSEC_PER_SEC || val > TCP_RTO_MAX_SEC * MSEC_PER_SEC) + if (val < TCP_RTO_MAX_MIN_SEC * MSEC_PER_SEC || + val > TCP_RTO_MAX_SEC * MSEC_PER_SEC) return -EINVAL; WRITE_ONCE(inet_csk(sk)->icsk_rto_max, msecs_to_jiffies(val)); return 0; -- 2.43.5