app/testpmd: fix vm_hotplug after removal of rte_eth_devices
Checks
Commit Message
After removing rte_eth_devices from testpmd the vm_hotplug no longer
recovered after removal of a device, this patch fixes this issue.
Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev array")
Signed-off-by: Paulis Gributs <paulis.gributs@intel.com>
---
app/test-pmd/testpmd.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Comments
> -----Original Message-----
> From: Gributs, Paulis <paulis.gributs@intel.com>
> Sent: Wednesday, July 28, 2021 21:49
> To: Li, Xiaoyun <xiaoyun.li@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: dev@dpdk.org; thomas@monjalon.net; Gributs, Paulis
> <paulis.gributs@intel.com>
> Subject: [PATCH] app/testpmd: fix vm_hotplug after removal of rte_eth_devices
>
> After removing rte_eth_devices from testpmd the vm_hotplug no longer
> recovered after removal of a device, this patch fixes this issue.
>
> Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev array")
>
> Signed-off-by: Paulis Gributs <paulis.gributs@intel.com>
> ---
> app/test-pmd/testpmd.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
> > After removing rte_eth_devices from testpmd the vm_hotplug no longer
> > recovered after removal of a device, this patch fixes this issue.
> >
> > Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev array")
> >
> > Signed-off-by: Paulis Gributs <paulis.gributs@intel.com>
> > ---
> > app/test-pmd/testpmd.c | 8 +++++---
> > 1 file changed, 5 insertions(+), 3 deletions(-)
>
> Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
Adding a bit of explanation:
"because the port was closed before querying it."
About the title, vm_hotplug is nothing in testpmd,
and the problem is not limited to VMs.
Applied with rewording.
@@ -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);
}