You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DPDK 20.05版本l3fwd示例运行报错,请求排查解决

DPDK l3fwd启动失败:rte_eth_rx_queue_setup报错-22

环境信息

  • DPDK版本:20.05(源码编译)
  • 网卡:Mellanox ConnectX-5 虚拟功能(VF)网卡
  • 已配置大页,通过-b参数隔离SSH使用的PCI地址

报错现象

运行命令:

./dpdk-l3fwd  -b $SSHADDR -l 1 -n 1 -- -p 0x1 --config="(0,0,1)"

出现核心报错:

Initializing rx queues on lcore 1 ... rxq=0,0,0 Invalid RX queue_id=0
EAL: Error - exiting with code: 1
  Cause: rte_eth_rx_queue_setup: err=-22, port=0

错误指向rte_ethdev.c中的rte_eth_rx_queue_setup函数,提示dev->data->nb_rx_queues = 0,但testpmd可正常调用该函数创建RX队列。

问题原因

  1. VF队列资源未分配:Mellanox ConnectX-5的VF默认队列数可能为0,物理功能(PF)侧未为VF配置足够的RX/TX队列资源,导致l3fwd无法创建队列。
  2. 驱动参数缺失:DPDK 20.05的mlx5驱动需要显式指定VF的队列数参数,否则无法识别可用队列。
  3. 配置不匹配:l3fwd的--config参数要求使用队列0,但VF实际无可用队列,触发参数无效错误(err=-22对应EINVAL)。

解决方法

1. 配置PF侧的VF队列数

在PF所在节点执行以下操作:

  • 查看当前PF的VF队列配置:
    mlxconfig -d <PF_PCI_ADDR> q
    
  • 设置VF的RX/TX队列数(例如设为4):
    mlxconfig -d <PF_PCI_ADDR> set NUM_OF_VF_RX_QUEUES=4 NUM_OF_VF_TX_QUEUES=4
    
  • 重启网卡或系统使配置生效:
    ip link set <PF_INTERFACE> down && ip link set <PF_INTERFACE> up
    

2. 修改l3fwd启动命令

显式指定mlx5驱动的队列数参数,确保VF能识别可用队列:

./dpdk-l3fwd -b $SSHADDR -l 1 -n 1 --vdev 'net_mlx5,pci=XXXX:00:02.0,rx_queue_num=1,tx_queue_num=1' -- -p 0x1 --config="(0,0,1)"

替换XXXX:00:02.0为你的VF PCI地址。

3. 验证VF队列能力

使用testpmd确认VF的可用队列数:

./dpdk-testpmd -b $SSHADDR -l 1 -n 1 -- --port-topology=chained

进入testpmd交互界面后执行:

show port info 0

查看Max possible RX queues和Max possible TX queues的值,确保大于0。

4. 确认DPDK编译配置

确保编译DPDK时启用了mlx5驱动:

meson configure -Ddrivers=net/mlx5 build
ninja -C build

如果之前编译未包含mlx5驱动,重新编译后再测试。

内容的提问来源于stack exchange,提问作者DPKD_Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:05:30