DPDK ixgbe driver not rendering proper link status

388 views Asked by At

I called rte_eth_dev_stop() on my Ethernet Controller 10G X550T card , after this when I make a call to rte_eth_get_link_nowait() on same device , the link read from link register of the device still shows as UP!

But when I bring the device link down by bringing the other end of the connection physically down, the rte_eth_get_link_nowait() call shows the link as DOWN!

The server is running on a bare metal architecture. The DPDK PMD is ixgbe. DPDK version 18.05

why is this so ? any idea?

1

There are 1 answers

6
Vipin Varghese On BEST ANSWER

DPDK API rte_eth_dev_set_link_down is responsible for Link state down. While DPDK API rte_eth_dev_stop is responsible for internally stopping rx-tx queues and thereby making rte_eth_rx_burst and rte_eth_tx_burst` as 0 always.

Hence the expectation rte_eth_dev_stop to bring link state down for X550 is not true with DPDK PMD ixgbe.

Note:

  1. unlike Linux ifconfig up and ifconfig down, the user space PMD dev_configure, start and stop are different. Please feel free to check the details in code.
  2. with DPDK 20.11 return value is updated from void to int https://doc.dpdk.org/guides/rel_notes/release_20_11.html?highlight=rte_eth_dev_stop
  3. Since link state is governed by HW registers in the ASIC, different PMD may work differently. Hence please check the code for other PMD for more details.