On 2/10/2022 5:47 PM, Loftus, Ciara wrote:
Subject: Re: [PATCH v4] net/af_xdp: re-enable secondary process support

On 2/10/2022 3:40 PM, Loftus, Ciara wrote:
Subject: Re: [PATCH v4] net/af_xdp: re-enable secondary process support

On 2/9/2022 9:48 AM, Ciara Loftus wrote:
Secondary process support had been disabled for the AF_XDP PMD
because
there was no logic in place to share the AF_XDP socket file descriptors
between the processes. This commit introduces this logic using the IPC
APIs.

Rx and Tx are disabled in the secondary process due to memory mapping
of
the AF_XDP rings being assigned by the kernel in the primary process
only.
However other operations including retrieval of stats are permitted.

Signed-off-by: Ciara Loftus <ciara.lof...@intel.com>


Hi Ciara,

When I tried to test the patch getting following error [1], it doesn't look
related to this patch but can you help to fix the issue, thanks.

[1]
libxdp: Couldn't find a BPF file with name xsk_def_xdp_prog.o
xsk_configure(): Failed to create xsk socket.
eth_rx_queue_setup(): Failed to configure xdp socket
Fail to configure port 2 rx queues
EAL: Error - exiting with code: 1


Hi Ferruh,

This file should be generated when libxdp is compiled.
Mine is located @ /usr/local/lib/bpf/xsk_def_xdp_prog.o
Can you check if that file is there for you? It could be in
/usr/local/lib64/bpf/ on your machine.
What kernel are you running on?


It is in: /usr/local/lib64/bpf/xsk_def_xdp_prog.o

I had to compile libxdp from source because OS package version was old
to work with af_xdp.
Is something required to point location of this file to af_xdp PMD?

I run kernel:
5.15.16-200.fc35.x86_64

I read through the libxdp code to figure out what happens when searching for 
the file:
https://github.com/xdp-project/xdp-tools/blob/v1.2.2/lib/libxdp/libxdp.c#L1055

secure_getenv(XDP_OBJECT_ENVVAR) is called which according to the README "defaults 
to /usr/lib/bpf (or /usr/lib64/bpf on systems using a split library path)".
If that fails, BPF_OBJECT_PATH will be searched, which points to /usr/lib/bpf

I discovered that on my system the getenv() call fails, but the file is 
eventually found because luckily BPF_OBJECT_PATH points to the appropriate 
place for me (lib):
https://github.com/xdp-project/xdp-tools/blob/v1.2.2/lib/util/util.h#L24
I suspect the same failure is happening for you, but since BPF_OBJECT_PATH 
points to lib and not lib64, the file is not found.
As a temporary measure can you create a symlink in /usr/local/lib/bpf/ to point 
to /usr/local/lib/bpf/xsk_def_xdp_prog.o
I will investigate the libxdp issue further. Maybe a change is needed in the 
library. If a change or setup recommendation is needed in DPDK I will create a 
patch.



I don't have XDP_OBJECT_ENVVAR or BPF_OBJECT_PATH environment variables set,
if they should be we should document them.

When I created '/usr/local/lib/bpf/' link, the BPF file found.
This should be clarified/documented for users.


And still observing following two:

1) I don't know what following log means:
Configuring Port 2 (socket 0)
libbpf: elf: skipping unrecognized data section(7) .xdp_run_config
libbpf: elf: skipping unrecognized data section(8) xdp_metadata
libxdp: XDP flag not supported by libxdp.
libbpf: elf: skipping unrecognized data section(8) xdp_metadata
libbpf: elf: skipping unrecognized data section(8) xdp_metadata

2) When I try to create two af_xdp interface, I only got one:
"--vdev net_af_xdp,iface=enp24s0f1 --vdev net_af_xdp,iface=enp24s0f0"


Thanks,
ferruh

Reply via email to