[v1] doc: add inbuilt graph nodes data flow

Message ID 20230623073600.1567086-1-jerinj@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v1] doc: add inbuilt graph nodes data flow |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/intel-Testing success Testing PASS
ci/iol-aarch-unit-testing success Testing PASS
ci/iol-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/intel-Functional success Functional PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-unit-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/github-robot: build success github build: passed
ci/iol-aarch64-compile-testing success Testing PASS

Commit Message

Jerin Jacob Kollanukkaran June 23, 2023, 7:36 a.m. UTC
  From: Jerin Jacob <jerinj@marvell.com>

Added diagram to depict the data flow between inbuilt
graph nodes.

In order to avoid graphviz package dependency to DPDK
documentation, manual step added to create a svg file
from the dot file. The details for the same is documented
in graph_inbuilt_node_flow.svg as a comment.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
---
 doc/guides/prog_guide/graph_lib.rst           |  12 +-
 .../img/graph_inbuilt_node_flow.svg           | 210 ++++++++++++++++++
 2 files changed, 220 insertions(+), 2 deletions(-)
 create mode 100644 doc/guides/prog_guide/img/graph_inbuilt_node_flow.svg
  

Comments

Yan, Zhirun June 26, 2023, 6:04 a.m. UTC | #1
> -----Original Message-----
> From: jerinj@marvell.com <jerinj@marvell.com>
> Sent: Friday, June 23, 2023 3:36 PM
> To: dev@dpdk.org; Jerin Jacob <jerinj@marvell.com>; Kiran Kumar K
> <kirankumark@marvell.com>; Nithin Dabilpuram <ndabilpuram@marvell.com>;
> Yan, Zhirun <zhirun.yan@intel.com>
> Cc: thomas@monjalon.net; pbhagavatula@marvell.com
> Subject: [dpdk-dev] [PATCH v1] doc: add inbuilt graph nodes data flow
> 
> From: Jerin Jacob <jerinj@marvell.com>
> 
> Added diagram to depict the data flow between inbuilt graph nodes.
> 
> In order to avoid graphviz package dependency to DPDK documentation, manual
> step added to create a svg file from the dot file. The details for the same is
> documented in graph_inbuilt_node_flow.svg as a comment.
> 
> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> ---

Reviewed-by: Zhirun Yan <zhirun.yan@intel.com>
  
Jerin Jacob July 20, 2023, 6:34 a.m. UTC | #2
On Mon, Jun 26, 2023 at 11:34 AM Yan, Zhirun <zhirun.yan@intel.com> wrote:
>
>
>
> > -----Original Message-----
> > From: jerinj@marvell.com <jerinj@marvell.com>
> > Sent: Friday, June 23, 2023 3:36 PM
> > To: dev@dpdk.org; Jerin Jacob <jerinj@marvell.com>; Kiran Kumar K
> > <kirankumark@marvell.com>; Nithin Dabilpuram <ndabilpuram@marvell.com>;
> > Yan, Zhirun <zhirun.yan@intel.com>
> > Cc: thomas@monjalon.net; pbhagavatula@marvell.com
> > Subject: [dpdk-dev] [PATCH v1] doc: add inbuilt graph nodes data flow
> >
> > From: Jerin Jacob <jerinj@marvell.com>
> >
> > Added diagram to depict the data flow between inbuilt graph nodes.
> >
> > In order to avoid graphviz package dependency to DPDK documentation, manual
> > step added to create a svg file from the dot file. The details for the same is
> > documented in graph_inbuilt_node_flow.svg as a comment.
> >
> > Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> > ---
>
> Reviewed-by: Zhirun Yan <zhirun.yan@intel.com>

Ping for merge
  
Thomas Monjalon July 25, 2023, 8:35 a.m. UTC | #3
> > From: Jerin Jacob <jerinj@marvell.com>
> > 
> > Added diagram to depict the data flow between inbuilt graph nodes.
> > 
> > In order to avoid graphviz package dependency to DPDK documentation, manual
> > step added to create a svg file from the dot file. The details for the same is
> > documented in graph_inbuilt_node_flow.svg as a comment.
> > 
> > Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> 
> Reviewed-by: Zhirun Yan <zhirun.yan@intel.com>

Applied, thanks.
  

Patch

diff --git a/doc/guides/prog_guide/graph_lib.rst b/doc/guides/prog_guide/graph_lib.rst
index 307f599627..96af29e8da 100644
--- a/doc/guides/prog_guide/graph_lib.rst
+++ b/doc/guides/prog_guide/graph_lib.rst
@@ -394,8 +394,16 @@  to enable fastpath services.
 Inbuilt Nodes
 -------------
 
-DPDK provides a set of nodes for data processing. The following section
-details the documentation for the same.
+DPDK provides a set of nodes for data processing. The following diagram depicts
+inbuilt nodes data flow.
+
+.. _figure_graph_inbuit_node_flow:
+
+.. figure:: img/graph_inbuilt_node_flow.*
+
+   Inbuilt nodes data flow
+
+Following section details the documentation for individual inbuilt node.
 
 ethdev_rx
 ~~~~~~~~~
diff --git a/doc/guides/prog_guide/img/graph_inbuilt_node_flow.svg b/doc/guides/prog_guide/img/graph_inbuilt_node_flow.svg
new file mode 100644
index 0000000000..02fe768dfe
--- /dev/null
+++ b/doc/guides/prog_guide/img/graph_inbuilt_node_flow.svg
@@ -0,0 +1,210 @@ 
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 8.0.5 (0)
+ -->
+<!-- SPDX-License-Identifier: BSD-3-Clause -->
+<!-- Copyright(C) 2023 Marvell International Ltd. -->
+<!--
+
+Generated with following command
+dot -Tsvg /tmp/dot.dot  -o doc/guides/prog_guide/img/graph_inbuilt_node_flow.svg
+
+cat /tmp/dot.dot
+digraph dpdk_inbuilt_nodes_flow {
+    comment="input nodes"
+    ethdev_rx [color="green"]
+    kernel_rx [color="green"]
+
+    ethdev_tx [color="magenta"]
+    pkt_drop [color="cyan"]
+    kernel_tx [color="blue"]
+    pkt_cls [color="red"]
+
+    ethdev_rx -> pkt_cls
+    kernel_rx -> pkt_cls
+    pkt_cls -> ip4_lookup  [ label="ipv4"]
+    pkt_cls -> ip6_lookup  [ label="ipv6"]
+    pkt_cls -> kernel_tx  [ label="exception pkts"  color="blue"]
+    ip4_lookup -> ip4_rewrite
+    ip4_lookup -> pkt_drop [color="cyan" style="dashed"]
+    ip4_rewrite -> ethdev_tx [color="green"]
+    ip4_rewrite->pkt_drop  [color="cyan" style="dashed"]
+    ip6_lookup -> ip6_rewrite
+    ip6_lookup -> pkt_drop [color="cyan" style="dashed"]
+    ip6_rewrite -> ethdev_tx [color="green"]
+    ip6_rewrite -> pkt_drop  [color="cyan" style="dashed"]
+    ethdev_tx -> pkt_drop [color="cyan" style="dashed"]
+    pkt_cls->pkt_drop   [color="cyan" style="dashed"]
+    kernel_tx -> kernel_rx [color="red" style="dashed"]
+}
+
+ -->
+<!-- input nodes -->
+<!-- Title: dpdk_inbuilt_nodes_flow Pages: 1 -->
+<svg width="470pt" height="425pt"
+ viewBox="0.00 0.00 470.23 424.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 420.5)">
+<title>dpdk_inbuilt_nodes_flow</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-420.5 466.23,-420.5 466.23,4 -4,4"/>
+<!-- ethdev_rx -->
+<g id="node1" class="node">
+<title>ethdev_rx</title>
+<ellipse fill="none" stroke="green" cx="219.23" cy="-398.5" rx="47.77" ry="18"/>
+<text text-anchor="middle" x="219.23" y="-393.45" font-family="Times,serif" font-size="14.00">ethdev_rx</text>
+</g>
+<!-- pkt_cls -->
+<g id="node6" class="node">
+<title>pkt_cls</title>
+<ellipse fill="none" stroke="red" cx="219.23" cy="-325.5" rx="37.53" ry="18"/>
+<text text-anchor="middle" x="219.23" y="-320.45" font-family="Times,serif" font-size="14.00">pkt_cls</text>
+</g>
+<!-- ethdev_rx&#45;&gt;pkt_cls -->
+<g id="edge1" class="edge">
+<title>ethdev_rx&#45;&gt;pkt_cls</title>
+<path fill="none" stroke="black" d="M219.23,-380.31C219.23,-372.55 219.23,-363.18 219.23,-354.45"/>
+<polygon fill="black" stroke="black" points="222.73,-354.53 219.23,-344.53 215.73,-354.53 222.73,-354.53"/>
+</g>
+<!-- kernel_rx -->
+<g id="node2" class="node">
+<title>kernel_rx</title>
+<ellipse fill="none" stroke="green" cx="46.23" cy="-164" rx="46.23" ry="18"/>
+<text text-anchor="middle" x="46.23" y="-158.95" font-family="Times,serif" font-size="14.00">kernel_rx</text>
+</g>
+<!-- kernel_rx&#45;&gt;pkt_cls -->
+<g id="edge2" class="edge">
+<title>kernel_rx&#45;&gt;pkt_cls</title>
+<path fill="none" stroke="black" d="M41.45,-182.08C37.1,-201.37 33.27,-232.96 47.23,-255 73.68,-296.74 130.21,-313.41 171.26,-320.07"/>
+<polygon fill="black" stroke="black" points="170.73,-323.68 181.13,-321.66 171.74,-316.75 170.73,-323.68"/>
+</g>
+<!-- ethdev_tx -->
+<g id="node3" class="node">
+<title>ethdev_tx</title>
+<ellipse fill="none" stroke="magenta" cx="293.23" cy="-91" rx="47.26" ry="18"/>
+<text text-anchor="middle" x="293.23" y="-85.95" font-family="Times,serif" font-size="14.00">ethdev_tx</text>
+</g>
+<!-- pkt_drop -->
+<g id="node4" class="node">
+<title>pkt_drop</title>
+<ellipse fill="none" stroke="cyan" cx="349.23" cy="-18" rx="44.19" ry="18"/>
+<text text-anchor="middle" x="349.23" y="-12.95" font-family="Times,serif" font-size="14.00">pkt_drop</text>
+</g>
+<!-- ethdev_tx&#45;&gt;pkt_drop -->
+<g id="edge14" class="edge">
+<title>ethdev_tx&#45;&gt;pkt_drop</title>
+<path fill="none" stroke="cyan" stroke-dasharray="5,2" d="M306.22,-73.53C313.15,-64.75 321.81,-53.76 329.55,-43.96"/>
+<polygon fill="cyan" stroke="cyan" points="332.87,-46.4 336.32,-36.38 327.37,-42.06 332.87,-46.4"/>
+</g>
+<!-- kernel_tx -->
+<g id="node5" class="node">
+<title>kernel_tx</title>
+<ellipse fill="none" stroke="blue" cx="102.23" cy="-237" rx="45.72" ry="18"/>
+<text text-anchor="middle" x="102.23" y="-231.95" font-family="Times,serif" font-size="14.00">kernel_tx</text>
+</g>
+<!-- kernel_tx&#45;&gt;kernel_rx -->
+<g id="edge16" class="edge">
+<title>kernel_tx&#45;&gt;kernel_rx</title>
+<path fill="none" stroke="red" stroke-dasharray="5,2" d="M89.25,-219.53C82.32,-210.75 73.65,-199.76 65.92,-189.96"/>
+<polygon fill="red" stroke="red" points="68.09,-188.06 59.15,-182.38 62.6,-192.4 68.09,-188.06"/>
+</g>
+<!-- pkt_cls&#45;&gt;pkt_drop -->
+<g id="edge15" class="edge">
+<title>pkt_cls&#45;&gt;pkt_drop</title>
+<path fill="none" stroke="cyan" stroke-dasharray="5,2" d="M255.09,-319.38C322.68,-308.72 462.23,-281.44 462.23,-238 462.23,-238 462.23,-238 462.23,-90 462.23,-57.84 429.01,-39.68 398.59,-29.8"/>
+<polygon fill="cyan" stroke="cyan" points="400.02,-26.27 389.44,-26.75 398.01,-32.98 400.02,-26.27"/>
+</g>
+<!-- pkt_cls&#45;&gt;kernel_tx -->
+<g id="edge5" class="edge">
+<title>pkt_cls&#45;&gt;kernel_tx</title>
+<path fill="none" stroke="blue" d="M186.99,-315.75C170.62,-310.16 151.14,-301.64 136.48,-289.5 128.23,-282.66 121.2,-273.31 115.7,-264.46"/>
+<polygon fill="blue" stroke="blue" points="118.38,-263.1 110.34,-256.2 112.32,-266.61 118.38,-263.1"/>
+<text text-anchor="middle" x="176.61" y="-276.2" font-family="Times,serif" font-size="14.00">exception pkts</text>
+</g>
+<!-- ip4_lookup -->
+<g id="node7" class="node">
+<title>ip4_lookup</title>
+<ellipse fill="none" stroke="black" cx="219.23" cy="-237" rx="52.89" ry="18"/>
+<text text-anchor="middle" x="219.23" y="-231.95" font-family="Times,serif" font-size="14.00">ip4_lookup</text>
+</g>
+<!-- pkt_cls&#45;&gt;ip4_lookup -->
+<g id="edge3" class="edge">
+<title>pkt_cls&#45;&gt;ip4_lookup</title>
+<path fill="none" stroke="black" d="M219.23,-307.41C219.23,-295.64 219.23,-279.73 219.23,-266.11"/>
+<polygon fill="black" stroke="black" points="222.73,-266.35 219.23,-256.35 215.73,-266.35 222.73,-266.35"/>
+<text text-anchor="middle" x="231.23" y="-276.2" font-family="Times,serif" font-size="14.00">ipv4</text>
+</g>
+<!-- ip6_lookup -->
+<g id="node8" class="node">
+<title>ip6_lookup</title>
+<ellipse fill="none" stroke="black" cx="343.23" cy="-237" rx="52.89" ry="18"/>
+<text text-anchor="middle" x="343.23" y="-231.95" font-family="Times,serif" font-size="14.00">ip6_lookup</text>
+</g>
+<!-- pkt_cls&#45;&gt;ip6_lookup -->
+<g id="edge4" class="edge">
+<title>pkt_cls&#45;&gt;ip6_lookup</title>
+<path fill="none" stroke="black" d="M239.99,-310.02C259.62,-296.33 289.35,-275.59 311.88,-259.87"/>
+<polygon fill="black" stroke="black" points="313.53,-262.29 319.73,-253.7 309.53,-256.55 313.53,-262.29"/>
+<text text-anchor="middle" x="304.23" y="-276.2" font-family="Times,serif" font-size="14.00">ipv6</text>
+</g>
+<!-- ip4_lookup&#45;&gt;pkt_drop -->
+<g id="edge7" class="edge">
+<title>ip4_lookup&#45;&gt;pkt_drop</title>
+<path fill="none" stroke="cyan" stroke-dasharray="5,2" d="M192.86,-221.12C179.2,-211.83 163.82,-198.49 156.23,-182 149.55,-167.46 150.78,-161.04 156.23,-146 176.39,-90.45 198.32,-78.19 252.23,-54 269.14,-46.41 288.24,-39.24 304.98,-33.38"/>
+<polygon fill="cyan" stroke="cyan" points="305.75,-36.48 314.07,-29.92 303.47,-29.86 305.75,-36.48"/>
+</g>
+<!-- ip4_rewrite -->
+<g id="node9" class="node">
+<title>ip4_rewrite</title>
+<ellipse fill="none" stroke="black" cx="218.23" cy="-164" rx="53.4" ry="18"/>
+<text text-anchor="middle" x="218.23" y="-158.95" font-family="Times,serif" font-size="14.00">ip4_rewrite</text>
+</g>
+<!-- ip4_lookup&#45;&gt;ip4_rewrite -->
+<g id="edge6" class="edge">
+<title>ip4_lookup&#45;&gt;ip4_rewrite</title>
+<path fill="none" stroke="black" d="M218.99,-218.81C218.88,-211.05 218.75,-201.68 218.63,-192.95"/>
+<polygon fill="black" stroke="black" points="222.11,-192.98 218.47,-183.03 215.11,-193.08 222.11,-192.98"/>
+</g>
+<!-- ip6_lookup&#45;&gt;pkt_drop -->
+<g id="edge11" class="edge">
+<title>ip6_lookup&#45;&gt;pkt_drop</title>
+<path fill="none" stroke="cyan" stroke-dasharray="5,2" d="M369.2,-221.03C382.65,-211.71 397.78,-198.37 405.23,-182 426.87,-134.45 392.95,-75.95 369.19,-43.54"/>
+<polygon fill="cyan" stroke="cyan" points="371.64,-41.98 362.81,-36.13 366.06,-46.21 371.64,-41.98"/>
+</g>
+<!-- ip6_rewrite -->
+<g id="node10" class="node">
+<title>ip6_rewrite</title>
+<ellipse fill="none" stroke="black" cx="343.23" cy="-164" rx="53.4" ry="18"/>
+<text text-anchor="middle" x="343.23" y="-158.95" font-family="Times,serif" font-size="14.00">ip6_rewrite</text>
+</g>
+<!-- ip6_lookup&#45;&gt;ip6_rewrite -->
+<g id="edge10" class="edge">
+<title>ip6_lookup&#45;&gt;ip6_rewrite</title>
+<path fill="none" stroke="black" d="M343.23,-218.81C343.23,-211.05 343.23,-201.68 343.23,-192.95"/>
+<polygon fill="black" stroke="black" points="346.73,-193.03 343.23,-183.03 339.73,-193.03 346.73,-193.03"/>
+</g>
+<!-- ip4_rewrite&#45;&gt;ethdev_tx -->
+<g id="edge8" class="edge">
+<title>ip4_rewrite&#45;&gt;ethdev_tx</title>
+<path fill="none" stroke="green" d="M235.63,-146.53C245.35,-137.33 257.64,-125.7 268.36,-115.54"/>
+<polygon fill="green" stroke="green" points="270.34,-118.55 275.19,-109.13 265.52,-113.47 270.34,-118.55"/>
+</g>
+<!-- ip4_rewrite&#45;&gt;pkt_drop -->
+<g id="edge9" class="edge">
+<title>ip4_rewrite&#45;&gt;pkt_drop</title>
+<path fill="none" stroke="cyan" stroke-dasharray="5,2" d="M217.56,-145.54C217.71,-125.89 220.78,-93.99 237.23,-73 253.17,-52.67 278.68,-39.55 301.33,-31.33"/>
+<polygon fill="cyan" stroke="cyan" points="302.14,-34.42 310.5,-27.9 299.9,-27.79 302.14,-34.42"/>
+</g>
+<!-- ip6_rewrite&#45;&gt;ethdev_tx -->
+<g id="edge12" class="edge">
+<title>ip6_rewrite&#45;&gt;ethdev_tx</title>
+<path fill="none" stroke="green" d="M331.38,-146.17C325.34,-137.6 317.87,-126.99 311.15,-117.44"/>
+<polygon fill="green" stroke="green" points="313.62,-115.87 305,-109.71 307.89,-119.9 313.62,-115.87"/>
+</g>
+<!-- ip6_rewrite&#45;&gt;pkt_drop -->
+<g id="edge13" class="edge">
+<title>ip6_rewrite&#45;&gt;pkt_drop</title>
+<path fill="none" stroke="cyan" stroke-dasharray="5,2" d="M345.67,-145.53C347.02,-134.98 348.56,-121.24 349.23,-109 350.38,-88.27 350.34,-64.81 350.03,-47.04"/>
+<polygon fill="cyan" stroke="cyan" points="353.51,-47.19 349.8,-37.27 346.51,-47.34 353.51,-47.19"/>
+</g>
+</g>
+</svg>