On 1/31/2022 6:05 PM, Bruce Richardson wrote:
On Mon, Jan 31, 2022 at 05:59:53PM +0000, Ferruh Yigit wrote:
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.lof...@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?

Did you rerun "ldconfig" to refresh the ldd cache after installing the
new library?

No I didn't.
But it works as expected next day without me doing anything, if the issue
was ldconfig there can be regular periodic runs for it (I expect installing
a new library automatically trigger the ldconfig).

Anyway, I am proceeding with patch as it is working now as expected.

Reply via email to