使用 dpdk 示例给出错误端口未在端口掩码中启用

using dpdk example gives the error port is not enabled in port mask

我正在尝试使用修改后的 Makefile

将我的自定义应用程序与 DPDK 示例集成
  1. 带有自定义应用程序代码和 Makefile 的基本转发应用程序(l2fwd 和框架)可以正常工作。
  2. 具有自定义应用程序代码和 Makefile 的 L3fwd ACL 应用程序无法识别 NIC 端口

错误日志:port is not enabled in port mask 网卡:Mellanox PMD

自定义生成文件:

    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,0,1)" --rule_ipv4="/root/rule_ipv4.db" --rule_ipv6=/root/rule_ipv6.db

[EDIT-1] 基于评论中的对话

  1. NIC 被识别为 Mellanox,但类型 mlx5 或 mlx6 不是
  2. 根据Makefile参数,是共享库链接。
  3. 未修改命令行参数以引入 PCIe 探针以获取 mellanox 的共享库 PMD
  4. 应用程序 makefile--log-level 没有日志捕获。

DPDK 库可以静态链接或共享模式。根据更新 -Wl,--whole-archive -l dpdk -Wl,--no-whole-archive 当前链接是在共享模式下完成的。

要启用对所需 PMD 的探测,请使用 DPDK rte_eal_inti args -d。例子

  1. 用于 Fortville NIC -d librte_pmd_i40e.so
  2. 对于 82599ES 使用 -d librte_pmd_ixgbe.so
  3. [edit-1 基于评论更新] mellanox net_mlx5 请使用 -d librte_pmd_mlx5.so.

注:

  1. 确保 export LD_LIBRARY_PATH=/usr/local/lib/aarch64-linux-gnu/ 设置为具有所需 DPDK PMD 的路径。
  2. 如果可以与静态库链接,则可以避免传递选项 -d