Close the port once, only when it is still in use, and propagate the
close status.
Fixes: 78ea4b4fcb52 ("bus/dpaa: improve cleanup")
Cc: [email protected]
Signed-off-by: Hemant Agrawal <[email protected]>
---
drivers/net/dpaa/dpaa_ethdev.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 1aaf97f175..a5b02cc9a8 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -2679,11 +2679,14 @@ rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
PMD_INIT_FUNC_TRACE();
eth_dev = rte_eth_dev_allocated(dpaa_dev->device.name);
- ret = dpaa_eth_dev_close(eth_dev);
- if (eth_dev->state != RTE_ETH_DEV_UNUSED) {
- dpaa_eth_dev_close(eth_dev);
+ if (eth_dev != NULL && eth_dev->state != RTE_ETH_DEV_UNUSED) {
+ ret = dpaa_eth_dev_close(eth_dev);
+ if (ret != 0)
+ DPAA_PMD_WARN("%s: close failed(%d), releasing port",
+ dpaa_dev->device.name, ret);
ret = rte_eth_dev_release_port(eth_dev);
}
+
dpaa_valid_dev--;
if (!dpaa_valid_dev)
rte_mempool_free(dpaa_tx_sg_pool);
--
2.25.1