From: Sachin Saxena <sachin.sax...@oss.nxp.com> With removal of old close behavior, the private port resources must be released in the .dev_close callback. Freeing of port private resources is moved from the ".remove(device)" to the ".dev_close(port)" operation
Signed-off-by: Sachin Saxena <sachin.sax...@oss.nxp.com> --- drivers/net/pfe/pfe_ethdev.c | 38 +++++++++++++----------------------- 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c index a7e9d97ba..f0de1c8a2 100644 --- a/drivers/net/pfe/pfe_ethdev.c +++ b/drivers/net/pfe/pfe_ethdev.c @@ -385,22 +385,11 @@ pfe_eth_stop(struct rte_eth_dev *dev/*, int wake*/) dev->tx_pkt_burst = &pfe_dummy_xmit_pkts; } -static void -pfe_eth_exit(struct rte_eth_dev *dev, struct pfe *pfe) -{ - PMD_INIT_FUNC_TRACE(); - - pfe_eth_stop(dev); - /* Close the device file for link status */ - pfe_eth_close_cdev(dev->data->dev_private); - - rte_eth_dev_release_port(dev); - pfe->nb_devs--; -} - static int pfe_eth_close(struct rte_eth_dev *dev) { + PMD_INIT_FUNC_TRACE(); + if (!dev) return -1; @@ -410,7 +399,12 @@ pfe_eth_close(struct rte_eth_dev *dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - pfe_eth_exit(dev, g_pfe); + pfe_eth_stop(dev); + /* Close the device file for link status */ + pfe_eth_close_cdev(dev->data->dev_private); + + munmap(g_pfe->cbus_baseaddr, g_pfe->cbus_size); + g_pfe->nb_devs--; if (g_pfe->nb_devs == 0) { pfe_hif_exit(g_pfe); @@ -1147,6 +1141,7 @@ pmd_pfe_remove(struct rte_vdev_device *vdev) { const char *name; struct rte_eth_dev *eth_dev = NULL; + int ret = 0; name = rte_vdev_device_name(vdev); if (name == NULL) @@ -1158,17 +1153,12 @@ pmd_pfe_remove(struct rte_vdev_device *vdev) return 0; eth_dev = rte_eth_dev_allocated(name); - if (eth_dev != NULL) - pfe_eth_exit(eth_dev, g_pfe); - munmap(g_pfe->cbus_baseaddr, g_pfe->cbus_size); - - if (g_pfe->nb_devs == 0) { - pfe_hif_exit(g_pfe); - pfe_hif_lib_exit(g_pfe); - rte_free(g_pfe); - g_pfe = NULL; + if (eth_dev) { + pfe_eth_close(eth_dev); + ret = rte_eth_dev_release_port(eth_dev); } - return 0; + + return ret; } static -- 2.28.0