[PATCH v3] net/af_xdp: use libxdp if available
Ferruh Yigit
ferruh.yigit at intel.com
Mon Jan 31 18:59:53 CET 2022
On 1/28/2022 9:50 AM, Ciara Loftus wrote:
> AF_XDP support is deprecated in libbpf since v0.7.0 [1]. The libxdp library
> now provides the functionality which once was in libbpf and which the
> AF_XDP PMD relies on. This commit updates the AF_XDP meson build to use the
> libxdp library if a version >= v1.2.2 is available. If it is not available,
> only versions of libbpf prior to v0.7.0 are allowed, as they still contain
> the required AF_XDP functionality.
>
> libbpf still remains a dependency even if libxdp is present, as we use
> libbpf APIs for program loading.
>
> The minimum required kernel version for libxdp for use with AF_XDP is v5.3.
> For the library to be fully-featured, a kernel v5.10 or newer is
> recommended. The full compatibility information can be found in the libxdp
> README.
>
> v1.2.2 of libxdp includes an important fix required for linking with DPDK
> which is why this version or greater is required. Meson uses pkg-config to
> verify the version of libxdp on the system, so it is necessary that the
> library is discoverable using pkg-config in order for the PMD to use it. To
> verify this, you can run: pkg-config --modversion libxdp
>
> [1] https://github.com/libbpf/libbpf/commit/277846bc6c15
>
> Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>
Tested build with combination of following, build looks good
libxdp 1.2.0, libxdp 1.2.2
libbpf 0.7.0, libbpf 0.4.0
But while running testpmd can't find the libxdp.so by default [1], although
setting 'LD_LIBRARY_PATH' works (LD_LIBRARY_PATH=/usr/local/lib64/ for my case),
this wasn't required for libbpf, just checking if this is expected?
Similarly for 'build/drivers/librte_net_af_xdp.so', ldd can find 'libbpf' but
not libxdp.so (although they are in same folder):
$ ldd build/drivers/librte_net_af_xdp.so
libxdp.so.1 => not found
libbpf.so.0 => /usr/local/lib64/libbpf.so.0 (0x00007f2ceb86f000)
....
Again, 'LD_LIBRARY_PATH' works:
$ LD_LIBRARY_PATH=/usr/local/lib64/ ldd build/drivers/librte_net_af_xdp.so
libxdp.so.1 => /usr/local/lib64/libxdp.so.1 (0x00007fefa792e000)
libbpf.so.0 => /usr/local/lib64/libbpf.so.0 (0x00007fefa78dc000)
But same question, why 'LD_LIBRARY_PATH' is not required for libbpf, but
required for libxdp, any idea?
[1]
./build/app/dpdk-testpmd: error while loading shared libraries: libxdp.so.1: cannot open shared object file: No such file or directory
More information about the dev
mailing list