> > -----Original Message----- > > From: pbhagavat...@marvell.com <pbhagavat...@marvell.com> > > Sent: Thursday, February 22, 2024 8:24 PM > > To: jer...@marvell.com; ndabilpu...@marvell.com; > kirankum...@marvell.com; > > Yan, Zhirun <zhirun....@intel.com> > > Cc: dev@dpdk.org; Pavan Nikhilesh <pbhagavat...@marvell.com> > > Subject: [24.11 PATCH v3 1/5] graph: add support for node specific errors > > > > From: Pavan Nikhilesh <pbhagavat...@marvell.com> > > > > Add ability for Nodes to advertise error counters > > during registration. > > > > Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com> > > --- > > v2 Changes: > > - Fix compilation. > > v3 Changes: > > - Resend as 1/5 didn't make it through. > > > > doc/guides/prog_guide/graph_lib.rst | 22 +- > > .../prog_guide/img/anatomy_of_a_node.svg | 329 +++++-- > > .../prog_guide/img/graph_mem_layout.svg | 921 +++++++++++++----- > > lib/graph/graph_private.h | 1 + > > lib/graph/node.c | 37 +- > > lib/graph/rte_graph.h | 7 + > > 6 files changed, 1016 insertions(+), 301 deletions(-) > > > > diff --git a/doc/guides/prog_guide/graph_lib.rst > > b/doc/guides/prog_guide/graph_lib.rst > > index ad09bdfe26..018900caea 100644 > > --- a/doc/guides/prog_guide/graph_lib.rst > > +++ b/doc/guides/prog_guide/graph_lib.rst > > @@ -21,6 +21,7 @@ Features of the Graph library are: > > - Nodes as plugins. > > - Support for out of tree nodes. > > - Inbuilt nodes for packet processing. > > +- Node specific error counts. > > - Multi-process support. > > - Low overhead graph walk and node enqueue. > > - Low overhead statistics collection infrastructure. > > @@ -124,6 +125,18 @@ Source nodes are static nodes created using > > ``RTE_NODE_REGISTER`` by passing > > While performing the graph walk, the ``process()`` function of all the > > source > > nodes will be called first. So that these nodes can be used as input nodes > > for > a > > graph. > > > > +nb_errors: > > +^^^^^^^^^^ > > + > > +The number of errors that this node can report. The ``err_desc[]`` stores > > the > > error > > +descriptions which will later be propagated to stats. > > + > > +err_desc[]: > > +^^^^^^^^^^^ > > + > > +The dynamic array to store the error descriptions that will be reported by > this > > +node. > > If there are no more detail infos reported by node, why not reuse the node- > >name directly. >
The nodes can describe the errors they encounter in detail, and depending on how complex the node is it can have multiple kinds of errors. > > + > > Node creation and registration > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > * Node implementer creates the node by implementing ops and attributes > of > > @@ -141,13 +154,13 @@ Link the Nodes to create the graph topology > > Topology after linking the nodes > > > > Once nodes are available to the program, Application or node public API > > -functions can links them together to create a complex packet processing > graph. > > +functions can link them together to create a complex packet processing > graph. > > > > There are multiple different types of strategies to link the nodes. > > > > Method (a): > > ^^^^^^^^^^^ > > -Provide the ``next_nodes[]`` at the node registration time. See ``struct > > rte_node_register::nb_edges``. > > +Provide the ``next_nodes[]`` at the node registration time. See ``struct > > rte_node_register::nb_edges``. > > No need to change this line.