diff mbox series

[bpf-next] samples: bpf: refactor xdp_sample_pkts_kern with BTF-defined map

Message ID 20200905154137.24800-1-danieltimlee@gmail.com
State Changes Requested
Delegated to: BPF Maintainers
Headers show
Series [bpf-next] samples: bpf: refactor xdp_sample_pkts_kern with BTF-defined map | expand

Commit Message

Daniel T. Lee Sept. 5, 2020, 3:41 p.m. UTC
Most of the samples were converted to use the new BTF-defined MAP as
they moved to libbbpf, but some of the samples were missing.

Instead of using the previous BPF MAP definition, this commit refactors
xdp_sample_pkts_kern MAP definition with the new BTF-defined MAP format.

Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
---
 samples/bpf/xdp_sample_pkts_kern.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

Comments

Daniel T. Lee Sept. 7, 2020, 4:58 p.m. UTC | #1
On Mon, Sep 7, 2020 at 10:02 PM Michal Rostecki <mrostecki@opensuse.org> wrote:
>
> Daniel T. Lee writes:
> > Most of the samples were converted to use the new BTF-defined MAP as
> > they moved to libbbpf, but some of the samples were missing.
> >
> > Instead of using the previous BPF MAP definition, this commit refactors
> > xdp_sample_pkts_kern MAP definition with the new BTF-defined MAP format.
> >
> > Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
> > ---
> >  samples/bpf/xdp_sample_pkts_kern.c | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
>
> I see that samples/bpf/ibumad_kern.c and samples/bpf/xdp_monitor_kern.c
> still have old style BPF map definitions. Maybe you could change them as
> well?


Thanks for the review!

Actually, I'm well aware that there are some samples left with old style map
definitions, But those examples should be transferred from bpf_load to
libbbpf, not just bpf map changes.

I'm also planning to refactor those patches in the future.
For now I've just refactored this file, but if you think this patch
size is small,
I'll send it with other changes.
Daniel T. Lee Sept. 8, 2020, 5:38 p.m. UTC | #2
On Wed, Sep 9, 2020 at 8:24 AM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Sat, Sep 5, 2020 at 8:41 AM Daniel T. Lee <danieltimlee@gmail.com> wrote:
> >
> > Most of the samples were converted to use the new BTF-defined MAP as
> > they moved to libbbpf, but some of the samples were missing.
> >
> > Instead of using the previous BPF MAP definition, this commit refactors
> > xdp_sample_pkts_kern MAP definition with the new BTF-defined MAP format.
> >
> > Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
> > ---
> >  samples/bpf/xdp_sample_pkts_kern.c | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/samples/bpf/xdp_sample_pkts_kern.c b/samples/bpf/xdp_sample_pkts_kern.c
> > index 33377289e2a8..b15172b7d455 100644
> > --- a/samples/bpf/xdp_sample_pkts_kern.c
> > +++ b/samples/bpf/xdp_sample_pkts_kern.c
> > @@ -7,12 +7,12 @@
> >  #define SAMPLE_SIZE 64ul
> >  #define MAX_CPUS 128
> >
> > -struct bpf_map_def SEC("maps") my_map = {
> > -       .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY,
> > -       .key_size = sizeof(int),
> > -       .value_size = sizeof(u32),
> > -       .max_entries = MAX_CPUS,
> > -};
> > +struct {
> > +       __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
> > +       __uint(key_size, sizeof(int));
> > +       __uint(value_size, sizeof(u32));
> > +       __uint(max_entries, MAX_CPUS);
>
> if you drop max_entries property, libbpf will set it to the maximum
> configured number of CPUs on the host, which is what you probably
> want. Do you might sending v2 without MAX_CPUS (check if macro is
> still used anywhere else). Thanks!
>

Thanks for your time and effort for the review.

I'll check and send the next version of patch.


> > +} my_map SEC(".maps");
> >
> >  SEC("xdp_sample")
> >  int xdp_sample_prog(struct xdp_md *ctx)
> > --
> > 2.25.1
> >
Andrii Nakryiko Sept. 8, 2020, 11:24 p.m. UTC | #3
On Sat, Sep 5, 2020 at 8:41 AM Daniel T. Lee <danieltimlee@gmail.com> wrote:
>
> Most of the samples were converted to use the new BTF-defined MAP as
> they moved to libbbpf, but some of the samples were missing.
>
> Instead of using the previous BPF MAP definition, this commit refactors
> xdp_sample_pkts_kern MAP definition with the new BTF-defined MAP format.
>
> Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
> ---
>  samples/bpf/xdp_sample_pkts_kern.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/samples/bpf/xdp_sample_pkts_kern.c b/samples/bpf/xdp_sample_pkts_kern.c
> index 33377289e2a8..b15172b7d455 100644
> --- a/samples/bpf/xdp_sample_pkts_kern.c
> +++ b/samples/bpf/xdp_sample_pkts_kern.c
> @@ -7,12 +7,12 @@
>  #define SAMPLE_SIZE 64ul
>  #define MAX_CPUS 128
>
> -struct bpf_map_def SEC("maps") my_map = {
> -       .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY,
> -       .key_size = sizeof(int),
> -       .value_size = sizeof(u32),
> -       .max_entries = MAX_CPUS,
> -};
> +struct {
> +       __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
> +       __uint(key_size, sizeof(int));
> +       __uint(value_size, sizeof(u32));
> +       __uint(max_entries, MAX_CPUS);

if you drop max_entries property, libbpf will set it to the maximum
configured number of CPUs on the host, which is what you probably
want. Do you might sending v2 without MAX_CPUS (check if macro is
still used anywhere else). Thanks!

> +} my_map SEC(".maps");
>
>  SEC("xdp_sample")
>  int xdp_sample_prog(struct xdp_md *ctx)
> --
> 2.25.1
>
diff mbox series

Patch

diff --git a/samples/bpf/xdp_sample_pkts_kern.c b/samples/bpf/xdp_sample_pkts_kern.c
index 33377289e2a8..b15172b7d455 100644
--- a/samples/bpf/xdp_sample_pkts_kern.c
+++ b/samples/bpf/xdp_sample_pkts_kern.c
@@ -7,12 +7,12 @@ 
 #define SAMPLE_SIZE 64ul
 #define MAX_CPUS 128
 
-struct bpf_map_def SEC("maps") my_map = {
-	.type = BPF_MAP_TYPE_PERF_EVENT_ARRAY,
-	.key_size = sizeof(int),
-	.value_size = sizeof(u32),
-	.max_entries = MAX_CPUS,
-};
+struct {
+	__uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
+	__uint(key_size, sizeof(int));
+	__uint(value_size, sizeof(u32));
+	__uint(max_entries, MAX_CPUS);
+} my_map SEC(".maps");
 
 SEC("xdp_sample")
 int xdp_sample_prog(struct xdp_md *ctx)