Hi,

 

dpdk-testpmd with AF_XDP PMD can't work on p1p1 (macvlan) interface, but can work on eth0 (veth) interface.

 

And is there a method to enable AF_XDP PMD to work in XDP SKB mode? Or add one option to set “SKB mode” in AF_XDP Options ?

 

===============can't work on p1p1 (macvlan) interface====================

 

5p8j4:/tmp # ./dpdk-testpmd --log-level=pmd.net.af_xdp:debug --no-huge --no-pci --no-telemetry --vdev net_af_xdp,iface=p1p1 -- --total-num-mbufs 8192

EAL: Detected CPU lcores: 40

EAL: Detected NUMA nodes: 1

EAL: Static memory layout is selected, amount of reserved memory can be adjusted with -m or --socket-mem

EAL: Detected static linkage of DPDK

EAL: Multi-process socket /var/run/dpdk/rte/mp_socket

EAL: Selected IOVA mode 'VA'

EAL: VFIO support initialized

rte_pmd_af_xdp_probe(): Initializing pmd_af_xdp for net_af_xdp

init_internals(): Zero copy between umem and mbuf enabled.

testpmd: create a new mbuf pool <mb_pool_0>: n=8192, size=2176, socket=0

testpmd: preferred mempool ops selected: ring_mp_mc

 

Warning! port-topology=paired and odd forward ports number, the last port will pair with itself.

 

Configuring Port 0 (socket 0)

eth_rx_queue_setup(): Set up rx queue, rx queue id: 0, xsk queue id: 0

libbpf: elf: skipping unrecognized data section(8) .xdp_run_config

libbpf: elf: skipping unrecognized data section(9) xdp_metadata

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

libbpf: prog 'xdp_pass': BPF program load failed: Invalid argument

libbpf: prog 'xdp_pass': failed to load: -22

libbpf: failed to load object '/usr/lib64/bpf/xdp-dispatcher.o'

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

libbpf: Kernel error message: Underlying driver does not support XDP in native mode

libxdp: Error attaching XDP program to ifindex 5: Operation not supported

libxdp: XDP mode not supported; try using SKB mode

xsk_configure(): Failed to create xsk socket.

eth_rx_queue_setup(): Failed to configure xdp socket

Fail to configure port 0 rx queues

rte_pmd_af_xdp_remove(): Removing AF_XDP ethdev on numa socket 0

eth_dev_close(): Closing AF_XDP ethdev on numa socket 0

Port 0 is closed

EAL: Error - exiting with code: 1

Cause: Start ports failed

EAL: Already called cleanup

 

===============work on eth0 (veth) interface====================

 

5p8j4:/tmp # ./dpdk-testpmd --log-level=pmd.net.af_xdp:debug --no-huge --no-pci --no-telemetry --vdev net_af_xdp,iface=eth0 -- --total-num-mbufs 8192

EAL: Detected CPU lcores: 40

EAL: Detected NUMA nodes: 1

EAL: Static memory layout is selected, amount of reserved memory can be adjusted with -m or --socket-mem

EAL: Detected static linkage of DPDK

EAL: Multi-process socket /var/run/dpdk/rte/mp_socket

EAL: Selected IOVA mode 'VA'

EAL: VFIO support initialized

rte_pmd_af_xdp_probe(): Initializing pmd_af_xdp for net_af_xdp

init_internals(): Zero copy between umem and mbuf enabled.

testpmd: create a new mbuf pool <mb_pool_0>: n=8192, size=2176, socket=0

testpmd: preferred mempool ops selected: ring_mp_mc

 

Warning! port-topology=paired and odd forward ports number, the last port will pair with itself.

 

Configuring Port 0 (socket 0)

eth_rx_queue_setup(): Set up rx queue, rx queue id: 0, xsk queue id: 0

libbpf: elf: skipping unrecognized data section(8) .xdp_run_config

libbpf: elf: skipping unrecognized data section(9) xdp_metadata

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

libbpf: prog 'xdp_pass': BPF program load failed: Invalid argument

libbpf: prog 'xdp_pass': failed to load: -22

libbpf: failed to load object '/usr/lib64/bpf/xdp-dispatcher.o'

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

libbpf: elf: skipping unrecognized data section(7) xdp_metadata

configure_preferred_busy_poll(): Busy polling budget set to: 64

Port 0: 42:5F:27:A2:63:BA

Checking link statuses...

Done

No commandline core given, start packet forwarding

io packet forwarding - ports=1 - cores=1 - streams=1 - NUMA support enabled, MP allocation mode: native

Logical Core 1 (socket 0) forwards packets on 1 streams:

RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

 

io packet forwarding packets/burst=32

nb forwarding cores=1 - nb forwarding ports=1

port 0: RX queue number: 1 Tx queue number: 1

Rx offloads=0x0 Tx offloads=0x0

RX queue: 0

RX desc=0 - RX free threshold=0

RX threshold registers: pthresh=0 hthresh=0 wthresh=0

RX Offloads=0x0

TX queue: 0

TX desc=0 - TX free threshold=0

TX threshold registers: pthresh=0 hthresh=0 wthresh=0

TX offloads=0x0 - TX RS bit threshold=0

Press enter to exit

 

Telling cores to stop...

Waiting for lcores to finish...

 

---------------------- Forward statistics for port 0 ----------------------

RX-packets: 14 RX-dropped: 0 RX-total: 14

TX-packets: 14 TX-dropped: 0 TX-total: 14

----------------------------------------------------------------------------

 

+++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++

RX-packets: 14 RX-dropped: 0 RX-total: 14

TX-packets: 14 TX-dropped: 0 TX-total: 14

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

Done.

 

Stopping port 0...

Stopping ports...

Done

 

Shutting down port 0...

Closing ports...

eth_dev_close(): Closing AF_XDP ethdev on numa socket 0

Port 0 is closed

Done

 

Bye...

rte_pmd_af_xdp_remove(): Removing AF_XDP ethdev on numa socket 0

 

=================================append test environment====================

 

on workernode:

=================

worker-pool1-1:/home/test # nsenter -t 127962 -n

Directory: /home/test

Mon Oct 14 03:33:00 CEST 2024

worker-pool1-1:/home/test # ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000

link/ipip 0.0.0.0 brd 0.0.0.0

4: eth0@if108: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 2120 qdisc noqueue state UP group default

link/ether 42:5f:27:a2:63:ba brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 192.168.96.160/32 scope global eth0

valid_lft forever preferred_lft forever

inet6 fe80::405f:27ff:fea2:63ba/64 scope link

valid_lft forever preferred_lft forever

5: p1p1@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 7e:c5:53:73:95:5e brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet6 fe80::7cc5:53ff:fe73:955e/64 scope link

valid_lft forever preferred_lft forever

worker-pool1-1:/home/test # ethtool -i eth0

driver: veth

version: 1.0

firmware-version:

expansion-rom-version:

bus-info:

supports-statistics: yes

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no

worker-pool1-1:/home/test # ethtool -i eth1

Cannot get driver information: No such device

worker-pool1-1:/home/test # ethtool -i p1p1

driver: macvlan

version: 0.1

firmware-version:

expansion-rom-version:

bus-info:

supports-statistics: no

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no

worker-pool1-1:/home/test #

==============================

in container:

============

5p8j4:/tmp # ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000

link/ipip 0.0.0.0 brd 0.0.0.0

4: eth0@if108: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 2120 qdisc noqueue state UP group default

link/ether 42:5f:27:a2:63:ba brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 192.168.96.160/32 scope global eth0

valid_lft forever preferred_lft forever

inet6 fe80::405f:27ff:fea2:63ba/64 scope link

valid_lft forever preferred_lft forever

5: p1p1@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 7e:c5:53:73:95:5e brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet6 fe80::7cc5:53ff:fe73:955e/64 scope link

valid_lft forever preferred_lft forever

=========================================================================