From patchwork Thu Aug 10 18:05:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 130094 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A1BBD4302D; Thu, 10 Aug 2023 20:05:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 56A79410EE; Thu, 10 Aug 2023 20:05:28 +0200 (CEST) Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by mails.dpdk.org (Postfix) with ESMTP id 4A545410EE for ; Thu, 10 Aug 2023 20:05:27 +0200 (CEST) Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-564b8e60ce9so812853a12.2 for ; Thu, 10 Aug 2023 11:05:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20221208.gappssmtp.com; s=20221208; t=1691690726; x=1692295526; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=BlO8cWP5xxhj1OOt20s99E0gX6DEPe1DAbJ3cRZFMZE=; b=VXZm42yEaceFyGU1uRZD3WTnrfGJmnVU14PNjmyyoDDJdYU44jCIn5JFuCLndIirkI oEYoZlfFDTMRwWoXY9a1XYT7deBy3Fqah9flTpmykg85nS/KgDcB8+QccTUyayzX1zo8 JM+oHzwsAjU3JEIju4DVSACOy+zmOoV8K3lktGBUqHu1D3BlqyAo64KcHE3ukerESbrh CVqZ00WK+5A7iXW7vw+2quLOs1eQeAgzm2Furl4V81/560UzbDOCToG+Esh7/CXslFnr CYjXu6HJP2A0TGXArPjl3i0OXDSISVZl4NXWRs9FOdICMtdYQp5Qn2kM7Sbh71KKS/Gx 1i7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691690726; x=1692295526; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=BlO8cWP5xxhj1OOt20s99E0gX6DEPe1DAbJ3cRZFMZE=; b=Rm7OkDaGd2ILp3PS8xdRWgSVUZXvdx27RLG+Ty/75HmeAfjC4PU3B6R+U66Gh+N58q +ga7tlZef2lTaJnWVOMTDn55iq0xrb1JsxxEgdoCfc5GNmbnBVvqyLcuErNqFnh0caSH R7b7X9o9ksQlnVIzq9WmOYZMuQvJe7oyfFXx5wl3D9OFBgQawm7Girpr5mcMdDYCggV9 RoPwuah50OsMGB8MEtt+KUpsZfvKbmIVYUY/8PTrPMw1ID8eX3KMUAL1rUljDvnCiSum yncMmZaMtulda/NyFX8bfpHEMj7bMNF2myKHtCZmd5hBjUlvPNP2mzVKrRmRUGRNEApc n/fQ== X-Gm-Message-State: AOJu0Yyh73k1EwFN2Wbdrl3Oyvq+5MtT2+SFyQfhH1ATJxuBN22gDwMe vxNpIJ0d3RuEVQ+CKq9pFD4MErxNQyv2QiSIkfPfbA== X-Google-Smtp-Source: AGHT+IGZj5wKfCyzhnvNe85cQG8Jbxu9YWU2pEzmMvDzd2C10asBgXeKJquhQtDELemL0LlvynHddg== X-Received: by 2002:a17:90a:9402:b0:259:10a8:2389 with SMTP id r2-20020a17090a940200b0025910a82389mr2411948pjo.35.1691690725925; Thu, 10 Aug 2023 11:05:25 -0700 (PDT) Received: from hermes.local (204-195-127-207.wavecable.com. [204.195.127.207]) by smtp.gmail.com with ESMTPSA id gv12-20020a17090b11cc00b002681131c36csm3658652pjb.45.2023.08.10.11.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Aug 2023 11:05:25 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Thomas Monjalon , Jerin Jacob , Kiran Kumar K , Nithin Dabilpuram , Zhirun Yan Subject: [PATCH] graph: mark API's as stable Date: Thu, 10 Aug 2023 11:05:15 -0700 Message-Id: <20230810180515.113700-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The graph library has been marked experimental since initial release in 2020. Time to take the training wheels off. Signed-off-by: Stephen Hemminger Acked-by: Jerin Jacob Acked-by: Zhirun Yan --- MAINTAINERS | 2 +- lib/graph/rte_graph.h | 34 ---------------------- lib/graph/rte_graph_model_mcore_dispatch.h | 8 ----- lib/graph/rte_graph_worker.h | 1 - lib/graph/rte_graph_worker_common.h | 18 ------------ lib/graph/version.map | 2 +- 6 files changed, 2 insertions(+), 63 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 6345e7f8a65d..0d36c7e7e84d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1705,7 +1705,7 @@ F: app/test/test_bpf.c F: app/test-pmd/bpf_cmd.* F: doc/guides/prog_guide/bpf_lib.rst -Graph - EXPERIMENTAL +Graph M: Jerin Jacob M: Kiran Kumar K M: Nithin Dabilpuram diff --git a/lib/graph/rte_graph.h b/lib/graph/rte_graph.h index 7e94c151ae42..7c606eda710d 100644 --- a/lib/graph/rte_graph.h +++ b/lib/graph/rte_graph.h @@ -8,10 +8,6 @@ /** * @file rte_graph.h * - * @warning - * @b EXPERIMENTAL: - * All functions in this file may be changed or removed without prior notice. - * * Graph architecture abstracts the data processing functions as * "node" and "link" them together to create a complex "graph" to enable * reusable/modular data processing functions. @@ -249,7 +245,6 @@ struct rte_graph_cluster_node_stats { * @return * Unique graph id on success, RTE_GRAPH_ID_INVALID otherwise. */ -__rte_experimental rte_graph_t rte_graph_create(const char *name, struct rte_graph_param *prm); /** @@ -263,7 +258,6 @@ rte_graph_t rte_graph_create(const char *name, struct rte_graph_param *prm); * @return * 0 on success, error otherwise. */ -__rte_experimental int rte_graph_destroy(rte_graph_t id); /** @@ -285,7 +279,6 @@ int rte_graph_destroy(rte_graph_t id); * @return * Valid graph id on success, RTE_GRAPH_ID_INVALID otherwise. */ -__rte_experimental rte_graph_t rte_graph_clone(rte_graph_t id, const char *name, struct rte_graph_param *prm); /** @@ -297,7 +290,6 @@ rte_graph_t rte_graph_clone(rte_graph_t id, const char *name, struct rte_graph_p * @return * Graph id on success, RTE_GRAPH_ID_INVALID otherwise. */ -__rte_experimental rte_graph_t rte_graph_from_name(const char *name); /** @@ -309,7 +301,6 @@ rte_graph_t rte_graph_from_name(const char *name); * @return * Graph name on success, NULL otherwise. */ -__rte_experimental char *rte_graph_id_to_name(rte_graph_t id); /** @@ -323,7 +314,6 @@ char *rte_graph_id_to_name(rte_graph_t id); * @return * 0 on success, error otherwise. */ -__rte_experimental int rte_graph_export(const char *name, FILE *f); /** @@ -336,7 +326,6 @@ int rte_graph_export(const char *name, FILE *f); * @return * 0 on success, error otherwise. */ -__rte_experimental int rte_graph_model_mcore_dispatch_core_bind(rte_graph_t id, int lcore); /** @@ -345,7 +334,6 @@ int rte_graph_model_mcore_dispatch_core_bind(rte_graph_t id, int lcore); * @param id * Graph id to get the pointer of graph object */ -__rte_experimental void rte_graph_model_mcore_dispatch_core_unbind(rte_graph_t id); /** @@ -362,7 +350,6 @@ void rte_graph_model_mcore_dispatch_core_unbind(rte_graph_t id); * * @see rte_graph_walk() */ -__rte_experimental struct rte_graph *rte_graph_lookup(const char *name); /** @@ -371,7 +358,6 @@ struct rte_graph *rte_graph_lookup(const char *name); * @return * Maximum graph count. */ -__rte_experimental rte_graph_t rte_graph_max_count(void); /** @@ -382,7 +368,6 @@ rte_graph_t rte_graph_max_count(void); * @param id * Graph id to get graph info. */ -__rte_experimental void rte_graph_dump(FILE *f, rte_graph_t id); /** @@ -391,7 +376,6 @@ void rte_graph_dump(FILE *f, rte_graph_t id); * @param f * File pointer to dump graph info. */ -__rte_experimental void rte_graph_list_dump(FILE *f); /** @@ -404,7 +388,6 @@ void rte_graph_list_dump(FILE *f); * @param all * true to dump nodes in the graph. */ -__rte_experimental void rte_graph_obj_dump(FILE *f, struct rte_graph *graph, bool all); /** Macro to browse rte_node object after the graph creation */ @@ -425,7 +408,6 @@ void rte_graph_obj_dump(FILE *f, struct rte_graph *graph, bool all); * @return * Node pointer on success, NULL otherwise. */ -__rte_experimental struct rte_node *rte_graph_node_get(rte_graph_t graph_id, rte_node_t node_id); /** @@ -439,7 +421,6 @@ struct rte_node *rte_graph_node_get(rte_graph_t graph_id, rte_node_t node_id); * @return * Node pointer on success, NULL otherwise. */ -__rte_experimental struct rte_node *rte_graph_node_get_by_name(const char *graph, const char *name); @@ -453,7 +434,6 @@ struct rte_node *rte_graph_node_get_by_name(const char *graph, * @return * Valid pointer on success, NULL otherwise. */ -__rte_experimental struct rte_graph_cluster_stats *rte_graph_cluster_stats_create( const struct rte_graph_cluster_stats_param *prm); @@ -463,7 +443,6 @@ struct rte_graph_cluster_stats *rte_graph_cluster_stats_create( * @param stat * Valid cluster pointer to destroy. */ -__rte_experimental void rte_graph_cluster_stats_destroy(struct rte_graph_cluster_stats *stat); /** @@ -474,7 +453,6 @@ void rte_graph_cluster_stats_destroy(struct rte_graph_cluster_stats *stat); * @param skip_cb * true to skip callback function invocation. */ -__rte_experimental void rte_graph_cluster_stats_get(struct rte_graph_cluster_stats *stat, bool skip_cb); @@ -484,7 +462,6 @@ void rte_graph_cluster_stats_get(struct rte_graph_cluster_stats *stat, * @param stat * Valid cluster stats pointer. */ -__rte_experimental void rte_graph_cluster_stats_reset(struct rte_graph_cluster_stats *stat); /** @@ -518,7 +495,6 @@ struct rte_node_register { * * @see RTE_NODE_REGISTER() */ -__rte_experimental rte_node_t __rte_node_register(const struct rte_node_register *node); /** @@ -550,7 +526,6 @@ rte_node_t __rte_node_register(const struct rte_node_register *node); * @return * Valid node id on success, RTE_NODE_ID_INVALID otherwise. */ -__rte_experimental rte_node_t rte_node_clone(rte_node_t id, const char *name); /** @@ -563,7 +538,6 @@ rte_node_t rte_node_clone(rte_node_t id, const char *name); * @return * Valid node id on success, RTE_NODE_ID_INVALID otherwise. */ -__rte_experimental rte_node_t rte_node_from_name(const char *name); /** @@ -575,7 +549,6 @@ rte_node_t rte_node_from_name(const char *name); * @return * Valid node name on success, NULL otherwise. */ -__rte_experimental char *rte_node_id_to_name(rte_node_t id); /** @@ -587,7 +560,6 @@ char *rte_node_id_to_name(rte_node_t id); * @return * Valid edge count on success, RTE_EDGE_ID_INVALID otherwise. */ -__rte_experimental rte_edge_t rte_node_edge_count(rte_node_t id); /** @@ -606,7 +578,6 @@ rte_edge_t rte_node_edge_count(rte_node_t id); * @return * Valid edge count on success, 0 otherwise. */ -__rte_experimental rte_edge_t rte_node_edge_update(rte_node_t id, rte_edge_t from, const char **next_nodes, uint16_t nb_edges); @@ -621,7 +592,6 @@ rte_edge_t rte_node_edge_update(rte_node_t id, rte_edge_t from, * @return * New size on success, RTE_EDGE_ID_INVALID otherwise. */ -__rte_experimental rte_edge_t rte_node_edge_shrink(rte_node_t id, rte_edge_t size); /** @@ -637,7 +607,6 @@ rte_edge_t rte_node_edge_shrink(rte_node_t id, rte_edge_t size); * When next_nodes == NULL, it returns the size of the array else * number of item copied. */ -__rte_experimental rte_node_t rte_node_edge_get(rte_node_t id, char *next_nodes[]); /** @@ -646,7 +615,6 @@ rte_node_t rte_node_edge_get(rte_node_t id, char *next_nodes[]); * @return * Maximum nodes count. */ -__rte_experimental rte_node_t rte_node_max_count(void); /** @@ -657,7 +625,6 @@ rte_node_t rte_node_max_count(void); * @param id * Node id to get the info. */ -__rte_experimental void rte_node_dump(FILE *f, rte_node_t id); /** @@ -666,7 +633,6 @@ void rte_node_dump(FILE *f, rte_node_t id); * @param f * File pointer to dump the node info. */ -__rte_experimental void rte_node_list_dump(FILE *f); /** diff --git a/lib/graph/rte_graph_model_mcore_dispatch.h b/lib/graph/rte_graph_model_mcore_dispatch.h index 3bf210a82933..75ec388cada7 100644 --- a/lib/graph/rte_graph_model_mcore_dispatch.h +++ b/lib/graph/rte_graph_model_mcore_dispatch.h @@ -8,10 +8,6 @@ /** * @file rte_graph_model_mcore_dispatch.h * - * @warning - * @b EXPERIMENTAL: - * All functions in this file may be changed or removed without prior notice. - * * These APIs allow to set core affinity with the node and only used for mcore * dispatch model. */ @@ -48,7 +44,6 @@ extern "C" { * This implementation is used by mcore dispatch model only and user application * should not call it directly. */ -__rte_experimental bool __rte_noinline __rte_graph_mcore_dispatch_sched_node_enqueue(struct rte_node *node, struct rte_graph_rq_head *rq); @@ -64,7 +59,6 @@ bool __rte_noinline __rte_graph_mcore_dispatch_sched_node_enqueue(struct rte_nod * This implementation is used by mcore dispatch model only and user application * should not call it directly. */ -__rte_experimental void __rte_graph_mcore_dispatch_sched_wq_process(struct rte_graph *graph); /** @@ -79,7 +73,6 @@ void __rte_graph_mcore_dispatch_sched_wq_process(struct rte_graph *graph); * @return * 0 on success, error otherwise. */ -__rte_experimental int rte_graph_model_mcore_dispatch_node_lcore_affinity_set(const char *name, unsigned int lcore_id); @@ -92,7 +85,6 @@ int rte_graph_model_mcore_dispatch_node_lcore_affinity_set(const char *name, * * @see rte_graph_lookup() */ -__rte_experimental static inline void rte_graph_walk_mcore_dispatch(struct rte_graph *graph) { diff --git a/lib/graph/rte_graph_worker.h b/lib/graph/rte_graph_worker.h index 6685600813ac..03d0e01b6850 100644 --- a/lib/graph/rte_graph_worker.h +++ b/lib/graph/rte_graph_worker.h @@ -22,7 +22,6 @@ extern "C" { * * @see rte_graph_lookup() */ -__rte_experimental static inline void rte_graph_walk(struct rte_graph *graph) { diff --git a/lib/graph/rte_graph_worker_common.h b/lib/graph/rte_graph_worker_common.h index a3824590cd6a..3a18dc4ef25c 100644 --- a/lib/graph/rte_graph_worker_common.h +++ b/lib/graph/rte_graph_worker_common.h @@ -8,10 +8,6 @@ /** * @file rte_graph_worker_common.h * - * @warning - * @b EXPERIMENTAL: - * All functions in this file may be changed or removed without prior notice. - * * This API allows a worker thread to walk over a graph and nodes to create, * process, enqueue and move streams of objects to the next nodes. */ @@ -148,7 +144,6 @@ struct rte_node { * @param node * Pointer to the node object. */ -__rte_experimental void __rte_node_stream_alloc(struct rte_graph *graph, struct rte_node *node); /** @@ -165,7 +160,6 @@ void __rte_node_stream_alloc(struct rte_graph *graph, struct rte_node *node); * @param req_size * Number of objects to be allocated. */ -__rte_experimental void __rte_node_stream_alloc_size(struct rte_graph *graph, struct rte_node *node, uint16_t req_size); @@ -293,7 +287,6 @@ __rte_node_next_node_get(struct rte_node *node, rte_edge_t next) * @param nb_objs * Number of objs to enqueue. */ -__rte_experimental static inline void rte_node_enqueue(struct rte_graph *graph, struct rte_node *node, rte_edge_t next, void **objs, uint16_t nb_objs) @@ -320,7 +313,6 @@ rte_node_enqueue(struct rte_graph *graph, struct rte_node *node, * @param obj * Obj to enqueue. */ -__rte_experimental static inline void rte_node_enqueue_x1(struct rte_graph *graph, struct rte_node *node, rte_edge_t next, void *obj) @@ -350,7 +342,6 @@ rte_node_enqueue_x1(struct rte_graph *graph, struct rte_node *node, * @param obj1 * Obj to enqueue. */ -__rte_experimental static inline void rte_node_enqueue_x2(struct rte_graph *graph, struct rte_node *node, rte_edge_t next, void *obj0, void *obj1) @@ -385,7 +376,6 @@ rte_node_enqueue_x2(struct rte_graph *graph, struct rte_node *node, * @param obj3 * 4th obj to enqueue. */ -__rte_experimental static inline void rte_node_enqueue_x4(struct rte_graph *graph, struct rte_node *node, rte_edge_t next, void *obj0, void *obj1, void *obj2, @@ -419,7 +409,6 @@ rte_node_enqueue_x4(struct rte_graph *graph, struct rte_node *node, * @param nb_objs * Number of objs to enqueue. */ -__rte_experimental static inline void rte_node_enqueue_next(struct rte_graph *graph, struct rte_node *node, rte_edge_t *nexts, void **objs, uint16_t nb_objs) @@ -449,7 +438,6 @@ rte_node_enqueue_next(struct rte_graph *graph, struct rte_node *node, * * @see rte_node_next_stream_put(). */ -__rte_experimental static inline void ** rte_node_next_stream_get(struct rte_graph *graph, struct rte_node *node, rte_edge_t next, uint16_t nb_objs) @@ -480,7 +468,6 @@ rte_node_next_stream_get(struct rte_graph *graph, struct rte_node *node, * * @see rte_node_next_stream_get(). */ -__rte_experimental static inline void rte_node_next_stream_put(struct rte_graph *graph, struct rte_node *node, rte_edge_t next, uint16_t idx) @@ -509,7 +496,6 @@ rte_node_next_stream_put(struct rte_graph *graph, struct rte_node *node, * @param next * Relative next node index. */ -__rte_experimental static inline void rte_node_next_stream_move(struct rte_graph *graph, struct rte_node *src, rte_edge_t next) @@ -540,7 +526,6 @@ rte_node_next_stream_move(struct rte_graph *graph, struct rte_node *src, * @return * True if graph model is valid, false otherwise. */ -__rte_experimental bool rte_graph_model_is_valid(uint8_t model); @@ -554,7 +539,6 @@ rte_graph_model_is_valid(uint8_t model); * @return * 0 on success, -1 otherwise. */ -__rte_experimental int rte_graph_worker_model_set(uint8_t model); /** @@ -569,7 +553,6 @@ int rte_graph_worker_model_set(uint8_t model); * @return * Graph worker model on success. */ -__rte_experimental uint8_t rte_graph_worker_model_get(struct rte_graph *graph); /** @@ -584,7 +567,6 @@ uint8_t rte_graph_worker_model_get(struct rte_graph *graph); * @return * Graph worker model on success. */ -__rte_experimental static __rte_always_inline uint8_t rte_graph_worker_model_no_check_get(struct rte_graph *graph) { diff --git a/lib/graph/version.map b/lib/graph/version.map index 7e985d630820..7ec1de89585b 100644 --- a/lib/graph/version.map +++ b/lib/graph/version.map @@ -1,4 +1,4 @@ -EXPERIMENTAL { +DPDK_24 { global: __rte_graph_mcore_dispatch_sched_node_enqueue;