From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: "Stephen Hemminger" <stephen@networkplumber.org>,
"Mattias Rönnblom" <mattias.ronnblom@ericsson.com>
Subject: [PATCH 14/20] dispatcher: promote API to stable
Date: Wed, 7 Oct 2026 14:39:44 -0700 [thread overview]
Message-ID: <20261007214115.3092715-15-stephen@networkplumber.org> (raw)
In-Reply-To: <20261007214115.3092715-1-stephen@networkplumber.org>
The dispatcher library was added in 23.11 and none of its functions
have changed since. It has been experimental for two years, which is
long enough to call the interface settled.
Promote all of it: the whole library is covered by a single file level
experimental warning in the header, so there is nothing left to keep
experimental once the symbols are promoted.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
doc/guides/rel_notes/release_26_11.rst | 4 ++++
lib/dispatcher/rte_dispatcher.c | 26 +++++++++++++-------------
lib/dispatcher/rte_dispatcher.h | 18 ------------------
3 files changed, 17 insertions(+), 31 deletions(-)
diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst
index 790b8943c2..5b60203afd 100644
--- a/doc/guides/rel_notes/release_26_11.rst
+++ b/doc/guides/rel_notes/release_26_11.rst
@@ -223,6 +223,10 @@ API Changes
* cmdline: Promoted ``cmdline_token_bool_ops`` from experimental to stable.
+* dispatcher: Promoted the whole library API from experimental to stable.
+ The ``rte_dispatcher_*`` functions are unchanged since the library was
+ added in 23.11.
+
* eal: Improved pointer arithmetic macros.
* ``RTE_PTR_ADD``, ``RTE_PTR_SUB``, ``RTE_PTR_ALIGN``, ``RTE_PTR_ALIGN_CEIL``,
diff --git a/lib/dispatcher/rte_dispatcher.c b/lib/dispatcher/rte_dispatcher.c
index a35967f7b7..2e8e121ed8 100644
--- a/lib/dispatcher/rte_dispatcher.c
+++ b/lib/dispatcher/rte_dispatcher.c
@@ -267,7 +267,7 @@ evd_service_unregister(struct rte_dispatcher *dispatcher)
return rc;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_create, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_create)
struct rte_dispatcher *
rte_dispatcher_create(uint8_t event_dev_id)
{
@@ -302,7 +302,7 @@ rte_dispatcher_create(uint8_t event_dev_id)
return dispatcher;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_free, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_free)
int
rte_dispatcher_free(struct rte_dispatcher *dispatcher)
{
@@ -320,7 +320,7 @@ rte_dispatcher_free(struct rte_dispatcher *dispatcher)
return 0;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_service_id_get, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_service_id_get)
uint32_t
rte_dispatcher_service_id_get(const struct rte_dispatcher *dispatcher)
{
@@ -344,7 +344,7 @@ lcore_port_index(struct rte_dispatcher_lcore *lcore,
return -1;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_bind_port_to_lcore, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_bind_port_to_lcore)
int
rte_dispatcher_bind_port_to_lcore(struct rte_dispatcher *dispatcher,
uint8_t event_port_id, uint16_t batch_size, uint64_t timeout,
@@ -374,7 +374,7 @@ rte_dispatcher_bind_port_to_lcore(struct rte_dispatcher *dispatcher,
return 0;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_unbind_port_from_lcore, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_unbind_port_from_lcore)
int
rte_dispatcher_unbind_port_from_lcore(struct rte_dispatcher *dispatcher,
uint8_t event_port_id, unsigned int lcore_id)
@@ -457,7 +457,7 @@ evd_install_handler(struct rte_dispatcher *dispatcher,
}
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_register, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_register)
int
rte_dispatcher_register(struct rte_dispatcher *dispatcher,
rte_dispatcher_match_t match_fun, void *match_data,
@@ -529,7 +529,7 @@ evd_uninstall_handler(struct rte_dispatcher *dispatcher, int handler_id)
return 0;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_unregister, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_unregister)
int
rte_dispatcher_unregister(struct rte_dispatcher *dispatcher, int handler_id)
{
@@ -583,7 +583,7 @@ evd_alloc_finalizer(struct rte_dispatcher *dispatcher)
return finalizer;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_finalize_register, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_finalize_register)
int
rte_dispatcher_finalize_register(struct rte_dispatcher *dispatcher,
rte_dispatcher_finalize_t finalize_fun, void *finalize_data)
@@ -601,7 +601,7 @@ rte_dispatcher_finalize_register(struct rte_dispatcher *dispatcher,
return finalizer->id;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_finalize_unregister, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_finalize_unregister)
int
rte_dispatcher_finalize_unregister(struct rte_dispatcher *dispatcher,
int finalizer_id)
@@ -653,14 +653,14 @@ evd_set_service_runstate(struct rte_dispatcher *dispatcher, int state)
RTE_VERIFY(rc == 0);
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_start, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_start)
void
rte_dispatcher_start(struct rte_dispatcher *dispatcher)
{
evd_set_service_runstate(dispatcher, 1);
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_stop, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_stop)
void
rte_dispatcher_stop(struct rte_dispatcher *dispatcher)
{
@@ -677,7 +677,7 @@ evd_aggregate_stats(struct rte_dispatcher_stats *result,
result->ev_drop_count += part->ev_drop_count;
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_stats_get, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_stats_get)
void
rte_dispatcher_stats_get(const struct rte_dispatcher *dispatcher,
struct rte_dispatcher_stats *stats)
@@ -694,7 +694,7 @@ rte_dispatcher_stats_get(const struct rte_dispatcher *dispatcher,
}
}
-RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_dispatcher_stats_reset, 23.11)
+RTE_EXPORT_SYMBOL(rte_dispatcher_stats_reset)
void
rte_dispatcher_stats_reset(struct rte_dispatcher *dispatcher)
{
diff --git a/lib/dispatcher/rte_dispatcher.h b/lib/dispatcher/rte_dispatcher.h
index ba2c353073..9f080be249 100644
--- a/lib/dispatcher/rte_dispatcher.h
+++ b/lib/dispatcher/rte_dispatcher.h
@@ -10,10 +10,6 @@
*
* RTE Dispatcher
*
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
* The purpose of the dispatcher is to help decouple different parts
* of an application (e.g., modules), sharing the same underlying
* event device.
@@ -22,7 +18,6 @@
#include <stdbool.h>
#include <stdint.h>
-#include <rte_compat.h>
#include <rte_eventdev.h>
#ifdef __cplusplus
@@ -127,7 +122,6 @@ struct rte_dispatcher_stats {
* A pointer to a new dispatcher instance, or NULL on failure, in which
* case rte_errno is set.
*/
-__rte_experimental
struct rte_dispatcher *
rte_dispatcher_create(uint8_t event_dev_id);
@@ -141,7 +135,6 @@ rte_dispatcher_create(uint8_t event_dev_id);
* - 0: Success
* - <0: Error code on failure
*/
-__rte_experimental
int
rte_dispatcher_free(struct rte_dispatcher *dispatcher);
@@ -154,7 +147,6 @@ rte_dispatcher_free(struct rte_dispatcher *dispatcher);
* @return
* The dispatcher service's id.
*/
-__rte_experimental
uint32_t
rte_dispatcher_service_id_get(const struct rte_dispatcher *dispatcher);
@@ -199,7 +191,6 @@ rte_dispatcher_service_id_get(const struct rte_dispatcher *dispatcher);
* - -EEXISTS: Event port is already configured.
* - -EINVAL: Invalid arguments.
*/
-__rte_experimental
int
rte_dispatcher_bind_port_to_lcore(struct rte_dispatcher *dispatcher,
uint8_t event_port_id, uint16_t batch_size, uint64_t timeout,
@@ -225,7 +216,6 @@ rte_dispatcher_bind_port_to_lcore(struct rte_dispatcher *dispatcher,
* - 0: Success
* - -ENOENT: Event port id not bound to this @c lcore_id.
*/
-__rte_experimental
int
rte_dispatcher_unbind_port_from_lcore(struct rte_dispatcher *dispatcher,
uint8_t event_port_id, unsigned int lcore_id);
@@ -289,7 +279,6 @@ rte_dispatcher_unbind_port_from_lcore(struct rte_dispatcher *dispatcher,
* - >= 0: The identifier for this registration.
* - -ENOMEM: Unable to allocate sufficient resources.
*/
-__rte_experimental
int
rte_dispatcher_register(struct rte_dispatcher *dispatcher,
rte_dispatcher_match_t match_fun, void *match_cb_data,
@@ -313,7 +302,6 @@ rte_dispatcher_register(struct rte_dispatcher *dispatcher,
* - 0: Success
* - -EINVAL: The @c handler_id parameter was invalid.
*/
-__rte_experimental
int
rte_dispatcher_unregister(struct rte_dispatcher *dispatcher, int handler_id);
@@ -355,7 +343,6 @@ rte_dispatcher_unregister(struct rte_dispatcher *dispatcher, int handler_id);
* - >= 0: The identifier for this registration.
* - -ENOMEM: Unable to allocate sufficient resources.
*/
-__rte_experimental
int
rte_dispatcher_finalize_register(struct rte_dispatcher *dispatcher,
rte_dispatcher_finalize_t finalize_fun, void *finalize_data);
@@ -378,7 +365,6 @@ rte_dispatcher_finalize_register(struct rte_dispatcher *dispatcher,
* - 0: Success
* - -EINVAL: The @c reg_id parameter was invalid.
*/
-__rte_experimental
int
rte_dispatcher_finalize_unregister(struct rte_dispatcher *dispatcher, int reg_id);
@@ -403,7 +389,6 @@ rte_dispatcher_finalize_unregister(struct rte_dispatcher *dispatcher, int reg_id
* @param dispatcher
* The dispatcher instance.
*/
-__rte_experimental
void
rte_dispatcher_start(struct rte_dispatcher *dispatcher);
@@ -415,7 +400,6 @@ rte_dispatcher_start(struct rte_dispatcher *dispatcher);
* @param dispatcher
* The dispatcher instance.
*/
-__rte_experimental
void
rte_dispatcher_stop(struct rte_dispatcher *dispatcher);
@@ -430,7 +414,6 @@ rte_dispatcher_stop(struct rte_dispatcher *dispatcher);
* @param[out] stats
* A pointer to a structure to fill with statistics.
*/
-__rte_experimental
void
rte_dispatcher_stats_get(const struct rte_dispatcher *dispatcher,
struct rte_dispatcher_stats *stats);
@@ -445,7 +428,6 @@ rte_dispatcher_stats_get(const struct rte_dispatcher *dispatcher,
* @param dispatcher
* The dispatcher instance.
*/
-__rte_experimental
void
rte_dispatcher_stats_reset(struct rte_dispatcher *dispatcher);
--
2.53.0
next prev parent reply other threads:[~2026-10-07 21:42 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-07 21:39 [PATCH 00/20] promote long standing experimental API to stable Stephen Hemminger
2026-10-07 21:39 ` [PATCH 01/20] eal: add missing export for rte_basename Stephen Hemminger
2026-10-08 9:56 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 02/20] eal: promote rte_basename to stable Stephen Hemminger
2026-10-08 9:56 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 03/20] eal: promote explicit zero and sensitive free " Stephen Hemminger
2026-10-08 10:01 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 04/20] eal: promote rte_size_to_str " Stephen Hemminger
2026-10-08 10:01 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 05/20] eal: promote lcore variables API " Stephen Hemminger
2026-10-08 10:04 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 06/20] cmdline: promote bool token ops " Stephen Hemminger
2026-10-08 10:05 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 07/20] ethdev: promote link connector to string " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 08/20] port: promote SWX port API " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 09/20] table: promote SWX table " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 10/20] pipeline: promote SWX IPsec " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 11/20] pipeline: promote SWX pipeline and control " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 12/20] power: promote PM QoS and uncore " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 13/20] ring: promote soring " Stephen Hemminger
2026-10-07 21:39 ` Stephen Hemminger [this message]
2026-10-07 21:39 ` [PATCH 15/20] argparse: promote " Stephen Hemminger
2026-10-08 10:15 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 16/20] node: " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 17/20] hash: promote RCU reclaim and thash key generation " Stephen Hemminger
2026-10-08 10:16 ` Bruce Richardson
2026-10-07 21:39 ` [PATCH 18/20] cryptodev: promote algorithm helpers " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 19/20] pdcp: promote API " Stephen Hemminger
2026-10-07 21:39 ` [PATCH 20/20] mempool: promote memory range and alignment " Stephen Hemminger
2026-10-08 7:19 ` Morten Brørup
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261007214115.3092715-15-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=mattias.ronnblom@ericsson.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.