c - 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
?
解决方案
通过使用 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
推荐阅读
- javascript - 为什么在函数 displayx() 中无法访问“id”的值?
- amazon-web-services - 如何在 ASG 中指定 image_id,但使用现有的启动模板提供所有预设的网络详细信息?
- sql - 使用 PySpark 数据帧根据索引从一个数组中定位值并复制到另一个数组
- linux-device-driver - 设备驱动程序中的 Rx 描述符 dma 映射实际上意味着什么,是否意味着将物理网卡上的数据包映射到内存中的结构对象
- woocommerce - 如何根据用户角色(尤其是可变产品)显示不同的产品价格?
- perl - Perl:替换所有,在 perl 中的两个字符之间找到
- php - 捕获从 bash 到 PHP 的 cURL 请求
- sql - sql查询找出经验为什么要除以365
- xcode - Xcode 项目文件被锁定以进行编辑,即使具有文件夹共享和权限设置
- java - 如何在 Java 中创建自定义事件处理程序?