Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> --- lib/librte_eal/common/eal_common_bus.c | 7 ++++--- lib/librte_eal/common/include/rte_bus.h | 3 +++ lib/librte_eal/linuxapp/eal/eal_pci.c | 1 + 3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c index f8c2e03..e8d1143 100644 --- a/lib/librte_eal/common/eal_common_bus.c +++ b/lib/librte_eal/common/eal_common_bus.c @@ -145,6 +145,7 @@ rte_eal_bus_register(struct rte_bus *bus) /* A bus should mandatorily have the scan and match implemented */ RTE_VERIFY(bus->scan); RTE_VERIFY(bus->match); + RTE_VERIFY(bus->probe); /* Initialize the driver and device list associated with the bus */ TAILQ_INIT(&(bus->driver_list)); @@ -195,19 +196,19 @@ rte_eal_bus_scan(void) } static int -perform_probe(struct rte_bus *bus __rte_unused, struct rte_driver *driver, +perform_probe(struct rte_bus *bus, struct rte_driver *driver, struct rte_device *device) { int ret; - if (!driver->probe) { + if (!bus->probe) { RTE_LOG(ERR, EAL, "Driver (%s) doesn't support probe.\n", driver->name); /* This is not an error - just a badly implemented PMD */ return 0; } - ret = driver->probe(driver, device); + ret = bus->probe(driver, device); if (ret < 0) /* One of the probes failed */ RTE_LOG(ERR, EAL, "Probe failed for (%s).\n", driver->name); diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h index 07c30c4..ce1f56a 100644 --- a/lib/librte_eal/common/include/rte_bus.h +++ b/lib/librte_eal/common/include/rte_bus.h @@ -135,6 +135,8 @@ typedef int (*bus_scan_t)(struct rte_bus *bus); */ typedef int (*bus_match_t)(struct rte_driver *drv, struct rte_device *dev); +typedef int (*bus_probe_t)(struct rte_driver *drv, struct rte_device *dev); + /** * A structure describing a generic bus. */ @@ -147,6 +149,7 @@ struct rte_bus { const char *name; /**< Name of the bus */ bus_scan_t scan; /**< Scan for devices attached to bus */ bus_match_t match; + bus_probe_t probe; /**< Match device with drivers associated with the bus */ }; diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 314effa..837adf6 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -726,6 +726,7 @@ rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p) struct rte_bus pci_bus = { .scan = rte_eal_pci_scan, .match = rte_eal_pci_match, + .probe = rte_eal_pci_probe, }; RTE_REGISTER_BUS(pci, pci_bus); -- 2.9.3