* [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf
@ 2024-05-22 8:09 Jakub Sitnicki
2024-05-22 10:12 ` Geliang Tang
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Jakub Sitnicki @ 2024-05-22 8:09 UTC (permalink / raw)
To: bpf
Cc: netdev, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
John Fastabend
libbpf can deduce program type and attach type from the ELF section name.
We don't need to pass it out-of-band if we switch to libbpf convention [1].
[1] https://docs.kernel.org/bpf/libbpf/program_types.html
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
.../selftests/bpf/progs/test_sockmap_kern.h | 17 +++++-----
tools/testing/selftests/bpf/test_sockmap.c | 31 -------------------
2 files changed, 9 insertions(+), 39 deletions(-)
diff --git a/tools/testing/selftests/bpf/progs/test_sockmap_kern.h b/tools/testing/selftests/bpf/progs/test_sockmap_kern.h
index 99d2ea9fb658..3dff0813730b 100644
--- a/tools/testing/selftests/bpf/progs/test_sockmap_kern.h
+++ b/tools/testing/selftests/bpf/progs/test_sockmap_kern.h
@@ -92,7 +92,7 @@ struct {
__uint(value_size, sizeof(int));
} tls_sock_map SEC(".maps");
-SEC("sk_skb1")
+SEC("sk_skb/stream_parser")
int bpf_prog1(struct __sk_buff *skb)
{
int *f, two = 2;
@@ -104,7 +104,7 @@ int bpf_prog1(struct __sk_buff *skb)
return skb->len;
}
-SEC("sk_skb2")
+SEC("sk_skb/stream_verdict")
int bpf_prog2(struct __sk_buff *skb)
{
__u32 lport = skb->local_port;
@@ -151,7 +151,7 @@ static inline void bpf_write_pass(struct __sk_buff *skb, int offset)
memcpy(c + offset, "PASS", 4);
}
-SEC("sk_skb3")
+SEC("sk_skb/stream_verdict")
int bpf_prog3(struct __sk_buff *skb)
{
int err, *f, ret = SK_PASS;
@@ -233,7 +233,7 @@ int bpf_sockmap(struct bpf_sock_ops *skops)
return 0;
}
-SEC("sk_msg1")
+SEC("sk_msg")
int bpf_prog4(struct sk_msg_md *msg)
{
int *bytes, zero = 0, one = 1, two = 2, three = 3, four = 4, five = 5;
@@ -263,7 +263,7 @@ int bpf_prog4(struct sk_msg_md *msg)
return SK_PASS;
}
-SEC("sk_msg2")
+SEC("sk_msg")
int bpf_prog6(struct sk_msg_md *msg)
{
int zero = 0, one = 1, two = 2, three = 3, four = 4, five = 5, key = 0;
@@ -308,7 +308,7 @@ int bpf_prog6(struct sk_msg_md *msg)
#endif
}
-SEC("sk_msg3")
+SEC("sk_msg")
int bpf_prog8(struct sk_msg_md *msg)
{
void *data_end = (void *)(long) msg->data_end;
@@ -329,7 +329,8 @@ int bpf_prog8(struct sk_msg_md *msg)
return SK_PASS;
}
-SEC("sk_msg4")
+
+SEC("sk_msg")
int bpf_prog9(struct sk_msg_md *msg)
{
void *data_end = (void *)(long) msg->data_end;
@@ -347,7 +348,7 @@ int bpf_prog9(struct sk_msg_md *msg)
return SK_PASS;
}
-SEC("sk_msg5")
+SEC("sk_msg")
int bpf_prog10(struct sk_msg_md *msg)
{
int *bytes, *start, *end, *start_push, *end_push, *start_pop, *pop;
diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c
index 4499b3cfc3a6..ddc6a9cef36f 100644
--- a/tools/testing/selftests/bpf/test_sockmap.c
+++ b/tools/testing/selftests/bpf/test_sockmap.c
@@ -1783,30 +1783,6 @@ char *map_names[] = {
"tls_sock_map",
};
-int prog_attach_type[] = {
- BPF_SK_SKB_STREAM_PARSER,
- BPF_SK_SKB_STREAM_VERDICT,
- BPF_SK_SKB_STREAM_VERDICT,
- BPF_CGROUP_SOCK_OPS,
- BPF_SK_MSG_VERDICT,
- BPF_SK_MSG_VERDICT,
- BPF_SK_MSG_VERDICT,
- BPF_SK_MSG_VERDICT,
- BPF_SK_MSG_VERDICT,
-};
-
-int prog_type[] = {
- BPF_PROG_TYPE_SK_SKB,
- BPF_PROG_TYPE_SK_SKB,
- BPF_PROG_TYPE_SK_SKB,
- BPF_PROG_TYPE_SOCK_OPS,
- BPF_PROG_TYPE_SK_MSG,
- BPF_PROG_TYPE_SK_MSG,
- BPF_PROG_TYPE_SK_MSG,
- BPF_PROG_TYPE_SK_MSG,
- BPF_PROG_TYPE_SK_MSG,
-};
-
static int populate_progs(char *bpf_file)
{
struct bpf_program *prog;
@@ -1825,13 +1801,6 @@ static int populate_progs(char *bpf_file)
return -1;
}
- bpf_object__for_each_program(prog, obj) {
- bpf_program__set_type(prog, prog_type[i]);
- bpf_program__set_expected_attach_type(prog,
- prog_attach_type[i]);
- i++;
- }
-
i = bpf_object__load(obj);
i = 0;
bpf_object__for_each_program(prog, obj) {
--
2.40.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf 2024-05-22 8:09 [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf Jakub Sitnicki @ 2024-05-22 10:12 ` Geliang Tang 2024-05-22 10:26 ` Jakub Sitnicki 2024-05-30 21:50 ` patchwork-bot+netdevbpf 2024-07-04 5:03 ` Tony Ambardar 2 siblings, 1 reply; 6+ messages in thread From: Geliang Tang @ 2024-05-22 10:12 UTC (permalink / raw) To: Jakub Sitnicki, bpf Cc: netdev, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, John Fastabend Hi Jakub, On Wed, 2024-05-22 at 10:09 +0200, Jakub Sitnicki wrote: > libbpf can deduce program type and attach type from the ELF section > name. > We don't need to pass it out-of-band if we switch to libbpf > convention [1]. > > [1] https://docs.kernel.org/bpf/libbpf/program_types.html > > Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com> Thanks for this patch, it works well. But ... > --- > .../selftests/bpf/progs/test_sockmap_kern.h | 17 +++++----- > tools/testing/selftests/bpf/test_sockmap.c | 31 ----------------- > -- > 2 files changed, 9 insertions(+), 39 deletions(-) > > diff --git a/tools/testing/selftests/bpf/progs/test_sockmap_kern.h > b/tools/testing/selftests/bpf/progs/test_sockmap_kern.h > index 99d2ea9fb658..3dff0813730b 100644 > --- a/tools/testing/selftests/bpf/progs/test_sockmap_kern.h > +++ b/tools/testing/selftests/bpf/progs/test_sockmap_kern.h > @@ -92,7 +92,7 @@ struct { > __uint(value_size, sizeof(int)); > } tls_sock_map SEC(".maps"); > > -SEC("sk_skb1") > +SEC("sk_skb/stream_parser") > int bpf_prog1(struct __sk_buff *skb) > { > int *f, two = 2; > @@ -104,7 +104,7 @@ int bpf_prog1(struct __sk_buff *skb) > return skb->len; > } > > -SEC("sk_skb2") > +SEC("sk_skb/stream_verdict") > int bpf_prog2(struct __sk_buff *skb) > { > __u32 lport = skb->local_port; > @@ -151,7 +151,7 @@ static inline void bpf_write_pass(struct > __sk_buff *skb, int offset) > memcpy(c + offset, "PASS", 4); > } > > -SEC("sk_skb3") > +SEC("sk_skb/stream_verdict") > int bpf_prog3(struct __sk_buff *skb) > { > int err, *f, ret = SK_PASS; > @@ -233,7 +233,7 @@ int bpf_sockmap(struct bpf_sock_ops *skops) > return 0; > } > > -SEC("sk_msg1") > +SEC("sk_msg") > int bpf_prog4(struct sk_msg_md *msg) > { > int *bytes, zero = 0, one = 1, two = 2, three = 3, four = 4, > five = 5; > @@ -263,7 +263,7 @@ int bpf_prog4(struct sk_msg_md *msg) > return SK_PASS; > } > > -SEC("sk_msg2") > +SEC("sk_msg") > int bpf_prog6(struct sk_msg_md *msg) > { > int zero = 0, one = 1, two = 2, three = 3, four = 4, five = > 5, key = 0; > @@ -308,7 +308,7 @@ int bpf_prog6(struct sk_msg_md *msg) > #endif > } > > -SEC("sk_msg3") > +SEC("sk_msg") > int bpf_prog8(struct sk_msg_md *msg) > { > void *data_end = (void *)(long) msg->data_end; > @@ -329,7 +329,8 @@ int bpf_prog8(struct sk_msg_md *msg) > > return SK_PASS; > } > -SEC("sk_msg4") > + > +SEC("sk_msg") > int bpf_prog9(struct sk_msg_md *msg) > { > void *data_end = (void *)(long) msg->data_end; > @@ -347,7 +348,7 @@ int bpf_prog9(struct sk_msg_md *msg) > return SK_PASS; > } > > -SEC("sk_msg5") > +SEC("sk_msg") > int bpf_prog10(struct sk_msg_md *msg) > { > int *bytes, *start, *end, *start_push, *end_push, > *start_pop, *pop; > diff --git a/tools/testing/selftests/bpf/test_sockmap.c > b/tools/testing/selftests/bpf/test_sockmap.c > index 4499b3cfc3a6..ddc6a9cef36f 100644 > --- a/tools/testing/selftests/bpf/test_sockmap.c > +++ b/tools/testing/selftests/bpf/test_sockmap.c > @@ -1783,30 +1783,6 @@ char *map_names[] = { > "tls_sock_map", > }; > > -int prog_attach_type[] = { > - BPF_SK_SKB_STREAM_PARSER, > - BPF_SK_SKB_STREAM_VERDICT, > - BPF_SK_SKB_STREAM_VERDICT, > - BPF_CGROUP_SOCK_OPS, > - BPF_SK_MSG_VERDICT, > - BPF_SK_MSG_VERDICT, > - BPF_SK_MSG_VERDICT, > - BPF_SK_MSG_VERDICT, > - BPF_SK_MSG_VERDICT, > -}; prog_attach_type is still used by my commit: https://lore.kernel.org/bpf/e27d7d0c1e0e79b0acd22ac6ad5d8f9f00225303.1716372485.git.tanggeliang@kylinos.cn/T/#u Please review it for me. If my commit is acceptable, this patch will conflict with it. It's a bit strange to delete this prog_attach_type in your patch and then add it back in my commit. So could you please rebase this patch on my commit in that case. Sorry for the trouble. Anyway please add my tag: Acked-and-tested-by: Geliang Tang <geliang@kernel.org> Thanks, -Geliang > - > -int prog_type[] = { > - BPF_PROG_TYPE_SK_SKB, > - BPF_PROG_TYPE_SK_SKB, > - BPF_PROG_TYPE_SK_SKB, > - BPF_PROG_TYPE_SOCK_OPS, > - BPF_PROG_TYPE_SK_MSG, > - BPF_PROG_TYPE_SK_MSG, > - BPF_PROG_TYPE_SK_MSG, > - BPF_PROG_TYPE_SK_MSG, > - BPF_PROG_TYPE_SK_MSG, > -}; > - > static int populate_progs(char *bpf_file) > { > struct bpf_program *prog; > @@ -1825,13 +1801,6 @@ static int populate_progs(char *bpf_file) > return -1; > } > > - bpf_object__for_each_program(prog, obj) { > - bpf_program__set_type(prog, prog_type[i]); > - bpf_program__set_expected_attach_type(prog, > - > prog_attach_type[i]); > - i++; > - } > - > i = bpf_object__load(obj); > i = 0; > bpf_object__for_each_program(prog, obj) { ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf 2024-05-22 10:12 ` Geliang Tang @ 2024-05-22 10:26 ` Jakub Sitnicki 2024-05-23 6:57 ` Geliang Tang 0 siblings, 1 reply; 6+ messages in thread From: Jakub Sitnicki @ 2024-05-22 10:26 UTC (permalink / raw) To: Geliang Tang Cc: bpf, netdev, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, John Fastabend On Wed, May 22, 2024 at 06:12 PM +08, Geliang Tang wrote: > On Wed, 2024-05-22 at 10:09 +0200, Jakub Sitnicki wrote: [...] > prog_attach_type is still used by my commit: > > https://lore.kernel.org/bpf/e27d7d0c1e0e79b0acd22ac6ad5d8f9f00225303.1716372485.git.tanggeliang@kylinos.cn/T/#u > > Please review it for me. > > If my commit is acceptable, this patch will conflict with it. It's a > bit strange to delete this prog_attach_type in your patch and then add > it back in my commit. So could you please rebase this patch on my > commit in that case. Sorry for the trouble. If you want to help improve and modernize this test code, I suggest switching attachments to bpf_link instead, they are now available for sockmap: https://lore.kernel.org/bpf/20240408152451.4162024-1-yonghong.song@linux.dev/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf 2024-05-22 10:26 ` Jakub Sitnicki @ 2024-05-23 6:57 ` Geliang Tang 0 siblings, 0 replies; 6+ messages in thread From: Geliang Tang @ 2024-05-23 6:57 UTC (permalink / raw) To: Jakub Sitnicki Cc: bpf, netdev, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, John Fastabend Hi Jakub, On Wed, 2024-05-22 at 12:26 +0200, Jakub Sitnicki wrote: > On Wed, May 22, 2024 at 06:12 PM +08, Geliang Tang wrote: > > On Wed, 2024-05-22 at 10:09 +0200, Jakub Sitnicki wrote: > > [...] > > > prog_attach_type is still used by my commit: > > > > https://lore.kernel.org/bpf/e27d7d0c1e0e79b0acd22ac6ad5d8f9f00225303.1716372485.git.tanggeliang@kylinos.cn/T/#u I changes my commit above as "Rejected". So this patch is ready to apply now. > > Please review it for me. > > > > If my commit is acceptable, this patch will conflict with it. It's > > a > > bit strange to delete this prog_attach_type in your patch and then > > add > > it back in my commit. So could you please rebase this patch on my > > commit in that case. Sorry for the trouble. > > If you want to help improve and modernize this test code, I suggest > switching attachments to bpf_link instead, they are now available for > sockmap: Here's the patches for switching attachments to bpf_link, together with some small fixes and cleanups: https://patchwork.kernel.org/project/netdevbpf/cover/cover.1716446893.git.tanggeliang@kylinos.cn/ Please review them for me. Thanks, -Geliang > > https://lore.kernel.org/bpf/20240408152451.4162024-1-yonghong.song@linux.dev/ > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf 2024-05-22 8:09 [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf Jakub Sitnicki 2024-05-22 10:12 ` Geliang Tang @ 2024-05-30 21:50 ` patchwork-bot+netdevbpf 2024-07-04 5:03 ` Tony Ambardar 2 siblings, 0 replies; 6+ messages in thread From: patchwork-bot+netdevbpf @ 2024-05-30 21:50 UTC (permalink / raw) To: Jakub Sitnicki; +Cc: bpf, netdev, ast, daniel, andrii, john.fastabend Hello: This patch was applied to bpf/bpf-next.git (master) by Andrii Nakryiko <andrii@kernel.org>: On Wed, 22 May 2024 10:09:36 +0200 you wrote: > libbpf can deduce program type and attach type from the ELF section name. > We don't need to pass it out-of-band if we switch to libbpf convention [1]. > > [1] https://docs.kernel.org/bpf/libbpf/program_types.html > > Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com> > > [...] Here is the summary with links: - [bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf https://git.kernel.org/bpf/bpf-next/c/46253c4ae961 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
* Re: [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf 2024-05-22 8:09 [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf Jakub Sitnicki 2024-05-22 10:12 ` Geliang Tang 2024-05-30 21:50 ` patchwork-bot+netdevbpf @ 2024-07-04 5:03 ` Tony Ambardar 2 siblings, 0 replies; 6+ messages in thread From: Tony Ambardar @ 2024-07-04 5:03 UTC (permalink / raw) To: Jakub Sitnicki, Daniel Borkmann Cc: bpf, netdev, Alexei Starovoitov, Andrii Nakryiko, John Fastabend Hi Jakub, Daniel, On Wed, May 22, 2024 at 10:09:36AM +0200, Jakub Sitnicki wrote: > libbpf can deduce program type and attach type from the ELF section name. > We don't need to pass it out-of-band if we switch to libbpf convention [1]. > > [1] https://docs.kernel.org/bpf/libbpf/program_types.html > > Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com> > --- > .../selftests/bpf/progs/test_sockmap_kern.h | 17 +++++----- > tools/testing/selftests/bpf/test_sockmap.c | 31 ------------------- > 2 files changed, 9 insertions(+), 39 deletions(-) > [ snip ] I recently hit some CI errors on kernel-patches/bpf related to veristat and the test_sockmap BPF object files: https://github.com/kernel-patches/bpf/actions/runs/9775040227/job/26985293772?pr=7279 I hadn't seen your submission, and after some investigation my own fix ended up reproducing your patch: <sigh...> https://github.com/kernel-patches/bpf/pull/7279/commits/9e5bc23d4a3643e6a4733aac431ee425310e03d6 Given it fixes a CI issue for bpf/master, could we backport/apply your patch there? Thanks, Tony ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-07-04 5:03 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-05-22 8:09 [PATCH bpf-next] selftests/bpf: test_sockmap, use section names understood by libbpf Jakub Sitnicki 2024-05-22 10:12 ` Geliang Tang 2024-05-22 10:26 ` Jakub Sitnicki 2024-05-23 6:57 ` Geliang Tang 2024-05-30 21:50 ` patchwork-bot+netdevbpf 2024-07-04 5:03 ` Tony Ambardar
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).