DPDK patches and discussions
 help / color / mirror / Atom feed
From: Nitin Saxena <nsaxena16@gmail.com>
To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
Cc: Nitin Saxena <nsaxena@marvell.com>,
	Jerin Jacob <jerinj@marvell.com>,
	 Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>,
	Zhirun Yan <yanzhirun_163@163.com>,
	 Robin Jarry <rjarry@redhat.com>,
	Christophe Fontaine <cfontain@redhat.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [PATCH v10 4/7] graph: add feature enable/disable APIs
Date: Wed, 4 Jun 2025 21:24:22 +0530	[thread overview]
Message-ID: <CAG6-93xEZsfcn6obWxZPyPP8v_-0XBEx3E5E_T1C-or2SNwzQQ@mail.gmail.com> (raw)
In-Reply-To: <DM3PPF17CE793AB02EC69BFE7CB25E94EB3AC6CA@DM3PPF17CE793AB.namprd18.prod.outlook.com>

Hi Kiran,


On Wed, Jun 4, 2025 at 5:06 PM Kiran Kumar Kokkilagadda
<kirankumark@marvell.com> wrote:
>
>
>
> > -----Original Message-----
> > From: Nitin Saxena <nsaxena@marvell.com>
> > Sent: Wednesday, June 4, 2025 3:43 PM
> > To: Jerin Jacob <jerinj@marvell.com>; Kiran Kumar Kokkilagadda
> > <kirankumark@marvell.com>; Nithin Kumar Dabilpuram
> > <ndabilpuram@marvell.com>; Zhirun Yan <yanzhirun_163@163.com>; Robin
> > Jarry <rjarry@redhat.com>; Christophe Fontaine <cfontain@redhat.com>
> > Cc: dev@dpdk.org; Nitin Saxena <nsaxena16@gmail.com>
> > Subject: [PATCH v10 4/7] graph: add feature enable/disable APIs
> >
> > This patch also adds feature arc fast path APIs as well along with
> > documentation
> >
> > Signed-off-by: Nitin Saxena <nsaxena@marvell.com>
> > ---
> >  doc/guides/prog_guide/graph_lib.rst      | 180 ++++++
> >  lib/graph/graph_feature_arc.c            | 701 ++++++++++++++++++++++-
> >  lib/graph/meson.build                    |   2 +-
> >  lib/graph/rte_graph_feature_arc.h        | 134 ++++-
> >  lib/graph/rte_graph_feature_arc_worker.h | 305 +++++++++-
> >  5 files changed, 1314 insertions(+), 8 deletions(-)
> >
> > diff --git a/doc/guides/prog_guide/graph_lib.rst
> > b/doc/guides/prog_guide/graph_lib.rst
> > index c9ac9e7ae0..fef384d836 100644
> > --- a/doc/guides/prog_guide/graph_lib.rst
> > +++ b/doc/guides/prog_guide/graph_lib.rst
> > @@ -609,6 +609,8 @@ provides application to overload default node path by
> > providing hook
> >  points(like netfilter) to insert out-of-tree or another protocol nodes in
> >  packet path.
> >
> > +.. _Control_Data_Plane_Synchronization:
> > +
> >  Control/Data plane synchronization
> >  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >  Feature arc does not stop worker cores for any runtime control plane updates.
> > @@ -839,6 +841,11 @@ which might have allocated during feature enable.
> >  notifier_cb() is called, at runtime, for every enable/disable of ``[feature,
> >  index]`` from control thread.
> >
> > +If RCU is provided to enable/disable APIs, notifier_cb() is called after
> > +``rte_rcu_qsbr_synchronize()``. Application also needs to call
> > +``rte_rcu_qsbr_quiescent()`` in worker thread (preferably after every
> > +``rte_graph_walk()`` iteration)
> > +
> >  override_index_cb()
> >  ....................
> >  A feature arc is :ref:`registered<Feature_Arc_Registration>` to operate on
> > @@ -869,3 +876,176 @@ sub-system. If not called, feature arc has no impact
> > on application.
> >     ``rte_graph_feature_arc_init()`` API should be called before
> >     ``rte_graph_create()``. If not called, feature arc is a ``NOP`` to
> >     application.
> > +
> > +Runtime feature enable/disable
> > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > +A feature can be enabled or disabled at runtime from control thread using
> > +``rte_graph_feature_enable()`` and ``rte_graph_feature_disable()`` APIs
> > +respectively.
> > +
> > +.. code-block:: c
> > +
> > +    struct rte_rcu_qsbr *rcu_qsbr = app_get_rcu_qsbr();
> > +    rte_graph_feature_arc_t _arc;
> > +    uint16_t app_cookie;
> > +
> > +    if (rte_graph_feature_arc_lookup_by_name("Arc1", &_arc) < 0) {
> > +        RTE_LOG(ERR, GRAPH, "Arc1 not found\n");
> > +        return -ENOENT;
> > +    }
> > +    app_cookie = 100; /* Specific to ['Feature-1`, `port-0`]*/
> > +
> > +    /* Enable feature */
> > +    rte_graph_feature_enable(_arc, 0 /* port-0 */,
> > +                             "Feature-1" /* Name of the node feature */,
> > +                             app_cookie, rcu_qsbr);
> > +
> > +    /* Disable feature */
> > +    rte_graph_feature_disable(_arc, 0 /* port-0 */,
> > +                              "Feature-1" /* Name of the node feature*/,
> > +                              rcu_qsbr);
> > +
> > +.. note::
> > +
> > +   RCU argument is optional argument to enable/disable APIs. See
> > +   :ref:`control/data plane
> > +   synchronization<Control_Data_Plane_Synchronization>` and
> > +   :ref:`notifier_cb<Feature_Notifier_Cb>` for more details on when RCU is
> > +   needed.
> > +
> > +Fast path traversal rules
> > +^^^^^^^^^^^^^^^^^^^^^^^^^
> > +``Start node``
> > +**************
> > +If feature arc is :ref:`initialized<Feature_Arc_Initialization>`,
> > +``start_node_feature_process_fn()`` will be called by ``rte_graph_walk()``
> > +instead of node's original ``process()``. This function should allow packets to
> > +enter arc path whenever any feature is enabled at runtime
> > +
> > +.. code-block:: c
> > +
> > +    static int nodeA_init(const struct rte_graph *graph, struct rte_node *node)
> > +    {
> > +        rte_graph_feature_arc_t _arc;
> > +
> > +        if (rte_graph_feature_arc_lookup_by_name("Arc1", &_arc) < 0) {
> > +            RTE_LOG(ERR, GRAPH, "Arc1 not found\n");
> > +            return -ENOENT;
> > +        }
> > +
> > +        /* Save arc in node context */
> > +        node->ctx = _arc;
> > +        return 0;
> > +    }
> > +
> > +    int nodeA_process_inline(struct rte_graph *graph, struct rte_node *node,
> > +                             void **objs, uint16_t nb_objs,
> > +                             struct rte_graph_feature_arc *arc,
> > +                             const int do_arc_processing)
> > +    {
> > +        for(uint16_t i = 0; i < nb_objs; i++) {
> > +            struct rte_mbuf *mbuf = objs[i];
> > +            rte_edge_t edge_to_child = 0; /* By default to Node-B */
> > +
> > +            if (do_arc_processing) {
> > +                struct rte_graph_feature_arc_mbuf_dynfields *dyn =
> > +                    rte_graph_feature_arc_mbuf_dynfields_get(mbuf, arc-
> > >mbuf_dyn_offset);
> > +
> > +                if (rte_graph_feature_data_first_feature_get(mbuf, mbuf->port,
> > +                                                             &dyn->feature_data,
> > +                                                             &edge_to_child) < 0) {
> > +
> > +                    /* Some feature is enabled, edge_to_child is overloaded*/
> > +                }
> > +            }
> > +            /* enqueue as usual */
> > +            rte_node_enqueue_x1(graph, node, mbuf, edge_to_child);
> > +       }
> > +    }
> > +
> > +    int nodeA_feature_process_fn(struct rte_graph *graph, struct rte_node
> > *node,
> > +                                 void **objs, uint16_t nb_objs)
> > +    {
> > +        struct rte_graph_feature_arc *arc = rte_graph_feature_arc_get(node-
> > >ctx);
> > +
> > +        if (unlikely(rte_graph_feature_arc_has_any_feature(arc)))
> > +            return nodeA_process_inline(graph, node, objs, nb_objs, arc, 1 /* do
> > arc processing */);
> > +        else
> > +            return nodeA_process_inline(graph, node, objs, nb_objs, NULL, 0 /*
> > skip arc processing */);
> > +    }
> > +
> > +``Feature nodes``
> > +*****************
> > +Following code-snippet explains fast path traversal rule for ``Feature-1``
> > +:ref:`feature node<Feature_Nodes>` shown in :ref:`figure<Figure_Arc_2>`.
> > +
> > +.. code-block:: c
> > +
> > +    static int Feature1_node_init(const struct rte_graph *graph, struct
> > rte_node *node)
> > +    {
> > +        rte_graph_feature_arc_t _arc;
> > +
> > +        if (rte_graph_feature_arc_lookup_by_name("Arc1", &_arc) < 0) {
> > +            RTE_LOG(ERR, GRAPH, "Arc1 not found\n");
> > +            return -ENOENT;
> > +        }
> > +
> > +        /* Save arc in node context */
> > +        node->ctx = _arc;
> > +        return 0;
> > +    }
> > +
> > +    int feature1_process_inline(struct rte_graph *graph, struct rte_node
> > *node,
> > +                                void **objs, uint16_t nb_objs,
> > +                                struct rte_graph_feature_arc *arc)
> > +    {
> > +        for(uint16_t i = 0; i < nb_objs; i++) {
> > +            struct rte_mbuf *mbuf = objs[i];
> > +            rte_edge_t edge_to_child = 0; /* By default to Node-B */
> > +
> > +            struct rte_graph_feature_arc_mbuf_dynfields *dyn =
> > +                    rte_graph_feature_arc_mbuf_dynfields_get(mbuf, arc-
> > >mbuf_dyn_offset);
> > +
> > +            /* Get feature app cookie for mbuf */
> > +            uint16_t app_cookie = rte_graph_feature_data_app_cookie_get(mbuf,
> > &dyn->feature_data);
> > +
> > +            if (feature_local_lookup(app_cookie) {
> > +
> > +                /* Packets is relevant to this feature. Move packet from arc path */
> > +                edge_to_child = X;
> > +
> > +            } else {
> > +
> > +                /* Packet not relevant to this feature. Send this packet to
> > +                 * next enabled feature
> > +                 */
> > +                 rte_graph_feature_data_next_feature_get(mbuf, &dyn-
> > >feature_data,
> > +                                                         &edge_to_child);
> > +            }
> > +
> > +            /* enqueue as usual */
> > +            rte_node_enqueue_x1(graph, node, mbuf, edge_to_child);
> > +       }
> > +    }
> > +
> > +    int feature1_process_fn(struct rte_graph *graph, struct rte_node *node,
> > +                           void **objs, uint16_t nb_objs)
> > +    {
> > +        struct rte_graph_feature_arc *arc = rte_graph_feature_arc_get(node-
> > >ctx);
> > +
> > +        return feature1_process_inline(graph, node, objs, nb_objs, arc);
> > +    }
> > +
> > +``End feature node``
> > +********************
> > +An end feature node is a feature node through which packets exits feature arc
> > +path. It should not use any feature arc fast path APIs.
> > +
> > +Feature arc destroy
> > +^^^^^^^^^^^^^^^^^^^
> > +``rte_graph_feature_arc_destroy()`` can be used to free a arc object.
> > +
> > +Feature arc cleanup
> > +^^^^^^^^^^^^^^^^^^^
> > +``rte_graph_feature_arc_cleanup()`` can be used to free all resources
> > +associated with feature arc module.
> > diff --git a/lib/graph/graph_feature_arc.c b/lib/graph/graph_feature_arc.c
> > index b28f0ec321..9cad82947a 100644
> > --- a/lib/graph/graph_feature_arc.c
> > +++ b/lib/graph/graph_feature_arc.c
> > @@ -19,6 +19,9 @@
> >
> >  #define graph_uint_cast(f)           ((unsigned int)f)
> >
> > +#define fdata_fix_get(arc, feat, index)      \
> > +                     RTE_GRAPH_FEATURE_TO_FEATURE_DATA(arc, feat,
> > index)
> > +
> >  #define feat_dbg graph_dbg
> >
> >  #define FEAT_COND_ERR(cond, ...)                                           \
> > @@ -61,6 +64,139 @@ static STAILQ_HEAD(, rte_graph_feature_arc_register)
> > feature_arc_list =
> >  static STAILQ_HEAD(, rte_graph_feature_register) feature_list =
> >
> >       STAILQ_HEAD_INITIALIZER(feature_list);
> >
> > + /*
> > +  * feature data index is not fixed for given [feature, index], although it can
> > +  * be, which is calculated as follows (fdata_fix_get())
> > +  *
> > +  * fdata = (arc->max_features * feature ) + index;
> > +  *
> > +  * But feature data index should not be fixed for any index. i.e
> > +  * on any index, feature data can be placed. A slow path array is
> > +  * maintained and within a feature range [start, end] it is checked where
> > +  * feature_data_index is already placed.
> > +  *
> > +  * If is_release == false. feature_data_index is searched in a feature range.
> > +  * If found, index is returned. If not found, then reserve and return.
> > +  *
> > +  * If is_release == true, then feature_data_index is released for further
> > +  * usage
> > +  */
> > +static rte_graph_feature_data_t
> > +fdata_dyn_reserve_or_rel(struct rte_graph_feature_arc *arc,
> > rte_graph_feature_t f,
> > +                      uint32_t index, bool is_release,
> > +                      bool fdata_provided, rte_graph_feature_data_t fd)
> > +{
> > +     rte_graph_feature_data_t start, end, fdata;
> > +     rte_graph_feature_t next_feat;
> > +
> > +     if (fdata_provided)
> > +             fdata = fd;
> > +     else
> > +             fdata = fdata_fix_get(arc, f, index);
> > +
> > +     next_feat = f + 1;
> > +     /* Find in a given feature range, feature data is stored or not */
> > +     for (start = fdata_fix_get(arc, f, 0),
> > +          end = fdata_fix_get(arc, next_feat, 0);
> > +          start < end;
> > +          start++) {
> > +             if (arc->feature_data_by_index[start] == fdata) {
> > +                     if (is_release)
> > +                             arc->feature_data_by_index[start] =
> > RTE_GRAPH_FEATURE_DATA_INVALID;
> > +
> > +                     return start;
> > +             }
> > +     }
> > +
> > +     if (is_release)
> > +             return RTE_GRAPH_FEATURE_DATA_INVALID;
> > +
> > +     /* If not found, then reserve valid one */
> > +     for (start = fdata_fix_get(arc, f, 0),
> > +          end = fdata_fix_get(arc, next_feat, 0);
> > +          start < end;
> > +          start++) {
> > +             if (arc->feature_data_by_index[start] ==
> > RTE_GRAPH_FEATURE_DATA_INVALID) {
> > +                     arc->feature_data_by_index[start] = fdata;
> > +                     return start;
> > +             }
> > +     }
> > +
> > +     /* This should not happen */
> > +     if (!fdata_provided)
> > +             RTE_VERIFY(0);
> > +
>
> Why panic? Return error.

Removed in v11. Have removed other referenced to RTE_VERIFY as well

<snip>
> > +/**
> > + * Prefetch feature data related fast path cache line
> > + *
> > + * @param arc
> > + *   RTE_GRAPH feature arc object
> > + * @param fdata
> > + *   Pointer to feature data object
> > + */
> > +__rte_experimental
> > +static __rte_always_inline void
> > +rte_graph_feature_arc_feature_data_prefetch(struct rte_graph_feature_arc
> > *arc,
> > +                                         rte_graph_feature_data_t fdata)
> > +{
> > +     if (unlikely(fdata == RTE_GRAPH_FEATURE_DATA_INVALID))
> > +             return;
> > +
> Do we need above condition? Do we ever run into this? Avoid un necessary checks in fast path.
>

Removed check in v11
>
> > +     rte_prefetch0((void *)__rte_graph_feature_data_get(arc, fdata));
> > +}
> > +
> >  #ifdef __cplusplus
> >  }
> >  #endif
> > --
> > 2.43.0
>

  reply	other threads:[~2025-06-04 15:54 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-07  7:31 [RFC PATCH 0/3] add feature arc in rte_graph Nitin Saxena
2024-09-07  7:31 ` [RFC PATCH 1/3] graph: add feature arc support Nitin Saxena
2024-09-11  4:41   ` Kiran Kumar Kokkilagadda
2024-10-10  4:42     ` Nitin Saxena
2024-09-07  7:31 ` [RFC PATCH 2/3] graph: add feature arc option in graph create Nitin Saxena
2024-09-07  7:31 ` [RFC PATCH 3/3] graph: add IPv4 output feature arc Nitin Saxena
2024-10-08  8:04 ` [RFC PATCH 0/3] add feature arc in rte_graph David Marchand
2024-10-08 14:26   ` [EXTERNAL] " Nitin Saxena
2024-10-14 11:11   ` Nitin Saxena
2024-10-16  9:24     ` David Marchand
2024-10-16  9:38       ` Robin Jarry
2024-10-16 13:50         ` Nitin Saxena
2024-10-17  7:03           ` Nitin Saxena
2024-10-17  7:50             ` Robin Jarry
2024-10-17  8:32               ` [EXTERNAL] " Christophe Fontaine
2024-10-17 10:56                 ` Nitin Saxena
2024-10-17  8:48               ` [EXTERNAL] " Nitin Saxena
2024-10-08 13:30 ` [RFC PATCH v2 0/5] " Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 1/5] graph: add feature arc support Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 5/5] docs: add programming guide for feature arc Nitin Saxena
2024-10-09 13:29   ` [PATCH v3 0/5] add feature arc in rte_graph Nitin Saxena
2024-10-09 13:29     ` [PATCH v3 1/5] graph: add feature arc support Nitin Saxena
2024-10-09 13:29     ` [PATCH v3 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-09 13:30     ` [PATCH v3 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-09 13:30     ` [PATCH v3 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-09 13:30     ` [PATCH v3 5/5] docs: add programming guide for feature arc Nitin Saxena
2024-10-09 14:21     ` [PATCH v3 0/5] add feature arc in rte_graph Christophe Fontaine
2024-10-10  4:13       ` [EXTERNAL] " Nitin Saxena
2024-10-09 17:37     ` Stephen Hemminger
2024-10-10  4:24       ` [EXTERNAL] " Nitin Saxena
2024-10-10 13:31     ` [PATCH v4 " Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 1/5] graph: add feature arc support Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 5/5] docs: add programming guide for feature arc Nitin Saxena
2024-10-14 14:33       ` [PATCH v5 0/5] add feature arc in rte_graph Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 1/5] graph: add feature arc support Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-14 19:54           ` Stephen Hemminger
2024-10-14 14:33         ` [PATCH v5 5/5] docs: add programming guide for feature arc Nitin Saxena
2025-01-03  6:06         ` [PATCH v6 0/4] add feature arc in rte_graph Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 1/4] graph: add API to override node process function Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 2/4] graph: add feature arc abstraction Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 3/4] ip4: add ip4 output feature arc Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 4/4] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
     [not found]           ` <SJ0PR18MB5111B56B4323FB3DFD147801B6152@SJ0PR18MB5111.namprd18.prod.outlook.com>
2025-01-03 14:59             ` Feature arc slides Nitin Saxena
2025-01-06  0:15               ` Stephen Hemminger
2025-01-07 12:37                 ` Nitin Saxena
2025-01-10 13:59             ` [EXTERNAL] [PATCH v6 0/4] add feature arc in rte_graph Robin Jarry
2025-01-14  8:18               ` Nitin Saxena
2025-04-19  7:10           ` [PATCH v7 0/5] " Nitin Saxena
2025-04-19  7:10             ` [PATCH v7 1/5] graph: add API to override node process function Nitin Saxena
2025-04-19  7:10             ` [PATCH v7 2/5] graph: add feature arc abstraction Nitin Saxena
2025-04-19  7:10             ` [PATCH v7 3/5] ip4: add ip4 output feature arc Nitin Saxena
2025-04-19  7:10             ` [PATCH v7 4/5] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
2025-04-19  7:10             ` [PATCH v7 5/5] test/graph_feature_arc: add functional tests Nitin Saxena
2025-04-19 10:11           ` [PATCH v8 0/5] add feature arc in rte_graph Nitin Saxena
2025-04-19 10:11             ` [PATCH v8 1/5] graph: add API to override node process function Nitin Saxena
2025-04-19 10:11             ` [PATCH v8 2/5] graph: add feature arc abstraction Nitin Saxena
2025-04-19 10:11             ` [PATCH v8 3/5] ip4: add ip4 output feature arc Nitin Saxena
2025-04-19 10:11             ` [PATCH v8 4/5] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
2025-04-19 10:11             ` [PATCH v8 5/5] test/graph_feature_arc: add functional tests Nitin Saxena
2025-04-21 15:17           ` [PATCH v9 0/5] add feature arc in rte_graph Nitin Saxena
2025-04-21 15:17             ` [PATCH v9 1/5] graph: add API to override node process function Nitin Saxena
2025-05-30 12:35               ` Jerin Jacob
2025-04-21 15:17             ` [PATCH v9 2/5] graph: add feature arc abstraction Nitin Saxena
2025-05-30 13:09               ` Jerin Jacob
2025-06-04 15:59                 ` Nitin Saxena
2025-05-30 13:13               ` Jerin Jacob
2025-06-04 16:00                 ` Nitin Saxena
2025-04-21 15:17             ` [PATCH v9 3/5] ip4: add ip4 output feature arc Nitin Saxena
2025-04-21 15:17             ` [PATCH v9 4/5] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
2025-04-23 20:40               ` Patrick Robb
2025-04-24  0:01                 ` Patrick Robb
2025-05-30 13:15               ` Jerin Jacob
2025-04-21 15:17             ` [PATCH v9 5/5] test/graph_feature_arc: add functional tests Nitin Saxena
2025-06-04 10:12           ` [PATCH v10 0/7] add feature arc in rte_graph Nitin Saxena
2025-06-04 10:12             ` [PATCH v10 1/7] graph: add API to override node process function Nitin Saxena
2025-06-04 10:42               ` Kiran Kumar Kokkilagadda
2025-06-04 10:12             ` [PATCH v10 2/7] graph: add feature arc registrations Nitin Saxena
2025-06-04 16:42               ` Jerin Jacob
2025-06-04 10:12             ` [PATCH v10 3/7] graph: add feature arc init APIs Nitin Saxena
2025-06-04 11:24               ` Kiran Kumar Kokkilagadda
2025-06-04 15:50                 ` Nitin Saxena
2025-06-04 10:12             ` [PATCH v10 4/7] graph: add feature enable/disable APIs Nitin Saxena
2025-06-04 11:36               ` Kiran Kumar Kokkilagadda
2025-06-04 15:54                 ` Nitin Saxena [this message]
2025-06-04 10:12             ` [PATCH v10 5/7] ip4: add ip4 output feature arc Nitin Saxena
2025-06-04 10:12             ` [PATCH v10 6/7] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
2025-06-04 10:12             ` [PATCH v10 7/7] test/graph_feature_arc: add functional tests Nitin Saxena
2025-06-04 15:30           ` [PATCH v11 0/7] add feature arc in rte_graph Nitin Saxena
2025-06-04 15:30             ` [PATCH v11 1/7] graph: add API to override node process function Nitin Saxena
2025-06-04 15:47               ` Jerin Jacob
2025-06-04 15:30             ` [PATCH v11 2/7] graph: add feature arc registrations Nitin Saxena
2025-06-04 15:30             ` [PATCH v11 3/7] graph: add feature arc init APIs Nitin Saxena
2025-06-04 15:30             ` [PATCH v11 4/7] graph: add feature enable/disable APIs Nitin Saxena
2025-06-04 15:30             ` [PATCH v11 5/7] ip4: add ip4 output feature arc Nitin Saxena
2025-06-04 15:30             ` [PATCH v11 6/7] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
2025-06-04 15:30             ` [PATCH v11 7/7] test/graph_feature_arc: add functional tests Nitin Saxena
2025-06-05 17:33           ` [PATCH v12 0/7] add feature arc in rte_graph Nitin Saxena
2025-06-05 17:33             ` [PATCH v12 1/7] graph: add API to override node process function Nitin Saxena
2025-06-06  7:55               ` Jerin Jacob
2025-06-05 17:33             ` [PATCH v12 2/7] graph: add feature arc registrations Nitin Saxena
2025-06-06  7:59               ` Jerin Jacob
2025-06-05 17:33             ` [PATCH v12 3/7] graph: add feature arc init APIs Nitin Saxena
2025-06-06  8:02               ` Jerin Jacob
2025-06-05 17:33             ` [PATCH v12 4/7] graph: add feature enable/disable APIs Nitin Saxena
2025-06-06  8:05               ` Jerin Jacob
2025-06-05 17:33             ` [PATCH v12 5/7] ip4: add ip4 output feature arc Nitin Saxena
2025-06-05 17:33             ` [PATCH v12 6/7] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
2025-06-05 17:33             ` [PATCH v12 7/7] test/graph_feature_arc: add functional tests Nitin Saxena
2025-06-06  8:06               ` Jerin Jacob

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=CAG6-93xEZsfcn6obWxZPyPP8v_-0XBEx3E5E_T1C-or2SNwzQQ@mail.gmail.com \
    --to=nsaxena16@gmail.com \
    --cc=cfontain@redhat.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=kirankumark@marvell.com \
    --cc=ndabilpuram@marvell.com \
    --cc=nsaxena@marvell.com \
    --cc=rjarry@redhat.com \
    --cc=yanzhirun_163@163.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 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).