rte_eth_dev_count_avail()返回0;
dpdk网卡配置
nb_ports = rte_eth_dev_count_avail(); //获取当前有效网口的个数
if (nb_ports < 2 || (nb_ports & 1)) //如果有效网口数小于2或有效网口数为奇数0,则出错
rte_exit(EXIT_FAILURE, "Error: number of ports must be even! nb_ports: %d\n", nb_ports);
升级python到3.10重新编译dpdk21.11
查看网卡是否支持dpdk
官网上可以查到支持connectX-5
rte_eth_dev_count_avail()返回1
原因:网卡驱动不支持dpdk
重新安装驱动卸载dpdk重新构建dpdk
最新驱动:mlnx-en-5.4-3.1.0.0-ubuntu18.04-x86_64
解压
运行install -dpdk
卸载dpdk
重新构建并安装
重新编译程序:
这个问题的原因很多,
但可能我遇到的跟你原因有所不同,我用的qede来加载的驱动
通常是先解绑,再重新绑定,再分配mac地址
sudo /opt/dpdk-20.11.3/bin/dpdk-devbind.py -u $(basename $(readlink /sys/class/net/eth1/device/virtfn0))
sudo /opt/dpdk-20.11.3/bin/dpdk-devbind.py -u $(basename $(readlink /sys/class/net/eth1/device/virtfn1))
sudo /opt/dpdk-20.11.3/bin/dpdk-devbind.py -b vfio-pci $(basename $(readlink /sys/class/net/eth1/device/virtfn0))
sudo /opt/dpdk-20.11.3/bin/dpdk-devbind.py -b vfio-pci $(basename $(readlink /sys/class/net/eth1/device/virtfn1))
sudo ip link set eth1 vf 0 mac 00:0C:E0:48:17:25
sudo ip link set eth1 vf 1 mac 00:01:02:03:04:02
通过
sudo /opt/dpdk-20.11.3/bin/dpdk-devbind.py --status 查看
从你的图上来看,是激活了,绑定也成功了
其次,你需要使用 ip link 查看网卡情况,一般要出现如下才算正常
这儿有一些解决方法,你可以试试。一个是更新pkgconfig版本,另一个是修改-lrte_eal 和 -lrte_pci的顺序
https://www.mail-archive.com/dev@dpdk.org/msg216164.html@dpdk.org/msg216164.html
Re: [dpdk-dev] EAL: failed to parse device "XX:XX.X" on CentOS 7
http://inbox.dpdk.org/stable/20190716074609.5a24d6d4@hermes.lan/@hermes.lan/
Re: [dpdk-stable] [dpdk-dev] [PATCH] pci: fix missing pci bus with shared library build - Stephen Hemminger