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

