【发布时间】:2021-04-29 08:30:35
【问题描述】:
我花了一些时间试图弄清楚如何修复“端口数必须是偶数”错误。我见过this answer,它解释了如何在 VM 中运行 DPDK。我想知道是否有不需要的解决方案。
我的平台:Debian 10、Linux 5.8(在笔记本电脑上),带有 e1000e NIC 驱动程序
我想做的事:让骨架(basicfwd)应用工作
我的问题:rte_eth_dev_count_avail 返回 0
到目前为止我所做的:I followed the documentation 并尝试为我的以太网设备设置 vfio_pci 驱动程序。
两件事:
-
当我使用 vfio_pci 驱动程序绑定设备时,它会丢失其 IP 界面
-
我无法创建 VF 设备,因为我无法在 /sys/bus/pci/devices/ 中写入,即使我
su root
骨架程序无法使用此功能,因此我尝试使用其他驱动程序。
我将设备绑定到 uio_pci_generic 驱动程序。它确实绑定到它,但应用程序仍然无法运行。这是dpdk-devbind.py --status 的输出:
Network devices using DPDK-compatible driver
============================================
0000:00:1f.6 'Device 0d4f' drv=uio_pci_generic unused=e1000e
当我启动程序时会发生什么:
$ sudo ./build/examples/dpdk-skeleton -l 0-3 -n 4 -a 0000:00:1f.6
EAL: Detected 8 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: Probing VFIO support...
EAL: No legacy callbacks, legacy socket not created
EAL: Error - exiting with code: 1
Cause: Error: number of ports must be even
感谢阅读,感谢任何帮助!
【问题讨论】:
-
DPDk Skeleton 需要偶数端口,最少 2 个端口 doc.dpdk.org/dts/test_plans/skeleton_test_plan.html。可以在 Kernel PF 下创建 2 个 VF 并将 VF 绑定到 igb_uio 或 vfio_pci
-
感谢@VipinVarghese 的回答。我了解该应用程序需要偶数个端口才能工作。问题是 DPDK 没有拾取设备并且无法打开任何端口。正如我所提到的,rte_eth_dev_count_avail 返回 0。你知道为什么 DPDK 没有拿起设备吗?
-
2 个可能的原因 1) 应用程序在共享库中编译或 2) PMD 未构建。如果需要,我可以让自己在 Skype 上进行快速调试吗?
-
是的,当然,我没有Skype,我可以给你发一个fidji链接吗?
-
程序确实是用共享库编译的。您能告诉我更多关于如何构建 PMD 的信息吗?您是说将设备绑定到兼容 dpdk 的驱动程序吗?
标签: dpdk