I’m encountering an issue while developing a DPDK-based program using a dual-port ConnectX-6 NIC on Ubuntu 24.04. Despite following the setup instructions, my program fails to detect the NIC ports. Specifically, the rte_eth_dev_count_avail()
function always returns 0.
Here’s what I’ve done so far:
- Downloaded, built, and installed DPDK 24.11.2 on Ubuntu 24.04.
- Installed MLNX_OFED 24.10-2.1.8.0
- Configured Huge Pages following the DPDK documentation.
Output of dpdk-devbind.py --status
:
Network devices using kernel driver
===================================
0000:01:00.0 'MT2892 Family [ConnectX-6 Dx] 101d' if=enp1s0f0np0 drv=mlx5_core unused=
0000:01:00.1 'MT2892 Family [ConnectX-6 Dx] 101d' if=enp1s0f1np1 drv=mlx5_core unused=
I modified DPDK’s HelloWorld example by adding the function rte_eth_dev_count_avail()
after EAL initialization. I run the program with these EAL arguments: -l 0-3 -n 4 -a 0000:01:00.0
. But the function rte_eth_dev_count_avail()
returns zero. I have tested other examples as well.
I have also tested vfio-pci.
Output of dpdk-devbind.py --status
after binding to vfio-pci
:
Network devices using DPDK-compatible driver
============================================
0000:01:00.0 'MT2892 Family [ConnectX-6 Dx] 101d' drv=vfio-pci unused=mlx5_core
Network devices using kernel driver
===================================
0000:01:00.1 'MT2892 Family [ConnectX-6 Dx] 101d' if=enp1s0f1np1 drv=mlx5_core unused=
My program still cannot find the NIC ports.
My questions:
- Is there something wrong with my configuration or driver setup?
- Which driver should I use for ConnectX-6?
mlx5_core
orvfio-pci
or any other? - How can I further troubleshoot why
rte_eth_dev_count_avail()
is returning 0? - Are there any additional steps or configurations specific to ConnectX-6 NICs that I might have missed?
Thanks in advance