DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api
@ 2021-09-24 15:57 Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 1/5] kvargs: promote delimited parsing as stable Olivier Matz
                   ` (6 more replies)
  0 siblings, 7 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-24 15:57 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

This patchset promotes 2 functions rte_kvargs_parse_delim() and
rte_kvargs_get() as stable.

It also replaces rte_kvargs_strcmp() by a new one
rte_kvargs_get_with_value(), which is easier to use.

Olivier Matz (5):
  kvargs: promote delimited parsing as stable
  kvargs: promote get from key as stable
  kvargs: new function to get from key and value
  kvargs: remove experimental function to compare string
  kvargs: fix comments style

 drivers/bus/auxiliary/auxiliary_params.c |  9 ++--
 drivers/bus/vdev/vdev_params.c           | 13 +-----
 lib/kvargs/rte_kvargs.c                  | 32 +++++++------
 lib/kvargs/rte_kvargs.h                  | 59 ++++++++++++------------
 lib/kvargs/version.map                   |  7 +--
 5 files changed, 57 insertions(+), 63 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 1/5] kvargs: promote delimited parsing as stable
  2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
@ 2021-09-24 15:57 ` Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 2/5] kvargs: promote get from key " Olivier Matz
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-24 15:57 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

This function is used by EAL to parse key/value strings separated with
specified delimiters.

It was introduced in 2018 by commit 5d6af85ab00c ("kvargs: introduce a
more flexible parsing function"), and can be promoted as stable.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/kvargs/rte_kvargs.h | 1 -
 lib/kvargs/version.map  | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 12a8f90435..c30891c668 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -98,7 +98,6 @@ struct rte_kvargs *rte_kvargs_parse(const char *args,
  *   - A pointer to an allocated rte_kvargs structure on success
  *   - NULL on error
  */
-__rte_experimental
 struct rte_kvargs *rte_kvargs_parse_delim(const char *args,
 		const char *const valid_keys[],
 		const char *valid_ends);
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index a07166b4d2..75b13fcb78 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,6 +4,7 @@ DPDK_22 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_parse;
+	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
@@ -12,7 +13,6 @@ DPDK_22 {
 EXPERIMENTAL {
 	global:
 
-	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
 	# added in 21.05
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 2/5] kvargs: promote get from key as stable
  2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 1/5] kvargs: promote delimited parsing as stable Olivier Matz
@ 2021-09-24 15:57 ` Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 3/5] kvargs: new function to get from key and value Olivier Matz
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-24 15:57 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

The function rte_kvargs_get() is used by eal and pci bus driver since
its introduction in commit 3ab385063cb9 ("kvargs: add get by key") and
commit d2a66ad79480 ("bus: add device arguments name parsing"), in
dpdk 21.05.

Let's promote it as stable.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/kvargs/rte_kvargs.h | 1 -
 lib/kvargs/version.map  | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index c30891c668..328f0d3cc6 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -130,7 +130,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 75b13fcb78..236f35c02b 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -3,6 +3,7 @@ DPDK_22 {
 
 	rte_kvargs_count;
 	rte_kvargs_free;
+	rte_kvargs_get;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
@@ -15,6 +16,4 @@ EXPERIMENTAL {
 
 	rte_kvargs_strcmp;
 
-	# added in 21.05
-	rte_kvargs_get;
 };
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 3/5] kvargs: new function to get from key and value
  2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 1/5] kvargs: promote delimited parsing as stable Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 2/5] kvargs: promote get from key " Olivier Matz
@ 2021-09-24 15:57 ` Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 4/5] kvargs: remove experimental function to compare string Olivier Matz
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-24 15:57 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

A quite common scenario with kvargs is to lookup for a <key>=<value> in
a kvlist. For instance, check if name=foo is present in
name=toto,name=foo,name=bar. This is currently done in drivers/bus with
rte_kvargs_process() + the rte_kvargs_strcmp() handler.

This approach is not straightforward, and can be replaced by this new
function.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 drivers/bus/auxiliary/auxiliary_params.c |  9 ++++----
 drivers/bus/vdev/vdev_params.c           | 13 ++---------
 lib/kvargs/rte_kvargs.c                  | 23 +++++++++++++++----
 lib/kvargs/rte_kvargs.h                  | 29 +++++++++++++++++++++++-
 lib/kvargs/version.map                   |  2 ++
 5 files changed, 54 insertions(+), 22 deletions(-)

diff --git a/drivers/bus/auxiliary/auxiliary_params.c b/drivers/bus/auxiliary/auxiliary_params.c
index cd3fa56cb4..a9c7853ed1 100644
--- a/drivers/bus/auxiliary/auxiliary_params.c
+++ b/drivers/bus/auxiliary/auxiliary_params.c
@@ -25,13 +25,12 @@ auxiliary_dev_match(const struct rte_device *dev,
 	      const void *_kvlist)
 {
 	const struct rte_kvargs *kvlist = _kvlist;
-	int ret;
+	const char *key = auxiliary_params_keys[RTE_AUXILIARY_PARAM_NAME];
 
-	ret = rte_kvargs_process(kvlist,
-			auxiliary_params_keys[RTE_AUXILIARY_PARAM_NAME],
-			rte_kvargs_strcmp, (void *)(uintptr_t)dev->name);
+	if (rte_kvargs_get_with_value(kvlist, key, dev->name) == NULL)
+		return -1;
 
-	return ret != 0 ? -1 : 0;
+	return 0;
 }
 
 void *
diff --git a/drivers/bus/vdev/vdev_params.c b/drivers/bus/vdev/vdev_params.c
index 6f74704d1c..37d95395e7 100644
--- a/drivers/bus/vdev/vdev_params.c
+++ b/drivers/bus/vdev/vdev_params.c
@@ -26,19 +26,10 @@ static int
 vdev_dev_match(const struct rte_device *dev,
 	       const void *_kvlist)
 {
-	int ret;
 	const struct rte_kvargs *kvlist = _kvlist;
-	char *name;
+	const char *key = vdev_params_keys[RTE_VDEV_PARAM_NAME];
 
-	/* cannot pass const dev->name to rte_kvargs_process() */
-	name = strdup(dev->name);
-	if (name == NULL)
-		return -1;
-	ret = rte_kvargs_process(kvlist,
-		vdev_params_keys[RTE_VDEV_PARAM_NAME],
-		rte_kvargs_strcmp, name);
-	free(name);
-	if (ret != 0)
+	if (rte_kvargs_get_with_value(kvlist, key, dev->name) == NULL)
 		return -1;
 
 	return 0;
diff --git a/lib/kvargs/rte_kvargs.c b/lib/kvargs/rte_kvargs.c
index 38e9d5c1ca..20abb23183 100644
--- a/lib/kvargs/rte_kvargs.c
+++ b/lib/kvargs/rte_kvargs.c
@@ -204,21 +204,34 @@ rte_kvargs_free(struct rte_kvargs *kvlist)
 	free(kvlist);
 }
 
-/* Lookup a value in an rte_kvargs list by its key. */
+/* Lookup a value in an rte_kvargs list by its key and value. */
 const char *
-rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key)
+rte_kvargs_get_with_value(const struct rte_kvargs *kvlist, const char *key,
+			  const char *value)
 {
 	unsigned int i;
 
-	if (kvlist == NULL || key == NULL)
+	if (kvlist == NULL)
 		return NULL;
 	for (i = 0; i < kvlist->count; ++i) {
-		if (strcmp(kvlist->pairs[i].key, key) == 0)
-			return kvlist->pairs[i].value;
+		if (key != NULL && strcmp(kvlist->pairs[i].key, key) != 0)
+			continue;
+		if (value != NULL && strcmp(kvlist->pairs[i].value, value) != 0)
+			continue;
+		return kvlist->pairs[i].value;
 	}
 	return NULL;
 }
 
+/* Lookup a value in an rte_kvargs list by its key. */
+const char *
+rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key)
+{
+	if (kvlist == NULL || key == NULL)
+		return NULL;
+	return rte_kvargs_get_with_value(kvlist, key, NULL);
+}
+
 /*
  * Parse the arguments "key=value,key=value,..." string and return
  * an allocated structure that contains a key/value list. Also
diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 328f0d3cc6..e40df1bd2a 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -116,7 +116,7 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 /**
  * Get the value associated with a given key.
  *
- * If multiple key matches, the value of the first one is returned.
+ * If multiple keys match, the value of the first one is returned.
  *
  * The memory returned is allocated as part of the rte_kvargs structure,
  * it must never be modified.
@@ -132,6 +132,33 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
  */
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change without prior notice
+ *
+ * Get the value associated with a given key and value.
+ *
+ * Find the first entry in the kvlist whose key and value match the
+ * ones passed as argument.
+ *
+ * The memory returned is allocated as part of the rte_kvargs structure,
+ * it must never be modified.
+ *
+ * @param kvlist
+ *   A list of rte_kvargs pair of 'key=value'.
+ * @param key
+ *   The matching key. If NULL, any key will match.
+ * @param value
+ *   The matching value. If NULL, any value will match.
+ *
+ * @return
+ *   NULL if no key matches the input,
+ *   a value associated with a matching key otherwise.
+ */
+__rte_experimental
+const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
+				      const char *key, const char *value);
+
 /**
  * Call a handler function for each key/value matching the key
  *
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 236f35c02b..82879b7140 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -16,4 +16,6 @@ EXPERIMENTAL {
 
 	rte_kvargs_strcmp;
 
+	# added in 21.11
+	rte_kvargs_get_with_value;
 };
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 4/5] kvargs: remove experimental function to compare string
  2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
                   ` (2 preceding siblings ...)
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 3/5] kvargs: new function to get from key and value Olivier Matz
@ 2021-09-24 15:57 ` Olivier Matz
  2021-09-26 16:30   ` Olivier Matz
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 5/5] kvargs: fix comments style Olivier Matz
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 19+ messages in thread
From: Olivier Matz @ 2021-09-24 15:57 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

The function was designed to be used as a handler for
rte_kvargs_process() to compare the value string in a kvlist. For
readability, its usages in DPDK have been replaced by
rte_kvargs_get_with_value() in previous commit.

Remove this function, as it is not used anymore.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/kvargs/rte_kvargs.c |  9 ---------
 lib/kvargs/rte_kvargs.h | 26 --------------------------
 2 files changed, 35 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.c b/lib/kvargs/rte_kvargs.c
index 20abb23183..11f624ef14 100644
--- a/lib/kvargs/rte_kvargs.c
+++ b/lib/kvargs/rte_kvargs.c
@@ -283,12 +283,3 @@ rte_kvargs_parse_delim(const char *args, const char * const valid_keys[],
 	free(copy);
 	return kvlist;
 }
-
-int
-rte_kvargs_strcmp(const char *key __rte_unused,
-		  const char *value, void *opaque)
-{
-	const char *str = opaque;
-
-	return -abs(strcmp(str, value));
-}
diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index e40df1bd2a..3c1754c3d9 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -197,32 +197,6 @@ int rte_kvargs_process(const struct rte_kvargs *kvlist,
 unsigned rte_kvargs_count(const struct rte_kvargs *kvlist,
 	const char *key_match);
 
-/**
- * Generic kvarg handler for string comparison.
- *
- * This function can be used for a generic string comparison processing
- * on a list of kvargs.
- *
- * @param key
- *   kvarg pair key.
- *
- * @param value
- *   kvarg pair value.
- *
- * @param opaque
- *   Opaque pointer to a string.
- *
- * @return
- *   0 if the strings match.
- *   !0 otherwise or on error.
- *
- *   Unlike strcmp, comparison ordering is not kept.
- *   In order for rte_kvargs_process to stop processing on match error,
- *   a negative value is returned even if strcmp had returned a positive one.
- */
-__rte_experimental
-int rte_kvargs_strcmp(const char *key, const char *value, void *opaque);
-
 #ifdef __cplusplus
 }
 #endif
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 5/5] kvargs: fix comments style
  2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
                   ` (3 preceding siblings ...)
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 4/5] kvargs: remove experimental function to compare string Olivier Matz
@ 2021-09-24 15:57 ` Olivier Matz
  2021-09-25  7:02 ` [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Xueming(Steven) Li
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
  6 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-24 15:57 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

A '*' is missing at 2 places, add them.

Fixes: e1a00536c8ed ("kvargs: add a new library to parse key/value arguments")
Fixes: 3ab385063cb9 ("kvargs: add get by key")

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/kvargs/rte_kvargs.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 3c1754c3d9..359a9f5b09 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -125,7 +125,7 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
  *   A list of rte_kvargs pair of 'key=value'.
  * @param key
  *   The matching key.
-
+ *
  * @return
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
@@ -190,7 +190,7 @@ int rte_kvargs_process(const struct rte_kvargs *kvlist,
  *   The rte_kvargs structure
  * @param key_match
  *   The key that should match, or NULL to count all associations
-
+ *
  * @return
  *   The number of entries
  */
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api
  2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
                   ` (4 preceding siblings ...)
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 5/5] kvargs: fix comments style Olivier Matz
@ 2021-09-25  7:02 ` Xueming(Steven) Li
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
  6 siblings, 0 replies; 19+ messages in thread
From: Xueming(Steven) Li @ 2021-09-25  7:02 UTC (permalink / raw)
  To: olivier.matz, dev; +Cc: mdr, bruce.richardson, grive

On Fri, 2021-09-24 at 17:57 +0200, Olivier Matz wrote:
> This patchset promotes 2 functions rte_kvargs_parse_delim() and
> rte_kvargs_get() as stable.
> 
> It also replaces rte_kvargs_strcmp() by a new one
> rte_kvargs_get_with_value(), which is easier to use.
> 
> Olivier Matz (5):
>   kvargs: promote delimited parsing as stable
>   kvargs: promote get from key as stable
>   kvargs: new function to get from key and value
>   kvargs: remove experimental function to compare string
>   kvargs: fix comments style
> 
>  drivers/bus/auxiliary/auxiliary_params.c |  9 ++--
>  drivers/bus/vdev/vdev_params.c           | 13 +-----
>  lib/kvargs/rte_kvargs.c                  | 32 +++++++------
>  lib/kvargs/rte_kvargs.h                  | 59 ++++++++++++------------
>  lib/kvargs/version.map                   |  7 +--
>  5 files changed, 57 insertions(+), 63 deletions(-)
> 

The whole series looks good to me, the new function that match key and
value directly looks more efficient, thanks!

Reviewed-by: Xueming Li <xuemingl@nvidia.com>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH 4/5] kvargs: remove experimental function to compare string
  2021-09-24 15:57 ` [dpdk-dev] [PATCH 4/5] kvargs: remove experimental function to compare string Olivier Matz
@ 2021-09-26 16:30   ` Olivier Matz
  0 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-26 16:30 UTC (permalink / raw)
  To: dev; +Cc: Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

On Fri, Sep 24, 2021 at 05:57:39PM +0200, Olivier Matz wrote:
> The function was designed to be used as a handler for
> rte_kvargs_process() to compare the value string in a kvlist. For
> readability, its usages in DPDK have been replaced by
> rte_kvargs_get_with_value() in previous commit.
> 
> Remove this function, as it is not used anymore.
> 
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>

Self-nack, I forgot to remove the rte_kvargs_strcmp entry
from version.map.

Will send a v2.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api
  2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
                   ` (5 preceding siblings ...)
  2021-09-25  7:02 ` [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Xueming(Steven) Li
@ 2021-09-29 21:39 ` Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 1/5] kvargs: promote delimited parsing as stable Olivier Matz
                     ` (5 more replies)
  6 siblings, 6 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-29 21:39 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

This patchset promotes 2 functions rte_kvargs_parse_delim() and
rte_kvargs_get() as stable.

It also replaces rte_kvargs_strcmp() by a new one
rte_kvargs_get_with_value(), which is easier to use.

v2
* remove rte_kvargs_strcmp from version.map

Olivier Matz (5):
  kvargs: promote delimited parsing as stable
  kvargs: promote get from key as stable
  kvargs: new function to get from key and value
  kvargs: remove experimental function to compare string
  kvargs: fix comments style

 drivers/bus/auxiliary/auxiliary_params.c |  9 ++--
 drivers/bus/vdev/vdev_params.c           | 13 +-----
 lib/kvargs/rte_kvargs.c                  | 32 +++++++------
 lib/kvargs/rte_kvargs.h                  | 59 ++++++++++++------------
 lib/kvargs/version.map                   |  9 ++--
 5 files changed, 57 insertions(+), 65 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v2 1/5] kvargs: promote delimited parsing as stable
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
@ 2021-09-29 21:39   ` Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 2/5] kvargs: promote get from key " Olivier Matz
                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-29 21:39 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

This function is used by EAL to parse key/value strings separated with
specified delimiters.

It was introduced in 2018 by commit 5d6af85ab00c ("kvargs: introduce a
more flexible parsing function"), and can be promoted as stable.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Xueming Li <xuemingl@nvidia.com>
---
 lib/kvargs/rte_kvargs.h | 1 -
 lib/kvargs/version.map  | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 12a8f90435..c30891c668 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -98,7 +98,6 @@ struct rte_kvargs *rte_kvargs_parse(const char *args,
  *   - A pointer to an allocated rte_kvargs structure on success
  *   - NULL on error
  */
-__rte_experimental
 struct rte_kvargs *rte_kvargs_parse_delim(const char *args,
 		const char *const valid_keys[],
 		const char *valid_ends);
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index a07166b4d2..75b13fcb78 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,6 +4,7 @@ DPDK_22 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_parse;
+	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
@@ -12,7 +13,6 @@ DPDK_22 {
 EXPERIMENTAL {
 	global:
 
-	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
 	# added in 21.05
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v2 2/5] kvargs: promote get from key as stable
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 1/5] kvargs: promote delimited parsing as stable Olivier Matz
@ 2021-09-29 21:39   ` Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 3/5] kvargs: new function to get from key and value Olivier Matz
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-29 21:39 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

The function rte_kvargs_get() is used by eal and pci bus driver since
its introduction in commit 3ab385063cb9 ("kvargs: add get by key") and
commit d2a66ad79480 ("bus: add device arguments name parsing"), in
dpdk 21.05.

Let's promote it as stable.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Xueming Li <xuemingl@nvidia.com>
---
 lib/kvargs/rte_kvargs.h | 1 -
 lib/kvargs/version.map  | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index c30891c668..328f0d3cc6 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -130,7 +130,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 75b13fcb78..236f35c02b 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -3,6 +3,7 @@ DPDK_22 {
 
 	rte_kvargs_count;
 	rte_kvargs_free;
+	rte_kvargs_get;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
@@ -15,6 +16,4 @@ EXPERIMENTAL {
 
 	rte_kvargs_strcmp;
 
-	# added in 21.05
-	rte_kvargs_get;
 };
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v2 3/5] kvargs: new function to get from key and value
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 1/5] kvargs: promote delimited parsing as stable Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 2/5] kvargs: promote get from key " Olivier Matz
@ 2021-09-29 21:39   ` Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 4/5] kvargs: remove experimental function to compare string Olivier Matz
                     ` (2 subsequent siblings)
  5 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-29 21:39 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

A quite common scenario with kvargs is to lookup for a <key>=<value> in
a kvlist. For instance, check if name=foo is present in
name=toto,name=foo,name=bar. This is currently done in drivers/bus with
rte_kvargs_process() + the rte_kvargs_strcmp() handler.

This approach is not straightforward, and can be replaced by this new
function.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Xueming Li <xuemingl@nvidia.com>
---
 drivers/bus/auxiliary/auxiliary_params.c |  9 ++++----
 drivers/bus/vdev/vdev_params.c           | 13 ++---------
 lib/kvargs/rte_kvargs.c                  | 23 +++++++++++++++----
 lib/kvargs/rte_kvargs.h                  | 29 +++++++++++++++++++++++-
 lib/kvargs/version.map                   |  2 ++
 5 files changed, 54 insertions(+), 22 deletions(-)

diff --git a/drivers/bus/auxiliary/auxiliary_params.c b/drivers/bus/auxiliary/auxiliary_params.c
index cd3fa56cb4..a9c7853ed1 100644
--- a/drivers/bus/auxiliary/auxiliary_params.c
+++ b/drivers/bus/auxiliary/auxiliary_params.c
@@ -25,13 +25,12 @@ auxiliary_dev_match(const struct rte_device *dev,
 	      const void *_kvlist)
 {
 	const struct rte_kvargs *kvlist = _kvlist;
-	int ret;
+	const char *key = auxiliary_params_keys[RTE_AUXILIARY_PARAM_NAME];
 
-	ret = rte_kvargs_process(kvlist,
-			auxiliary_params_keys[RTE_AUXILIARY_PARAM_NAME],
-			rte_kvargs_strcmp, (void *)(uintptr_t)dev->name);
+	if (rte_kvargs_get_with_value(kvlist, key, dev->name) == NULL)
+		return -1;
 
-	return ret != 0 ? -1 : 0;
+	return 0;
 }
 
 void *
diff --git a/drivers/bus/vdev/vdev_params.c b/drivers/bus/vdev/vdev_params.c
index 6f74704d1c..37d95395e7 100644
--- a/drivers/bus/vdev/vdev_params.c
+++ b/drivers/bus/vdev/vdev_params.c
@@ -26,19 +26,10 @@ static int
 vdev_dev_match(const struct rte_device *dev,
 	       const void *_kvlist)
 {
-	int ret;
 	const struct rte_kvargs *kvlist = _kvlist;
-	char *name;
+	const char *key = vdev_params_keys[RTE_VDEV_PARAM_NAME];
 
-	/* cannot pass const dev->name to rte_kvargs_process() */
-	name = strdup(dev->name);
-	if (name == NULL)
-		return -1;
-	ret = rte_kvargs_process(kvlist,
-		vdev_params_keys[RTE_VDEV_PARAM_NAME],
-		rte_kvargs_strcmp, name);
-	free(name);
-	if (ret != 0)
+	if (rte_kvargs_get_with_value(kvlist, key, dev->name) == NULL)
 		return -1;
 
 	return 0;
diff --git a/lib/kvargs/rte_kvargs.c b/lib/kvargs/rte_kvargs.c
index 38e9d5c1ca..20abb23183 100644
--- a/lib/kvargs/rte_kvargs.c
+++ b/lib/kvargs/rte_kvargs.c
@@ -204,21 +204,34 @@ rte_kvargs_free(struct rte_kvargs *kvlist)
 	free(kvlist);
 }
 
-/* Lookup a value in an rte_kvargs list by its key. */
+/* Lookup a value in an rte_kvargs list by its key and value. */
 const char *
-rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key)
+rte_kvargs_get_with_value(const struct rte_kvargs *kvlist, const char *key,
+			  const char *value)
 {
 	unsigned int i;
 
-	if (kvlist == NULL || key == NULL)
+	if (kvlist == NULL)
 		return NULL;
 	for (i = 0; i < kvlist->count; ++i) {
-		if (strcmp(kvlist->pairs[i].key, key) == 0)
-			return kvlist->pairs[i].value;
+		if (key != NULL && strcmp(kvlist->pairs[i].key, key) != 0)
+			continue;
+		if (value != NULL && strcmp(kvlist->pairs[i].value, value) != 0)
+			continue;
+		return kvlist->pairs[i].value;
 	}
 	return NULL;
 }
 
+/* Lookup a value in an rte_kvargs list by its key. */
+const char *
+rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key)
+{
+	if (kvlist == NULL || key == NULL)
+		return NULL;
+	return rte_kvargs_get_with_value(kvlist, key, NULL);
+}
+
 /*
  * Parse the arguments "key=value,key=value,..." string and return
  * an allocated structure that contains a key/value list. Also
diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 328f0d3cc6..e40df1bd2a 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -116,7 +116,7 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 /**
  * Get the value associated with a given key.
  *
- * If multiple key matches, the value of the first one is returned.
+ * If multiple keys match, the value of the first one is returned.
  *
  * The memory returned is allocated as part of the rte_kvargs structure,
  * it must never be modified.
@@ -132,6 +132,33 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
  */
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change without prior notice
+ *
+ * Get the value associated with a given key and value.
+ *
+ * Find the first entry in the kvlist whose key and value match the
+ * ones passed as argument.
+ *
+ * The memory returned is allocated as part of the rte_kvargs structure,
+ * it must never be modified.
+ *
+ * @param kvlist
+ *   A list of rte_kvargs pair of 'key=value'.
+ * @param key
+ *   The matching key. If NULL, any key will match.
+ * @param value
+ *   The matching value. If NULL, any value will match.
+ *
+ * @return
+ *   NULL if no key matches the input,
+ *   a value associated with a matching key otherwise.
+ */
+__rte_experimental
+const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
+				      const char *key, const char *value);
+
 /**
  * Call a handler function for each key/value matching the key
  *
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 236f35c02b..82879b7140 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -16,4 +16,6 @@ EXPERIMENTAL {
 
 	rte_kvargs_strcmp;
 
+	# added in 21.11
+	rte_kvargs_get_with_value;
 };
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v2 4/5] kvargs: remove experimental function to compare string
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
                     ` (2 preceding siblings ...)
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 3/5] kvargs: new function to get from key and value Olivier Matz
@ 2021-09-29 21:39   ` Olivier Matz
  2021-09-30 14:00     ` Olivier Matz
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 5/5] kvargs: fix comments style Olivier Matz
  2021-09-30  8:25   ` [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api David Marchand
  5 siblings, 1 reply; 19+ messages in thread
From: Olivier Matz @ 2021-09-29 21:39 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

The function was designed to be used as a handler for
rte_kvargs_process() to compare the value string in a kvlist. For
readability, its usages in DPDK have been replaced by
rte_kvargs_get_with_value() in previous commit.

Remove this function, as it is not used anymore.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Xueming Li <xuemingl@nvidia.com>
---
 lib/kvargs/rte_kvargs.c |  9 ---------
 lib/kvargs/rte_kvargs.h | 26 --------------------------
 lib/kvargs/version.map  |  2 --
 3 files changed, 37 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.c b/lib/kvargs/rte_kvargs.c
index 20abb23183..11f624ef14 100644
--- a/lib/kvargs/rte_kvargs.c
+++ b/lib/kvargs/rte_kvargs.c
@@ -283,12 +283,3 @@ rte_kvargs_parse_delim(const char *args, const char * const valid_keys[],
 	free(copy);
 	return kvlist;
 }
-
-int
-rte_kvargs_strcmp(const char *key __rte_unused,
-		  const char *value, void *opaque)
-{
-	const char *str = opaque;
-
-	return -abs(strcmp(str, value));
-}
diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index e40df1bd2a..3c1754c3d9 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -197,32 +197,6 @@ int rte_kvargs_process(const struct rte_kvargs *kvlist,
 unsigned rte_kvargs_count(const struct rte_kvargs *kvlist,
 	const char *key_match);
 
-/**
- * Generic kvarg handler for string comparison.
- *
- * This function can be used for a generic string comparison processing
- * on a list of kvargs.
- *
- * @param key
- *   kvarg pair key.
- *
- * @param value
- *   kvarg pair value.
- *
- * @param opaque
- *   Opaque pointer to a string.
- *
- * @return
- *   0 if the strings match.
- *   !0 otherwise or on error.
- *
- *   Unlike strcmp, comparison ordering is not kept.
- *   In order for rte_kvargs_process to stop processing on match error,
- *   a negative value is returned even if strcmp had returned a positive one.
- */
-__rte_experimental
-int rte_kvargs_strcmp(const char *key, const char *value, void *opaque);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 82879b7140..0d42cd58a8 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -14,8 +14,6 @@ DPDK_22 {
 EXPERIMENTAL {
 	global:
 
-	rte_kvargs_strcmp;
-
 	# added in 21.11
 	rte_kvargs_get_with_value;
 };
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v2 5/5] kvargs: fix comments style
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
                     ` (3 preceding siblings ...)
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 4/5] kvargs: remove experimental function to compare string Olivier Matz
@ 2021-09-29 21:39   ` Olivier Matz
  2021-09-30  8:25   ` [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api David Marchand
  5 siblings, 0 replies; 19+ messages in thread
From: Olivier Matz @ 2021-09-29 21:39 UTC (permalink / raw)
  To: dev
  Cc: Olivier Matz, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

A '*' is missing at 2 places, add them.

Fixes: e1a00536c8ed ("kvargs: add a new library to parse key/value arguments")
Fixes: 3ab385063cb9 ("kvargs: add get by key")

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Xueming Li <xuemingl@nvidia.com>
---
 lib/kvargs/rte_kvargs.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 3c1754c3d9..359a9f5b09 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -125,7 +125,7 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
  *   A list of rte_kvargs pair of 'key=value'.
  * @param key
  *   The matching key.
-
+ *
  * @return
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
@@ -190,7 +190,7 @@ int rte_kvargs_process(const struct rte_kvargs *kvlist,
  *   The rte_kvargs structure
  * @param key_match
  *   The key that should match, or NULL to count all associations
-
+ *
  * @return
  *   The number of entries
  */
-- 
2.30.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api
  2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
                     ` (4 preceding siblings ...)
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 5/5] kvargs: fix comments style Olivier Matz
@ 2021-09-30  8:25   ` David Marchand
  2021-09-30  9:57     ` Kinsella, Ray
  5 siblings, 1 reply; 19+ messages in thread
From: David Marchand @ 2021-09-30  8:25 UTC (permalink / raw)
  To: Olivier Matz
  Cc: dev, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

On Wed, Sep 29, 2021 at 11:40 PM Olivier Matz <olivier.matz@6wind.com> wrote:
>
> This patchset promotes 2 functions rte_kvargs_parse_delim() and
> rte_kvargs_get() as stable.
>
> It also replaces rte_kvargs_strcmp() by a new one
> rte_kvargs_get_with_value(), which is easier to use.
>
> v2
> * remove rte_kvargs_strcmp from version.map
>
> Olivier Matz (5):
>   kvargs: promote delimited parsing as stable
>   kvargs: promote get from key as stable
>   kvargs: new function to get from key and value
>   kvargs: remove experimental function to compare string
>   kvargs: fix comments style

Thanks, for the series,
Reviewed-by: David Marchand <david.marchand@redhat.com>


-- 
David Marchand


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api
  2021-09-30  8:25   ` [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api David Marchand
@ 2021-09-30  9:57     ` Kinsella, Ray
  2021-09-30 16:19       ` David Marchand
  0 siblings, 1 reply; 19+ messages in thread
From: Kinsella, Ray @ 2021-09-30  9:57 UTC (permalink / raw)
  To: David Marchand, Olivier Matz
  Cc: dev, Bruce Richardson, Xueming Li, Gaetan Rivet



On 30/09/2021 09:25, David Marchand wrote:
> On Wed, Sep 29, 2021 at 11:40 PM Olivier Matz <olivier.matz@6wind.com> wrote:
>>
>> This patchset promotes 2 functions rte_kvargs_parse_delim() and
>> rte_kvargs_get() as stable.
>>
>> It also replaces rte_kvargs_strcmp() by a new one
>> rte_kvargs_get_with_value(), which is easier to use.
>>
>> v2
>> * remove rte_kvargs_strcmp from version.map
>>
>> Olivier Matz (5):
>>   kvargs: promote delimited parsing as stable
>>   kvargs: promote get from key as stable
>>   kvargs: new function to get from key and value
>>   kvargs: remove experimental function to compare string
>>   kvargs: fix comments style
> 
> Thanks, for the series,
> Reviewed-by: David Marchand <david.marchand@redhat.com>
> 
Acked-by: Ray Kinsella <mdr@ashroe.eu>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v2 4/5] kvargs: remove experimental function to compare string
  2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 4/5] kvargs: remove experimental function to compare string Olivier Matz
@ 2021-09-30 14:00     ` Olivier Matz
  2021-09-30 15:19       ` David Marchand
  0 siblings, 1 reply; 19+ messages in thread
From: Olivier Matz @ 2021-09-30 14:00 UTC (permalink / raw)
  To: dev, David Marchand
  Cc: Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

On Wed, Sep 29, 2021 at 11:39:42PM +0200, Olivier Matz wrote:
> The function was designed to be used as a handler for
> rte_kvargs_process() to compare the value string in a kvlist. For
> readability, its usages in DPDK have been replaced by
> rte_kvargs_get_with_value() in previous commit.
> 
> Remove this function, as it is not used anymore.
> 
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> Reviewed-by: Xueming Li <xuemingl@nvidia.com>

Maybe a quick note could be added in the release note. Something like
this:

* kvargs: The experimental function ``rte_kvargs_strcmp()`` has been
  removed. Its usages have been replaced by a new function
  ``rte_kvargs_get_with_value()``.

David, do you want me to send a v3 with this note?

Thanks,
Olivier

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v2 4/5] kvargs: remove experimental function to compare string
  2021-09-30 14:00     ` Olivier Matz
@ 2021-09-30 15:19       ` David Marchand
  0 siblings, 0 replies; 19+ messages in thread
From: David Marchand @ 2021-09-30 15:19 UTC (permalink / raw)
  To: Olivier Matz
  Cc: dev, Bruce Richardson, Xueming Li, Gaetan Rivet, Ray Kinsella

On Thu, Sep 30, 2021 at 4:00 PM Olivier Matz <olivier.matz@6wind.com> wrote:
>
> On Wed, Sep 29, 2021 at 11:39:42PM +0200, Olivier Matz wrote:
> > The function was designed to be used as a handler for
> > rte_kvargs_process() to compare the value string in a kvlist. For
> > readability, its usages in DPDK have been replaced by
> > rte_kvargs_get_with_value() in previous commit.
> >
> > Remove this function, as it is not used anymore.
> >
> > Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> > Reviewed-by: Xueming Li <xuemingl@nvidia.com>
>
> Maybe a quick note could be added in the release note. Something like
> this:
>
> * kvargs: The experimental function ``rte_kvargs_strcmp()`` has been
>   removed. Its usages have been replaced by a new function
>   ``rte_kvargs_get_with_value()``.
>
> David, do you want me to send a v3 with this note?

Yes, a RN update for API changes is a good practice :-).
No need to send v3, I'll add it and merge the series (soon).

Thanks Olivier.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api
  2021-09-30  9:57     ` Kinsella, Ray
@ 2021-09-30 16:19       ` David Marchand
  0 siblings, 0 replies; 19+ messages in thread
From: David Marchand @ 2021-09-30 16:19 UTC (permalink / raw)
  To: Olivier Matz
  Cc: dev, Kinsella, Ray, Bruce Richardson, Xueming Li, Gaetan Rivet

On Thu, Sep 30, 2021 at 11:57 AM Kinsella, Ray <mdr@ashroe.eu> wrote:
> On 30/09/2021 09:25, David Marchand wrote:
> > On Wed, Sep 29, 2021 at 11:40 PM Olivier Matz <olivier.matz@6wind.com> wrote:
> >>
> >> This patchset promotes 2 functions rte_kvargs_parse_delim() and
> >> rte_kvargs_get() as stable.
> >>
> >> It also replaces rte_kvargs_strcmp() by a new one
> >> rte_kvargs_get_with_value(), which is easier to use.
> >>
> >> v2
> >> * remove rte_kvargs_strcmp from version.map
> >>
> >> Olivier Matz (5):
> >>   kvargs: promote delimited parsing as stable
> >>   kvargs: promote get from key as stable
> >>   kvargs: new function to get from key and value
> >>   kvargs: remove experimental function to compare string
> >>   kvargs: fix comments style
> >
> > Thanks, for the series,
> > Reviewed-by: David Marchand <david.marchand@redhat.com>
> Acked-by: Ray Kinsella <mdr@ashroe.eu>
>

Added RN update and applied as discussed.
Thanks.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2021-09-30 16:19 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-24 15:57 [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Olivier Matz
2021-09-24 15:57 ` [dpdk-dev] [PATCH 1/5] kvargs: promote delimited parsing as stable Olivier Matz
2021-09-24 15:57 ` [dpdk-dev] [PATCH 2/5] kvargs: promote get from key " Olivier Matz
2021-09-24 15:57 ` [dpdk-dev] [PATCH 3/5] kvargs: new function to get from key and value Olivier Matz
2021-09-24 15:57 ` [dpdk-dev] [PATCH 4/5] kvargs: remove experimental function to compare string Olivier Matz
2021-09-26 16:30   ` Olivier Matz
2021-09-24 15:57 ` [dpdk-dev] [PATCH 5/5] kvargs: fix comments style Olivier Matz
2021-09-25  7:02 ` [dpdk-dev] [PATCH 0/5] kvargs: promote or remove experimental api Xueming(Steven) Li
2021-09-29 21:39 ` [dpdk-dev] [PATCH v2 " Olivier Matz
2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 1/5] kvargs: promote delimited parsing as stable Olivier Matz
2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 2/5] kvargs: promote get from key " Olivier Matz
2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 3/5] kvargs: new function to get from key and value Olivier Matz
2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 4/5] kvargs: remove experimental function to compare string Olivier Matz
2021-09-30 14:00     ` Olivier Matz
2021-09-30 15:19       ` David Marchand
2021-09-29 21:39   ` [dpdk-dev] [PATCH v2 5/5] kvargs: fix comments style Olivier Matz
2021-09-30  8:25   ` [dpdk-dev] [PATCH v2 0/5] kvargs: promote or remove experimental api David Marchand
2021-09-30  9:57     ` Kinsella, Ray
2021-09-30 16:19       ` David Marchand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).