patch 'net/af_xdp: make compatible with libbpf 0.8.0' has been queued to stable release 21.11.6
Kevin Traynor
ktraynor at redhat.com
Thu Dec 7 15:16:15 CET 2023
Hi Ciara,
On 07/12/2023 11:21, Kevin Traynor wrote:
> Hi,
>
> FYI, your patch has been queued to stable release 21.11.6
>
> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 12/12/23. So please
> shout if anyone has objections.
>
> Also note that after the patch there's a diff of the upstream commit vs the
> patch applied to the branch. This will indicate if there was any rebasing
> needed to apply to the stable branch. If there were code changes for rebasing
> (ie: not only metadata diffs), please double check that the rebase was
> correctly done.
>
> Queued patches are on a temporary branch at:
> https://github.com/kevintraynor/dpdk-stable
>
> This queued commit can be viewed at:
> https://github.com/kevintraynor/dpdk-stable/commit/770e7c27240d09571a62627c3bc90b8e6e9f6024
>
> Thanks.
>
> Kevin
>
> ---
> From 770e7c27240d09571a62627c3bc90b8e6e9f6024 Mon Sep 17 00:00:00 2001
> From: Ciara Loftus <ciara.loftus at intel.com>
> Date: Thu, 6 Oct 2022 09:26:54 +0300
> Subject: [PATCH] net/af_xdp: make compatible with libbpf 0.8.0
>
> [ upstream commit 1eb1846b1a2caaf77d0697747d3ecd1272ce0bfc ]
>
> libbpf v0.8.0 deprecates the bpf_get_link_xdp_id() and
> bpf_set_link_xdp_fd() functions. Use meson to detect if
> bpf_xdp_attach() is available and if so, use the recommended
> replacement functions bpf_xdp_query_id(), bpf_xdp_attach()
> and bpf_xdp_detach().
>
> Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>
> Signed-off-by: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
> Reviewed-by: Ferruh Yigit <ferruh.yigit at xilinx.com>
> ---
> drivers/net/af_xdp/meson.build | 8 ++++++
> drivers/net/af_xdp/rte_eth_af_xdp.c | 38 ++++++++++++++++++++++++++++-
> 2 files changed, 45 insertions(+), 1 deletion(-)
>
I saw that af_xdp driver was not building [0] on F38 with the libbpf and
libxdp packages [1]. Previously I had squashed the deprecation warnings
but now with newer package versions it seems that is not enough.
The meson.build file has changed a bit from 21.11 to DPDK main, so I
tried to take the correct part from the above commit and it builds for
F38 now.
I'm not sure if I missed some case, or there's some other commits that I
should backport.
Can you have a look and if it's not right, send a patch or tell me which
patches should be backported ? (you can see the diff and full file on
the github link above).
thanks,
Kevin.
[0]
[1126/3148] Compiling C object
drivers/libtmp_rte_net_af_xdp.a.p/net_af_xdp_rte_eth_af_xdp.c.o
../drivers/net/af_xdp/rte_eth_af_xdp.c: In function ‘remove_xdp_program’:
../drivers/net/af_xdp/rte_eth_af_xdp.c:869:13: warning: implicit
declaration of function ‘bpf_get_link_xdp_id’
[-Wimplicit-function-declaration]
869 | if (bpf_get_link_xdp_id(internals->if_index, &curr_prog_id,
| ^~~~~~~~~~~~~~~~~~~
../drivers/net/af_xdp/rte_eth_af_xdp.c:869:13: warning: nested extern
declaration of ‘bpf_get_link_xdp_id’ [-Wnested-externs]
../drivers/net/af_xdp/rte_eth_af_xdp.c:874:9: warning: implicit
declaration of function ‘bpf_set_link_xdp_fd’; did you mean
‘bpf_link__fd’? [-Wimplicit-function-declaration]
874 | bpf_set_link_xdp_fd(internals->if_index, -1,
| ^~~~~~~~~~~~~~~~~~~
| bpf_link__fd
../drivers/net/af_xdp/rte_eth_af_xdp.c:874:9: warning: nested extern
declaration of ‘bpf_set_link_xdp_fd’ [-Wnested-externs]
[1]
$ rpm -qa | grep -e libbpf -e libxdp
libbpf-1.1.0-2.fc38.x86_64
libbpf-devel-1.1.0-2.fc38.x86_64
libxdp-1.4.1-1.fc38.x86_64
libxdp-devel-1.4.1-1.fc38.x86_64
> diff --git a/drivers/net/af_xdp/meson.build b/drivers/net/af_xdp/meson.build
> index 1e0de23705..2605086d0c 100644
> --- a/drivers/net/af_xdp/meson.build
> +++ b/drivers/net/af_xdp/meson.build
> @@ -56,2 +56,10 @@ else
> reason = 'missing header, "linux/if_xdp.h"'
> endif
> +
> +if build
> + if cc.has_function('bpf_xdp_attach',
> + prefix : '#include <bpf/libbpf.h>',
> + dependencies : bpf_dep)
> + cflags += ['-DRTE_NET_AF_XDP_LIBBPF_XDP_ATTACH']
> + endif
> +endif
> diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c
> index 9918d3c5fd..6bc7178fc5 100644
> --- a/drivers/net/af_xdp/rte_eth_af_xdp.c
> +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
> @@ -859,7 +859,41 @@ eth_stats_reset(struct rte_eth_dev *dev)
> }
>
> +#ifdef RTE_NET_AF_XDP_LIBBPF_XDP_ATTACH
> +
> +static int link_xdp_prog_with_dev(int ifindex, int fd, __u32 flags)
> +{
> + return bpf_xdp_attach(ifindex, fd, flags, NULL);
> +}
> +
> +static int
> +remove_xdp_program(struct pmd_internals *internals)
> +{
> + uint32_t curr_prog_id = 0;
> + int ret;
> +
> + ret = bpf_xdp_query_id(internals->if_index, XDP_FLAGS_UPDATE_IF_NOEXIST,
> + &curr_prog_id);
> + if (ret != 0) {
> + AF_XDP_LOG(ERR, "bpf_xdp_query_id failed\n");
> + return ret;
> + }
> +
> + ret = bpf_xdp_detach(internals->if_index, XDP_FLAGS_UPDATE_IF_NOEXIST,
> + NULL);
> + if (ret != 0)
> + AF_XDP_LOG(ERR, "bpf_xdp_detach failed\n");
> + return ret;
> +}
> +
> +#else
> +
> #pragma GCC diagnostic push
> #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
>
> +static int link_xdp_prog_with_dev(int ifindex, int fd, __u32 flags)
> +{
> + return bpf_set_link_xdp_fd(ifindex, fd, flags);
> +}
> +
> static void
> remove_xdp_program(struct pmd_internals *internals)
> @@ -878,4 +912,6 @@ remove_xdp_program(struct pmd_internals *internals)
> #pragma GCC diagnostic pop
>
> +#endif
> +
> static void
> xdp_umem_destroy(struct xsk_umem_info *umem)
> @@ -1190,5 +1226,5 @@ load_custom_xdp_prog(const char *prog_path, int if_index, struct bpf_map **map)
>
> /* Link the program with the given network device */
> - ret = bpf_set_link_xdp_fd(if_index, prog_fd,
> + ret = link_xdp_prog_with_dev(if_index, prog_fd,
> XDP_FLAGS_UPDATE_IF_NOEXIST);
> if (ret) {
More information about the stable
mailing list