DPDK ixgbe 驱动程序未呈现正确的 link 状态

DPDK ixgbe driver not rendering proper link status

我在我的以太网控制器 10G X550T 卡上调用了 rte_eth_dev_stop(),此后当我在同一设备上调用 rte_eth_get_link_nowait() 时,link 从 link设备的寄存器仍然显示为UP!

但是当我通过物理关闭连接的另一端来关闭设备 link 时,rte_eth_get_link_nowait() 调用将 link 显示为关闭!

服务器 运行 在裸机架构上。 DPDK PMD 是 ixgbe。 DPDK 版本 18.05

为什么会这样?有什么想法吗?

DPDK API rte_eth_dev_set_link_down 负责 Link 状态下降。 DPDK API rte_eth_dev_stop 负责在内部停止 rx-tx 队列,从而使 rte_eth_rx_burst 和 rte_eth_tx_burst` 始终为 0。

因此,对于 DPDK PMD ixgbe,期望 rte_eth_dev_stop 为 X550 带来 link 状态是不正确的。

注:

  1. 不像Linuxifconfig up and ifconfig down,用户spacePMDdev_configure,开始和停止是不同的。请随时检查代码中的详细信息。
  2. 使用 DPDK 20.11 return 值从 void 更新为 int https://doc.dpdk.org/guides/rel_notes/release_20_11.html?highlight=rte_eth_dev_stop
  3. link state is governed by HW registers in the ASIC, different PMD may work differently。因此,请查看其他 PMD 的代码以获取更多详细信息。