Dear DPDK Community,

I am facing an issue with DPDK version 18.02.2 on CentOS 7.9 x86_64 with Kernel 3.10.0. After binding the network card (BCM57810) to DPDK using igb_uio driver, and calling rte_eth_dev_start(), the link status remains "down" when I call rte_eth_link_get() and rte_eth_link_get_nowait().

I have confirmed that the network cable is properly connected, and the hardware is functioning correctly.

This setup works fine on other machines with different network cards (Intel), where the link status is correctly set to "up".

Environment Details:

Steps Taken:

  1. DPDK Compilation:

    • Compiled DPDK (libdpdk.so) and igb_uio.ko.
    • The CONFIG_RTE_LIBRTE_BNX2X_PMD=y option was enabled during compilation.
    • The compilation steps were correctly followed, and the DPDK setup is working fine on other machines.
  2. Binding Network Device:

    • Before binding the network device:
      Network devices using kernel driver 0000:02:00.0 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno1 drv=tg3 unused=igb_uio 0000:02:00.1 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno2 drv=tg3 unused=igb_uio 0000:02:00.2 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno3 drv=tg3 unused=igb_uio 0000:02:00.3 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno4 drv=tg3 unused=igb_uio 0000:04:00.1 'NetXtreme II BCM57810 10 Gigabit Ethernet 168e' if=eno50 drv=bnx2x unused=igb_uio *Active*
    • After binding the device 0000:04:00.0:
      Network devices using DPDK-compatible driver 0000:04:00.0 'NetXtreme II BCM57810 10 Gigabit Ethernet 168e' drv=igb_uio unused= Network devices using kernel driver 0000:02:00.0 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno1 drv=tg3 unused=igb_uio 0000:02:00.1 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno2 drv=tg3 unused=igb_uio 0000:02:00.2 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno3 drv=tg3 unused=igb_uio 0000:02:00.3 'NetXtreme BCM5719 Gigabit Ethernet PCIe 1657' if=eno4 drv=tg3 unused=igb_uio 0000:04:00.1 'NetXtreme II BCM57810 10 Gigabit Ethernet 168e' if=eno50 drv=bnx2x unused=igb_uio *Active*
  3. NUMA Hugepage Configuration.

  4. Program Execution:

    • Successfully called the following functions, all returning >=0:
      ret = rte_eth_dev_is_valid_port(port); ret = rte_eth_dev_configure(port, rxRings, txRings, &port_conf); ret = rte_eth_tx_queue_setup(...); ret = rte_eth_rx_queue_setup(...); ret = rte_eth_dev_start(port);
  5. Link Status Check:

    • After calling rte_eth_dev_start(port), the link status remains down:
      rte_eth_link_get(port, &link); rte_eth_link_get_nowait(port, &link);
      Both functions return link_status != 1 (indicating "down").
Questions:
  • Why does the link status remain down even after successfully calling rte_eth_dev_start()?
  • Is there any additional configuration or setting that I might have missed, specifically for the bnx2x driver with the igb_uio binding?
  • Is it necessary to manually call rte_eth_dev_set_link_up() after rte_eth_dev_start() to activate the link, or should this be handled automatically by DPDK?
  • Could there be any driver or hardware compatibility issues between the bnx2x driver and DPDK 18.02.2 on this kernel version?
  •