Now that the probe and unplug callback behave like other buses, we can
call generic cleanup in addition to the special handling for IO devices.

Signed-off-by: David Marchand <[email protected]>
---
 drivers/bus/fslmc/fslmc_bus.c | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index 39afdee9ee..49f5d0290e 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -504,23 +504,18 @@ fslmc_bus_match(const struct rte_driver *drv, const 
struct rte_device *dev)
        return false;
 }
 
-static int
-fslmc_bus_unplug_device(struct rte_device *rte_dev);
+static void
+fslmc_free_device(struct rte_device *rte_dev)
+{
+       free(RTE_BUS_DEVICE(rte_dev, struct rte_dpaa2_device));
+}
 
 static int
-rte_fslmc_close(struct rte_bus *bus)
+fslmc_cleanup(struct rte_bus *bus)
 {
-       struct rte_dpaa2_device *dev;
-       int ret = 0;
+       int ret;
 
-       RTE_BUS_FOREACH_DEV(dev, bus) {
-               if (dev->dev_type != DPAA2_ETH &&
-                   dev->dev_type != DPAA2_CRYPTO &&
-                   dev->dev_type != DPAA2_QDMA)
-                       continue;
-               if (rte_dev_is_probed(&dev->device) && 
fslmc_bus_unplug_device(&dev->device))
-                       DPAA2_BUS_ERR("Unable to remove %s", dev->device.name);
-       }
+       rte_bus_generic_cleanup(bus);
 
        ret = fslmc_vfio_close_group();
        if (ret)
@@ -646,7 +641,8 @@ fslmc_bus_unplug_device(struct rte_device *rte_dev)
 struct rte_bus rte_fslmc_bus = {
        .scan = rte_fslmc_scan,
        .probe = rte_bus_generic_probe,
-       .cleanup = rte_fslmc_close,
+       .free_device = fslmc_free_device,
+       .cleanup = fslmc_cleanup,
        .parse = rte_fslmc_parse,
        .dev_compare = fslmc_dev_compare,
        .find_device = rte_bus_generic_find_device,
-- 
2.54.0

Reply via email to