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 状态是不正确的。
注:
- 不像Linux
ifconfig up and ifconfig down
,用户spacePMDdev_configure,开始和停止是不同的。请随时检查代码中的详细信息。
- 使用 DPDK 20.11 return 值从
void
更新为 int
https://doc.dpdk.org/guides/rel_notes/release_20_11.html?highlight=rte_eth_dev_stop
- 自
link state is governed by HW registers in the ASIC, different PMD may work differently
。因此,请查看其他 PMD 的代码以获取更多详细信息。
我在我的以太网控制器 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 状态是不正确的。
注:
- 不像Linux
ifconfig up and ifconfig down
,用户spacePMDdev_configure,开始和停止是不同的。请随时检查代码中的详细信息。 - 使用 DPDK 20.11 return 值从
void
更新为int
https://doc.dpdk.org/guides/rel_notes/release_20_11.html?highlight=rte_eth_dev_stop - 自
link state is governed by HW registers in the ASIC, different PMD may work differently
。因此,请查看其他 PMD 的代码以获取更多详细信息。