ethdev: do not scan all PCI devices on attach

No need to scan all devices, we only need to update the device being
attached.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
This commit is contained in:
David Marchand 2016-09-20 18:11:23 +05:30 committed by Thomas Monjalon
parent affe1cdc00
commit 284576e3f6
2 changed files with 9 additions and 6 deletions

View File

@ -341,6 +341,12 @@ rte_eal_pci_probe_one(const struct rte_pci_addr *addr)
if (addr == NULL)
return -1;
/* update current pci device in global list, kernel bindings might have
* changed since last time we looked at it.
*/
if (pci_update_device(addr) < 0)
goto err_return;
TAILQ_FOREACH(dev, &pci_device_list, next) {
if (rte_eal_compare_pci_addr(&dev->addr, addr))
continue;
@ -353,9 +359,9 @@ rte_eal_pci_probe_one(const struct rte_pci_addr *addr)
return -1;
err_return:
RTE_LOG(WARNING, EAL, "Requested device " PCI_PRI_FMT
" cannot be used\n", dev->addr.domain, dev->addr.bus,
dev->addr.devid, dev->addr.function);
RTE_LOG(WARNING, EAL,
"Requested device " PCI_PRI_FMT " cannot be used\n",
addr->domain, addr->bus, addr->devid, addr->function);
return -1;
}

View File

@ -468,9 +468,6 @@ rte_eth_dev_is_detachable(uint8_t port_id)
static int
rte_eth_dev_attach_pdev(struct rte_pci_addr *addr, uint8_t *port_id)
{
/* re-construct pci_device_list */
if (rte_eal_pci_scan())
goto err;
/* Invoke probe func of the driver can handle the new device. */
if (rte_eal_pci_probe_one(addr))
goto err;