The tool xdp_hw_metadata can be used by driver developers
implementing XDP-hints kfuncs. The tool transfers the
XDP-hints via metadata information to an AF_XDP userspace
process. When everything works the bpf_printk calls are
unncesssary. Thus, disable bpf_printk by default, but
make it easy to reenable for driver developers to use
when debugging their driver implementation.
This also converts bpf_printk "forwarding UDP:9091 to AF_XDP"
into a code comment. The bpf_printk's that are important
to the driver developers is when bpf_xdp_adjust_meta fails.
The likely mistake from driver developers is expected to
be that they didn't implement XDP metadata adjust support.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
---
.../testing/selftests/bpf/progs/xdp_hw_metadata.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
index 4c55b4d79d3d..980eb60d8e5b 100644
--- a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
+++ b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
@@ -5,6 +5,19 @@
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_endian.h>
+/* Per default below bpf_printk() calls are disabled. Can be
+ * reenabled manually for convenience by XDP-hints driver developer,
+ * when troublshooting the drivers kfuncs implementation details.
+ *
+ * Remember BPF-prog bpf_printk info output can be access via:
+ * /sys/kernel/debug/tracing/trace_pipe
+ */
+//#define DEBUG 1
+#ifndef DEBUG
+#undef bpf_printk
+#define bpf_printk(fmt, ...) ({})
+#endif
+
struct {
__uint(type, BPF_MAP_TYPE_XSKMAP);
__uint(max_entries, 256);
@@ -49,11 +62,10 @@ int rx(struct xdp_md *ctx)
if (!udp)
return XDP_PASS;
+ /* Forwarding UDP:9091 to AF_XDP */
if (udp->dest != bpf_htons(9091))
return XDP_PASS;
- bpf_printk("forwarding UDP:9091 to AF_XDP");
-
ret = bpf_xdp_adjust_meta(ctx, -(int)sizeof(struct xdp_meta));
if (ret != 0) {
bpf_printk("bpf_xdp_adjust_meta returned %d", ret);
On Sat, Apr 8, 2023 at 12:24 PM Jesper Dangaard Brouer
<brouer@redhat.com> wrote:
>
> The tool xdp_hw_metadata can be used by driver developers
> implementing XDP-hints kfuncs. The tool transfers the
> XDP-hints via metadata information to an AF_XDP userspace
> process. When everything works the bpf_printk calls are
> unncesssary. Thus, disable bpf_printk by default, but
> make it easy to reenable for driver developers to use
> when debugging their driver implementation.
>
> This also converts bpf_printk "forwarding UDP:9091 to AF_XDP"
> into a code comment. The bpf_printk's that are important
> to the driver developers is when bpf_xdp_adjust_meta fails.
> The likely mistake from driver developers is expected to
> be that they didn't implement XDP metadata adjust support.
>
> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
> ---
> .../testing/selftests/bpf/progs/xdp_hw_metadata.c | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
> index 4c55b4d79d3d..980eb60d8e5b 100644
> --- a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
> +++ b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
> @@ -5,6 +5,19 @@
> #include <bpf/bpf_helpers.h>
> #include <bpf/bpf_endian.h>
>
> +/* Per default below bpf_printk() calls are disabled. Can be
> + * reenabled manually for convenience by XDP-hints driver developer,
> + * when troublshooting the drivers kfuncs implementation details.
> + *
> + * Remember BPF-prog bpf_printk info output can be access via:
> + * /sys/kernel/debug/tracing/trace_pipe
> + */
> +//#define DEBUG 1
> +#ifndef DEBUG
> +#undef bpf_printk
> +#define bpf_printk(fmt, ...) ({})
> +#endif
Are you planning to eventually do somethike similar to what I've
mentioned in [0]? If not, should I try to send a patch?
0: https://lore.kernel.org/netdev/CAKH8qBupRYEg+SPMTMb4h532GESG7P1QdaFJ-+zrbARVN9xrdA@mail.gmail.com/
> +
> struct {
> __uint(type, BPF_MAP_TYPE_XSKMAP);
> __uint(max_entries, 256);
> @@ -49,11 +62,10 @@ int rx(struct xdp_md *ctx)
> if (!udp)
> return XDP_PASS;
>
> + /* Forwarding UDP:9091 to AF_XDP */
> if (udp->dest != bpf_htons(9091))
> return XDP_PASS;
>
> - bpf_printk("forwarding UDP:9091 to AF_XDP");
> -
> ret = bpf_xdp_adjust_meta(ctx, -(int)sizeof(struct xdp_meta));
> if (ret != 0) {
> bpf_printk("bpf_xdp_adjust_meta returned %d", ret);
>
>
On 12/04/2023 00.42, Stanislav Fomichev wrote:
> On Sat, Apr 8, 2023 at 12:24 PM Jesper Dangaard Brouer
> <brouer@redhat.com> wrote:
>>
>> The tool xdp_hw_metadata can be used by driver developers
>> implementing XDP-hints kfuncs. The tool transfers the
>> XDP-hints via metadata information to an AF_XDP userspace
>> process. When everything works the bpf_printk calls are
>> unncesssary. Thus, disable bpf_printk by default, but
>> make it easy to reenable for driver developers to use
>> when debugging their driver implementation.
>>
>> This also converts bpf_printk "forwarding UDP:9091 to AF_XDP"
>> into a code comment. The bpf_printk's that are important
>> to the driver developers is when bpf_xdp_adjust_meta fails.
>> The likely mistake from driver developers is expected to
>> be that they didn't implement XDP metadata adjust support.
>>
>> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
>> ---
>> .../testing/selftests/bpf/progs/xdp_hw_metadata.c | 16 ++++++++++++++--
>> 1 file changed, 14 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
>> index 4c55b4d79d3d..980eb60d8e5b 100644
>> --- a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
>> +++ b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
>> @@ -5,6 +5,19 @@
>> #include <bpf/bpf_helpers.h>
>> #include <bpf/bpf_endian.h>
>>
>> +/* Per default below bpf_printk() calls are disabled. Can be
>> + * reenabled manually for convenience by XDP-hints driver developer,
>> + * when troublshooting the drivers kfuncs implementation details.
>> + *
>> + * Remember BPF-prog bpf_printk info output can be access via:
>> + * /sys/kernel/debug/tracing/trace_pipe
>> + */
>> +//#define DEBUG 1
>> +#ifndef DEBUG
>> +#undef bpf_printk
>> +#define bpf_printk(fmt, ...) ({})
>> +#endif
>
> Are you planning to eventually do somethike similar to what I've
> mentioned in [0]? If not, should I try to send a patch?
See next patch:
- [PATCH bpf V7 2/7] selftests/bpf: Add counters to xdp_hw_metadata
where I add these counters :-)
>
> 0: https://lore.kernel.org/netdev/CAKH8qBupRYEg+SPMTMb4h532GESG7P1QdaFJ-+zrbARVN9xrdA@mail.gmail.com/
>
On 04/12, Jesper Dangaard Brouer wrote:
>
> On 12/04/2023 00.42, Stanislav Fomichev wrote:
> > On Sat, Apr 8, 2023 at 12:24 PM Jesper Dangaard Brouer
> > <brouer@redhat.com> wrote:
> > >
> > > The tool xdp_hw_metadata can be used by driver developers
> > > implementing XDP-hints kfuncs. The tool transfers the
> > > XDP-hints via metadata information to an AF_XDP userspace
> > > process. When everything works the bpf_printk calls are
> > > unncesssary. Thus, disable bpf_printk by default, but
> > > make it easy to reenable for driver developers to use
> > > when debugging their driver implementation.
> > >
> > > This also converts bpf_printk "forwarding UDP:9091 to AF_XDP"
> > > into a code comment. The bpf_printk's that are important
> > > to the driver developers is when bpf_xdp_adjust_meta fails.
> > > The likely mistake from driver developers is expected to
> > > be that they didn't implement XDP metadata adjust support.
> > >
> > > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
> > > ---
> > > .../testing/selftests/bpf/progs/xdp_hw_metadata.c | 16 ++++++++++++++--
> > > 1 file changed, 14 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
> > > index 4c55b4d79d3d..980eb60d8e5b 100644
> > > --- a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
> > > +++ b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
> > > @@ -5,6 +5,19 @@
> > > #include <bpf/bpf_helpers.h>
> > > #include <bpf/bpf_endian.h>
> > >
> > > +/* Per default below bpf_printk() calls are disabled. Can be
> > > + * reenabled manually for convenience by XDP-hints driver developer,
> > > + * when troublshooting the drivers kfuncs implementation details.
> > > + *
> > > + * Remember BPF-prog bpf_printk info output can be access via:
> > > + * /sys/kernel/debug/tracing/trace_pipe
> > > + */
> > > +//#define DEBUG 1
> > > +#ifndef DEBUG
> > > +#undef bpf_printk
> > > +#define bpf_printk(fmt, ...) ({})
> > > +#endif
> >
> > Are you planning to eventually do somethike similar to what I've
> > mentioned in [0]? If not, should I try to send a patch?
>
> See next patch:
> - [PATCH bpf V7 2/7] selftests/bpf: Add counters to xdp_hw_metadata
>
> where I add these counters :-)
Oh, nice, let me take a look. I was assuming v7 is mostly the same as
v6..
> >
> > 0: https://lore.kernel.org/netdev/CAKH8qBupRYEg+SPMTMb4h532GESG7P1QdaFJ-+zrbARVN9xrdA@mail.gmail.com/
> >
>
On 12/04/2023 18.06, Stanislav Fomichev wrote: > On 04/12, Jesper Dangaard Brouer wrote: >> On 12/04/2023 00.42, Stanislav Fomichev wrote: >>> On Sat, Apr 8, 2023 at 12:24 PM Jesper Dangaard Brouer >>>> [...] >>> >>> Are you planning to eventually do somethike similar to what I've >>> mentioned in [0]? If not, should I try to send a patch? >> >> See next patch: >> - [PATCH bpf V7 2/7] selftests/bpf: Add counters to xdp_hw_metadata >> >> where I add these counters :-) > > Oh, nice, let me take a look. I was assuming v7 is mostly the same as > v6.. > Alexei explicitly asked for these changes to be included in V7. Notice, I've already send out a [V8] (addressing Simon's notes). Please take a look at V8 instead of V7. We are at RC6 and I hope we soon have something we can agree on. [V8] https://lore.kernel.org/all/168130333143.150247.11159481574477358816.stgit@firesoul/ [patchwork] https://patchwork.kernel.org/project/netdevbpf/list/?series=739144&state=%2A&archive=both --Jesper
On Sat, Apr 08, 2023 at 09:24:41PM +0200, Jesper Dangaard Brouer wrote: > The tool xdp_hw_metadata can be used by driver developers > implementing XDP-hints kfuncs. The tool transfers the > XDP-hints via metadata information to an AF_XDP userspace > process. When everything works the bpf_printk calls are > unncesssary. Thus, disable bpf_printk by default, but > make it easy to reenable for driver developers to use > when debugging their driver implementation. > > This also converts bpf_printk "forwarding UDP:9091 to AF_XDP" > into a code comment. The bpf_printk's that are important > to the driver developers is when bpf_xdp_adjust_meta fails. > The likely mistake from driver developers is expected to > be that they didn't implement XDP metadata adjust support. > > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > --- > .../testing/selftests/bpf/progs/xdp_hw_metadata.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c > index 4c55b4d79d3d..980eb60d8e5b 100644 > --- a/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c > +++ b/tools/testing/selftests/bpf/progs/xdp_hw_metadata.c > @@ -5,6 +5,19 @@ > #include <bpf/bpf_helpers.h> > #include <bpf/bpf_endian.h> > > +/* Per default below bpf_printk() calls are disabled. Can be > + * reenabled manually for convenience by XDP-hints driver developer, > + * when troublshooting the drivers kfuncs implementation details. Hi Jesper, a minor nit from my side: nit: s/troublshooting/troubleshooting/ ...
© 2016 - 2026 Red Hat, Inc.