common/sfc_efx/base: add API to get mport ID by selector
[dpdk.git] / lib / eal / common / eal_common_devargs.c
index d0c6d5c..411dd6a 100644 (file)
@@ -125,7 +125,6 @@ rte_devargs_layers_parse(struct rte_devargs *devargs,
                layers[i].str = s;
                layers[i].kvlist = rte_kvargs_parse_delim(s, NULL, "/");
                if (layers[i].kvlist == NULL) {
-                       RTE_LOG(ERR, EAL, "Could not parse %s\n", s);
                        ret = -EINVAL;
                        goto get_out;
                }
@@ -224,6 +223,15 @@ rte_devargs_parse(struct rte_devargs *da, const char *dev)
        if (da == NULL)
                return -EINVAL;
 
+       /* First parse according global device syntax. */
+       if (rte_devargs_layers_parse(da, dev) == 0) {
+               if (da->bus != NULL || da->cls != NULL)
+                       return 0;
+               rte_devargs_reset(da);
+       }
+
+       /* Otherwise fallback to legacy syntax: */
+
        /* Retrieve eventual bus info */
        do {
                devname = dev;
@@ -322,7 +330,7 @@ rte_devargs_insert(struct rte_devargs **da)
        if (*da == NULL || (*da)->bus == NULL)
                return -1;
 
-       TAILQ_FOREACH_SAFE(listed_da, &devargs_list, next, tmp) {
+       RTE_TAILQ_FOREACH_SAFE(listed_da, &devargs_list, next, tmp) {
                if (listed_da == *da)
                        /* devargs already in the list */
                        return 0;
@@ -389,7 +397,7 @@ rte_devargs_remove(struct rte_devargs *devargs)
        if (devargs == NULL || devargs->bus == NULL)
                return -1;
 
-       TAILQ_FOREACH_SAFE(d, &devargs_list, next, tmp) {
+       RTE_TAILQ_FOREACH_SAFE(d, &devargs_list, next, tmp) {
                if (strcmp(d->bus->name, devargs->bus->name) == 0 &&
                    strcmp(d->name, devargs->name) == 0) {
                        TAILQ_REMOVE(&devargs_list, d, next);