* [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports
@ 2025-03-12 15:35 Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 1/4] tcp: bpf: introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags Jason Xing
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Jason Xing @ 2025-03-12 15:35 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, dsahern, ast, daniel, andrii,
martin.lau, eddyz87, song, yonghong.song, john.fastabend, kpsingh,
sdf, haoluo, jolsa, horms, kuniyu, ncardwell
Cc: bpf, netdev, Jason Xing
Introduce bpf_sol_tcp_getsockopt() helper.
Add bpf_getsockopt for RTO MIN and DELACK MAX.
Add corresponding selftests for bpf.
---
v3
Link: https://lore.kernel.org/all/20250311085437.14703-1-kerneljasonxing@gmail.com/
1. Remove 2 bpf unrelated patches which will be separately submitted
after the netdev conference. So this series is consist of pure BPF
modification.
2. Fix selftests by adjusting the test/expected value because some arch
configs use HZ=100. Now those two selftests can be used from HZ=100 to
HZ=1000.
v2
Link: https://lore.kernel.org/all/20250309123004.85612-1-kerneljasonxing@gmail.com/
1. add bpf getsockopt common helper
2. target bpf-next net branch
Jason Xing (4):
tcp: bpf: introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags
tcp: bpf: support bpf_getsockopt for TCP_BPF_RTO_MIN
tcp: bpf: support bpf_getsockopt for TCP_BPF_DELACK_MAX
selftests: add bpf_set/getsockopt() for TCP_BPF_DELACK_MAX and
TCP_BPF_RTO_MIN
net/core/filter.c | 45 ++++++++++++++-----
.../selftests/bpf/progs/setget_sockopt.c | 2 +
2 files changed, 35 insertions(+), 12 deletions(-)
--
2.43.5
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH bpf-next v3 1/4] tcp: bpf: introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags
2025-03-12 15:35 [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports Jason Xing
@ 2025-03-12 15:35 ` Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 2/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_RTO_MIN Jason Xing
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jason Xing @ 2025-03-12 15:35 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, dsahern, ast, daniel, andrii,
martin.lau, eddyz87, song, yonghong.song, john.fastabend, kpsingh,
sdf, haoluo, jolsa, horms, kuniyu, ncardwell
Cc: bpf, netdev, Jason Xing
The patch refactors a bit on supporting getsockopt for TCP BPF flags.
For now, only TCP_BPF_SOCK_OPS_CB_FLAGS. Later, more flags will be added
into this function.
No functional changes here.
Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
---
net/core/filter.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/net/core/filter.c b/net/core/filter.c
index a0867c5b32b3..2932de5cc57c 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -5282,6 +5282,26 @@ static int sol_socket_sockopt(struct sock *sk, int optname,
KERNEL_SOCKPTR(optval), *optlen);
}
+static int bpf_sol_tcp_getsockopt(struct sock *sk, int optname,
+ char *optval, int optlen)
+{
+ if (optlen != sizeof(int))
+ return -EINVAL;
+
+ switch (optname) {
+ case TCP_BPF_SOCK_OPS_CB_FLAGS: {
+ int cb_flags = tcp_sk(sk)->bpf_sock_ops_cb_flags;
+
+ memcpy(optval, &cb_flags, optlen);
+ break;
+ }
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static int bpf_sol_tcp_setsockopt(struct sock *sk, int optname,
char *optval, int optlen)
{
@@ -5415,20 +5435,9 @@ static int sol_tcp_sockopt(struct sock *sk, int optname,
if (*optlen < 1)
return -EINVAL;
break;
- case TCP_BPF_SOCK_OPS_CB_FLAGS:
- if (*optlen != sizeof(int))
- return -EINVAL;
- if (getopt) {
- struct tcp_sock *tp = tcp_sk(sk);
- int cb_flags = tp->bpf_sock_ops_cb_flags;
-
- memcpy(optval, &cb_flags, *optlen);
- return 0;
- }
- return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
default:
if (getopt)
- return -EINVAL;
+ return bpf_sol_tcp_getsockopt(sk, optname, optval, *optlen);
return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
}
--
2.43.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH bpf-next v3 2/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_RTO_MIN
2025-03-12 15:35 [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 1/4] tcp: bpf: introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags Jason Xing
@ 2025-03-12 15:35 ` Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 3/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_DELACK_MAX Jason Xing
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jason Xing @ 2025-03-12 15:35 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, dsahern, ast, daniel, andrii,
martin.lau, eddyz87, song, yonghong.song, john.fastabend, kpsingh,
sdf, haoluo, jolsa, horms, kuniyu, ncardwell
Cc: bpf, netdev, Jason Xing
Support bpf_getsockopt if application tries to know what the RTO MIN
of this socket is.
Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
---
net/core/filter.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/net/core/filter.c b/net/core/filter.c
index 2932de5cc57c..4d34d35af5c7 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -5295,6 +5295,12 @@ static int bpf_sol_tcp_getsockopt(struct sock *sk, int optname,
memcpy(optval, &cb_flags, optlen);
break;
}
+ case TCP_BPF_RTO_MIN: {
+ int rto_min_us = jiffies_to_usecs(inet_csk(sk)->icsk_rto_min);
+
+ memcpy(optval, &rto_min_us, optlen);
+ break;
+ }
default:
return -EINVAL;
}
--
2.43.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH bpf-next v3 3/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_DELACK_MAX
2025-03-12 15:35 [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 1/4] tcp: bpf: introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 2/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_RTO_MIN Jason Xing
@ 2025-03-12 15:35 ` Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 4/4] selftests: add bpf_set/getsockopt() for TCP_BPF_DELACK_MAX and TCP_BPF_RTO_MIN Jason Xing
2025-03-13 22:10 ` [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports patchwork-bot+netdevbpf
4 siblings, 0 replies; 6+ messages in thread
From: Jason Xing @ 2025-03-12 15:35 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, dsahern, ast, daniel, andrii,
martin.lau, eddyz87, song, yonghong.song, john.fastabend, kpsingh,
sdf, haoluo, jolsa, horms, kuniyu, ncardwell
Cc: bpf, netdev, Jason Xing
Support bpf_getsockopt if application tries to know what the delayed ack
max time is.
Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
---
net/core/filter.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/net/core/filter.c b/net/core/filter.c
index 4d34d35af5c7..46ae8eb7a03c 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -5301,6 +5301,12 @@ static int bpf_sol_tcp_getsockopt(struct sock *sk, int optname,
memcpy(optval, &rto_min_us, optlen);
break;
}
+ case TCP_BPF_DELACK_MAX: {
+ int delack_max_us = jiffies_to_usecs(inet_csk(sk)->icsk_delack_max);
+
+ memcpy(optval, &delack_max_us, optlen);
+ break;
+ }
default:
return -EINVAL;
}
--
2.43.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH bpf-next v3 4/4] selftests: add bpf_set/getsockopt() for TCP_BPF_DELACK_MAX and TCP_BPF_RTO_MIN
2025-03-12 15:35 [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports Jason Xing
` (2 preceding siblings ...)
2025-03-12 15:35 ` [PATCH bpf-next v3 3/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_DELACK_MAX Jason Xing
@ 2025-03-12 15:35 ` Jason Xing
2025-03-13 22:10 ` [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports patchwork-bot+netdevbpf
4 siblings, 0 replies; 6+ messages in thread
From: Jason Xing @ 2025-03-12 15:35 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, dsahern, ast, daniel, andrii,
martin.lau, eddyz87, song, yonghong.song, john.fastabend, kpsingh,
sdf, haoluo, jolsa, horms, kuniyu, ncardwell
Cc: bpf, netdev, Jason Xing
Add selftests for TCP_BPF_DELACK_MAX and TCP_BPF_RTO_MIN BPF socket
cases.
Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
---
tools/testing/selftests/bpf/progs/setget_sockopt.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/testing/selftests/bpf/progs/setget_sockopt.c b/tools/testing/selftests/bpf/progs/setget_sockopt.c
index 106fe430f41b..0107a24b7522 100644
--- a/tools/testing/selftests/bpf/progs/setget_sockopt.c
+++ b/tools/testing/selftests/bpf/progs/setget_sockopt.c
@@ -61,6 +61,8 @@ static const struct sockopt_test sol_tcp_tests[] = {
{ .opt = TCP_NOTSENT_LOWAT, .new = 1314, .expected = 1314, },
{ .opt = TCP_BPF_SOCK_OPS_CB_FLAGS, .new = BPF_SOCK_OPS_ALL_CB_FLAGS,
.expected = BPF_SOCK_OPS_ALL_CB_FLAGS, },
+ { .opt = TCP_BPF_DELACK_MAX, .new = 30000, .expected = 30000, },
+ { .opt = TCP_BPF_RTO_MIN, .new = 30000, .expected = 30000, },
{ .opt = TCP_RTO_MAX_MS, .new = 2000, .expected = 2000, },
{ .opt = 0, },
};
--
2.43.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports
2025-03-12 15:35 [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports Jason Xing
` (3 preceding siblings ...)
2025-03-12 15:35 ` [PATCH bpf-next v3 4/4] selftests: add bpf_set/getsockopt() for TCP_BPF_DELACK_MAX and TCP_BPF_RTO_MIN Jason Xing
@ 2025-03-13 22:10 ` patchwork-bot+netdevbpf
4 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-03-13 22:10 UTC (permalink / raw)
To: Jason Xing
Cc: davem, edumazet, kuba, pabeni, dsahern, ast, daniel, andrii,
martin.lau, eddyz87, song, yonghong.song, john.fastabend, kpsingh,
sdf, haoluo, jolsa, horms, kuniyu, ncardwell, bpf, netdev
Hello:
This series was applied to bpf/bpf-next.git (net)
by Martin KaFai Lau <martin.lau@kernel.org>:
On Wed, 12 Mar 2025 16:35:19 +0100 you wrote:
> Introduce bpf_sol_tcp_getsockopt() helper.
>
> Add bpf_getsockopt for RTO MIN and DELACK MAX.
>
> Add corresponding selftests for bpf.
>
>
> [...]
Here is the summary with links:
- [bpf-next,v3,1/4] tcp: bpf: introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags
https://git.kernel.org/bpf/bpf-next/c/49f6713cb691
- [bpf-next,v3,2/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_RTO_MIN
https://git.kernel.org/bpf/bpf-next/c/5584cd7e0ddd
- [bpf-next,v3,3/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_DELACK_MAX
https://git.kernel.org/bpf/bpf-next/c/d22b8b04b88e
- [bpf-next,v3,4/4] selftests: add bpf_set/getsockopt() for TCP_BPF_DELACK_MAX and TCP_BPF_RTO_MIN
https://git.kernel.org/bpf/bpf-next/c/a1e0783e1036
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-03-13 22:10 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 15:35 [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 1/4] tcp: bpf: introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 2/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_RTO_MIN Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 3/4] tcp: bpf: support bpf_getsockopt for TCP_BPF_DELACK_MAX Jason Xing
2025-03-12 15:35 ` [PATCH bpf-next v3 4/4] selftests: add bpf_set/getsockopt() for TCP_BPF_DELACK_MAX and TCP_BPF_RTO_MIN Jason Xing
2025-03-13 22:10 ` [PATCH bpf-next v3 0/4] tcp: add some RTO MIN and DELACK MAX {bpf_}set/getsockopt supports patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).