From: Xueming Li <xuemingl@nvidia.com> To: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Cc: dev@dpdk.org, Viacheslav Ovsiienko <viacheslavo@nvidia.com>, xuemingl@nvidia.com, Asaf Penso <asafp@nvidia.com>, Thomas Monjalon <thomas@monjalon.net>, Olivier Matz <olivier.matz@6wind.com> Subject: [dpdk-dev] [PATCH v7 9/9] kvargs: update parser to support lists Date: Tue, 2 Mar 2021 19:44:02 +0800 Message-ID: <20210302114402.1548-1-xuemingl@nvidia.com> (raw) In-Reply-To: <1608303356-13089-2-git-send-email-xuemingl@nvidia.com> This patch updates kvargs parser to support lists on top of range, allow multiple lists or range: k1=a[1,2]b[3-5] Signed-off-by: Xueming Li <xuemingl@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> Acked-by: Thomas Monjalon <thomas@monjalon.net> --- app/test/test_kvargs.c | 46 +++++++++++++-- lib/librte_kvargs/rte_kvargs.c | 101 +++++++++++++++++++++++---------- 2 files changed, 112 insertions(+), 35 deletions(-) diff --git a/app/test/test_kvargs.c b/app/test/test_kvargs.c index 2a2dae43a0..a91ea8dc47 100644 --- a/app/test/test_kvargs.c +++ b/app/test/test_kvargs.c @@ -35,6 +35,25 @@ static int check_handler(const char *key, const char *value, return 0; } +/* test parsing. */ +static int test_kvargs_parsing(const char *args, unsigned int n) +{ + struct rte_kvargs *kvlist; + + kvlist = rte_kvargs_parse(args, NULL); + if (kvlist == NULL) { + printf("rte_kvargs_parse() error: %s\n", args); + return -1; + } + if (kvlist->count != n) { + printf("invalid count value %d: %s\n", kvlist->count, args); + rte_kvargs_free(kvlist); + return -1; + } + rte_kvargs_free(kvlist); + return 0; +} + /* test a valid case */ static int test_valid_kvargs(void) { @@ -42,6 +61,19 @@ static int test_valid_kvargs(void) const char *args; const char *valid_keys_list[] = { "foo", "check", NULL }; const char **valid_keys; + static const struct { + unsigned int expected; + const char *input; + } valid_inputs[] = { + { 2, "foo=1,foo=" }, + { 2, "foo=1,foo=" }, + { 2, "foo=1,foo" }, + { 2, "foo=1,=2" }, + { 1, "foo=[1,2" }, + { 1, ",=" }, + { 1, "foo=[" }, + }; + unsigned int i; /* empty args is valid */ args = ""; @@ -191,6 +223,14 @@ static int test_valid_kvargs(void) } rte_kvargs_free(kvlist); + valid_keys = NULL; + + for (i = 0; i < RTE_DIM(valid_inputs); ++i) { + args = valid_inputs[i].input; + if (test_kvargs_parsing(args, valid_inputs[i].expected)) + goto fail; + } + return 0; fail: @@ -212,12 +252,6 @@ static int test_invalid_kvargs(void) /* list of argument that should fail */ const char *args_list[] = { "wrong-key=x", /* key not in valid_keys_list */ - "foo=1,foo=", /* empty value */ - "foo=1,foo", /* no value */ - "foo=1,=2", /* no key */ - "foo=[1,2", /* no closing bracket in value */ - ",=", /* also test with a smiley */ - "foo=[", /* no value in list and no closing bracket */ NULL }; const char **args; const char *valid_keys_list[] = { "foo", "check", NULL }; diff --git a/lib/librte_kvargs/rte_kvargs.c b/lib/librte_kvargs/rte_kvargs.c index 285081c86c..ffae8914cf 100644 --- a/lib/librte_kvargs/rte_kvargs.c +++ b/lib/librte_kvargs/rte_kvargs.c @@ -5,6 +5,7 @@ #include <string.h> #include <stdlib.h> +#include <stdbool.h> #include <rte_string_fns.h> @@ -13,15 +14,19 @@ /* * Receive a string with a list of arguments following the pattern * key=value,key=value,... and insert them into the list. - * strtok() is used so the params string will be copied to be modified. + * Params string will be copied to be modified. + * list "[]" and list element splitter ",", "-" is treated as value. + * Supported examples: + * k1=v1,k2=v2 + * k1 + * k1=x[0-1]y[1,3-5,9]z */ static int rte_kvargs_tokenize(struct rte_kvargs *kvlist, const char *params) { - unsigned i; - char *str; - char *ctx1 = NULL; - char *ctx2 = NULL; + char *str, *start; + bool in_list = false, end_key = false, end_value = false; + bool save = false, end_pair = false; /* Copy the const char *params to a modifiable string * to pass to rte_strsplit @@ -32,36 +37,74 @@ rte_kvargs_tokenize(struct rte_kvargs *kvlist, const char *params) /* browse each key/value pair and add it in kvlist */ str = kvlist->str; - while ((str = strtok_r(str, RTE_KVARGS_PAIRS_DELIM, &ctx1)) != NULL) { + start = str; /* start of current key or value */ + while (1) { + switch (*str) { + case '=': /* End of key. */ + end_key = true; + save = true; + break; + case ',': + /* End of value, skip comma in middle of range */ + if (!in_list) { + if (end_key) + end_value = true; + else + end_key = true; + save = true; + end_pair = true; + } + break; + case '[': /* Start of list. */ + in_list = true; + break; + case ']': /* End of list. */ + if (in_list) + in_list = false; + break; + case '\0': /* End of string */ + if (end_key) + end_value = true; + else + end_key = true; + save = true; + end_pair = true; + break; + default: + break; + } - i = kvlist->count; - if (i >= RTE_KVARGS_MAX) - return -1; + if (!save) { + /* Continue if not end of key or value. */ + str++; + continue; + } - kvlist->pairs[i].key = strtok_r(str, RTE_KVARGS_KV_DELIM, &ctx2); - kvlist->pairs[i].value = strtok_r(NULL, RTE_KVARGS_KV_DELIM, &ctx2); - if (kvlist->pairs[i].key == NULL || - kvlist->pairs[i].value == NULL) + if (kvlist->count >= RTE_KVARGS_MAX) return -1; - /* Detect list [a,b] to skip comma delimiter in list. */ - str = kvlist->pairs[i].value; - if (str[0] == '[') { - /* Find the end of the list. */ - while (str[strlen(str) - 1] != ']') { - /* Restore the comma erased by strtok_r(). */ - if (ctx1 == NULL || ctx1[0] == '\0') - return -1; /* no closing bracket */ - str[strlen(str)] = ','; - /* Parse until next comma. */ - str = strtok_r(NULL, RTE_KVARGS_PAIRS_DELIM, &ctx1); - if (str == NULL) - return -1; /* no closing bracket */ - } + if (end_value) + /* Value parsed */ + kvlist->pairs[kvlist->count].value = start; + else if (end_key) + /* Key parsed. */ + kvlist->pairs[kvlist->count].key = start; + + if (end_pair) { + if (end_value || str != start) + /* Ignore empty pair. */ + kvlist->count++; + end_key = false; + end_value = false; + end_pair = false; } - kvlist->count++; - str = NULL; + if (*str == '\0') /* End of string. */ + break; + *str = '\0'; + str++; + start = str; + save = false; } return 0; -- 2.25.1
next prev parent reply other threads:[~2021-03-02 11:44 UTC|newest] Thread overview: 209+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-18 14:55 [dpdk-dev] [RFC 0/7] support SubFunction representor Xueming Li 2020-12-18 14:55 ` [dpdk-dev] [RFC 1/7] ethdev: support sub function representor Xueming Li 2020-12-28 11:59 ` Andrew Rybchenko 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 0/9] support SubFunction representor Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 1/9] ethdev: refactor representor infrastructure Xueming Li 2021-01-07 6:31 ` Somnath Kotur 2021-01-07 6:38 ` Xueming(Steven) Li 2021-01-07 6:40 ` Somnath Kotur 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 2/9] ethdev: support new VF representor syntax Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 3/9] ethdev: support sub function representor Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 4/9] ethdev: support PF index in representor Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 5/9] ethdev: support multi-host representor Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 6/9] devarg: change reprsentor ID to bitmap Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 7/9] ethdev: capability of new representor syntax Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 8/9] kvargs: update parser for " Xueming Li 2021-01-06 16:17 ` [dpdk-dev] [PATCH v2 9/9] eal: allow PCI device with different representors Xueming Li 2021-01-06 16:39 ` [dpdk-dev] [PATCH v2 0/4] net/mlx5: support SubFunction representor Xueming Li 2021-01-06 16:39 ` [dpdk-dev] [PATCH v2 1/4] common/mlx5: update representor name parsing Xueming Li 2021-01-06 16:39 ` [dpdk-dev] [PATCH v2 2/4] net/mlx5: support representor of sub function Xueming Li 2021-01-06 16:39 ` [dpdk-dev] [PATCH v2 3/4] net/mlx5: revert setting representor to first PF Xueming Li 2021-01-06 16:39 ` [dpdk-dev] [PATCH v2 4/4] net/mlx5: improve bonding representor probe Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 0/9] ethdev: support SubFunction representor Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 1/9] ethdev: refactor representor infrastructure Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 2/9] ethdev: support new VF representor syntax Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 3/9] ethdev: support sub function representor Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 4/9] ethdev: support PF index in representor Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 5/9] ethdev: support multi-host representor Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 6/9] devarg: change reprsentor ID to bitmap Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 7/9] ethdev: capability of new representor syntax Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 8/9] kvargs: update parser for " Xueming Li 2021-01-13 13:44 ` [dpdk-dev] [PATCH v3 9/9] eal: probe devices of same PCI but different devargs Xueming Li 2021-01-18 11:16 ` [dpdk-dev] [PATCH v4 0/9] ethdev: support SubFunction representor Xueming Li 2021-01-18 16:24 ` Thomas Monjalon 2021-01-18 11:16 ` [dpdk-dev] [PATCH v4 1/9] ethdev: introduce representor type Xueming Li 2021-01-18 15:44 ` Thomas Monjalon 2021-01-18 17:42 ` Ajit Khaparde 2021-01-18 17:57 ` Thomas Monjalon 2021-01-18 18:00 ` Ajit Khaparde 2021-01-18 18:15 ` Thomas Monjalon 2021-01-18 18:17 ` Ajit Khaparde 2021-01-18 23:41 ` Xueming(Steven) Li 2021-01-19 7:39 ` Ajit Khaparde 2021-01-19 7:24 ` Andrew Rybchenko 2021-01-19 7:37 ` Xueming(Steven) Li 2021-01-19 7:49 ` Andrew Rybchenko 2021-01-19 7:56 ` Xueming(Steven) Li 2021-01-19 8:39 ` Thomas Monjalon 2021-01-18 11:16 ` [dpdk-dev] [PATCH v4 2/9] ethdev: support representor port list Xueming Li 2021-01-18 16:18 ` Thomas Monjalon 2021-01-18 23:23 ` Xueming(Steven) Li 2021-01-19 7:45 ` Andrew Rybchenko 2021-01-19 8:59 ` Xueming(Steven) Li 2021-01-19 9:03 ` Andrew Rybchenko 2021-01-19 10:19 ` Xueming(Steven) Li 2021-01-18 11:16 ` [dpdk-dev] [PATCH v4 3/9] ethdev: support new VF representor syntax Xueming Li 2021-01-18 11:16 ` [dpdk-dev] [PATCH v4 4/9] ethdev: support sub function representor Xueming Li 2021-01-18 11:16 ` [dpdk-dev] [PATCH v4 5/9] ethdev: support PF index in representor Xueming Li 2021-01-18 11:17 ` [dpdk-dev] [PATCH v4 6/9] ethdev: support multi-host " Xueming Li 2021-01-18 11:17 ` [dpdk-dev] [PATCH v4 7/9] devarg: change representor ID to bitmap Xueming Li 2021-01-18 19:01 ` Ajit Khaparde 2021-01-20 5:51 ` Xueming(Steven) Li 2021-01-18 11:17 ` [dpdk-dev] [PATCH v4 8/9] ethdev: add capability of sub-function representor Xueming Li 2021-01-18 11:17 ` [dpdk-dev] [PATCH v4 9/9] kvargs: update parser to support lists Xueming Li 2021-01-19 7:13 ` [dpdk-dev] [PATCH v5 0/9] ethdev: support SubFunction representor Xueming Li 2021-01-19 8:40 ` Andrew Rybchenko 2021-01-19 14:24 ` Xueming(Steven) Li 2021-01-22 8:21 ` Andrew Rybchenko 2021-01-27 3:04 ` Xueming(Steven) Li 2021-01-27 12:10 ` Andrew Rybchenko 2021-01-28 14:31 ` Xueming(Steven) Li 2021-02-01 8:39 ` Andrew Rybchenko 2021-02-04 14:15 ` Xueming(Steven) Li 2021-02-05 7:34 ` Andrew Rybchenko 2021-02-05 9:13 ` Xueming(Steven) Li 2021-02-05 9:37 ` Andrew Rybchenko 2021-01-27 17:43 ` Ajit Khaparde 2021-01-28 11:45 ` Xueming(Steven) Li 2021-01-21 3:32 ` Tu, Lijuan 2021-01-19 7:14 ` [dpdk-dev] [PATCH v5 1/9] ethdev: introduce representor type Xueming Li 2021-01-19 7:14 ` [dpdk-dev] [PATCH v5 2/9] ethdev: support representor port list Xueming Li 2021-01-19 7:48 ` Andrew Rybchenko 2021-01-19 8:19 ` Xueming(Steven) Li 2021-01-19 7:14 ` [dpdk-dev] [PATCH v5 3/9] ethdev: support new VF representor syntax Xueming Li 2021-01-19 7:51 ` Andrew Rybchenko 2021-01-19 7:14 ` [dpdk-dev] [PATCH v5 4/9] ethdev: support sub function representor Xueming Li 2021-01-19 7:53 ` Andrew Rybchenko 2021-01-19 7:14 ` [dpdk-dev] [PATCH v5 5/9] ethdev: support PF index in representor Xueming Li 2021-01-19 8:00 ` Andrew Rybchenko 2021-01-19 9:30 ` Xueming(Steven) Li 2021-01-19 9:36 ` Andrew Rybchenko 2021-01-19 11:57 ` Xueming(Steven) Li 2021-01-19 7:14 ` [dpdk-dev] [PATCH v5 6/9] ethdev: support multi-host " Xueming Li 2021-01-19 8:03 ` Andrew Rybchenko 2021-01-19 9:32 ` Xueming(Steven) Li 2021-01-19 7:14 ` [dpdk-dev] [PATCH v5 7/9] devarg: change representor ID to bitmap Xueming Li 2021-01-19 7:36 ` Wang, Haiyue 2021-01-19 8:11 ` Xueming(Steven) Li 2021-01-19 8:20 ` Andrew Rybchenko 2021-01-19 8:33 ` Thomas Monjalon 2021-01-19 11:04 ` Xueming(Steven) Li 2021-01-19 11:15 ` Andrew Rybchenko 2021-01-19 7:15 ` [dpdk-dev] [PATCH v5 8/9] ethdev: add capability of sub-function representor Xueming Li 2021-01-19 8:06 ` Andrew Rybchenko 2021-01-19 11:19 ` Xueming(Steven) Li 2021-01-19 11:29 ` Andrew Rybchenko 2021-01-19 7:15 ` [dpdk-dev] [PATCH v5 9/9] kvargs: update parser to support lists Xueming Li 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 0/9] ethdev: support SubFunction representor Xueming Li 2021-02-23 1:54 ` Stephen Hemminger 2021-02-23 11:45 ` Wang, Haiyue 2021-02-28 13:51 ` Xueming(Steven) Li 2021-03-31 5:49 ` Xueming(Steven) Li 2021-03-31 5:58 ` Wang, Haiyue 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 1/9] ethdev: introduce representor type Xueming Li 2021-02-15 2:25 ` Hyong Youb Kim (hyonkim) 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 2/9] ethdev: support representor port list Xueming Li 2021-02-15 8:13 ` Andrew Rybchenko 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 3/9] ethdev: support new VF representor syntax Xueming Li 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 4/9] ethdev: support sub function representor Xueming Li 2021-02-15 8:25 ` Andrew Rybchenko 2021-02-16 9:00 ` Xueming(Steven) Li 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 5/9] ethdev: support PF index in representor Xueming Li 2021-02-15 8:28 ` Andrew Rybchenko 2021-02-15 8:35 ` Andrew Rybchenko 2021-02-16 14:54 ` Xueming(Steven) Li 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 6/9] ethdev: support multi-host " Xueming Li 2021-02-15 8:37 ` Andrew Rybchenko 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 7/9] ethdev: new API to get representor info Xueming Li 2021-02-15 8:50 ` Andrew Rybchenko 2021-02-16 15:11 ` Xueming(Steven) Li 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 8/9] ethdev: representor iterator compare complete info Xueming Li 2021-02-15 9:31 ` Andrew Rybchenko 2021-02-16 16:35 ` Xueming(Steven) Li 2021-02-25 7:32 ` Andrew Rybchenko 2021-02-14 3:21 ` [dpdk-dev] [PATCH v6 9/9] kvargs: update parser to support lists Xueming Li 2021-03-02 11:40 ` [dpdk-dev] [PATCH v7 0/9] ethdev: support SubFunction representor Xueming Li 2021-03-02 11:40 ` [dpdk-dev] [PATCH v7 1/9] ethdev: introduce representor type Xueming Li 2021-03-02 11:42 ` [dpdk-dev] [PATCH v7 3/9] ethdev: support new VF representor syntax Xueming Li 2021-03-02 11:42 ` [dpdk-dev] [PATCH v7 4/9] ethdev: support sub function representor Xueming Li 2021-03-02 11:42 ` [dpdk-dev] [PATCH v7 5/9] ethdev: support PF index in representor Xueming Li 2021-03-02 11:51 ` Andrew Rybchenko 2021-03-02 11:43 ` [dpdk-dev] [PATCH v7 6/9] ethdev: support multi-host " Xueming Li 2021-03-02 11:43 ` [dpdk-dev] [PATCH v7 7/9] ethdev: new API to get representor info Xueming Li 2021-03-02 11:56 ` Andrew Rybchenko 2021-03-02 11:43 ` [dpdk-dev] [PATCH v7 8/9] ethdev: representor iterator compare complete info Xueming Li 2021-03-02 14:10 ` Andrew Rybchenko 2021-03-02 15:18 ` Xueming(Steven) Li 2021-03-02 11:44 ` Xueming Li [this message] 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 0/9] ethdev: support SubFunction representor Xueming Li 2021-03-08 16:43 ` Ferruh Yigit 2021-03-09 7:13 ` Xueming(Steven) Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 1/9] ethdev: introduce representor type Xueming Li 2021-03-08 14:35 ` Ferruh Yigit 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 2/9] ethdev: support representor port list Xueming Li 2021-03-08 14:38 ` Ferruh Yigit 2021-03-08 15:58 ` Xueming(Steven) Li 2021-03-08 16:22 ` Ferruh Yigit 2021-03-09 6:16 ` Xueming(Steven) Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 3/9] ethdev: support new VF representor syntax Xueming Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 4/9] ethdev: support sub function representor Xueming Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 5/9] ethdev: support PF index in representor Xueming Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 6/9] ethdev: support multi-host " Xueming Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 7/9] ethdev: new API to get representor info Xueming Li 2021-03-08 14:43 ` Ferruh Yigit 2021-03-08 15:31 ` Xueming(Steven) Li 2021-03-08 16:12 ` Ferruh Yigit 2021-03-09 4:13 ` Xueming(Steven) Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 8/9] ethdev: representor iterator compare complete info Xueming Li 2021-03-08 16:18 ` Ferruh Yigit 2021-03-09 6:00 ` Xueming(Steven) Li 2021-03-09 8:19 ` Andrew Rybchenko 2021-03-11 13:18 ` Xueming(Steven) Li 2021-03-04 14:30 ` [dpdk-dev] [PATCH v8 9/9] kvargs: update parser to support lists Xueming Li 2021-03-08 14:45 ` Ferruh Yigit 2021-03-08 14:59 ` Xueming(Steven) Li 2021-03-08 15:54 ` Ferruh Yigit 2021-03-08 16:01 ` Xueming(Steven) Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 00/10] ethdev: support SubFunction representor Xueming Li 2021-03-16 19:18 ` Ferruh Yigit 2021-03-17 9:00 ` Xueming(Steven) Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 01/10] ethdev: introduce representor type Xueming Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 02/10] ethdev: refactor representor port list parsing Xueming Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 03/10] ethdev: support new VF representor syntax Xueming Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 04/10] ethdev: support sub function representor Xueming Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 05/10] kvargs: update parser to support multiple lists Xueming Li 2021-04-12 16:42 ` Kinsella, Ray 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 06/10] ethdev: support PF index in representor Xueming Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 07/10] ethdev: support multi-host " Xueming Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 08/10] ethdev: new API to get representor info Xueming Li 2021-03-16 19:18 ` Ferruh Yigit 2021-03-16 21:19 ` Thomas Monjalon 2021-03-16 23:34 ` Ferruh Yigit 2021-03-17 6:57 ` Thomas Monjalon 2021-03-17 17:11 ` Ferruh Yigit 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 09/10] ethdev: representor iterator compare complete info Xueming Li 2021-03-11 13:13 ` [dpdk-dev] [PATCH v9 10/10] doc/release: add representor enhancements Xueming Li 2020-12-18 14:55 ` [dpdk-dev] [RFC 2/7] ethdev: support multi-host representor Xueming Li 2020-12-28 13:43 ` Andrew Rybchenko 2020-12-18 14:55 ` [dpdk-dev] [RFC 3/7] devarg: change reprsentor ID to bitmap Xueming Li 2020-12-28 13:36 ` Andrew Rybchenko 2021-01-05 6:19 ` Xueming(Steven) Li 2020-12-18 14:55 ` [dpdk-dev] [RFC 4/7] ethdev: capability for new representor syntax Xueming Li 2020-12-28 12:02 ` Andrew Rybchenko 2020-12-18 14:55 ` [dpdk-dev] [RFC 5/7] kvargs: update parser " Xueming Li 2020-12-28 13:21 ` Andrew Rybchenko 2020-12-18 14:55 ` [dpdk-dev] [RFC 6/7] common/mlx5: update representor name parsing Xueming Li 2020-12-18 14:55 ` [dpdk-dev] [RFC 7/7] net/mlx5: support representor of sub function Xueming Li 2020-12-28 13:44 ` [dpdk-dev] [RFC 0/7] support SubFunction representor Andrew Rybchenko 2020-12-30 8:54 ` Xueming(Steven) Li 2020-12-30 11:07 ` Thomas Monjalon
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210302114402.1548-1-xuemingl@nvidia.com \ --to=xuemingl@nvidia.com \ --cc=andrew.rybchenko@oktetlabs.ru \ --cc=asafp@nvidia.com \ --cc=dev@dpdk.org \ --cc=olivier.matz@6wind.com \ --cc=thomas@monjalon.net \ --cc=viacheslavo@nvidia.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git