0 投票
分类:DPDK其他问题 | 用户: (120 分)
问题描述:DPDK网卡I350加载igb_uio或者vfio驱动执行接收描述符初始化过程中造成系统重

执行步骤:

1. 编译完成DPDK,加载igb_uio驱动,绑定一个I350网卡。设置两个node的2M大页数量分别为1024。

2. 编译示例应用flow_filtering,屏蔽相关flow过滤函数,只保留网卡数据包回调接收部分。

3. 执行编译好的flow程序,控制台无响应,系统直接重启。

问题分析:

       编译DPDK 18.11.2或19.02版本加载igb_uio驱动过程,在调用eth_igb_rx_init(网卡接收初始化)函数中直接造成系统重启。通过调试发现执行到这行E1000_WRITE_REG(hw, E1000_RDT(rxq->reg_idx), rxq->nb_rx_desc - 1),往寄存器写RDT时出的问题。
       如果修改代码为E1000_WRITE_REG(hw,  E1000_RDT(rxq->reg_idx),  0),初始化时系统就不会重启。但是网卡不会接收到任何数据包。前提是已经确认了在内核自带igb驱动下网卡是有镜像的数据包。进一步查询,未接收到数据包的原因是执行到staterr = rxdp->wb.upper.status_error时,该staterr为0,就跳出数据包的回调函数,正常接收到数据包此状态位不应该为0。

寻求原因及解决方法:

DPDK中对网卡I350使用igb_uio或者vfio驱动后执行到初始化RDT设置时为什么会出现该问题,如何解决?没有头绪,已经搞了好几天了。

运行环境:
操作系统:CentOS Linux release 7.5.1804 (Core)
内存: 128G
CPU: 40核
内核版本: 3.10.0-862.el7.x86_64
网卡:Intel Corporation I350 Gigabit Network Connection

登录 或者 注册 后回答这个问题。

欢迎来到 DPDK交流社区 ,有什么问题可以尽管在这里提问,您将会收到社区其他成员的回答;也可以将您的总结写在这里,为社区其他成员提供帮助。

QQ交流2群:635461501 (入群请注明来源)

冀ICP备15005332号-2
...