首页 > 解决方案 > DPDK可以选择性地初始化网卡端口吗

问题描述

我使用的是双端口网卡 Mellanox ConnectX-5,DPDK 版本是 dpdk-stable-19.11.3。配置完成后,调用 rte_eth_dev_count_avail()返回2。但是我的 ConnectX-5 网卡只有一个端口连接到另一台机器。我能找到的就是像这样初始化所有可用的端口。

RTE_ETH_FOREACH_DEV(portid)
    if (port_init(portid, mbuf_pool) != 0)
        rte_exit(EXIT_FAILURE, "Cannot init port %u\n", portid);

dpdk 可以选择性地初始化端口吗?或者有什么办法可以rte_eth_dev_count_avail()退货1

标签: clinuxnetworkingdpdkmellanox

解决方案


通过使用 DPDK 工具dpdk-devbind.py和 EAL 端口初始化将所有可用端口分配给 DPDK 应用程序的特定端口的另一种快速方法将选择分配给 UIO/VFIO 内核驱动程序的端口。以下是用于识别端口当前状态以及如何将所需端口绑定到 DPDK 的 devbind 脚本步骤。

[root@linux usertools]# ./dpdk-devbind.py --status

Network devices using kernel driver
===================================
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if= drv=e1000 unused=vfio-pci
0000:00:04.0 '82540EM Gigabit Ethernet Controller 100e' if= drv=e1000 unused=vfio-pci

[root@linux usertools]# ./dpdk-devbind.py --bind=vfio-pci 00:04.0
[root@linux usertools]# ./dpdk-devbind.py --status

Network devices using DPDK-compatible driver
============================================
0000:00:04.0 '82540EM Gigabit Ethernet Controller 100e' drv=vfio-pci unused=e1000

Network devices using kernel driver
===================================
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if= drv=e1000 unused=vfio-pci

[EDIT-1] 根据作者更新的问题,请求是从连接的可用 DPDK 端口识别的?如上所述,一个需要使用的答案rte_eth_link_get


推荐阅读