[dpdk-dev] [PATCH v3 5/5] devargs: parse global device syntax
From: Xueming Li <hidden>
Date: 2021-03-30 12:16:36
Subsystem:
library code, the rest · Maintainers:
Andrew Morton, Linus Torvalds
From: Xueming Li <hidden>
Date: 2021-03-30 12:16:36
Subsystem:
library code, the rest · Maintainers:
Andrew Morton, Linus Torvalds
When parsing a devargs, try to parse using the global device syntax first. Fallback on legacy syntax on error. Example of new global device syntax: -a bus=pci,addr=82:00.0/class=eth/driver=mlx5,dv_flow_en=1 Signed-off-by: Xueming Li <redacted> --- lib/librte_eal/common/eal_common_devargs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c
index b4dcb0099c..236e14824e 100644
--- a/lib/librte_eal/common/eal_common_devargs.c
+++ b/lib/librte_eal/common/eal_common_devargs.c@@ -102,7 +102,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; }
@@ -199,6 +198,12 @@ 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 && da->bus && da->cls) + return 0; + + /* Otherwise fallback to legacy syntax: */ + /* Retrieve eventual bus info */ do { devname = dev;
--
2.25.1