ethdev: fix close failure handling
authorThomas Monjalon <thomas@monjalon.net>
Fri, 22 Jan 2021 17:58:04 +0000 (18:58 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 29 Jan 2021 17:16:08 +0000 (18:16 +0100)
If a failure happens when closing a port,
it was unnecessarily failing again in the function eth_err(),
because of a check against HW removal cause.
Indeed there is a big chance the port is released at this point.
Given the port is in the middle (or at the end) of a close process,
checking the error cause by accessing the port is a non-sense.
The error check is replaced by a simple return in the close function.

Bugzilla ID: 624
Fixes: 8a5a0aad5d3e ("ethdev: allow close function to return an error")
Cc: stable@dpdk.org
Reported-by: Anatoly Burakov <anatoly.burakov@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Tested-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_ethdev/rte_ethdev.c

index f40df65..6f514c3 100644 (file)
@@ -1820,7 +1820,7 @@ rte_eth_dev_close(uint16_t port_id)
        rte_ethdev_trace_close(port_id);
        *lasterr = rte_eth_dev_release_port(dev);
 
-       return eth_err(port_id, firsterr);
+       return firsterr;
 }
 
 int