Make the pci_detach_all_drivers public. No further changes. Signed-off-by: Gaetan Rivet <gaetan.ri...@6wind.com> --- lib/librte_eal/bsdapp/eal/rte_eal_version.map | 5 +++++ lib/librte_eal/common/eal_common_pci.c | 6 +++--- lib/librte_eal/common/include/rte_pci.h | 15 +++++++++++++++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 5 +++++ 4 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index 2cf1ac8..3a87756 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -185,3 +185,8 @@ DPDK_17.02 { rte_bus_unregister; } DPDK_16.11; + +DPDK_17.05 { + rte_eal_pci_detach_all_drivers; + +} DPDK_17.02; diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c index 72547bd..d38335a 100644 --- a/lib/librte_eal/common/eal_common_pci.c +++ b/lib/librte_eal/common/eal_common_pci.c @@ -313,8 +313,8 @@ pci_probe_all_drivers(struct rte_pci_device *dev) * registered driver for the given device. Return -1 if initialization * failed, return 1 if no driver is found for this device. */ -static int -pci_detach_all_drivers(struct rte_pci_device *dev) +int +rte_eal_pci_detach_all_drivers(struct rte_pci_device *dev) { struct rte_pci_driver *dr = NULL; int rc = 0; @@ -388,7 +388,7 @@ rte_eal_pci_detach(const struct rte_pci_addr *addr) if (rte_eal_compare_pci_addr(&dev->addr, addr)) continue; - ret = pci_detach_all_drivers(dev); + ret = rte_eal_pci_detach_all_drivers(dev); if (ret < 0) goto err_return; diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h index 4a67883..598a1ef 100644 --- a/lib/librte_eal/common/include/rte_pci.h +++ b/lib/librte_eal/common/include/rte_pci.h @@ -459,6 +459,21 @@ void pci_unmap_resource(void *requested_addr, size_t size); int rte_eal_pci_probe_one(const struct rte_pci_addr *addr); /** + * Remove any PCI drivers tied to the device. + * + * If vendor/device ID match, call the remove() function of all + * registered driver for the given device. + * + * @param dev + * The PCI device to remove + * @return + * - 0 on success. + * - Negative on error. + * - Positive if no driver exists for that device. + */ +int rte_eal_pci_detach_all_drivers(struct rte_pci_device *dev); + +/** * Close the single PCI device. * * Scan the content of the PCI bus, and find the pci device specified by pci diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 3c68ff5..192c0d5 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -189,3 +189,8 @@ DPDK_17.02 { rte_bus_unregister; } DPDK_16.11; + +DPDK_17.05 { + rte_eal_pci_detach_all_drivers; + +} DPDK_17.02; -- 2.1.4