DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] rib: promote experimental API's to stable
@ 2021-08-31 21:49 Stephen Hemminger
  2021-09-01 19:15 ` Medvedkin, Vladimir
  0 siblings, 1 reply; 3+ messages in thread
From: Stephen Hemminger @ 2021-08-31 21:49 UTC (permalink / raw)
  To: vladimir.medvedkin; +Cc: dev, Stephen Hemminger

The rib and rib6 API's have been in since 19.11 and
should be marked as stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/rib/rte_rib.h   | 18 ------------------
 lib/rib/rte_rib6.h  | 18 ------------------
 lib/rib/version.map |  2 +-
 3 files changed, 1 insertion(+), 37 deletions(-)

diff --git a/lib/rib/rte_rib.h b/lib/rib/rte_rib.h
index ec97079c3565..bebb30f7d7cf 100644
--- a/lib/rib/rte_rib.h
+++ b/lib/rib/rte_rib.h
@@ -11,10 +11,6 @@
  *
  * RTE RIB library.
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Level compressed tree implementation for IPv4 Longest Prefix Match
  */
 
@@ -78,7 +74,6 @@ rte_rib_depth_to_mask(uint8_t depth)
  *  pointer to struct rte_rib_node on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib_node *
 rte_rib_lookup(struct rte_rib *rib, uint32_t ip);
 
@@ -92,7 +87,6 @@ rte_rib_lookup(struct rte_rib *rib, uint32_t ip);
  *   less specific route on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib_node *
 rte_rib_lookup_parent(struct rte_rib_node *ent);
 
@@ -109,7 +103,6 @@ rte_rib_lookup_parent(struct rte_rib_node *ent);
  *  pointer to struct rte_rib_node on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib_node *
 rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth);
 
@@ -136,7 +129,6 @@ rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth);
  *  pointer to the next more specific prefix
  *  NULL if there is no prefixes left
  */
-__rte_experimental
 struct rte_rib_node *
 rte_rib_get_nxt(struct rte_rib *rib, uint32_t ip, uint8_t depth,
 	struct rte_rib_node *last, int flag);
@@ -151,7 +143,6 @@ rte_rib_get_nxt(struct rte_rib *rib, uint32_t ip, uint8_t depth,
  * @param depth
  *  prefix length
  */
-__rte_experimental
 void
 rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth);
 
@@ -168,7 +159,6 @@ rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth);
  *  pointer to new rte_rib_node on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib_node *
 rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
 
@@ -183,7 +173,6 @@ rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
  *  0 on success.
  *  -1 on failure with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip);
 
@@ -198,7 +187,6 @@ rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip);
  *  0 on success.
  *  -1 on failure with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth);
 
@@ -212,7 +200,6 @@ rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth);
  * @return
  *  pointer to the ext
  */
-__rte_experimental
 void *
 rte_rib_get_ext(struct rte_rib_node *node);
 
@@ -227,7 +214,6 @@ rte_rib_get_ext(struct rte_rib_node *node);
  *  0 on success.
  *  -1 on failure with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh);
 
@@ -242,7 +228,6 @@ rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh);
  *  0 on success.
  *  -1 on failure with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
 
@@ -259,7 +244,6 @@ rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
  *  Handle to RIB object on success
  *  NULL otherwise with rte_errno indicating reason for failure.
  */
-__rte_experimental
 struct rte_rib *
 rte_rib_create(const char *name, int socket_id,
 	       const struct rte_rib_conf *conf);
@@ -273,7 +257,6 @@ rte_rib_create(const char *name, int socket_id,
  *  Pointer to RIB object on success
  *  NULL otherwise with rte_errno indicating reason for failure.
  */
-__rte_experimental
 struct rte_rib *
 rte_rib_find_existing(const char *name);
 
@@ -285,7 +268,6 @@ rte_rib_find_existing(const char *name);
  * @return
  *   None
  */
-__rte_experimental
 void
 rte_rib_free(struct rte_rib *rib);
 
diff --git a/lib/rib/rte_rib6.h b/lib/rib/rte_rib6.h
index dbd52928a243..6f532265c657 100644
--- a/lib/rib/rte_rib6.h
+++ b/lib/rib/rte_rib6.h
@@ -11,10 +11,6 @@
  *
  * RTE rib6 library.
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Level compressed tree implementation for IPv6 Longest Prefix Match
  */
 
@@ -127,7 +123,6 @@ get_msk_part(uint8_t depth, int byte) {
  *  pointer to struct rte_rib6_node on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib6_node *
 rte_rib6_lookup(struct rte_rib6 *rib,
 	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
@@ -142,7 +137,6 @@ rte_rib6_lookup(struct rte_rib6 *rib,
  *   less specific route on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib6_node *
 rte_rib6_lookup_parent(struct rte_rib6_node *ent);
 
@@ -159,7 +153,6 @@ rte_rib6_lookup_parent(struct rte_rib6_node *ent);
  *  pointer to struct rte_rib6_node on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib6_node *
 rte_rib6_lookup_exact(struct rte_rib6 *rib,
 	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
@@ -187,7 +180,6 @@ rte_rib6_lookup_exact(struct rte_rib6 *rib,
  *  pointer to the next more specific prefix
  *  NULL if there is no prefixes left
  */
-__rte_experimental
 struct rte_rib6_node *
 rte_rib6_get_nxt(struct rte_rib6 *rib,
 	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE],
@@ -203,7 +195,6 @@ rte_rib6_get_nxt(struct rte_rib6 *rib,
  * @param depth
  *  prefix length
  */
-__rte_experimental
 void
 rte_rib6_remove(struct rte_rib6 *rib,
 	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
@@ -221,7 +212,6 @@ rte_rib6_remove(struct rte_rib6 *rib,
  *  pointer to new rte_rib6_node on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_rib6_node *
 rte_rib6_insert(struct rte_rib6 *rib,
 	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
@@ -237,7 +227,6 @@ rte_rib6_insert(struct rte_rib6 *rib,
  *  0 on success
  *  -1 on failure with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib6_get_ip(const struct rte_rib6_node *node,
 		uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
@@ -253,7 +242,6 @@ rte_rib6_get_ip(const struct rte_rib6_node *node,
  *  0 on success
  *  -1 on failure with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth);
 
@@ -267,7 +255,6 @@ rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth);
  * @return
  *  pointer to the ext
  */
-__rte_experimental
 void *
 rte_rib6_get_ext(struct rte_rib6_node *node);
 
@@ -282,7 +269,6 @@ rte_rib6_get_ext(struct rte_rib6_node *node);
  *  0 on success
  *  -1 on failure, with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh);
 
@@ -297,7 +283,6 @@ rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh);
  *  0 on success
  *  -1 on failure, with rte_errno indicating reason for failure.
  */
-__rte_experimental
 int
 rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh);
 
@@ -314,7 +299,6 @@ rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh);
  *  Pointer to RIB object on success
  *  NULL otherwise with rte_errno indicating reason for failure.
  */
-__rte_experimental
 struct rte_rib6 *
 rte_rib6_create(const char *name, int socket_id,
 		const struct rte_rib6_conf *conf);
@@ -328,7 +312,6 @@ rte_rib6_create(const char *name, int socket_id,
  *  Pointer to RIB object on success
  *  NULL otherwise with rte_errno indicating reason for failure.
  */
-__rte_experimental
 struct rte_rib6 *
 rte_rib6_find_existing(const char *name);
 
@@ -340,7 +323,6 @@ rte_rib6_find_existing(const char *name);
  * @return
  *   None
  */
-__rte_experimental
 void
 rte_rib6_free(struct rte_rib6 *rib);
 
diff --git a/lib/rib/version.map b/lib/rib/version.map
index 9b6161a09238..6eb1252acb12 100644
--- a/lib/rib/version.map
+++ b/lib/rib/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_22 {
 	global:
 
 	rte_rib_create;
-- 
2.30.2


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

* Re: [dpdk-dev] [PATCH] rib: promote experimental API's to stable
  2021-08-31 21:49 [dpdk-dev] [PATCH] rib: promote experimental API's to stable Stephen Hemminger
@ 2021-09-01 19:15 ` Medvedkin, Vladimir
  2021-10-02  9:00   ` David Marchand
  0 siblings, 1 reply; 3+ messages in thread
From: Medvedkin, Vladimir @ 2021-09-01 19:15 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev

Hi Stephen,

Thanks!

Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>

On 31/08/2021 23:49, Stephen Hemminger wrote:
> The rib and rib6 API's have been in since 19.11 and
> should be marked as stable.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>   lib/rib/rte_rib.h   | 18 ------------------
>   lib/rib/rte_rib6.h  | 18 ------------------
>   lib/rib/version.map |  2 +-
>   3 files changed, 1 insertion(+), 37 deletions(-)
> 
> diff --git a/lib/rib/rte_rib.h b/lib/rib/rte_rib.h
> index ec97079c3565..bebb30f7d7cf 100644
> --- a/lib/rib/rte_rib.h
> +++ b/lib/rib/rte_rib.h
> @@ -11,10 +11,6 @@
>    *
>    * RTE RIB library.
>    *
> - * @warning
> - * @b EXPERIMENTAL:
> - * All functions in this file may be changed or removed without prior notice.
> - *
>    * Level compressed tree implementation for IPv4 Longest Prefix Match
>    */
>   
> @@ -78,7 +74,6 @@ rte_rib_depth_to_mask(uint8_t depth)
>    *  pointer to struct rte_rib_node on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib_node *
>   rte_rib_lookup(struct rte_rib *rib, uint32_t ip);
>   
> @@ -92,7 +87,6 @@ rte_rib_lookup(struct rte_rib *rib, uint32_t ip);
>    *   less specific route on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib_node *
>   rte_rib_lookup_parent(struct rte_rib_node *ent);
>   
> @@ -109,7 +103,6 @@ rte_rib_lookup_parent(struct rte_rib_node *ent);
>    *  pointer to struct rte_rib_node on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib_node *
>   rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth);
>   
> @@ -136,7 +129,6 @@ rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth);
>    *  pointer to the next more specific prefix
>    *  NULL if there is no prefixes left
>    */
> -__rte_experimental
>   struct rte_rib_node *
>   rte_rib_get_nxt(struct rte_rib *rib, uint32_t ip, uint8_t depth,
>   	struct rte_rib_node *last, int flag);
> @@ -151,7 +143,6 @@ rte_rib_get_nxt(struct rte_rib *rib, uint32_t ip, uint8_t depth,
>    * @param depth
>    *  prefix length
>    */
> -__rte_experimental
>   void
>   rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth);
>   
> @@ -168,7 +159,6 @@ rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth);
>    *  pointer to new rte_rib_node on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib_node *
>   rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
>   
> @@ -183,7 +173,6 @@ rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
>    *  0 on success.
>    *  -1 on failure with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip);
>   
> @@ -198,7 +187,6 @@ rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip);
>    *  0 on success.
>    *  -1 on failure with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth);
>   
> @@ -212,7 +200,6 @@ rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth);
>    * @return
>    *  pointer to the ext
>    */
> -__rte_experimental
>   void *
>   rte_rib_get_ext(struct rte_rib_node *node);
>   
> @@ -227,7 +214,6 @@ rte_rib_get_ext(struct rte_rib_node *node);
>    *  0 on success.
>    *  -1 on failure with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh);
>   
> @@ -242,7 +228,6 @@ rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh);
>    *  0 on success.
>    *  -1 on failure with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
>   
> @@ -259,7 +244,6 @@ rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
>    *  Handle to RIB object on success
>    *  NULL otherwise with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   struct rte_rib *
>   rte_rib_create(const char *name, int socket_id,
>   	       const struct rte_rib_conf *conf);
> @@ -273,7 +257,6 @@ rte_rib_create(const char *name, int socket_id,
>    *  Pointer to RIB object on success
>    *  NULL otherwise with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   struct rte_rib *
>   rte_rib_find_existing(const char *name);
>   
> @@ -285,7 +268,6 @@ rte_rib_find_existing(const char *name);
>    * @return
>    *   None
>    */
> -__rte_experimental
>   void
>   rte_rib_free(struct rte_rib *rib);
>   
> diff --git a/lib/rib/rte_rib6.h b/lib/rib/rte_rib6.h
> index dbd52928a243..6f532265c657 100644
> --- a/lib/rib/rte_rib6.h
> +++ b/lib/rib/rte_rib6.h
> @@ -11,10 +11,6 @@
>    *
>    * RTE rib6 library.
>    *
> - * @warning
> - * @b EXPERIMENTAL:
> - * All functions in this file may be changed or removed without prior notice.
> - *
>    * Level compressed tree implementation for IPv6 Longest Prefix Match
>    */
>   
> @@ -127,7 +123,6 @@ get_msk_part(uint8_t depth, int byte) {
>    *  pointer to struct rte_rib6_node on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib6_node *
>   rte_rib6_lookup(struct rte_rib6 *rib,
>   	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
> @@ -142,7 +137,6 @@ rte_rib6_lookup(struct rte_rib6 *rib,
>    *   less specific route on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib6_node *
>   rte_rib6_lookup_parent(struct rte_rib6_node *ent);
>   
> @@ -159,7 +153,6 @@ rte_rib6_lookup_parent(struct rte_rib6_node *ent);
>    *  pointer to struct rte_rib6_node on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib6_node *
>   rte_rib6_lookup_exact(struct rte_rib6 *rib,
>   	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
> @@ -187,7 +180,6 @@ rte_rib6_lookup_exact(struct rte_rib6 *rib,
>    *  pointer to the next more specific prefix
>    *  NULL if there is no prefixes left
>    */
> -__rte_experimental
>   struct rte_rib6_node *
>   rte_rib6_get_nxt(struct rte_rib6 *rib,
>   	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE],
> @@ -203,7 +195,6 @@ rte_rib6_get_nxt(struct rte_rib6 *rib,
>    * @param depth
>    *  prefix length
>    */
> -__rte_experimental
>   void
>   rte_rib6_remove(struct rte_rib6 *rib,
>   	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
> @@ -221,7 +212,6 @@ rte_rib6_remove(struct rte_rib6 *rib,
>    *  pointer to new rte_rib6_node on success
>    *  NULL otherwise
>    */
> -__rte_experimental
>   struct rte_rib6_node *
>   rte_rib6_insert(struct rte_rib6 *rib,
>   	const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
> @@ -237,7 +227,6 @@ rte_rib6_insert(struct rte_rib6 *rib,
>    *  0 on success
>    *  -1 on failure with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib6_get_ip(const struct rte_rib6_node *node,
>   		uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
> @@ -253,7 +242,6 @@ rte_rib6_get_ip(const struct rte_rib6_node *node,
>    *  0 on success
>    *  -1 on failure with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth);
>   
> @@ -267,7 +255,6 @@ rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth);
>    * @return
>    *  pointer to the ext
>    */
> -__rte_experimental
>   void *
>   rte_rib6_get_ext(struct rte_rib6_node *node);
>   
> @@ -282,7 +269,6 @@ rte_rib6_get_ext(struct rte_rib6_node *node);
>    *  0 on success
>    *  -1 on failure, with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh);
>   
> @@ -297,7 +283,6 @@ rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh);
>    *  0 on success
>    *  -1 on failure, with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   int
>   rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh);
>   
> @@ -314,7 +299,6 @@ rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh);
>    *  Pointer to RIB object on success
>    *  NULL otherwise with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   struct rte_rib6 *
>   rte_rib6_create(const char *name, int socket_id,
>   		const struct rte_rib6_conf *conf);
> @@ -328,7 +312,6 @@ rte_rib6_create(const char *name, int socket_id,
>    *  Pointer to RIB object on success
>    *  NULL otherwise with rte_errno indicating reason for failure.
>    */
> -__rte_experimental
>   struct rte_rib6 *
>   rte_rib6_find_existing(const char *name);
>   
> @@ -340,7 +323,6 @@ rte_rib6_find_existing(const char *name);
>    * @return
>    *   None
>    */
> -__rte_experimental
>   void
>   rte_rib6_free(struct rte_rib6 *rib);
>   
> diff --git a/lib/rib/version.map b/lib/rib/version.map
> index 9b6161a09238..6eb1252acb12 100644
> --- a/lib/rib/version.map
> +++ b/lib/rib/version.map
> @@ -1,4 +1,4 @@
> -EXPERIMENTAL {
> +DPDK_22 {
>   	global:
>   
>   	rte_rib_create;
> 

-- 
Regards,
Vladimir

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

* Re: [dpdk-dev] [PATCH] rib: promote experimental API's to stable
  2021-09-01 19:15 ` Medvedkin, Vladimir
@ 2021-10-02  9:00   ` David Marchand
  0 siblings, 0 replies; 3+ messages in thread
From: David Marchand @ 2021-10-02  9:00 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Medvedkin, Vladimir

On Wed, Sep 1, 2021 at 9:16 PM Medvedkin, Vladimir
<vladimir.medvedkin@intel.com> wrote:
> On 31/08/2021 23:49, Stephen Hemminger wrote:
> > The rib and rib6 API's have been in since 19.11 and
> > should be marked as stable.
> >
> > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>

Applied, thanks.


-- 
David Marchand


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

end of thread, other threads:[~2021-10-02  9:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-31 21:49 [dpdk-dev] [PATCH] rib: promote experimental API's to stable Stephen Hemminger
2021-09-01 19:15 ` Medvedkin, Vladimir
2021-10-02  9:00   ` 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).