如何解决使用 dpdk 示例给出错误端口未在端口掩码中启用
我正在尝试使用修改后的 Makefile 将我的自定义应用程序与 DPDK 示例集成
- 具有自定义应用程序代码和 Makefile 的基本转发应用程序(l2fwd 和骨架)可以正常工作。
- 具有自定义应用程序代码和 Makefile 的 L3fwd ACL 应用程序无法识别 NIC 端口
错误日志:port is not enabled in port mask
网卡:Mellanox PMD
自定义 Makefile:
link_directories(/usr/local/lib/aarch64-linux-gnu/)
include_directories(/usr/local/include/)
link_directories(/opt/mellanox/dpdk/lib)
SET(DPDK_LIBS "-Wl,--whole-archive -l dpdk -Wl,--no-whole-archive")
add_executable( exAppln exAppln.c )
target_link_libraries(exAppln LINK_PUBLIC pcap ${DPDK_LIBS} )
为自定义应用程序传递的参数是 ./Sample -l 1,2 -n 4 -- -p 0x3 --config="(0,1)" --rule_ipv4="/root/rule_ipv4.db" --rule_ipv6=/root/rule_ipv6.db
[EDIT-1] 基于通过评论的对话
- NIC 被标识为 Mellanox,但类型 mlx5 或 mlx6 不是
- 基于 Makefile 参数,它是共享库链接。
- 未修改命令行参数以引入用于 mellanox 的共享库 PMD 的 PCIe 探针
- 应用程序的
makefile
和--log-level
没有日志捕获。
解决方法
DPDK 库可以静态链接或共享模式链接。根据更新 -Wl,--whole-archive -l dpdk -Wl,--no-whole-archive
当前链接是在共享模式下完成的。
要启用对所需 PMD 的探测,请使用 DPDK rte_eal_inti args -d
。示例
- Fortville NIC 使用
-d librte_pmd_i40e.so
- 对于 82599ES 使用
-d librte_pmd_ixgbe.so
- [edit-1 基于评论更新]对于 mellanox net_mlx5,请使用
-d librte_pmd_mlx5.so
。
注意:
- 确保设置了
export LD_LIBRARY_PATH=/usr/local/lib/aarch64-linux-gnu/
,其中包含所需 DPDK PMD 的路径。 - 如果可以与静态库链接,则可以避免传递选项
-d
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。