app/testpmd: fix hotplug removal
authorPaulis Gributs <paulis.gributs@intel.com>
Wed, 28 Jul 2021 13:48:48 +0000 (13:48 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 30 Jul 2021 12:27:01 +0000 (14:27 +0200)
After removing rte_eth_devices from testpmd the vm_hotplug no longer
recovered after removal of a device, because the port was closed
before querying it.

Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev array")

Signed-off-by: Paulis Gributs <paulis.gributs@intel.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
app/test-pmd/testpmd.c

index 63da63e..6cbe9ba 100644 (file)
@@ -3197,14 +3197,16 @@ rmv_port_callback(void *arg)
        stop_port(port_id);
        no_link_check = org_no_link_check;
 
-       close_port(port_id);
        ret = eth_dev_info_get_print_err(port_id, &dev_info);
        if (ret != 0)
                TESTPMD_LOG(ERR,
                        "Failed to get device info for port %d, not detaching\n",
                        port_id);
-       else
-               detach_device(dev_info.device); /* might be already removed or have more ports */
+       else {
+               struct rte_device *device = dev_info.device;
+               close_port(port_id);
+               detach_device(device); /* might be already removed or have more ports */
+       }
        if (need_to_start)
                start_packet_forwarding(0);
 }