From: Jerin Jacob <jer...@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 <jer...@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 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->pkt_cls --> +<g id="edge1" class="edge"> +<title>ethdev_rx->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->pkt_cls --> +<g id="edge2" class="edge"> +<title>kernel_rx->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->pkt_drop --> +<g id="edge14" class="edge"> +<title>ethdev_tx->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->kernel_rx --> +<g id="edge16" class="edge"> +<title>kernel_tx->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->pkt_drop --> +<g id="edge15" class="edge"> +<title>pkt_cls->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->kernel_tx --> +<g id="edge5" class="edge"> +<title>pkt_cls->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->ip4_lookup --> +<g id="edge3" class="edge"> +<title>pkt_cls->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->ip6_lookup --> +<g id="edge4" class="edge"> +<title>pkt_cls->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->pkt_drop --> +<g id="edge7" class="edge"> +<title>ip4_lookup->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->ip4_rewrite --> +<g id="edge6" class="edge"> +<title>ip4_lookup->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->pkt_drop --> +<g id="edge11" class="edge"> +<title>ip6_lookup->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->ip6_rewrite --> +<g id="edge10" class="edge"> +<title>ip6_lookup->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->ethdev_tx --> +<g id="edge8" class="edge"> +<title>ip4_rewrite->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->pkt_drop --> +<g id="edge9" class="edge"> +<title>ip4_rewrite->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->ethdev_tx --> +<g id="edge12" class="edge"> +<title>ip6_rewrite->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->pkt_drop --> +<g id="edge13" class="edge"> +<title>ip6_rewrite->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> -- 2.41.0