[PATCH v3] net/af_xdp: use libxdp if available
Ferruh Yigit
ferruh.yigit at intel.com
Tue Feb 1 11:06:37 CET 2022
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.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?
>>
> 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.
More information about the dev
mailing list