Hi all, With DPDK 16.11.2 LTS we see "intermittent" errors when trying to start an X710 interface (latest firmware - FW 5.05).
Due to the fact that the i40e PMD requires the port to be stopped when setting MTU we use the following sequence in our code: 1. rte_eth_dev_ stop 2. rte_eth_dev_set_mtu 3. rte_eth_dev_start If rte_eth_dev_start is called shortly after stop (as is in our case), the i40e_phy_conf_link sometimes fails and returns -ENOTSUP. This happens because i40e_aq_get_phy_capabilities returns status I40E_ERR_UNKNOWN_PHY. I double checked and the transceivers we use are Intel FTLX8571D3BCV-IT. Moreover, if we introduce a delay (e.g., 10 seconds) after rte_eth_dev_stop then rte_eth_dev_start works fine. In order to eliminate potential issues with our code I tried to replicate with test-pmd with "disable-link-check" in order to avoid the delay introduced by link state checking: # $RTE_SDK/tools/dpdk-devbind.py -s Network devices using DPDK-compatible driver ============================================ 0000:82:00.0 'Ethernet Controller X710 for 10GbE SFP+' drv=igb_uio unused= 0000:82:00.1 'Ethernet Controller X710 for 10GbE SFP+' drv=igb_uio unused= # $RTE_SDK/x86_64-native-linuxapp-gcc/build/app/test-pmd/testpmd -w 0000:82:00.0 -w 0000:82:00.1 -- --disable-link-check -i EAL: Detected 32 lcore(s) EAL: Probing VFIO support... EAL: PCI device 0000:82:00.0 on NUMA socket 1 EAL: probe driver: 8086:1572 net_i40e PMD: eth_i40e_dev_init(): FW 5.0 API 1.5 NVM 05.00.05 eetrack 8000289d EAL: PCI device 0000:82:00.1 on NUMA socket 1 EAL: probe driver: 8086:1572 net_i40e PMD: eth_i40e_dev_init(): FW 5.0 API 1.5 NVM 05.00.05 eetrack 8000289d Interactive-mode selected USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=395456, size=2176, socket=0 Configuring Port 0 (socket 0) Port 0: 3C:FD:FE:9C:79:F0 Configuring Port 1 (socket 0) Port 1: 3C:FD:FE:9C:79:F1 Done testpmd> port stop 1 Stopping ports... Done testpmd> port start 1 Port 1: 3C:FD:FE:9C:79:F1 Done testpmd> port stop 1 Stopping ports... Done testpmd> port start 1 Fail to start port 1 Please stop the ports first <<<<<<< Here we fail to stop port 1 Done I saw there were some more reports of similar I40E_ERR_UNKNOWN_PHY issues but I'm not sure if they were related to the device stop/start sequence. Is this a known limitation of the driver/firmware? Is the application supposed to deal with this specific behavior of the X710? If so, how would an application detect that the rte_eth_dev_stop operation has completed? Or are we missing some hardware specific initialization? Thanks, Dumitru
