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.
排查与解决过程
- 调整MPRQ参数:将启动命令中的
mprq_log_stride_num=9修改为mprq_log_stride_num=7,上述错误日志消失,驱动成功支持MPRQ请求,但Jumbo帧接收问题仍未解决。 - 修正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
相关产品推荐
相关产品推荐

