The staged ordered ring (soring) API was introduced in 25.03 and the
core enqueue, dequeue, acquire and release functions have not changed
since.

Promote those to stable. The peek API added in 26.07 is left
experimental since it is only one release old, as is the soring and
ring headtail dump debug output which may still change.

Signed-off-by: Stephen Hemminger <[email protected]>
---
 doc/guides/rel_notes/release_26_11.rst |  5 ++
 lib/ring/rte_soring.c                  |  4 +-
 lib/ring/rte_soring.h                  | 72 --------------------------
 lib/ring/soring.c                      | 32 ++++++------
 4 files changed, 23 insertions(+), 90 deletions(-)

diff --git a/doc/guides/rel_notes/release_26_11.rst 
b/doc/guides/rel_notes/release_26_11.rst
index e9e9b1f6da..790b8943c2 100644
--- a/doc/guides/rel_notes/release_26_11.rst
+++ b/doc/guides/rel_notes/release_26_11.rst
@@ -359,6 +359,11 @@ API Changes
   ``rte_reorder_seqn``, ``rte_reorder_drain_up_to_seqn``,
   ``rte_reorder_min_seqn_set`` and ``rte_reorder_memory_footprint_get``.
 
+* ring: Promoted the staged ordered ring (soring) API from experimental
+  to stable, except the peek and dump functions.
+  The peek API added in 26.07 and the ``rte_soring_dump`` and
+  ``rte_ring_headtail_dump`` debug functions remain experimental.
+
 * telemetry: Promoted the following API from experimental to stable:
 
   * ``rte_tel_data_add_array_uint_hex``
diff --git a/lib/ring/rte_soring.c b/lib/ring/rte_soring.c
index 0d8abba69c..508de8cc74 100644
--- a/lib/ring/rte_soring.c
+++ b/lib/ring/rte_soring.c
@@ -120,7 +120,7 @@ rte_soring_dump(FILE *f, const struct rte_soring *r)
        }
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_get_memsize, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_get_memsize)
 ssize_t
 rte_soring_get_memsize(const struct rte_soring_param *prm)
 {
@@ -154,7 +154,7 @@ soring_compilation_checks(void)
                offsetof(struct soring_stage_headtail, unused));
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_init, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_init)
 int
 rte_soring_init(struct rte_soring *r, const struct rte_soring_param *prm)
 {
diff --git a/lib/ring/rte_soring.h b/lib/ring/rte_soring.h
index 69ada68b24..82f5c09dca 100644
--- a/lib/ring/rte_soring.h
+++ b/lib/ring/rte_soring.h
@@ -68,9 +68,6 @@ struct rte_soring_param {
 struct rte_soring;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Calculate the memory size needed for a soring
  *
  * This function returns the number of bytes needed for a soring, given
@@ -85,14 +82,10 @@ struct rte_soring;
  *   - The memory size needed for the soring on success.
  *   - -EINVAL if provided parameter values are invalid.
  */
-__rte_experimental
 ssize_t
 rte_soring_get_memsize(const struct rte_soring_param *prm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Initialize a soring structure.
  *
  * Initialize a soring structure in memory pointed by "r".
@@ -108,14 +101,10 @@ rte_soring_get_memsize(const struct rte_soring_param 
*prm);
  * @return
  *   - 0 on success, or a negative error code.
  */
-__rte_experimental
 int
 rte_soring_init(struct rte_soring *r,  const struct rte_soring_param *prm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the total number of filled entries in a soring.
  *
  * @param r
@@ -123,14 +112,10 @@ rte_soring_init(struct rte_soring *r,  const struct 
rte_soring_param *prm);
  * @return
  *   The number of entries in the soring.
  */
-__rte_experimental
 unsigned int
 rte_soring_count(const struct rte_soring *r);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the total number of unfilled entries in a soring.
  *
  * @param r
@@ -138,7 +123,6 @@ rte_soring_count(const struct rte_soring *r);
  * @return
  *   The number of free entries in the soring.
  */
-__rte_experimental
 unsigned int
 rte_soring_free_count(const struct rte_soring *r);
 
@@ -158,9 +142,6 @@ void
 rte_soring_dump(FILE *f, const struct rte_soring *r);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue several objects on the soring.
  * Enqueues exactly requested number of objects or none.
  *
@@ -178,15 +159,11 @@ rte_soring_dump(FILE *f, const struct rte_soring *r);
  * @return
  *   - Actual number of objects enqueued, either 0 or n.
  */
-__rte_experimental
 uint32_t
 rte_soring_enqueue_bulk(struct rte_soring *r, const void *objs,
        uint32_t n, uint32_t *free_space);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue several objects plus metadata on the soring.
  * Enqueues exactly requested number of objects or none.
  *
@@ -212,15 +189,11 @@ rte_soring_enqueue_bulk(struct rte_soring *r, const void 
*objs,
  * @return
  *   - Actual number of objects enqueued, either 0 or n.
  */
-__rte_experimental
 uint32_t
 rte_soring_enqueux_bulk(struct rte_soring *r, const void *objs,
        const void *meta, uint32_t n, uint32_t *free_space);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue several objects on the soring.
  * Enqueues up to requested number of objects.
  *
@@ -238,15 +211,11 @@ rte_soring_enqueux_bulk(struct rte_soring *r, const void 
*objs,
  * @return
  *   - Actual number of objects enqueued.
  */
-__rte_experimental
 uint32_t
 rte_soring_enqueue_burst(struct rte_soring *r, const void *objs,
        uint32_t n, uint32_t *free_space);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue several objects plus metadata on the soring.
  * Enqueues up to requested number of objects.
  *
@@ -272,15 +241,11 @@ rte_soring_enqueue_burst(struct rte_soring *r, const void 
*objs,
  * @return
  *   - Actual number of objects enqueued.
  */
-__rte_experimental
 uint32_t
 rte_soring_enqueux_burst(struct rte_soring *r, const void *objs,
        const void *meta, uint32_t n, uint32_t *free_space);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue several objects from the soring.
  * Dequeues exactly requested number of objects or none.
  *
@@ -298,15 +263,11 @@ rte_soring_enqueux_burst(struct rte_soring *r, const void 
*objs,
  * @return
  *   - Actual number of objects dequeued, either 0 or 'num'.
  */
-__rte_experimental
 uint32_t
 rte_soring_dequeue_bulk(struct rte_soring *r, void *objs,
        uint32_t num, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue several objects plus metadata from the soring.
  * Dequeues exactly requested number of objects or none.
  *
@@ -332,15 +293,11 @@ rte_soring_dequeue_bulk(struct rte_soring *r, void *objs,
  * @return
  *   - Actual number of objects dequeued, either 0 or 'num'.
  */
-__rte_experimental
 uint32_t
 rte_soring_dequeux_bulk(struct rte_soring *r, void *objs, void *meta,
        uint32_t num, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue several objects from the soring.
  * Dequeues up to requested number of objects.
  *
@@ -358,15 +315,11 @@ rte_soring_dequeux_bulk(struct rte_soring *r, void *objs, 
void *meta,
  * @return
  *   - Actual number of objects dequeued.
  */
-__rte_experimental
 uint32_t
 rte_soring_dequeue_burst(struct rte_soring *r, void *objs,
        uint32_t num, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue several objects plus metadata from the soring.
  * Dequeues up to requested number of objects.
  *
@@ -392,15 +345,11 @@ rte_soring_dequeue_burst(struct rte_soring *r, void *objs,
  * @return
  *   - Actual number of objects dequeued.
  */
-__rte_experimental
 uint32_t
 rte_soring_dequeux_burst(struct rte_soring *r, void *objs, void *meta,
        uint32_t num, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Acquire several objects from the soring for given stage.
  * Acquires exactly requested number of objects or none.
  *
@@ -424,15 +373,11 @@ rte_soring_dequeux_burst(struct rte_soring *r, void 
*objs, void *meta,
  * @return
  *   - Actual number of objects acquired, either 0 or 'num'.
  */
-__rte_experimental
 uint32_t
 rte_soring_acquire_bulk(struct rte_soring *r, void *objs,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Acquire several objects plus metadata from the soring for given stage.
  * Acquires exactly requested number of objects or none.
  *
@@ -464,15 +409,11 @@ rte_soring_acquire_bulk(struct rte_soring *r, void *objs,
  * @return
  *   - Actual number of objects acquired, either 0 or 'num'.
  */
-__rte_experimental
 uint32_t
 rte_soring_acquirx_bulk(struct rte_soring *r, void *objs, void *meta,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Acquire several objects from the soring for given stage.
  * Acquires up to requested number of objects.
  *
@@ -496,15 +437,11 @@ rte_soring_acquirx_bulk(struct rte_soring *r, void *objs, 
void *meta,
  * @return
  *   - Actual number of objects acquired.
  */
-__rte_experimental
 uint32_t
 rte_soring_acquire_burst(struct rte_soring *r, void *objs,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Acquire several objects plus metadata from the soring for given stage.
  * Acquires up to requested number of objects.
  *
@@ -536,15 +473,11 @@ rte_soring_acquire_burst(struct rte_soring *r, void *objs,
  * @return
  *   - Actual number of objects acquired.
  */
-__rte_experimental
 uint32_t
 rte_soring_acquirx_burst(struct rte_soring *r, void *objs, void *meta,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Release several objects for given stage back to the soring.
  * Note that it means these objects become available for next stage or
  * dequeue.
@@ -565,15 +498,11 @@ rte_soring_acquirx_burst(struct rte_soring *r, void 
*objs, void *meta,
  * @param ftoken
  *   Opaque 'token' value obtained from acquire() op.
  */
-__rte_experimental
 void
 rte_soring_release(struct rte_soring *r, const void *objs,
        uint32_t stage, uint32_t n, uint32_t ftoken);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Release several objects plus metadata for given stage back to the soring.
  * Note that it means these objects become available for next stage or
  * dequeue.
@@ -602,7 +531,6 @@ rte_soring_release(struct rte_soring *r, const void *objs,
  * @param ftoken
  *   Opaque 'token' value obtained from acquire() op.
  */
-__rte_experimental
 void
 rte_soring_releasx(struct rte_soring *r, const void *objs,
        const void *meta, uint32_t stage, uint32_t n, uint32_t ftoken);
diff --git a/lib/ring/soring.c b/lib/ring/soring.c
index 45292c0f78..d2f67a7b48 100644
--- a/lib/ring/soring.c
+++ b/lib/ring/soring.c
@@ -635,7 +635,7 @@ soring_release(struct rte_soring *r, const void *objs,
  * Public functions (data-path) start here.
  */
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_release, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_release)
 void
 rte_soring_release(struct rte_soring *r, const void *objs,
        uint32_t stage, uint32_t n, uint32_t ftoken)
@@ -644,7 +644,7 @@ rte_soring_release(struct rte_soring *r, const void *objs,
 }
 
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_releasx, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_releasx)
 void
 rte_soring_releasx(struct rte_soring *r, const void *objs,
        const void *meta, uint32_t stage, uint32_t n, uint32_t ftoken)
@@ -652,7 +652,7 @@ rte_soring_releasx(struct rte_soring *r, const void *objs,
        soring_release(r, objs, meta, stage, n, ftoken);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_enqueue_bulk, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_enqueue_bulk)
 uint32_t
 rte_soring_enqueue_bulk(struct rte_soring *r, const void *objs, uint32_t n,
        uint32_t *free_space)
@@ -661,7 +661,7 @@ rte_soring_enqueue_bulk(struct rte_soring *r, const void 
*objs, uint32_t n,
                        free_space);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_enqueux_bulk, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_enqueux_bulk)
 uint32_t
 rte_soring_enqueux_bulk(struct rte_soring *r, const void *objs,
        const void *meta, uint32_t n, uint32_t *free_space)
@@ -670,7 +670,7 @@ rte_soring_enqueux_bulk(struct rte_soring *r, const void 
*objs,
                        free_space);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_enqueue_burst, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_enqueue_burst)
 uint32_t
 rte_soring_enqueue_burst(struct rte_soring *r, const void *objs, uint32_t n,
        uint32_t *free_space)
@@ -679,7 +679,7 @@ rte_soring_enqueue_burst(struct rte_soring *r, const void 
*objs, uint32_t n,
                        free_space);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_enqueux_burst, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_enqueux_burst)
 uint32_t
 rte_soring_enqueux_burst(struct rte_soring *r, const void *objs,
        const void *meta, uint32_t n, uint32_t *free_space)
@@ -688,7 +688,7 @@ rte_soring_enqueux_burst(struct rte_soring *r, const void 
*objs,
                        free_space);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_dequeue_bulk, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_dequeue_bulk)
 uint32_t
 rte_soring_dequeue_bulk(struct rte_soring *r, void *objs, uint32_t num,
        uint32_t *available)
@@ -697,7 +697,7 @@ rte_soring_dequeue_bulk(struct rte_soring *r, void *objs, 
uint32_t num,
                        available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_dequeux_bulk, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_dequeux_bulk)
 uint32_t
 rte_soring_dequeux_bulk(struct rte_soring *r, void *objs, void *meta,
        uint32_t num, uint32_t *available)
@@ -706,7 +706,7 @@ rte_soring_dequeux_bulk(struct rte_soring *r, void *objs, 
void *meta,
                        available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_dequeue_burst, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_dequeue_burst)
 uint32_t
 rte_soring_dequeue_burst(struct rte_soring *r, void *objs, uint32_t num,
        uint32_t *available)
@@ -715,7 +715,7 @@ rte_soring_dequeue_burst(struct rte_soring *r, void *objs, 
uint32_t num,
                        available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_dequeux_burst, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_dequeux_burst)
 uint32_t
 rte_soring_dequeux_burst(struct rte_soring *r, void *objs, void *meta,
        uint32_t num, uint32_t *available)
@@ -724,7 +724,7 @@ rte_soring_dequeux_burst(struct rte_soring *r, void *objs, 
void *meta,
                        available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_acquire_bulk, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_acquire_bulk)
 uint32_t
 rte_soring_acquire_bulk(struct rte_soring *r, void *objs,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
@@ -733,7 +733,7 @@ rte_soring_acquire_bulk(struct rte_soring *r, void *objs,
                        RTE_RING_QUEUE_FIXED, ftoken, available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_acquirx_bulk, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_acquirx_bulk)
 uint32_t
 rte_soring_acquirx_bulk(struct rte_soring *r, void *objs, void *meta,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
@@ -742,7 +742,7 @@ rte_soring_acquirx_bulk(struct rte_soring *r, void *objs, 
void *meta,
                        RTE_RING_QUEUE_FIXED, ftoken, available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_acquire_burst, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_acquire_burst)
 uint32_t
 rte_soring_acquire_burst(struct rte_soring *r, void *objs,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
@@ -751,7 +751,7 @@ rte_soring_acquire_burst(struct rte_soring *r, void *objs,
                        RTE_RING_QUEUE_VARIABLE, ftoken, available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_acquirx_burst, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_acquirx_burst)
 uint32_t
 rte_soring_acquirx_burst(struct rte_soring *r, void *objs, void *meta,
        uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
@@ -760,7 +760,7 @@ rte_soring_acquirx_burst(struct rte_soring *r, void *objs, 
void *meta,
                        RTE_RING_QUEUE_VARIABLE, ftoken, available);
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_count, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_count)
 unsigned int
 rte_soring_count(const struct rte_soring *r)
 {
@@ -770,7 +770,7 @@ rte_soring_count(const struct rte_soring *r)
        return (count > r->capacity) ? r->capacity : count;
 }
 
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_soring_free_count, 25.03)
+RTE_EXPORT_SYMBOL(rte_soring_free_count)
 unsigned int
 rte_soring_free_count(const struct rte_soring *r)
 {
-- 
2.53.0

Reply via email to