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

DPDK 21.11.3搭配ConnectX-5无法接收Jumbo帧问题排查及解决

问题解决:Mellanox ConnectX-5 100G网卡DPDK环境下Jumbo帧无法接收

问题背景

使用Mellanox ConnectX-5 100G网卡运行DPDK应用,配置IPv4 9000字节Jumbo帧,能正常发送数据包,但RX端无法接收,使用的DPDK版本为21.11.3。

环境信息

网卡驱动信息

执行ethtool -i NIC命令输出:

driver: mlx5_core
version: 5.4-3.4.0
firmware-version: 16.33.1048 (NXE0000000005)
expansion-rom-version:
bus-info: 0000:65:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: yes

初始配置与运行命令

端口配置

const struct rte_eth_conf default_port_conf = {
  .rxmode = {
    .split_hdr_size = 0,
    .max_lro_pkt_size = 9614, //this is for DPDK-21.11.3
  },

  .txmode = {
    .mq_mode = ETH_MQ_TX_NONE,
    .offloads = (DEV_TX_OFFLOAD_IPV4_CKSUM |
        DEV_TX_OFFLOAD_UDP_CKSUM | DEV_TX_OFFLOAD_TCP_CKSUM | DEV_TX_OFFLOAD_MULTI_SEGS),
   },
};

应用启动命令

./application -c 0xfffefffe -n 8 -a 0000:65:00.0,mprq_en=1,rxqs_min_mprq=1,mprq_log_stride_num=9,txq_inline_mpw=128 -a 0000:65:00.1,mprq_en=1,rxqs_min_mprq=1,mprq_log_stride_num=9,txq_inline_mpw=128 -a 0000:66:00.0,mprq_en=1,rxqs_min_mprq=1,mprq_log_stride_num=9,txq_inline_mpw=128 -a 0000:66:00.1,mprq_en=1,rxqs_min_mprq=1,mprq_log_stride_num=9,txq_inline_mpw=128 -d librte_mempool_ring.so -d librte_net_mlx5.so --  -m [2:3].0,[4:5].1,[6:7].2,[8:9].3, 

错误日志

启动应用后控制台输出如下错误:

mlx5_net: Port 0 MPRQ is requested but cannot be enabled
 (requested: pkt_sz = 1646, desc_num = 256, rxq_num = 1, stride_sz = 1, stride_num = 512
  supported: min_rxqs_num = 1, min_buf_wqe_sz = 16384 min_stride_sz = 64, max_stride_sz = 8192).
Rx segment is not enable.

排查与解决过程

  1. 调整MPRQ参数:将启动命令中的mprq_log_stride_num=9修改为mprq_log_stride_num=7,上述错误日志消失,驱动成功支持MPRQ请求,但Jumbo帧接收问题仍未解决。
  2. 修正RX端口配置:在rxmode的offloads字段中添加RTE_ETH_RX_OFFLOAD_SCATTER,启用RX散列卸载功能,RX端恢复正常接收Jumbo帧。

最终配置与命令

最终端口配置

const struct rte_eth_conf default_port_conf = {
  .rxmode = {
    .split_hdr_size = 0,
    .max_lro_pkt_size = 9614, //this is for DPDK-21.11.3
    .offloads = (RTE_ETH_RX_OFFLOAD_SCATTER),
  },

  .txmode = {
    .mq_mode = ETH_MQ_TX_NONE,
    .offloads = (DEV_TX_OFFLOAD_IPV4_CKSUM |
        DEV_TX_OFFLOAD_UDP_CKSUM | DEV_TX_OFFLOAD_TCP_CKSUM | DEV_TX_OFFLOAD_MULTI_SEGS),
   },
};

最终应用启动命令

./application -c 0xfffefffe -n 8 -a 0000:65:00.0,mprq_en=1,rxqs_min_mprq=1 -a 0000:65:00.1,mprq_en=1,rxqs_min_mprq=1 -a 0000:66:00.0,mprq_en=1,rxqs_min_mprq=1 -a 0000:66:00.1,mprq_en=1,rxqs_min_mprq=1 -d librte_mempool_ring.so -d librte_net_mlx5.so --  -m [2:3].0,[4:5].1,[6:7].2,[8:9].3,

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:07:04