On Thu, Oct 27, 2022 at 1:00 PM Stanislav Fomichev <sdf@xxxxxxxxxx> wrote: > > Allow passing prog_ifindex to BPF_PROG_LOAD. This patch is > not XDP metadata specific but it's here because we (ab)use > prog_ifindex as "target metadata" device during loading. > We can figure out proper UAPI story if we decide to go forward > with the kfunc approach. > > Cc: Martin KaFai Lau <martin.lau@xxxxxxxxx> > Cc: Jakub Kicinski <kuba@xxxxxxxxxx> > Cc: Willem de Bruijn <willemb@xxxxxxxxxx> > Cc: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> > Cc: Anatoly Burakov <anatoly.burakov@xxxxxxxxx> > Cc: Alexander Lobakin <alexandr.lobakin@xxxxxxxxx> > Cc: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> > Cc: Maryam Tahhan <mtahhan@xxxxxxxxxx> > Cc: xdp-hints@xxxxxxxxxxxxxxx > Cc: netdev@xxxxxxxxxxxxxxx > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > --- > tools/lib/bpf/libbpf.c | 1 + > tools/lib/bpf/libbpf.h | 6 +++++- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index 5d7819edf074..61bc37006fe4 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -7190,6 +7190,7 @@ static int bpf_object_init_progs(struct bpf_object *obj, const struct bpf_object > > prog->type = prog->sec_def->prog_type; > prog->expected_attach_type = prog->sec_def->expected_attach_type; > + prog->prog_ifindex = opts->prog_ifindex; > > /* sec_def can have custom callback which should be called > * after bpf_program is initialized to adjust its properties > diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h > index eee883f007f9..4a40b7623099 100644 > --- a/tools/lib/bpf/libbpf.h > +++ b/tools/lib/bpf/libbpf.h > @@ -170,9 +170,13 @@ struct bpf_object_open_opts { > */ > __u32 kernel_log_level; > > + /* Optional ifindex of netdev for offload purposes. > + */ > + int prog_ifindex; > + nope, don't do that, open_opts are for entire object, while this is per-program thing So bpf_program__set_ifindex() setter would be more appropriate > size_t :0; > }; > -#define bpf_object_open_opts__last_field kernel_log_level > +#define bpf_object_open_opts__last_field prog_ifindex > > LIBBPF_API struct bpf_object *bpf_object__open(const char *path); > > -- > 2.38.1.273.g43a17bfeac-goog >