X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Feal_common_vdev.c;h=7d6e54f44693fcec27ecf16b2431c3fa6dc56119;hb=2eed820fd4fdea456103402e0ad13f955321e6cc;hp=0434390637731e6ea39c68eaf156cf25aa957760;hpb=50a3345fa9ea6482f197567497b0b8d201173a59;p=dpdk.git diff --git a/lib/librte_eal/common/eal_common_vdev.c b/lib/librte_eal/common/eal_common_vdev.c index 0434390637..7d6e54f446 100644 --- a/lib/librte_eal/common/eal_common_vdev.c +++ b/lib/librte_eal/common/eal_common_vdev.c @@ -71,7 +71,7 @@ rte_eal_vdev_init(const char *name, const char *args) /* * search a driver prefix in virtual device name. * For example, if the driver is pcap PMD, driver->name - * will be "eth_pcap", but "name" will be "eth_pcapN". + * will be "net_pcap", but "name" will be "net_pcapN". * So use strncmp to compare. */ if (!strncmp(driver->driver.name, name, @@ -79,6 +79,14 @@ rte_eal_vdev_init(const char *name, const char *args) return driver->probe(name, args); } + /* Give new names precedence over aliases. */ + TAILQ_FOREACH(driver, &vdev_driver_list, next) { + if (driver->driver.alias && + !strncmp(driver->driver.alias, name, + strlen(driver->driver.alias))) + return driver->probe(name, args); + } + RTE_LOG(ERR, EAL, "no driver found for %s\n", name); return -EINVAL; } @@ -95,7 +103,7 @@ rte_eal_vdev_uninit(const char *name) /* * search a driver prefix in virtual device name. * For example, if the driver is pcap PMD, driver->name - * will be "eth_pcap", but "name" will be "eth_pcapN". + * will be "net_pcap", but "name" will be "net_pcapN". * So use strncmp to compare. */ if (!strncmp(driver->driver.name, name, @@ -103,6 +111,14 @@ rte_eal_vdev_uninit(const char *name) return driver->remove(name); } + /* Give new names precedence over aliases. */ + TAILQ_FOREACH(driver, &vdev_driver_list, next) { + if (driver->driver.alias && + !strncmp(driver->driver.alias, name, + strlen(driver->driver.alias))) + return driver->remove(name); + } + RTE_LOG(ERR, EAL, "no driver found for %s\n", name); return -EINVAL; }