When blocklisting some device, the per type count was wrong.

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

diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index 94685a0f5a..a7ac59173f 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -83,11 +83,17 @@ insert_in_device_list(struct rte_dpaa2_device *newdev)
 
        if (!inserted)
                rte_bus_add_device(&rte_fslmc_bus, &newdev->device);
+
+       if (newdev->dev_type < DPAA2_DEVTYPE_MAX)
+               fslmc_bus_device_count[newdev->dev_type]++;
 }
 
 void
 fslmc_bus_remove_device(struct rte_dpaa2_device *dev)
 {
+       if (dev->dev_type < DPAA2_DEVTYPE_MAX)
+               fslmc_bus_device_count[dev->dev_type]--;
+
        rte_bus_remove_device(&rte_fslmc_bus, &dev->device);
        rte_intr_instance_free(dev->intr_handle);
        free(dev);
@@ -195,9 +201,6 @@ scan_one_fslmc_device(char *dev_name)
        }
        dev->device.devargs = rte_bus_find_devargs(&rte_fslmc_bus, dev_name);
 
-       /* Update the device found into the device_count table */
-       fslmc_bus_device_count[dev->dev_type]++;
-
        /* Add device in the fslmc device list */
        insert_in_device_list(dev);
 
-- 
2.54.0

Reply via email to