DPDK patches and discussions
 help / color / mirror / Atom feed
* [RFC PATCH v1 00/24] merge DTS documentation files to DPDK
@ 2022-04-06 15:10 Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 01/24] dts: merge DTS CONTRIBUTING.TXT " Juraj Linkeš
                   ` (23 more replies)
  0 siblings, 24 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

DTS documenatation.

Juraj Linkeš (24):
  dts: merge DTS CONTRIBUTING.TXT to DPDK
  dts: merge DTS doc/dts_gsg/Makefile to DPDK
  dts: merge DTS doc/dts_gsg/conf.py to DPDK
  dts: merge DTS doc/dts_gsg/image/dts_network_arch.png to DPDK
  dts: merge DTS doc/dts_gsg/image/dts_result.png to DPDK
  dts: merge DTS doc/dts_gsg/image/dts_soft_arch.png to DPDK
  dts: merge DTS doc/dts_gsg/image/scene_pf_passthrough.svg to DPDK
  dts: merge DTS doc/dts_gsg/image/virt_flow.svg to DPDK
  dts: merge DTS doc/dts_gsg/index.rst to DPDK
  dts: merge DTS doc/dts_gsg/quick_start.rst to DPDK
  dts: merge DTS doc/dts_gsg/rel_notes/index.rst to DPDK
  dts: merge DTS doc/dts_gsg/rel_notes/release_21_11.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/asan_test.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/igb_uio.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/image/dts_func_deploy.png to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/image/dts_result.png to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/index.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/intro.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/ixia.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/results.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/setup_dut.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/sys_reqs.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/trex.rst to DPDK
  dts: merge DTS doc/dts_gsg/usr_guide/usage.rst to DPDK

 dts/CONTRIBUTING.TXT                          |  50 ++
 dts/doc/dts_gsg/Makefile                      | 156 ++++
 dts/doc/dts_gsg/conf.py                       |  50 ++
 dts/doc/dts_gsg/image/dts_network_arch.png    | Bin 0 -> 59759 bytes
 dts/doc/dts_gsg/image/dts_result.png          | Bin 0 -> 10924 bytes
 dts/doc/dts_gsg/image/dts_soft_arch.png       | Bin 0 -> 120978 bytes
 .../dts_gsg/image/scene_pf_passthrough.svg    | 376 +++++++++
 dts/doc/dts_gsg/image/virt_flow.svg           | 717 ++++++++++++++++++
 dts/doc/dts_gsg/index.rst                     |  41 +
 dts/doc/dts_gsg/quick_start.rst               | 310 ++++++++
 dts/doc/dts_gsg/rel_notes/index.rst           |  10 +
 dts/doc/dts_gsg/rel_notes/release_21_11.rst   |  57 ++
 dts/doc/dts_gsg/usr_guide/asan_test.rst       |  59 ++
 dts/doc/dts_gsg/usr_guide/igb_uio.rst         | 102 +++
 .../usr_guide/image/dts_func_deploy.png       | Bin 0 -> 24729 bytes
 .../dts_gsg/usr_guide/image/dts_result.png    | Bin 0 -> 10924 bytes
 dts/doc/dts_gsg/usr_guide/index.rst           |  44 ++
 dts/doc/dts_gsg/usr_guide/intro.rst           |  90 +++
 dts/doc/dts_gsg/usr_guide/ixia.rst            | 248 ++++++
 dts/doc/dts_gsg/usr_guide/results.rst         | 101 +++
 dts/doc/dts_gsg/usr_guide/setup_dut.rst       | 150 ++++
 dts/doc/dts_gsg/usr_guide/sys_reqs.rst        | 131 ++++
 dts/doc/dts_gsg/usr_guide/trex.rst            | 377 +++++++++
 dts/doc/dts_gsg/usr_guide/usage.rst           | 350 +++++++++
 24 files changed, 3419 insertions(+)
 create mode 100644 dts/CONTRIBUTING.TXT
 create mode 100644 dts/doc/dts_gsg/Makefile
 create mode 100644 dts/doc/dts_gsg/conf.py
 create mode 100644 dts/doc/dts_gsg/image/dts_network_arch.png
 create mode 100644 dts/doc/dts_gsg/image/dts_result.png
 create mode 100644 dts/doc/dts_gsg/image/dts_soft_arch.png
 create mode 100644 dts/doc/dts_gsg/image/scene_pf_passthrough.svg
 create mode 100644 dts/doc/dts_gsg/image/virt_flow.svg
 create mode 100644 dts/doc/dts_gsg/index.rst
 create mode 100644 dts/doc/dts_gsg/quick_start.rst
 create mode 100644 dts/doc/dts_gsg/rel_notes/index.rst
 create mode 100644 dts/doc/dts_gsg/rel_notes/release_21_11.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/asan_test.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/igb_uio.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/image/dts_func_deploy.png
 create mode 100644 dts/doc/dts_gsg/usr_guide/image/dts_result.png
 create mode 100644 dts/doc/dts_gsg/usr_guide/index.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/intro.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/ixia.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/results.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/setup_dut.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/sys_reqs.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/trex.rst
 create mode 100644 dts/doc/dts_gsg/usr_guide/usage.rst

-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 01/24] dts: merge DTS CONTRIBUTING.TXT to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 02/24] dts: merge DTS doc/dts_gsg/Makefile " Juraj Linkeš
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/CONTRIBUTING.TXT | 50 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 dts/CONTRIBUTING.TXT

diff --git a/dts/CONTRIBUTING.TXT b/dts/CONTRIBUTING.TXT
new file mode 100644
index 0000000000..eae20441d9
--- /dev/null
+++ b/dts/CONTRIBUTING.TXT
@@ -0,0 +1,50 @@
+Contributors Guide
+==================
+
+This document outlines how to contribute code to the DTS project.
+
+Getting the code
+----------------
+
+The DTS code can be cloned from the repository on dpdk.org as follows:
+
+    git clone git://dpdk.org/tools/dts
+    git clone http://dpdk.org/git/tools/dts
+
+The code can be browsed at http://dpdk.org/browse/tools/dts/
+
+Submitting Patches
+------------------
+
+Contributions to DTS should be submitted as git formatted patches to the
+DTS mailing list: dts@dpdk.org
+
+Note you must first register for the mailing list at:
+http://dpdk.org/ml/listinfo/dts
+
+The commit message must end with a "Signed-off-by:" line which is added using:
+
+    git commit --signoff # or -s
+
+The purpose of the signoff is explained in the Linux kernel guidelines
+Developer's Certificate of Origin:
+https://www.kernel.org/doc/Documentation/process/submitting-patches.rst
+
+Note:
+    All developers must ensure that they have read, understood and complied
+    with the Developer's Certificate of Origin section of the documentation
+    prior to applying the signoff and submitting a patch.
+
+The DPDK Code Contributors guidelines contain information that is
+useful for submitting patches to DTS:
+http://dpdk.org/doc/guides/contributing/index.html
+
+Coding Guidelines
+-----------------
+
+* Python code should follow PEP8.
+
+Maintainer
+----------
+
+The DTS maintainer is: Lijuan Tu <lijuan.tu@intel.com>
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 02/24] dts: merge DTS doc/dts_gsg/Makefile to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 01/24] dts: merge DTS CONTRIBUTING.TXT " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 03/24] dts: merge DTS doc/dts_gsg/conf.py " Juraj Linkeš
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/Makefile | 156 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 156 insertions(+)
 create mode 100644 dts/doc/dts_gsg/Makefile

diff --git a/dts/doc/dts_gsg/Makefile b/dts/doc/dts_gsg/Makefile
new file mode 100644
index 0000000000..e69cfc7f94
--- /dev/null
+++ b/dts/doc/dts_gsg/Makefile
@@ -0,0 +1,156 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = build
+SOURCEDIR     = ./ 
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCEDIR)
+
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCEDIR)
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -E -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/DPDKDTFTestFramework.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/DPDKDTFTestFramework.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/DPDKDTFTestFramework"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/DPDKDTFTestFramework"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 03/24] dts: merge DTS doc/dts_gsg/conf.py to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 01/24] dts: merge DTS CONTRIBUTING.TXT " Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 02/24] dts: merge DTS doc/dts_gsg/Makefile " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 04/24] dts: merge DTS doc/dts_gsg/image/dts_network_arch.png " Juraj Linkeš
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/conf.py | 50 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 dts/doc/dts_gsg/conf.py

diff --git a/dts/doc/dts_gsg/conf.py b/dts/doc/dts_gsg/conf.py
new file mode 100644
index 0000000000..50725c30f2
--- /dev/null
+++ b/dts/doc/dts_gsg/conf.py
@@ -0,0 +1,50 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+import subprocess
+
+try:
+    import sphinx_rtd_theme
+
+    html_theme = "sphinx_rtd_theme"
+    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+except:
+    pass
+
+project = "DPDK Test Suite"
+copyright = "2017, dpdk.org"
+
+strip_version_cmd = (
+    "import sys;sys.path.append('../..');import version; print version.dts_version()"
+)
+version = subprocess.check_output(["python", "-c", strip_version_cmd])
+version = version.decode("utf-8").rstrip()
+release = version
+
+master_doc = "index"
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 04/24] dts: merge DTS doc/dts_gsg/image/dts_network_arch.png to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (2 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 03/24] dts: merge DTS doc/dts_gsg/conf.py " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 05/24] dts: merge DTS doc/dts_gsg/image/dts_result.png " Juraj Linkeš
                   ` (19 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/image/dts_network_arch.png | Bin 0 -> 59759 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dts/doc/dts_gsg/image/dts_network_arch.png

diff --git a/dts/doc/dts_gsg/image/dts_network_arch.png b/dts/doc/dts_gsg/image/dts_network_arch.png
new file mode 100644
index 0000000000000000000000000000000000000000..65d7d60544f6352e663d35ebfefc87e0f0cbf591
GIT binary patch
literal 59759
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
Ov`*@u$UbI!<Np8@#j0We

literal 0
HcmV?d00001

-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 05/24] dts: merge DTS doc/dts_gsg/image/dts_result.png to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (3 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 04/24] dts: merge DTS doc/dts_gsg/image/dts_network_arch.png " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 06/24] dts: merge DTS doc/dts_gsg/image/dts_soft_arch.png " Juraj Linkeš
                   ` (18 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/image/dts_result.png | Bin 0 -> 10924 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dts/doc/dts_gsg/image/dts_result.png

diff --git a/dts/doc/dts_gsg/image/dts_result.png b/dts/doc/dts_gsg/image/dts_result.png
new file mode 100644
index 0000000000000000000000000000000000000000..65e0ada586bfb5264eab02f7a6dedfe898e12849
GIT binary patch
literal 10924
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
E4>nnT`~Uy|

literal 0
HcmV?d00001

-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 06/24] dts: merge DTS doc/dts_gsg/image/dts_soft_arch.png to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (4 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 05/24] dts: merge DTS doc/dts_gsg/image/dts_result.png " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 07/24] dts: merge DTS doc/dts_gsg/image/scene_pf_passthrough.svg " Juraj Linkeš
                   ` (17 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/image/dts_soft_arch.png | Bin 0 -> 120978 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dts/doc/dts_gsg/image/dts_soft_arch.png

diff --git a/dts/doc/dts_gsg/image/dts_soft_arch.png b/dts/doc/dts_gsg/image/dts_soft_arch.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd7c946007c15c6ea270050ac9df8a7aada99db3
GIT binary patch
literal 120978
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

literal 0
HcmV?d00001

-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 07/24] dts: merge DTS doc/dts_gsg/image/scene_pf_passthrough.svg to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (5 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 06/24] dts: merge DTS doc/dts_gsg/image/dts_soft_arch.png " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 08/24] dts: merge DTS doc/dts_gsg/image/virt_flow.svg " Juraj Linkeš
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 .../dts_gsg/image/scene_pf_passthrough.svg    | 376 ++++++++++++++++++
 1 file changed, 376 insertions(+)
 create mode 100644 dts/doc/dts_gsg/image/scene_pf_passthrough.svg

diff --git a/dts/doc/dts_gsg/image/scene_pf_passthrough.svg b/dts/doc/dts_gsg/image/scene_pf_passthrough.svg
new file mode 100644
index 0000000000..de9b8d0328
--- /dev/null
+++ b/dts/doc/dts_gsg/image/scene_pf_passthrough.svg
@@ -0,0 +1,376 @@
+<?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 Microsoft Visio, SVG Export scene_pf_passthrough.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
+		xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="11in" height="8.5in" viewBox="0 0 792 612"
+		xml:space="preserve" color-interpolation-filters="sRGB" class="st30">
+	<v:documentProperties v:langID="1033" v:viewMarkup="false">
+		<v:userDefs>
+			<v:ud v:nameU="msvSubprocessMaster" v:prompt="" v:val="VT4(Rectangle)"/>
+			<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
+		</v:userDefs>
+	</v:documentProperties>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#77933c;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st2 {stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st3 {fill:#ffffff;font-family:Neo Sans Intel;font-size:1.16833em}
+		.st4 {fill:#b3a2c7;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st5 {fill:#000000;font-family:Neo Sans Intel;font-size:1.00001em}
+		.st6 {fill:#4f81bd;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st7 {fill:#feffff;font-family:Neo Sans Intel;font-size:1.16666em}
+		.st8 {fill:#376092;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st9 {fill:#ffffff;font-family:Neo Sans Intel;font-size:1.32809em}
+		.st10 {fill:#ffffff;font-family:Neo Sans Intel;font-size:1.16666em}
+		.st11 {fill:#f79646;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st12 {fill:#000000;font-family:Neo Sans Intel;font-size:0.75em}
+		.st13 {fill:#4bacc6;fill-opacity:0.61;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st14 {fill:#ffffff;font-family:Neo Sans Intel;font-size:0.998566em}
+		.st15 {visibility:visible}
+		.st16 {fill:none;filter:url(#filter_2);stroke:#5b9bd5;stroke-dasharray:22.5,13.5;stroke-opacity:0.22}
+		.st17 {fill:none;stroke:#ffffff;stroke-dasharray:22.5,13.5;stroke-width:1.5}
+		.st18 {marker-end:url(#mrkr4-77);stroke:#cc0000;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}
+		.st19 {fill:#cc0000;fill-opacity:1;stroke:#cc0000;stroke-opacity:1;stroke-width:0.52631578947368}
+		.st20 {marker-end:url(#mrkr4-83);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}
+		.st21 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.52631578947368}
+		.st22 {fill:#5b9bd5;fill-opacity:0.22;filter:url(#filter_2)}
+		.st23 {fill:none;filter:url(#filter_2);stroke:#5b9bd5;stroke-opacity:0.22}
+		.st24 {fill:#c00000}
+		.st25 {stroke:#c00000;stroke-width:0.25}
+		.st26 {fill:#c00000;stroke:#c00000;stroke-width:0.25}
+		.st27 {fill:#000000}
+		.st28 {stroke:#000000;stroke-width:0.25}
+		.st29 {fill:#000000;stroke:#000000;stroke-width:0.25}
+		.st30 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend4">
+			<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr4-77" class="st19" v:arrowType="4" v:arrowSize="1" v:setback="3.62" refX="-3.62" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend4" transform="scale(-1.9,-1.9) "/>
+		</marker>
+		<marker id="mrkr4-83" class="st21" v:arrowType="4" v:arrowSize="1" v:setback="3.62" refX="-3.62" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend4" transform="scale(-1.9,-1.9) "/>
+		</marker>
+	</defs>
+	<defs id="Filters">
+		<filter id="filter_2">
+			<feGaussianBlur stdDeviation="2"/>
+		</filter>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<v:userDefs>
+			<v:ud v:nameU="msvThemeOrder" v:val="VT0(0):26"/>
+		</v:userDefs>
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="0" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
+		<v:layer v:name="Connector" v:index="0"/>
+		<g id="shape8-1" v:mID="8" v:groupContext="shape" transform="translate(249.836,-443.697)">
+			<title>Sheet.8</title>
+			<path d="M0 509.25 C0 497.91 9.23 488.7 20.59 488.7 L253.74 488.7 C265.11 488.7 274.33 497.91 274.33 509.25 L274.33 591.45
+						 C274.33 602.8 265.11 612 253.74 612 L20.59 612 C9.23 612 0 602.8 0 591.45 L0 509.25 Z" class="st1"/>
+		</g>
+		<g id="shape10-3" v:mID="10" v:groupContext="shape" transform="translate(272.164,-532.138)">
+			<title>Sheet.10</title>
+			<desc>VM 0</desc>
+			<v:textBlock v:margins="rect(0,0,0,0)"/>
+			<v:textRect cx="19.6795" cy="603.586" width="39.36" height="16.8275"/>
+			<path d="M39.36 595.17 L0 595.17 L0 612 L39.36 612 L39.36 595.17" class="st2"/>
+			<text x="4.3" y="607.79" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>VM 0</text>		</g>
+		<g id="shape11-7" v:mID="11" v:groupContext="shape" transform="translate(267.218,-514.138)">
+			<title>Sheet.11</title>
+			<desc>DPDK VF PMD</desc>
+			<v:textBlock v:margins="rect(0,0,0,0)"/>
+			<v:textRect cx="49.9457" cy="603.586" width="99.9" height="16.8275"/>
+			<path d="M99.89 595.17 L0 595.17 L0 612 L99.89 612 L99.89 595.17" class="st2"/>
+			<text x="8.25" y="607.79" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>DPDK VF PMD</text>		</g>
+		<g id="shape17-11" v:mID="17" v:groupContext="shape" transform="translate(268.184,-460.138)">
+			<title>Sheet.17</title>
+			<path d="M0 587.34 C0 584.61 2.21 582.4 4.94 582.4 L51.73 582.4 C54.46 582.4 56.67 584.61 56.67 587.34 L56.67 607.07
+						 C56.67 609.8 54.46 612 51.73 612 L4.94 612 C2.21 612 0 609.8 0 607.07 L0 587.34 Z" class="st4"/>
+		</g>
+		<g id="shape19-13" v:mID="19" v:groupContext="shape" transform="translate(271.332,-468.781)">
+			<title>Sheet.19</title>
+			<desc>PF0 VF0</desc>
+			<v:textBlock v:margins="rect(0,0,0,0)"/>
+			<v:textRect cx="25.2089" cy="606.031" width="50.42" height="11.9384"/>
+			<path d="M50.42 600.06 L0 600.06 L0 612 L50.42 612 L50.42 600.06" class="st2"/>
+			<text x="3.21" y="609.63" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>PF0 VF0</text>		</g>
+		<g id="shape20-17" v:mID="20" v:groupContext="shape" transform="translate(442.834,-460.902)">
+			<title>Sheet.20</title>
+			<desc>PF0 VF1</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="28.3331" cy="597.201" width="56.67" height="29.5976"/>
+			<path d="M0 587.34 C0 584.61 2.21 582.4 4.94 582.4 L51.73 582.4 C54.46 582.4 56.67 584.61 56.67 587.34 L56.67 607.07
+						 C56.67 609.8 54.46 612 51.73 612 L4.94 612 C2.21 612 0 609.8 0 607.07 L0 587.34 Z" class="st4"/>
+			<text x="6.33" y="600.8" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>PF0 VF1</text>		</g>
+		<g id="shape29-20" v:mID="29" v:groupContext="shape" transform="translate(177.143,-386.559)">
+			<title>Sheet.29</title>
+			<desc>KVM</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="209.857" cy="598.28" width="419.72" height="27.4407"/>
+			<path d="M0 589.14 C0 586.61 2.06 584.56 4.59 584.56 L415.14 584.56 C417.67 584.56 419.71 586.61 419.71 589.14 L419.71
+						 607.43 C419.71 609.96 417.67 612 415.14 612 L4.59 612 C2.06 612 0 609.96 0 607.43 L0 589.14 Z" class="st6"/>
+			<text x="196.24" y="602.48" class="st7" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>KVM</text>		</g>
+		<g id="shape32-23" v:mID="32" v:groupContext="shape" transform="translate(177.143,-346.28)">
+			<title>Sheet.32</title>
+			<desc>Linux</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="209.857" cy="598.28" width="419.72" height="27.4407"/>
+			<path d="M0 589.14 C0 586.61 2.06 584.56 4.59 584.56 L415.14 584.56 C417.67 584.56 419.71 586.61 419.71 589.14 L419.71
+						 607.43 C419.71 609.96 417.67 612 415.14 612 L4.59 612 C2.06 612 0 609.96 0 607.43 L0 589.14 Z" class="st6"/>
+			<text x="193.71" y="602.48" class="st7" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Linux</text>		</g>
+		<g id="shape38-26" v:mID="38" v:groupContext="shape" transform="translate(178.786,-274.5)">
+			<title>Sheet.38</title>
+			<path d="M0 565.37 C0 560.22 4.19 556.04 9.35 556.04 L410.38 556.04 C415.54 556.04 419.71 560.22 419.71 565.37 L419.71
+						 602.68 C419.71 607.84 415.54 612 410.38 612 L9.35 612 C4.19 612 0 607.84 0 602.68 L0 565.37 Z" class="st8"/>
+		</g>
+		<g id="shape40-28" v:mID="40" v:groupContext="shape" transform="translate(286.678,-288.416)">
+			<title>Sheet.40</title>
+			<desc>Intel Architecture with VT-d</desc>
+			<v:textBlock v:margins="rect(0,0,0,0)"/>
+			<v:textRect cx="103.18" cy="602.436" width="206.36" height="19.1281"/>
+			<path d="M206.36 592.87 L0 592.87 L0 612 L206.36 612 L206.36 592.87" class="st2"/>
+			<text x="8.79" y="607.22" class="st9" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Intel Architecture with VT-d</text>		</g>
+		<g id="shape49-32" v:mID="49" v:groupContext="shape" transform="translate(185.897,-68.8742)">
+			<title>Sheet.49</title>
+			<desc>NIC(card1 Port0)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="93.1031" cy="518.874" width="186.21" height="186.252"/>
+			<path d="M0 456.8 C0 439.65 11.91 425.75 26.6 425.75 L159.61 425.75 C174.31 425.75 186.21 439.65 186.21 456.8 L186.21
+						 580.96 C186.21 598.11 174.31 612 159.61 612 L26.6 612 C11.91 612 0 598.11 0 580.96 L0 456.8 Z" class="st8"/>
+			<text x="43.79" y="591.47" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1" v:bulletSize="0.166667"/><v:tabList/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/>NIC(card1 Port0)<v:newlineChar/></text>		</g>
+		<g id="shape77-35" v:mID="77" v:groupContext="shape" transform="translate(225.966,-159.458)">
+			<title>Sheet.77</title>
+			<desc>Pool (VF1)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:verticalText="true"/>
+			<v:textRect cx="11.4653" cy="581.084" width="22.94" height="61.8314"/>
+			<path d="M22.93 550.17 L22.93 612 L0 612 L0 550.17 L22.93 550.17 Z" class="st11"/>
+			<text x="12.07" y="561.3" writing-mode="tb-rl" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"
+						v:bulletSize="0.166667"/><v:tabList/>Pool (VF1)</text>		</g>
+		<g id="shape87-38" v:mID="87" v:groupContext="shape" transform="translate(221.253,-114.923)">
+			<title>Sheet.87</title>
+			<desc>SRIOV Switch</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="57.7467" cy="601.335" width="115.5" height="21.3294"/>
+			<path d="M115.49 590.67 L0 590.67 L0 612 L115.49 612 L115.49 590.67 Z" class="st13"/>
+			<text x="23.35" y="605.09" class="st14" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>SRIOV Switch</text>		</g>
+		<g id="shape91-41" v:mID="91" v:groupContext="shape" transform="translate(212.897,-149.687)">
+			<title>Rounded Rectangle</title>
+			<v:userDefs>
+				<v:ud v:nameU="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="CornerLockVert" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="CornerLockDiag" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="TopLeftOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+				<v:ud v:nameU="TopRightOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+				<v:ud v:nameU="BotLeftOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+				<v:ud v:nameU="BotRightOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+			</v:userDefs>
+			<g id="shadow91-42" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
+					transform="matrix(1,0,0,1,0.345598,1.97279)" class="st15">
+				<path d="M13.5 612 L121.5 612 A13.4998 13.4998 -180 0 0 135 598.5 L135 538.31 A13.4998 13.4998 -180 0 0 121.5 524.81
+							 L13.5 524.81 A13.4998 13.4998 -180 0 0 0 538.31 L0 598.5 A13.4998 13.4998 -180 0 0 13.5 612 Z"
+						class="st16"/>
+			</g>
+			<path d="M13.5 612 L121.5 612 A13.4998 13.4998 -180 0 0 135 598.5 L135 538.31 A13.4998 13.4998 -180 0 0 121.5 524.81
+						 L13.5 524.81 A13.4998 13.4998 -180 0 0 0 538.31 L0 598.5 A13.4998 13.4998 -180 0 0 13.5 612 Z"
+					class="st17"/>
+		</g>
+		<g id="shape93-46" v:mID="93" v:groupContext="shape" transform="translate(268.932,-159.458)">
+			<title>Sheet.93</title>
+			<desc>Pool (VF0)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:verticalText="true"/>
+			<v:textRect cx="11.4653" cy="581.084" width="22.94" height="61.8314"/>
+			<path d="M22.93 550.17 L22.93 612 L0 612 L0 550.17 L22.93 550.17 Z" class="st11"/>
+			<text x="12.07" y="561.3" writing-mode="tb-rl" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"
+						v:bulletSize="0.166667"/><v:tabList/>Pool (VF0)</text>		</g>
+		<g id="shape94-49" v:mID="94" v:groupContext="shape" transform="translate(311.897,-159.458)">
+			<title>Sheet.94</title>
+			<desc>Pool (PF)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:verticalText="true"/>
+			<v:textRect cx="11.4653" cy="581.084" width="22.94" height="61.8314"/>
+			<path d="M22.93 550.17 L22.93 612 L0 612 L0 550.17 L22.93 550.17 Z" class="st11"/>
+			<text x="12.07" y="564.21" writing-mode="tb-rl" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"
+						v:bulletSize="0.166667"/><v:tabList/>Pool (PF)</text>		</g>
+		<g id="shape97-52" v:mID="97" v:groupContext="shape" transform="translate(401.897,-68.8742)">
+			<title>Sheet.97</title>
+			<desc>NIC(card2 Port1)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="93.1031" cy="518.874" width="186.21" height="186.252"/>
+			<path d="M0 456.8 C0 439.65 11.91 425.75 26.6 425.75 L159.61 425.75 C174.31 425.75 186.21 439.65 186.21 456.8 L186.21
+						 580.96 C186.21 598.11 174.31 612 159.61 612 L26.6 612 C11.91 612 0 598.11 0 580.96 L0 456.8 Z" class="st8"/>
+			<text x="43.79" y="591.47" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1" v:bulletSize="0.166667"/><v:tabList/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/><v:newlineChar/>NIC(card2 Port1)<v:newlineChar/></text>		</g>
+		<g id="shape98-55" v:mID="98" v:groupContext="shape" transform="translate(441.966,-159.458)">
+			<title>Sheet.98</title>
+			<desc>Pool (VF1)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:verticalText="true"/>
+			<v:textRect cx="11.4653" cy="581.084" width="22.94" height="61.8314"/>
+			<path d="M22.93 550.17 L22.93 612 L0 612 L0 550.17 L22.93 550.17 Z" class="st11"/>
+			<text x="12.07" y="561.3" writing-mode="tb-rl" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"
+						v:bulletSize="0.166667"/><v:tabList/>Pool (VF1)</text>		</g>
+		<g id="shape99-58" v:mID="99" v:groupContext="shape" transform="translate(437.253,-114.923)">
+			<title>Sheet.99</title>
+			<desc>SRIOV Switch</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="57.7467" cy="601.335" width="115.5" height="21.3294"/>
+			<path d="M115.49 590.67 L0 590.67 L0 612 L115.49 612 L115.49 590.67 Z" class="st13"/>
+			<text x="23.35" y="605.09" class="st14" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>SRIOV Switch</text>		</g>
+		<g id="shape100-61" v:mID="100" v:groupContext="shape" transform="translate(428.897,-149.687)">
+			<title>Rounded Rectangle.100</title>
+			<v:userDefs>
+				<v:ud v:nameU="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="CornerLockVert" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="CornerLockDiag" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="TopLeftOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+				<v:ud v:nameU="TopRightOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+				<v:ud v:nameU="BotLeftOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+				<v:ud v:nameU="BotRightOffset" v:prompt="" v:val="VT0(0.1875):1"/>
+			</v:userDefs>
+			<g id="shadow100-62" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
+					transform="matrix(1,0,0,1,0.345598,1.97279)" class="st15">
+				<path d="M13.5 612 L121.5 612 A13.4998 13.4998 -180 0 0 135 598.5 L135 538.31 A13.4998 13.4998 -180 0 0 121.5 524.81
+							 L13.5 524.81 A13.4998 13.4998 -180 0 0 0 538.31 L0 598.5 A13.4998 13.4998 -180 0 0 13.5 612 Z"
+						class="st16"/>
+			</g>
+			<path d="M13.5 612 L121.5 612 A13.4998 13.4998 -180 0 0 135 598.5 L135 538.31 A13.4998 13.4998 -180 0 0 121.5 524.81
+						 L13.5 524.81 A13.4998 13.4998 -180 0 0 0 538.31 L0 598.5 A13.4998 13.4998 -180 0 0 13.5 612 Z"
+					class="st17"/>
+		</g>
+		<g id="shape101-66" v:mID="101" v:groupContext="shape" transform="translate(484.932,-159.458)">
+			<title>Sheet.101</title>
+			<desc>Pool (VF0)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:verticalText="true"/>
+			<v:textRect cx="11.4653" cy="581.084" width="22.94" height="61.8314"/>
+			<path d="M22.93 550.17 L22.93 612 L0 612 L0 550.17 L22.93 550.17 Z" class="st11"/>
+			<text x="12.07" y="561.3" writing-mode="tb-rl" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"
+						v:bulletSize="0.166667"/><v:tabList/>Pool (VF0)</text>		</g>
+		<g id="shape102-69" v:mID="102" v:groupContext="shape" transform="translate(527.897,-159.458)">
+			<title>Sheet.102</title>
+			<desc>Pool (PF)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:verticalText="true"/>
+			<v:textRect cx="11.4653" cy="581.084" width="22.94" height="61.8314"/>
+			<path d="M22.93 550.17 L22.93 612 L0 612 L0 550.17 L22.93 550.17 Z" class="st11"/>
+			<text x="12.07" y="564.21" writing-mode="tb-rl" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"
+						v:bulletSize="0.166667"/><v:tabList/>Pool (PF)</text>		</g>
+		<g id="shape103-72" v:mID="103" v:groupContext="shape" v:layerMember="0"
+				transform="translate(-326.987,84.1026) rotate(-83.6433) scale(-1,1)">
+			<title>Curve connect 1</title>
+			<v:userDefs>
+				<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M-0 612 A572.883 572.883 0 0 1 213.38 612 A572.883 572.883 -180 0 0 419.29 613.37 L419.64 613.3" class="st18"/>
+		</g>
+		<g id="shape104-78" v:mID="104" v:groupContext="shape" v:layerMember="0"
+				transform="translate(899.145,608.336) rotate(-86.9713) scale(1,-1)">
+			<title>Curve connect 1.104</title>
+			<v:userDefs>
+				<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 612 A570.444 570.444 0 0 1 212.92 612 A570.444 570.444 -180 0 0 418.37 613.37 L418.72 613.3" class="st20"/>
+		</g>
+		<g id="shape106-84" v:mID="106" v:groupContext="shape" v:layerMember="0"
+				transform="translate(-33.9697,673.669) rotate(-100.895)">
+			<title>Curve connect 1.106</title>
+			<v:userDefs>
+				<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M-0 612 A630.819 630.819 0 0 1 229.45 612 A514.696 514.696 -180 0 0 409.18 613.33 L409.53 613.26" class="st20"/>
+		</g>
+		<g id="shape107-89" v:mID="107" v:groupContext="shape" v:layerMember="0"
+				transform="translate(1065.74,90.4832) rotate(84.3159)">
+			<title>Curve connect 1.107</title>
+			<v:userDefs>
+				<v:ud v:nameU="Scale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M-0 612 A792.358 792.358 0 0 1 316.68 612 A230.77 230.77 -180 0 0 401.44 613.4 L401.8 613.33" class="st18"/>
+		</g>
+		<g id="group108-94" transform="translate(327.762,-480.194) rotate(0.273162)" v:mID="108" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<title>1-D single</title>
+			<g id="shape109-95" v:mID="109" v:groupContext="shape">
+				<title>Sheet.109</title>
+				<g id="shadow109-96" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
+						transform="matrix(1,0,0,1,0.355,1.97112)" class="st15">
+					<path d="M-0.75 611.35 L117.34 611.35 L117.34 612 L117.98 610.7 L117.34 609.4 L117.34 610.05 L-0.75 610.05 L-0.75
+								 611.35 Z" class="st22"/>
+					<path d="M-0.75 611.35 L117.34 611.35 L117.34 612 L117.98 610.7 L117.34 609.4 L117.34 610.05 L-0.75 610.05"
+							class="st23"/>
+				</g>
+				<path d="M-0.75 611.35 L117.34 611.35 L117.34 612 L117.98 610.7 L117.34 609.4 L117.34 610.05 L-0.75 610.05 L-0.75
+							 611.35 Z" class="st24"/>
+				<path d="M-0.75 611.35 L117.34 611.35 L117.34 612 L117.98 610.7 L117.34 609.4 L117.34 610.05 L-0.75 610.05"
+						class="st25"/>
+			</g>
+			<g id="shape110-103" v:mID="110" v:groupContext="shape">
+				<title>Sheet.110</title>
+				<path d="M0 611.35 L117.34 611.35 L117.34 612 L117.98 610.7 L117.34 609.4 L117.34 610.05 L0 610.05" class="st25"/>
+			</g>
+			<g id="shape111-106" v:mID="111" v:groupContext="shape" transform="translate(-0.5,-0.899392)">
+				<title>Sheet.111</title>
+				<rect x="0" y="611.201" width="0.5" height="0.798783" class="st26"/>
+			</g>
+		</g>
+		<g id="group112-108" transform="translate(442.125,752.451) rotate(180)" v:mID="112" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<title>1-D single.112</title>
+			<g id="shape113-109" v:mID="113" v:groupContext="shape">
+				<title>Sheet.113</title>
+				<g id="shadow113-110" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279"
+						v:shadowType="1" transform="matrix(1,0,0,1,-0.345598,-1.97279)" class="st15">
+					<path d="M-0.75 611.35 L116.63 611.35 L116.63 612 L117.27 610.7 L116.63 609.4 L116.63 610.05 L-0.75 610.05 L-0.75
+								 611.35 Z" class="st22"/>
+					<path d="M-0.75 611.35 L116.63 611.35 L116.63 612 L117.27 610.7 L116.63 609.4 L116.63 610.05 L-0.75 610.05"
+							class="st23"/>
+				</g>
+				<path d="M-0.75 611.35 L116.63 611.35 L116.63 612 L117.27 610.7 L116.63 609.4 L116.63 610.05 L-0.75 610.05 L-0.75
+							 611.35 Z" class="st27"/>
+				<path d="M-0.75 611.35 L116.63 611.35 L116.63 612 L117.27 610.7 L116.63 609.4 L116.63 610.05 L-0.75 610.05"
+						class="st28"/>
+			</g>
+			<g id="shape114-117" v:mID="114" v:groupContext="shape">
+				<title>Sheet.114</title>
+				<path d="M0 611.35 L116.63 611.35 L116.63 612 L117.27 610.7 L116.63 609.4 L116.63 610.05 L0 610.05" class="st28"/>
+			</g>
+			<g id="shape115-120" v:mID="115" v:groupContext="shape" transform="translate(-0.5,-0.899392)">
+				<title>Sheet.115</title>
+				<rect x="0" y="611.201" width="0.5" height="0.798783" class="st29"/>
+			</g>
+		</g>
+	</g>
+</svg>
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 08/24] dts: merge DTS doc/dts_gsg/image/virt_flow.svg to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (6 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 07/24] dts: merge DTS doc/dts_gsg/image/scene_pf_passthrough.svg " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 09/24] dts: merge DTS doc/dts_gsg/index.rst " Juraj Linkeš
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/image/virt_flow.svg | 717 ++++++++++++++++++++++++++++
 1 file changed, 717 insertions(+)
 create mode 100644 dts/doc/dts_gsg/image/virt_flow.svg

diff --git a/dts/doc/dts_gsg/image/virt_flow.svg b/dts/doc/dts_gsg/image/virt_flow.svg
new file mode 100644
index 0000000000..f8148054bc
--- /dev/null
+++ b/dts/doc/dts_gsg/image/virt_flow.svg
@@ -0,0 +1,717 @@
+<?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 Microsoft Visio, SVG Export uml flow.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
+		xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="21.5in" height="16.5in" viewBox="0 0 1548 1188"
+		xml:space="preserve" color-interpolation-filters="sRGB" class="st15">
+	<v:documentProperties v:langID="1033" v:viewMarkup="false">
+		<v:userDefs>
+			<v:ud v:nameU="msvNoAutoConnect" v:prompt="" v:val="VT0(0):26"/>
+		</v:userDefs>
+	</v:documentProperties>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#5b9bd5;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+		.st2 {stroke:#5592c9;stroke-dasharray:3.5,2.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+		.st3 {fill:#ffffff;font-family:Calibri;font-size:1.16666em;font-weight:bold}
+		.st4 {font-size:1em}
+		.st5 {fill:#73ae42;stroke:#6ca43d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+		.st6 {marker-end:url(#mrkr4-62);stroke:#6ca43d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+		.st7 {fill:#6ca43d;fill-opacity:1;stroke:#6ca43d;stroke-opacity:1;stroke-width:0.13368983957219}
+		.st8 {marker-end:url(#mrkr3-68);stroke:#6ca43d;stroke-dasharray:3.5,2.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+		.st9 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+		.st10 {fill:#000000;font-family:Intel Clear;font-size:1.16666em}
+		.st11 {fill:#ffffff;font-family:Calibri;font-size:0.75em}
+		.st12 {marker-end:url(#mrkr14-157);stroke:#5592c9;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+		.st13 {fill:#5592c9;fill-opacity:1;stroke:#5592c9;stroke-opacity:1;stroke-width:0.16556291390728}
+		.st14 {fill:#000000;font-family:Calibri;font-size:1.16666em}
+		.st15 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend4">
+			<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr4-62" class="st7" v:arrowType="4" v:arrowSize="3" v:setback="14.96" refX="-14.96" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend4" transform="scale(-7.48,-7.48) "/>
+		</marker>
+		<g id="lend3">
+			<path d="M 2 1 L 0 0 L 2 -1 " style="stroke-linecap:round;stroke-linejoin:round;fill:none"/>
+		</g>
+		<marker id="mrkr3-68" class="st7" v:arrowType="3" v:arrowSize="3" orient="auto" markerUnits="strokeWidth"
+				overflow="visible">
+			<use xlink:href="#lend3" transform="scale(-7.48,-7.48) "/>
+		</marker>
+		<g id="lend14">
+			<path d="M 3 -1 L 0 0 L 3 1 L 3 -1 " style="stroke-linecap:round;stroke-linejoin:round;fill:none"/>
+		</g>
+		<marker id="mrkr14-157" class="st13" v:arrowType="14" v:arrowSize="2" v:setback="18.12" refX="-18.12" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend14" transform="scale(-6.04,-6.04) "/>
+		</marker>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<v:userDefs>
+			<v:ud v:nameU="msvThemeOrder" v:val="VT0(0):26"/>
+		</v:userDefs>
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="0" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
+		<v:layer v:name="Connector" v:index="0"/>
+		<g id="group1-1" transform="translate(90,-1080)" v:mID="1" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="ShowActor" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="ShowDestruction" v:prompt="" v:val="VT0(0):5"/>
+			</v:userDefs>
+			<title>Object lifeline</title>
+			<desc>scene:Virutal Scenario</desc>
+			<g id="shape2-2" v:mID="2" v:groupContext="shape" transform="translate(36,-5.4)">
+				<title>Sheet.2</title>
+				<rect x="0" y="1162.8" width="54" height="25.2" class="st1"/>
+			</g>
+			<g id="shape3-4" v:mID="3" v:groupContext="shape" transform="translate(54,-39.6)">
+				<title>Sheet.3</title>
+				<path d="M9 1188 a0 0 0 1 1 0 0 a0 0 0 1 1 0 0 Z" class="st1"/>
+			</g>
+			<g id="shape4-6" v:mID="4" v:groupContext="shape" transform="translate(42,867.857)">
+				<title>Sheet.4</title>
+			</g>
+			<g id="shape5-8" v:mID="5" v:groupContext="shape" transform="translate(1251,1188) rotate(90)">
+				<title>Sheet.5</title>
+				<path d="M0 1188 L846 1188" class="st2"/>
+			</g>
+			<g id="shape1-11" v:mID="1" v:groupContext="groupContent">
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="63" cy="1170" width="126" height="36"/>
+				<rect x="0" y="1152" width="126" height="36" class="st1"/>
+				<text x="24.84" y="1165.8" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>scene:Virutal <tspan
+							x="38.06" dy="1.2em" class="st4">Scenario</tspan></text>			</g>
+		</g>
+		<g id="group6-15" transform="translate(261,-1080)" v:mID="6" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="ShowActor" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="ShowDestruction" v:prompt="" v:val="VT0(0):5"/>
+			</v:userDefs>
+			<title>Object lifeline.6</title>
+			<desc>resource:Virtual Resource</desc>
+			<g id="shape7-16" v:mID="7" v:groupContext="shape" transform="translate(36,-5.4)">
+				<title>Sheet.7</title>
+				<rect x="0" y="1162.8" width="54" height="25.2" class="st1"/>
+			</g>
+			<g id="shape8-18" v:mID="8" v:groupContext="shape" transform="translate(54,-39.6)">
+				<title>Sheet.8</title>
+				<path d="M9 1188 a0 0 0 1 1 0 0 a0 0 0 1 1 0 0 Z" class="st1"/>
+			</g>
+			<g id="shape9-20" v:mID="9" v:groupContext="shape" transform="translate(42,867.857)">
+				<title>Sheet.9</title>
+			</g>
+			<g id="shape10-22" v:mID="10" v:groupContext="shape" transform="translate(1251,1188) rotate(90)">
+				<title>Sheet.10</title>
+				<path d="M0 1188 L846 1188" class="st2"/>
+			</g>
+			<g id="shape6-25" v:mID="6" v:groupContext="groupContent">
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="63" cy="1170" width="126" height="36"/>
+				<rect x="0" y="1152" width="126" height="36" class="st1"/>
+				<text x="16.1" y="1165.8" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>resource:Virtual <tspan
+							x="36.28" dy="1.2em" class="st4">Resource</tspan></text>			</g>
+		</g>
+		<g id="group16-29" transform="translate(603,-1080)" v:mID="16" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="ShowActor" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="ShowDestruction" v:prompt="" v:val="VT0(0):5"/>
+			</v:userDefs>
+			<title>Object lifeline.16</title>
+			<desc>kvm:Hypervisor</desc>
+			<g id="shape17-30" v:mID="17" v:groupContext="shape" transform="translate(36,-5.4)">
+				<title>Sheet.17</title>
+				<rect x="0" y="1162.8" width="54" height="25.2" class="st1"/>
+			</g>
+			<g id="shape18-32" v:mID="18" v:groupContext="shape" transform="translate(54,-39.6)">
+				<title>Sheet.18</title>
+				<path d="M9 1188 a0 0 0 1 1 0 0 a0 0 0 1 1 0 0 Z" class="st1"/>
+			</g>
+			<g id="shape19-34" v:mID="19" v:groupContext="shape" transform="translate(42,867.857)">
+				<title>Sheet.19</title>
+			</g>
+			<g id="shape20-36" v:mID="20" v:groupContext="shape" transform="translate(1251,1188) rotate(90)">
+				<title>Sheet.20</title>
+				<path d="M0 1188 L846 1188" class="st2"/>
+			</g>
+			<g id="shape16-39" v:mID="16" v:groupContext="groupContent">
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="63" cy="1170" width="126" height="36"/>
+				<rect x="0" y="1152" width="126" height="36" class="st1"/>
+				<text x="17.13" y="1174.2" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>kvm:Hypervisor</text>			</g>
+		</g>
+		<g id="group21-42" transform="translate(774,-1080)" v:mID="21" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="ShowActor" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="ShowDestruction" v:prompt="" v:val="VT0(0):5"/>
+			</v:userDefs>
+			<title>Object lifeline.21</title>
+			<desc>vm_dut:Virutal DUT</desc>
+			<g id="shape22-43" v:mID="22" v:groupContext="shape" transform="translate(36,-5.4)">
+				<title>Sheet.22</title>
+				<rect x="0" y="1162.8" width="54" height="25.2" class="st1"/>
+			</g>
+			<g id="shape23-45" v:mID="23" v:groupContext="shape" transform="translate(54,-39.6)">
+				<title>Sheet.23</title>
+				<path d="M9 1188 a0 0 0 1 1 0 0 a0 0 0 1 1 0 0 Z" class="st1"/>
+			</g>
+			<g id="shape24-47" v:mID="24" v:groupContext="shape" transform="translate(42,651.857)">
+				<title>Sheet.24</title>
+			</g>
+			<g id="shape25-49" v:mID="25" v:groupContext="shape" transform="translate(1251,1188) rotate(90)">
+				<title>Sheet.25</title>
+				<path d="M0 1188 L630 1188" class="st2"/>
+			</g>
+			<g id="shape21-52" v:mID="21" v:groupContext="groupContent">
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="63" cy="1170" width="126" height="36"/>
+				<rect x="0" y="1152" width="126" height="36" class="st1"/>
+				<text x="4.9" y="1174.2" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>vm_dut:Virutal DUT</text>			</g>
+		</g>
+		<g id="shape26-55" v:mID="26" v:groupContext="shape" transform="translate(-1030.5,288) rotate(-90)">
+			<title>Activation</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="90" height="9" class="st5"/>
+		</g>
+		<g id="shape27-57" v:mID="27" v:groupContext="shape" v:layerMember="0" transform="translate(157.5,-990)">
+			<title>Message</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L159.02 1179" class="st6"/>
+		</g>
+		<g id="shape28-63" v:mID="28" v:groupContext="shape" v:layerMember="0" transform="translate(319.5,-954)">
+			<title>Return Message</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L-162 1179" class="st8"/>
+		</g>
+		<g id="shape29-69" v:mID="29" v:groupContext="shape" transform="translate(-859.5,225) rotate(-90)">
+			<title>Activation.29</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="36" height="9" class="st5"/>
+		</g>
+		<g id="shape36-71" v:mID="36" v:groupContext="shape" transform="translate(153,-999)">
+			<title>Sheet.36</title>
+			<desc>allocate_cpu(number, socket)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="108" cy="1176.75" width="216" height="22.5"/>
+			<rect x="0" y="1165.5" width="216" height="22.5" class="st9"/>
+			<text x="15.1" y="1180.95" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>allocate_cpu(number, socket)</text>		</g>
+		<g id="shape40-74" v:mID="40" v:groupContext="shape" transform="translate(-1030.5,198) rotate(-90)">
+			<title>Activation.40</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="72" height="9" class="st5"/>
+		</g>
+		<g id="shape41-76" v:mID="41" v:groupContext="shape" v:layerMember="0" transform="translate(148.5,-1062)">
+			<title>Self Message</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M9 1188 L27 1188 L27 1224 L16.48 1224" class="st6"/>
+		</g>
+		<g id="shape42-81" v:mID="42" v:groupContext="shape" transform="translate(153,-1026)">
+			<title>Sheet.42</title>
+			<desc>Load_config()</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="72" cy="1170" width="144" height="36"/>
+			<rect x="0" y="1152" width="144" height="36" class="st9"/>
+			<text x="29.24" y="1174.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Load_config()</text>		</g>
+		<g id="group44-84" transform="translate(432,-1080)" v:mID="44" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="ShowActor" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="ShowDestruction" v:prompt="" v:val="VT0(0):5"/>
+			</v:userDefs>
+			<title>Object lifeline.44</title>
+			<desc>host:DUT CRB</desc>
+			<g id="shape45-85" v:mID="45" v:groupContext="shape" transform="translate(31.1588,-5.4)">
+				<title>Sheet.45</title>
+				<desc>Host: DUT CRB</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="31.8412" cy="1175.4" width="63.69" height="25.2"/>
+				<rect x="0" y="1162.8" width="63.6823" height="25.2" class="st1"/>
+				<text x="5.02" y="1178.1" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Host: DUT CRB</text>			</g>
+			<g id="shape46-88" v:mID="46" v:groupContext="shape" transform="translate(54,-39.6)">
+				<title>Sheet.46</title>
+				<path d="M9 1188 a0 0 0 1 1 0 0 a0 0 0 1 1 0 0 Z" class="st1"/>
+			</g>
+			<g id="shape47-90" v:mID="47" v:groupContext="shape" transform="translate(42,867.857)">
+				<title>Sheet.47</title>
+			</g>
+			<g id="shape48-92" v:mID="48" v:groupContext="shape" transform="translate(1251,1188) rotate(90)">
+				<title>Sheet.48</title>
+				<path d="M0 1188 L846 1188" class="st2"/>
+			</g>
+			<g id="shape44-95" v:mID="44" v:groupContext="groupContent">
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="63" cy="1170" width="126" height="36"/>
+				<rect x="0" y="1152" width="126" height="36" class="st1"/>
+				<text x="22.73" y="1174.2" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>host:DUT CRB</text>			</g>
+		</g>
+		<g id="shape49-98" v:mID="49" v:groupContext="shape" v:layerMember="0" transform="translate(157.5,-927)">
+			<title>Message.49</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L330.02 1179" class="st6"/>
+		</g>
+		<g id="shape50-103" v:mID="50" v:groupContext="shape" transform="translate(-688.5,288) rotate(-90)">
+			<title>Activation.50</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="36" height="9" class="st5"/>
+		</g>
+		<g id="shape51-105" v:mID="51" v:groupContext="shape" v:layerMember="0" transform="translate(490.5,-891)">
+			<title>Return Message.51</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L-337.5 1179" class="st8"/>
+		</g>
+		<g id="shape52-110" v:mID="52" v:groupContext="shape" transform="translate(162,-936)">
+			<title>Sheet.52</title>
+			<desc>generate_sriov_vfs_by_port(port, vf_number, driver)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="171" cy="1174.5" width="342" height="27"/>
+			<rect x="0" y="1161" width="342" height="27" class="st9"/>
+			<text x="6.75" y="1178.7" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>generate_sriov_vfs_by_port(port, vf_number, driver)</text>		</g>
+		<g id="group55-113" transform="translate(684,-1141.2)" v:mID="55" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="ShowActor" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="ShowDestruction" v:prompt="" v:val="VT0(0):5"/>
+			</v:userDefs>
+			<title>Object lifeline.55</title>
+			<desc>Virtual Base</desc>
+			<g id="shape56-114" v:mID="56" v:groupContext="shape" transform="translate(36,0)">
+				<title>Sheet.56</title>
+				<rect x="0" y="1162.8" width="54" height="25.2" class="st1"/>
+			</g>
+			<g id="shape57-116" v:mID="57" v:groupContext="shape" transform="translate(54,-28.8)">
+				<title>Sheet.57</title>
+				<path d="M9 1188 a0 0 0 1 1 0 0 a0 0 0 1 1 0 0 Z" class="st1"/>
+			</g>
+			<g id="shape58-118" v:mID="58" v:groupContext="shape" transform="translate(42,10.8)">
+				<title>Sheet.58</title>
+			</g>
+			<g id="shape59-120" v:mID="59" v:groupContext="shape" transform="translate(-1125,1188) rotate(-90)">
+				<title>Sheet.59</title>
+				<path d="M0 1188 L7.2 1188" class="st2"/>
+			</g>
+			<g id="shape55-123" v:mID="55" v:groupContext="groupContent">
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="63" cy="1175.4" width="126" height="25.2"/>
+				<rect x="0" y="1162.8" width="126" height="25.2" class="st1"/>
+				<text x="28.02" y="1179.6" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Virtual Base</text>			</g>
+		</g>
+		<g id="shape60-126" v:mID="60" v:groupContext="shape" transform="translate(-1030.5,342) rotate(-90)">
+			<title>Activation.60</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="36" height="9" class="st5"/>
+		</g>
+		<g id="shape61-128" v:mID="61" v:groupContext="shape" v:layerMember="0" transform="translate(148.5,-882)">
+			<title>Self Message.61</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M9 1188 L27 1188 L27 1224 L16.48 1224" class="st6"/>
+		</g>
+		<g id="shape62-133" v:mID="62" v:groupContext="shape" transform="translate(166.5,-846)">
+			<title>Sheet.62</title>
+			<desc>run_pre_cmds()</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="72" cy="1170" width="144" height="36"/>
+			<rect x="0" y="1152" width="144" height="36" class="st9"/>
+			<text x="22.57" y="1174.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>run_pre_cmds()</text>		</g>
+		<g id="shape63-136" v:mID="63" v:groupContext="shape" transform="translate(-1030.5,522) rotate(-90)">
+			<title>Activation.63</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="162" height="9" class="st5"/>
+		</g>
+		<g id="shape70-138" v:mID="70" v:groupContext="shape" transform="translate(180,-963)">
+			<title>Sheet.70</title>
+			<desc>cores</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="54" cy="1176.75" width="108" height="22.5"/>
+			<rect x="0" y="1165.5" width="108" height="22.5" class="st9"/>
+			<text x="36.84" y="1180.95" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>cores</text>		</g>
+		<g id="shape72-141" v:mID="72" v:groupContext="shape" transform="translate(234,-900)">
+			<title>Sheet.72</title>
+			<desc>VF ports</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="99" cy="1179" width="198" height="18"/>
+			<rect x="0" y="1170" width="198" height="18" class="st9"/>
+			<text x="72.28" y="1183.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>VF ports</text>		</g>
+		<g id="shape74-144" v:mID="74" v:groupContext="shape" v:layerMember="0" transform="translate(157.5,-819)">
+			<title>Message.74</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L501.02 1179" class="st6"/>
+		</g>
+		<g id="shape75-149" v:mID="75" v:groupContext="shape" transform="translate(-517.5,522) rotate(-90)">
+			<title>Activation.75</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="162" height="9" class="st5"/>
+		</g>
+		<g id="group78-151" transform="translate(666,-1116)" v:mID="78" v:groupContext="group" v:layerMember="0">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="RelationshipName" v:prompt="" v:val="VT4()"/>
+				<v:ud v:nameU="ShowMulti" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="Identifying" v:prompt="" v:val="VT0(1):26"/>
+				<v:ud v:nameU="DXBegin" v:prompt="" v:val="VT0(0):1"/>
+				<v:ud v:nameU="DYBegin" v:prompt="" v:val="VT0(-0.03):1"/>
+				<v:ud v:nameU="DXEnd" v:prompt="" v:val="VT0(0.03):1"/>
+				<v:ud v:nameU="DYEnd" v:prompt="" v:val="VT0(0):1"/>
+				<v:ud v:nameU="BeginAngle" v:prompt="" v:val="VT0(-1.5707963267949):32"/>
+				<v:ud v:nameU="EndAngle" v:prompt="" v:val="VT0(0):32"/>
+				<v:ud v:nameU="DYBegin" v:prompt="" v:val="VT0(0.023):1"/>
+				<v:ud v:nameU="DXEnd" v:prompt="" v:val="VT0(0):1"/>
+				<v:ud v:nameU="DYEnd" v:prompt="" v:val="VT0(0.023):1"/>
+				<v:ud v:nameU="BeginAngle" v:prompt="" v:val="VT0(1.5707963267949):32"/>
+				<v:ud v:nameU="EndAngle" v:prompt="" v:val="VT0(1.5707963267949):32"/>
+			</v:userDefs>
+			<title>Inheritance</title>
+			<g id="shape78-152" v:mID="78" v:groupContext="groupContent" v:layerMember="0">
+				<path d="M0 1188 L0 1175.4 L85.2 1175.4 L85.2 1171.86" class="st12"/>
+			</g>
+		</g>
+		<g id="shape91-158" v:mID="91" v:groupContext="shape" transform="translate(270,-828)">
+			<title>Sheet.91</title>
+			<desc>vm.start(load_config=False, auto_portmap)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="144" cy="1179" width="288" height="18"/>
+			<rect x="0" y="1170" width="288" height="18" class="st9"/>
+			<text x="8.41" y="1183.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>vm.start(load_config=False, auto_portmap)</text>		</g>
+		<g id="shape93-161" v:mID="93" v:groupContext="shape" v:layerMember="0" transform="translate(661.5,-715.5)">
+			<title>Message.93</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L163.52 1179" class="st6"/>
+		</g>
+		<g id="shape94-166" v:mID="94" v:groupContext="shape" transform="translate(-346.5,499.5) rotate(-90)">
+			<title>Activation.94</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="36" height="9" class="st5"/>
+		</g>
+		<g id="shape95-168" v:mID="95" v:groupContext="shape" transform="translate(679.5,-724.5)">
+			<title>Sheet.95</title>
+			<desc>instantiate_vm_dut(autoportmap)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="66" cy="1170" width="132.01" height="36"/>
+			<rect x="0" y="1152" width="132" height="36" class="st9"/>
+			<text x="5.26" y="1165.8" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>instantiate_vm_dut<tspan
+						x="20.32" dy="1.2em" class="st4">(</tspan>autoportmap)</text>		</g>
+		<g id="shape98-172" v:mID="98" v:groupContext="shape" v:layerMember="0" transform="translate(841.5,-679.5)">
+			<title>Return Message.98</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L-175.5 1179" class="st8"/>
+		</g>
+		<g id="shape99-177" v:mID="99" v:groupContext="shape" transform="translate(693,-688.5)">
+			<title>Sheet.99</title>
+			<desc>VM DUT object</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="58.5" cy="1179" width="117" height="18"/>
+			<rect x="0" y="1170" width="117" height="18" class="st9"/>
+			<text x="10.98" y="1183.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>VM DUT object</text>		</g>
+		<g id="shape100-180" v:mID="100" v:groupContext="shape" v:layerMember="0" transform="translate(661.5,-814.5)">
+			<title>Self Message.100</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M9 1188 L27 1188 L27 1224 L16.48 1224" class="st6"/>
+		</g>
+		<g id="shape101-185" v:mID="101" v:groupContext="shape" transform="translate(684,-783)">
+			<title>Sheet.101</title>
+			<desc>Start Virtual machine</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="63" cy="1174.5" width="126" height="27"/>
+			<rect x="0" y="1161" width="126" height="27" class="st9"/>
+			<text x="25.1" y="1170.3" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Start Virtual <tspan
+						x="36.07" dy="1.2em" class="st4">machine</tspan></text>		</g>
+		<g id="shape103-189" v:mID="103" v:groupContext="shape" v:layerMember="0" transform="translate(666,-657)">
+			<title>Return Message.103</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L-517.5 1179" class="st8"/>
+		</g>
+		<g id="shape104-194" v:mID="104" v:groupContext="shape" transform="translate(324,-666)">
+			<title>Sheet.104</title>
+			<desc>VM DUT object</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="88.875" cy="1179" width="177.75" height="18"/>
+			<rect x="0" y="1170" width="177.75" height="18" class="st9"/>
+			<text x="41.36" y="1183.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>VM DUT object</text>		</g>
+		<g id="group105-197" transform="translate(945,-1080)" v:mID="105" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+				<v:ud v:nameU="ShowActor" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="ShowDestruction" v:prompt="" v:val="VT0(0):5"/>
+			</v:userDefs>
+			<title>Object lifeline.105</title>
+			<desc>case: Test Case</desc>
+			<g id="shape106-198" v:mID="106" v:groupContext="shape" transform="translate(31.5,-5.4)">
+				<title>Sheet.106</title>
+				<rect x="0" y="1162.8" width="54" height="25.2" class="st1"/>
+			</g>
+			<g id="shape107-200" v:mID="107" v:groupContext="shape" transform="translate(49.5,-39.6)">
+				<title>Sheet.107</title>
+				<path d="M9 1188 a0 0 0 1 1 0 0 a0 0 0 1 1 0 0 Z" class="st1"/>
+			</g>
+			<g id="shape108-202" v:mID="108" v:groupContext="shape" transform="translate(39,525.857)">
+				<title>Sheet.108</title>
+			</g>
+			<g id="shape109-204" v:mID="109" v:groupContext="shape" transform="translate(1246.5,1188) rotate(90)">
+				<title>Sheet.109</title>
+				<path d="M0 1188 L504 1188" class="st2"/>
+			</g>
+			<g id="shape105-207" v:mID="105" v:groupContext="groupContent">
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="58.5" cy="1170" width="117" height="36"/>
+				<rect x="0" y="1152" width="117" height="36" class="st1"/>
+				<text x="15.02" y="1174.2" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>case: Test Case</text>			</g>
+		</g>
+		<g id="shape111-210" v:mID="111" v:groupContext="shape" transform="translate(-1030.5,630) rotate(-90)">
+			<title>Activation.111</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="72" height="9" class="st5"/>
+		</g>
+		<g id="shape112-212" v:mID="112" v:groupContext="shape" v:layerMember="0" transform="translate(148.5,-621)">
+			<title>Message.112</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L847.52 1179" class="st6"/>
+		</g>
+		<g id="shape113-217" v:mID="113" v:groupContext="shape" transform="translate(-180,612) rotate(-90)">
+			<title>Activation.113</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="54" height="9" class="st5"/>
+		</g>
+		<g id="shape114-219" v:mID="114" v:groupContext="shape" transform="translate(837,-630)">
+			<title>Sheet.114</title>
+			<desc>Case(VM DUT, tester, target)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="85.5" cy="1170" width="171" height="36"/>
+			<rect x="0" y="1152" width="171" height="36" class="st9"/>
+			<text x="19.24" y="1165.8" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Case(VM DUT, tester, <tspan
+						x="64.75" dy="1.2em" class="st4">target</tspan>)</text>		</g>
+		<g id="shape116-223" v:mID="116" v:groupContext="shape" v:layerMember="0" transform="translate(999,-612)">
+			<title>Self Message.116</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M9 1188 L27 1188 L27 1224 L16.48 1224" class="st6"/>
+		</g>
+		<g id="shape117-228" v:mID="117" v:groupContext="shape" transform="translate(1035,-585)">
+			<title>Sheet.117</title>
+			<desc>Run test case</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="40.5" cy="1179" width="81" height="18"/>
+			<rect x="0" y="1170" width="81" height="18" class="st9"/>
+			<text x="14.42" y="1174.8" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Run test <tspan
+						x="26.44" dy="1.2em" class="st4">case</tspan></text>		</g>
+		<g id="shape121-232" v:mID="121" v:groupContext="shape" transform="translate(-1030.5,891) rotate(-90)">
+			<title>Activation.121</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="36" height="9" class="st5"/>
+		</g>
+		<g id="shape122-234" v:mID="122" v:groupContext="shape" v:layerMember="0" transform="translate(146.25,-333)">
+			<title>Self Message.122</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(1):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M6.75 1188 L29.25 1188 L29.25 1224 L18.73 1224" class="st6"/>
+		</g>
+		<g id="shape123-239" v:mID="123" v:groupContext="shape" transform="translate(180,-297)">
+			<title>Sheet.123</title>
+			<desc>run_post_cmds()</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="72" cy="1170" width="144" height="36"/>
+			<rect x="0" y="1152" width="144" height="36" class="st9"/>
+			<text x="19.12" y="1174.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>run_post_cmds()</text>		</g>
+		<g id="shape124-242" v:mID="124" v:groupContext="shape" transform="translate(-517.5,738) rotate(-90)">
+			<title>Activation.124</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="54" height="9" class="st5"/>
+		</g>
+		<g id="shape125-244" v:mID="125" v:groupContext="shape" transform="translate(-1030.5,828) rotate(-90)">
+			<title>Activation.125</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="144" height="9" class="st5"/>
+		</g>
+		<g id="shape126-246" v:mID="126" v:groupContext="shape" v:layerMember="0" transform="translate(157.5,-495)">
+			<title>Message.126</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L496.52 1179" class="st6"/>
+		</g>
+		<g id="shape127-251" v:mID="127" v:groupContext="shape" transform="translate(270,-522)">
+			<title>Sheet.127</title>
+			<desc>vm.stop()</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="144" cy="1179" width="288" height="18"/>
+			<rect x="0" y="1170" width="288" height="18" class="st9"/>
+			<text x="114.69" y="1183.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>vm.stop()</text>		</g>
+		<g id="shape128-254" v:mID="128" v:groupContext="shape" v:layerMember="0" transform="translate(148.5,-450)">
+			<title>Message.128</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L168.02 1179" class="st6"/>
+		</g>
+		<g id="shape129-259" v:mID="129" v:groupContext="shape" transform="translate(-859.5,765) rotate(-90)">
+			<title>Activation.129</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="36" height="9" class="st5"/>
+		</g>
+		<g id="shape130-261" v:mID="130" v:groupContext="shape" transform="translate(-688.5,828) rotate(-90)">
+			<title>Activation.130</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="45" height="9" class="st5"/>
+		</g>
+		<g id="shape131-263" v:mID="131" v:groupContext="shape" v:layerMember="0" transform="translate(157.5,-396)">
+			<title>Message.131</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L330.02 1179" class="st6"/>
+		</g>
+		<g id="shape132-268" v:mID="132" v:groupContext="shape" transform="translate(189,-468)">
+			<title>Sheet.132</title>
+			<desc>release_cpu()</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="49.5" cy="1179" width="99" height="18"/>
+			<rect x="0" y="1170" width="99" height="18" class="st9"/>
+			<text x="7.58" y="1183.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>release_cpu()</text>		</g>
+		<g id="shape133-271" v:mID="133" v:groupContext="shape" transform="translate(324,-405)">
+			<title>Sheet.133</title>
+			<desc>Destory_vfs(pf_device)</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="88.875" cy="1179" width="177.75" height="18"/>
+			<rect x="0" y="1170" width="177.75" height="18" class="st9"/>
+			<text x="17.09" y="1183.2" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Destory_vfs(pf_device)</text>		</g>
+		<g id="shape135-274" v:mID="135" v:groupContext="shape" transform="translate(-346.5,738) rotate(-90)">
+			<title>Activation.135</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<rect x="0" y="1179" width="36" height="9" class="st5"/>
+		</g>
+		<g id="shape136-276" v:mID="136" v:groupContext="shape" v:layerMember="0" transform="translate(670.5,-477)">
+			<title>Message.136</title>
+			<v:userDefs>
+				<v:ud v:nameU="IsReturn" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="IsAsync" v:prompt="" v:val="VT0(0):26"/>
+				<v:ud v:nameU="IsSelfMessage" v:prompt="" v:val="VT0(0):5"/>
+				<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(15):26"/>
+			</v:userDefs>
+			<path d="M0 1179 L159.02 1179" class="st6"/>
+		</g>
+		<g id="shape137-281" v:mID="137" v:groupContext="shape" transform="translate(684,-486)">
+			<title>Sheet.137</title>
+			<desc>Close session</desc>
+			<v:textBlock v:margins="rect(4,4,4,4)"/>
+			<v:textRect cx="66" cy="1179" width="132.01" height="18"/>
+			<rect x="0" y="1170" width="132" height="18" class="st9"/>
+			<text x="28.49" y="1183.2" class="st14" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Close session</text>		</g>
+	</g>
+</svg>
-- 
2.20.1



^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 09/24] dts: merge DTS doc/dts_gsg/index.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (7 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 08/24] dts: merge DTS doc/dts_gsg/image/virt_flow.svg " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 10/24] dts: merge DTS doc/dts_gsg/quick_start.rst " Juraj Linkeš
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/index.rst | 41 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 dts/doc/dts_gsg/index.rst

diff --git a/dts/doc/dts_gsg/index.rst b/dts/doc/dts_gsg/index.rst
new file mode 100644
index 0000000000..2a1ba2d7c8
--- /dev/null
+++ b/dts/doc/dts_gsg/index.rst
@@ -0,0 +1,41 @@
+..  BSD LICENSE
+        Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+    * Neither the name of Intel Corporation nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=====================
+Getting Started Guide
+=====================
+
+.. toctree::
+    :maxdepth: 2
+    :numbered:
+
+    quick_start
+    usr_guide/index
+    rel_notes/index
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 10/24] dts: merge DTS doc/dts_gsg/quick_start.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (8 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 09/24] dts: merge DTS doc/dts_gsg/index.rst " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 11/24] dts: merge DTS doc/dts_gsg/rel_notes/index.rst " Juraj Linkeš
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/quick_start.rst | 310 ++++++++++++++++++++++++++++++++
 1 file changed, 310 insertions(+)
 create mode 100644 dts/doc/dts_gsg/quick_start.rst

diff --git a/dts/doc/dts_gsg/quick_start.rst b/dts/doc/dts_gsg/quick_start.rst
new file mode 100644
index 0000000000..e6ef9b95d5
--- /dev/null
+++ b/dts/doc/dts_gsg/quick_start.rst
@@ -0,0 +1,310 @@
+=================
+Quick start guide
+=================
+
+Introduction
+============
+
+This document describes how to install and configure the Data Plane Development Kit Test Suite (DTS) in a Linux environment.
+It is designed to get user to set up DTS quickly in their environment without going deeply into detail.
+
+DTS can run on a tester machine or a DUT machine or the third machine to communicate/manage tester/DUT by SSH connection.
+DTS supports different kinds of traffic generators, including Scapy, TRex, IXIA.
+The example set up DTS on as tester machine, and use Scapy as traffic generator to run functional testing.
+
+System Requirements
+===================
+
+This chapter describes the packages required to set up DTS.
+For the DPDK requirements, please consult `Data Plane Development Kit Getting Started Guide <http://dpdk.org/doc/guides>`_.
+
+Hardware Recommendation
+-----------------------
+
+Our regression setups uses Intel x86 platforms with mainstream Intel ethernet cards.
+The following platforms have been tested and are recommended.
+
+.. |reg|    unicode:: U+000AE .. REGISTERED SIGN
+.. |trade|    unicode:: U+2122 .. TRADE MARK SIGN
+
+* DTS and Tester system
+
+	* CPU
+		* Intel\ |reg| Xeon\ |reg| Platinum 8280M CPU @ 2.70GHz
+		* Intel\ |reg| Xeon\ |reg| Platinum 8180 CPU @ 2.50GHz
+		* Intel\ |reg| Xeon\ |reg| Gold 6252N CPU @ 2.30GHz
+
+	* OS
+		* Ubuntu 20.04
+		* Ubuntu 18.04
+
+* DUT system
+
+	* CPU
+
+		* Intel\ |reg| Atom\ |trade| CPU C3758 @ 2.20GHz
+		* Intel\ |reg| Atom\ |trade| CPU C3858 @ 2.00GHz
+		* Intel\ |reg| Atom\ |trade| CPU C3958 @ 2.00GHz
+		* Intel\ |reg| Xeon\ |reg| CPU D-1541 @ 2.10GHz
+		* Intel\ |reg| Xeon\ |reg| CPU D-1553N @ 2.30GHz
+		* Intel\ |reg| Xeon\ |reg| CPU E5-2680 0 @ 2.70GHz
+		* Intel\ |reg| Xeon\ |reg| CPU E5-2680 v2 @ 2.80GHz
+		* Intel\ |reg| Xeon\ |reg| CPU E5-2699 v3 @ 2.30GHz
+		* Intel\ |reg| Xeon\ |reg| CPU E5-2699 v4 @ 2.20GHz
+		* Intel\ |reg| Xeon\ |reg| Gold 5218N CPU @ 2.30GHz
+		* Intel\ |reg| Xeon\ |reg| Gold 6139 CPU @ 2.30GHz
+		* Intel\ |reg| Xeon\ |reg| Gold 6252N CPU @ 2.30GHz
+		* Intel\ |reg| Xeon\ |reg| Platinum 8180 CPU @ 2.50GHz
+		* Intel\ |reg| Xeon\ |reg| Platinum 8280M CPU @ 2.70GHz
+
+	* OS
+
+		* CentOS 8.3
+		* CentOS Stream 8
+		* Fedora 33
+		* Red Hat Enterprise Linux Server release 8.3
+		* Suse 15 SP2
+		* Ubuntu 20.04
+		* Ubuntu 20.10
+
+	* NICs
+
+	        * Intel\ |reg| Ethernet Controller E810-C for SFP (4x25G)
+	        * Intel\ |reg| Ethernet Controller E810-C for QSFP (2x100G)
+	        * Intel\ |reg| Ethernet Converged Network Adapter X710-DA4 (4x10G)
+	        * Intel\ |reg| Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
+	        * Intel\ |reg| 82599ES 10 Gigabit Ethernet Controller
+
+Topology Example
+----------------
+
+2 Teseter interfaces connect to 2 DUT interfaces back to back.
+
+Dependencies
+------------
+
+SSH Service
+~~~~~~~~~~~
+
+Tester and DUT should have one interface connected to the same internet, so that they can be accessed by each other from local IP address
+
+.. code-block:: console
+
+   apt-get install openssh-server      # download / install ssh software
+   service ssh start                   # start ssh service
+
+.. note::
+
+   Firewall should be disabled that all packets can be accepted by NIC interfaces.
+
+.. code-block:: console
+
+   systemctl disable firewalld.service
+
+Python modules for DTS & Tester
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The python dependences are recorded in requirements.txt.
+Please install them as the following:
+
+.. code-block:: console
+
+   apt-get install python3
+   python3 -m pip install -r requirements.txt
+
+BIOS setting for DUT
+~~~~~~~~~~~~~~~~~~~~
+
+DPDK prefer devices bound to ``vfio-pci`` kernel module, therefore, please enable VT-d and VT-x:
+
+.. code-block:: console
+
+   Advanced -> Integrated IO Configuration -> Intel(R) VT for Directed I/O <Enabled>
+   Advanced -> Processor Configuration -> Intel(R) Virtualization Technology <Enabled>
+
+DPDK running Prerequisite
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Recommend to use 1G Hugepage for DPDK running, add ``hugepagesz=1G hugepages=40 default_hugepagesz=1G`` in Linux cmdline.
+For more details, please refer to `Data Plane Development Kit Getting Started Guide <http://dpdk.org/doc/guides>`_.
+
+Running DTS
+===========
+
+Getting DTS Code
+----------------
+
+Get DTS code from remote repo.
+
+.. code-block:: console
+
+   [root@tester ~]#  git clone http://dpdk.org/git/tools/dts
+   [root@tester ~]#  ls dts
+   [root@tester dts]# conf CONTRIBUTING.TXT dep doc dts execution.cfg executions framework nics output requirements.txt test_plans tests tools version.py
+
+Preparing DPDK tarball
+----------------------
+
+DPDK source code should be packed as "dpdk.tar.gz" and moved into dts/dep:
+
+.. code-block:: console
+
+    tar -czvf dpdk.tar.gz dpdk
+    cp dpdk.tar.gz ~/dts/dep
+
+Configuring DTS
+---------------
+
+A few of files should be configured, including execution.cfg, $DTS_CFG_FOLDER/crbs, $DTS_CFG_FOLDER/ports.cfg.
+
+execution.cfg
+~~~~~~~~~~~~~
+
+.. code-block:: console
+
+   [Execution1]
+   crbs=192.168.1.1
+   drivername=vfio-pci
+   build_type=meson
+   test_suites=
+        hello_world,
+   targets=
+        x86_64-default-linuxapp-gcc,
+   parameters=nic_type=cfg:func=true
+
+* crbs: IP address of the DUT system
+* test_suites: a list of test suites to be executed
+
+$DTS_CFG_FOLDER/crbs.cfg
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: console
+
+   [192.168.1.1]
+   dut_ip=192.168.1.1
+   dut_user=root
+   dut_passwd=dutpasswd
+   os=linux
+   tester_ip=192.168.1.2
+   tester_passwd=testerpasswd
+   channels=4
+   bypass_core0=True
+
+* dut_ip: IP address of the DUT system, same as crbs in execution.cfg
+* dut_user: User name of DUT linux account
+* dut_passwd: Password of DUT linux account
+* tester_ip: IP address of tester
+* tester_passwd: Password of Tester linux account, user name should same as dut_user
+
+$DTS_CFG_FOLDER/ports.cfg
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: console
+
+   [192.168.1.1]
+   ports =
+       pci=0000:06:00.0,peer=0000:81:00.0;
+       pci=0000:06:00.1,peer=0000:81:00.1;
+
+* [192.168.1.1]: same as crbs in execution.cfg and dut_ip in $DTS_CFG_FOLDER/crbs.cfg
+* pci: pci address of DUT port
+* peer: pci address of Tester port which connected to the DUT port whose pci is `pci`.
+
+The topology for the configuration is:
+
+.. code-block:: console
+
+   DUT port0 (0000:06:00.0) --- Tester port0 (0000:81:00.0)
+   DUT port0 (0000:06:00.1) --- Tester port0 (0000:81:00.1)
+
+Launch DTS
+----------
+
+As we have prepared the zipped dpdk file and configuration file, just type the followed command “./dts”, it will start the validation process.
+
+.. code-block:: console
+
+    [root@tester ~]# ./dts
+
+                           dts:
+    DUT 192.168.1.1
+                        tester: ssh root@192.168.1.2
+                        tester: ssh root@192.168.1.2
+                        tester: python3 -V
+                  tester_scapy: ssh root@192.168.1.2
+                  ...
+             dut.192.168.1.1: ssh root@192.168.1.1
+             dut.192.168.1.1: ssh root@192.168.1.1
+             ...
+             dut.192.168.1.1: scp -v dep/dpdk.tar.gz root@192.168.1.1:/tmp/
+             ...
+             dut.192.168.1.1: DUT PORT MAP: [0, 1]
+             ...
+             dut.192.168.1.1: export RTE_TARGET=x86_64-native-linuxapp-gcc
+             dut.192.168.1.1: export RTE_SDK=`pwd`
+             dut.192.168.1.1: rm -rf x86_64-native-linuxapp-gcc
+             dut.192.168.1.1: CC=gcc meson -Denable_kmods=True -Dlibdir=lib  --default-library=static x86_64-native-linuxapp-gcc
+             ...
+             dut.192.168.1.1: usertools/dpdk-devbind.py --force --bind=vfio-pci 0000:af:00.0 0000:af:00.1
+                        dts: NIC :        fortville_25g
+             dut.192.168.1.1: meson configure -Dexamples=helloworld x86_64-native-linuxapp-gcc
+             dut.192.168.1.1: ninja -C x86_64-native-linuxapp-gcc
+             dut.192.168.1.1: ls x86_64-native-linuxapp-gcc/examples/dpdk-helloworld
+                TestHelloWorld: Test Case test_hello_world_all_cores Begin
+             dut.192.168.1.1: cat config/defconfig_x86_64-native-linuxapp-gcc | sed '/^#/d' | sed '/^\s*$/d'
+             dut.192.168.1.1: ./x86_64-native-linuxapp-gcc/examples/dpdk-helloworld  -l 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71 -n 4   --file-prefix=dpdk_25703_20210311003827
+                TestHelloWorld: Test Case test_hello_world_all_cores Result PASSED:
+                TestHelloWorld: Test Case test_hello_world_single_core Begin
+             dut.192.168.1.1: ./x86_64-native-linuxapp-gcc/examples/dpdk-helloworld  -l 1 -n 4   --file-prefix=dpdk_25703_20210311003827
+                TestHelloWorld: Test Case test_hello_world_single_core Result PASSED:
+                           dts:
+    TEST SUITE ENDED: TestHelloWorld
+             ...
+             dts: DTS ended
+    [root@tester ~]#
+
+Check Test Result
+==================
+
+The result files are generated in dts/output.
+
+.. code-block:: console
+
+   [root@tester output]# ls
+   rst_report  dts.log  statistics.txt  TestHelloWorld.log  test_results.json  test_results.xls
+
+*   statstics.txt: summary statistics
+
+.. code-block:: console
+
+   [root@tester output]# cat statistics.txt
+   dpdk_version = 21.02.0
+   Passed     = 2
+   Failed     = 0
+   Blocked    = 0
+   Pass rate  = 100.0
+
+*   test_result.json: json format result file
+
+.. code-block:: console
+
+   [root@tester output]# cat result.json
+    {
+        "192.168.1.1": {
+            "dpdk_version": "21.02.0",
+            "nic": {
+                "driver": "vfio-pci",
+                "firmware": "8.00 0x80008c1a 1.2766.0",
+                "kdriver": "i40e-2.13.10",
+                "name": "fortville_25g"
+            },
+            "x86_64-native-linuxapp-gcc": {
+                "hello_world/test_hello_world_all_core": "passed"
+                "hello_world/test_hello_world_single_core": "passed"
+            }
+        }
+    }
+
+*   test_result.xls: excel format result file
+
+.. figure:: image/dts_result.png
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 11/24] dts: merge DTS doc/dts_gsg/rel_notes/index.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (9 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 10/24] dts: merge DTS doc/dts_gsg/quick_start.rst " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 12/24] dts: merge DTS doc/dts_gsg/rel_notes/release_21_11.rst " Juraj Linkeš
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/rel_notes/index.rst | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 dts/doc/dts_gsg/rel_notes/index.rst

diff --git a/dts/doc/dts_gsg/rel_notes/index.rst b/dts/doc/dts_gsg/rel_notes/index.rst
new file mode 100644
index 0000000000..7415ce2996
--- /dev/null
+++ b/dts/doc/dts_gsg/rel_notes/index.rst
@@ -0,0 +1,10 @@
+.. SPDX-License-Identifier: BSD-3-Clause
+   Copyright 2022 The DTS contributors
+
+Release Notes
+=============
+
+.. toctree::
+    :maxdepth: 1
+
+    release_21_11
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 12/24] dts: merge DTS doc/dts_gsg/rel_notes/release_21_11.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (10 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 11/24] dts: merge DTS doc/dts_gsg/rel_notes/index.rst " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 13/24] dts: merge DTS doc/dts_gsg/usr_guide/asan_test.rst " Juraj Linkeš
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/rel_notes/release_21_11.rst | 57 +++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 dts/doc/dts_gsg/rel_notes/release_21_11.rst

diff --git a/dts/doc/dts_gsg/rel_notes/release_21_11.rst b/dts/doc/dts_gsg/rel_notes/release_21_11.rst
new file mode 100644
index 0000000000..c781dc5ae7
--- /dev/null
+++ b/dts/doc/dts_gsg/rel_notes/release_21_11.rst
@@ -0,0 +1,57 @@
+.. SPDX-License-Identifier: BSD-3-Clause
+   Copyright 2022 The DTS contributors
+
+DTS Release 21.11
+=================
+
+New Features
+------------
+
+* **Add new test plans.**
+
+  * cvl_1pps_signal_test_plan.rst
+  * cvl_advanced_iavf_rss_pppol2tpoudp_test_plan.rst
+  * cvl_flow_priority_test_plan.rst
+
+* **Add new test suites.**
+
+  * TestSuite_cvl_1pps_signal.py
+  * TestSuite_cvl_advanced_iavf_rss_pppol2tpoudp.py
+  * TestSuite_cvl_dcf_qos.py
+  * TestSuite_cvl_flow_priority.py
+
+* **Update test plans to adapt meson build.**
+
+  Makefile builds are removed in DPDK 20.11, so update test plan accordingly.
+
+* **Fix pylama errors.**
+
+  Fix most pylama errors in framework.
+
+* **Make DTS a python standard project.**
+
+  Update DTS to a standard structure.
+
+
+Removed Items
+-------------
+
+* **Remove test plans.**
+
+  * fdir_test_plan.rst
+  * fortville_rss_granularity_config_test_plan.rst
+  * generic_filter_test_plan.rst
+  * virtio_1.0_test_plan.rst
+
+* **Remove test suites.**
+
+  * TestSuite_fdir.py
+  * TestSuite_fortville_rss_granularity_config.py
+  * TestSuite_generic_filter.py
+
+
+Deprecation Notices
+-------------------
+
+* Makefile builds are deprecated and will be removed in DTS 22.03,
+  please use meson builds instead.
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 13/24] dts: merge DTS doc/dts_gsg/usr_guide/asan_test.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (11 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 12/24] dts: merge DTS doc/dts_gsg/rel_notes/release_21_11.rst " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 14/24] dts: merge DTS doc/dts_gsg/usr_guide/igb_uio.rst " Juraj Linkeš
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/asan_test.rst | 59 +++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/asan_test.rst

diff --git a/dts/doc/dts_gsg/usr_guide/asan_test.rst b/dts/doc/dts_gsg/usr_guide/asan_test.rst
new file mode 100644
index 0000000000..65de3a7f80
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/asan_test.rst
@@ -0,0 +1,59 @@
+About ASan
+===========
+
+AddressSanitizer a.k.a. ASan is a widely-used debugging tool to detect memory access errors.
+It helps to detect issues like use-after-free, various kinds of buffer overruns in C/C++
+programs, and other similar errors, as well as printing out detailed debug information whenever
+an error is detected.
+
+ASan is integrated with gcc and clang and can be enabled via a meson option: -Db_sanitize=address,
+See the documentation for details (especially regarding clang).
+
+About ASan test
+===============
+
+DTS adds one parameter named asan to control ASan test, support through added asan parameter,
+otherwise not support. It contains three steps on the whole:
+
+ - Append ASan build parameters to meson build options. this may open the function of ASan detect
+   memory access errors. if occuring memory access errors, the stack info will recorded in DTS log
+
+ - After all cases tested finish, analyze DTS log and redefine case test result according to whether
+   case log contain memory access error info. modify the result to failed if contain otherwise inherit
+   the original result.
+
+ - Generate ASan report to distinguish it from the original report.
+
+ASan test steps
+=======================
+
+Check ASan test config
+----------------------
+
+ASan config file is placed in conf/asan.cfg
+
+Firstly, check the log filter bounds pairs, customer can modify the pairs if need, and use colon split
+bounds, use comma split pairs, there are two pairs key word default as follow:
+
+ - filter_bounds=LeakSanitizer:SUMMARY,AddressSanitizer:SUMMARY
+
+Secondly, check the meson build parameter options pair, there is a list of parameters default as follow:
+
+ - build_param=-Dbuildtype=debug -Db_lundef=false -Db_sanitize=address
+
+Launch DTS
+----------
+
+ ./dts --asan
+
+When launch DTS, there are two parameters need attention:
+ - provide --asan parameter, means support ASan test.
+ - Don't provide -s parameter to skip build DPDK package. ASan test need rebuild DPDK package.
+
+Obtain the ASan test report
+---------------------------
+
+ASan report located at DTS output directory also, and provided three format as follow:
+ - Json format named asan_test_results.json
+ - Excel format named asan_test_results.xls
+ - Statistics information of txt format named asan_statistics.txt
\ No newline at end of file
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 14/24] dts: merge DTS doc/dts_gsg/usr_guide/igb_uio.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (12 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 13/24] dts: merge DTS doc/dts_gsg/usr_guide/asan_test.rst " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 15/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_func_deploy.png " Juraj Linkeš
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/igb_uio.rst | 102 ++++++++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/igb_uio.rst

diff --git a/dts/doc/dts_gsg/usr_guide/igb_uio.rst b/dts/doc/dts_gsg/usr_guide/igb_uio.rst
new file mode 100644
index 0000000000..13648cd028
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/igb_uio.rst
@@ -0,0 +1,102 @@
+Practice for igb_uio
+====================
+
+The kernel module igb_uio is moved to the dpdk-kmods repository in the
+/linux/igb_uio/ directory snice DPDK 20.11 (commit: 56bb5841fd06).
+The most easy way to test DPDK in DTS based on igb_uio is to add igb_uio
+source code back to dpdk.
+
+
+Get Source Code
+---------------
+
+Get DPDK::
+
+   git clone git://dpdk.org/dpdk
+   git clone http://dpdk.org/git/dpdk
+
+Get igb_uio::
+
+   git clone http://dpdk.org/git/dpdk-kmods
+   git clone git://dpdk.org/dpdk-kmods
+
+Integrate igb_uio into DPDK
+---------------------------
+
+Assume you have cloned the dpdk and dpdk-kmods source code
+in ./dpdk and ./dpdk-kmods.
+
+#. Copy dpdk-kmods/linux/igb_uio/ to dpdk/kernel/linux/::
+
+    [root@dts linux]# cp -r ./dpdk-kmods/linux/igb_uio /root/dpdk/kernel/linux/
+    [root@dts linux]# ls ./dpdk/kernel/linux/
+    igb_uio  kni  meson.build
+
+#. enable igb_uio build in meson:
+
+*   add igb_uio in dpdk/kernel/linux/meson.build subdirs as below::
+
+     subdirs = ['kni', 'igb_uio']
+
+.. note::
+
+    igb_uio will be added into compile list when it is added in subdirs.
+
+
+*   create a file of meson.build in dpdk/kernel/linux/igb_uio/ as below::
+
+     # SPDX-License-Identifier: BSD-3-Clause
+     # Copyright(c) 2017 Intel Corporation
+
+     mkfile = custom_target('igb_uio_makefile',
+             output: 'Makefile',
+             command: ['touch', '@OUTPUT@'])
+
+     custom_target('igb_uio',
+             input: ['igb_uio.c', 'Kbuild'],
+             output: 'igb_uio.ko',
+             command: ['make', '-C', kernel_dir + '/build',
+                     'M=' + meson.current_build_dir(),
+                     'src=' + meson.current_source_dir(),
+                     'EXTRA_CFLAGS=-I' + meson.current_source_dir() +
+                             '/../../../lib/librte_eal/include',
+                     'modules'],
+             depends: mkfile,
+             install: true,
+             install_dir: kernel_dir + '/extra/dpdk',
+             build_by_default: get_option('enable_kmods'))
+
+.. note::
+
+    DPDK is using meson build, create meson.build so that igb_uio can be built.
+
+DTS configuration
+-----------------
+
+#. Pack the dpdk into dpdk.tar.gz and copy into dts/dep::
+
+    tar -zcvf dpdk.tar.gz dpdk
+    cp dpdk.tar.gz ~/dts/dep
+
+
+#. config drivername=igb_uio in execution.cfg::
+
+    [Execution1]
+    crbs=127.0.0.1
+    drivername=igb_uio
+    build_type=meson
+    test_suites=
+        checksum_offload,
+    targets=
+        x86_64-native-linuxapp-gcc
+    parameters=nic_type=cfg:func=true
+
+#. configure dts with other requirements (not mentioned here) and now start dts::
+
+   ./dts
+
+.. note ..
+
+    dts parameter "-s" means skip setup, it won't unpack dep/dpdk.tar.gz
+    to the default directory `/root/dpdk`, but use dpdk already there.
+    so copy the integrated dpdk to `/root/dpdk` if with `-s`
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 15/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_func_deploy.png to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (13 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 14/24] dts: merge DTS doc/dts_gsg/usr_guide/igb_uio.rst " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 16/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_result.png " Juraj Linkeš
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 .../dts_gsg/usr_guide/image/dts_func_deploy.png | Bin 0 -> 24729 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dts/doc/dts_gsg/usr_guide/image/dts_func_deploy.png

diff --git a/dts/doc/dts_gsg/usr_guide/image/dts_func_deploy.png b/dts/doc/dts_gsg/usr_guide/image/dts_func_deploy.png
new file mode 100644
index 0000000000000000000000000000000000000000..0062ff79f91891d3704dc97116df69489d757e83
GIT binary patch
literal 24729
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
PNqp<SdU^4(EeHPusF-Z0

literal 0
HcmV?d00001

-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 16/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_result.png to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (14 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 15/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_func_deploy.png " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:10 ` [RFC PATCH v1 17/24] dts: merge DTS doc/dts_gsg/usr_guide/index.rst " Juraj Linkeš
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/image/dts_result.png | Bin 0 -> 10924 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dts/doc/dts_gsg/usr_guide/image/dts_result.png

diff --git a/dts/doc/dts_gsg/usr_guide/image/dts_result.png b/dts/doc/dts_gsg/usr_guide/image/dts_result.png
new file mode 100644
index 0000000000000000000000000000000000000000..65e0ada586bfb5264eab02f7a6dedfe898e12849
GIT binary patch
literal 10924
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
E4>nnT`~Uy|

literal 0
HcmV?d00001

-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 17/24] dts: merge DTS doc/dts_gsg/usr_guide/index.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (15 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 16/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_result.png " Juraj Linkeš
@ 2022-04-06 15:10 ` Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 18/24] dts: merge DTS doc/dts_gsg/usr_guide/intro.rst " Juraj Linkeš
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:10 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/index.rst | 44 +++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/index.rst

diff --git a/dts/doc/dts_gsg/usr_guide/index.rst b/dts/doc/dts_gsg/usr_guide/index.rst
new file mode 100644
index 0000000000..f34d0dcf4a
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/index.rst
@@ -0,0 +1,44 @@
+..  BSD LICENSE
+        Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+    * Neither the name of Intel Corporation nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+User Guide
+==========
+
+.. toctree::
+
+    intro
+    sys_reqs
+    setup_dut
+    usage
+    results
+    trex
+    ixia
+    igb_uio
+    asan_test
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 18/24] dts: merge DTS doc/dts_gsg/usr_guide/intro.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (16 preceding siblings ...)
  2022-04-06 15:10 ` [RFC PATCH v1 17/24] dts: merge DTS doc/dts_gsg/usr_guide/index.rst " Juraj Linkeš
@ 2022-04-06 15:11 ` Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 19/24] dts: merge DTS doc/dts_gsg/usr_guide/ixia.rst " Juraj Linkeš
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:11 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/intro.rst | 90 +++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/intro.rst

diff --git a/dts/doc/dts_gsg/usr_guide/intro.rst b/dts/doc/dts_gsg/usr_guide/intro.rst
new file mode 100644
index 0000000000..dc4c0bfa60
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/intro.rst
@@ -0,0 +1,90 @@
+Introduction
+============
+
+This document describes how to install and configure the Data Plane Development Kit Test Suite (DTS) in a Linux environment.
+DTS is an automation test tool for DPDK, wrote in `Python3`.
+DTS includes one set of test cases and DPDK generic test framework.
+DTS provides test example, references and framework for open source community.
+Based on DTS, everyone can develop their test plan, automation script and configuration for own features and platform.
+In addition, DTS provides a solution to allow that DPDK developers contribute their function test to certify their patch integration.
+It only requires limited effort to maintain test cases once merged into DPDK Test Suite.
+Everyone can utilize DTS to measure performance and functionality for features.
+
+As a generic test framework, DTS provides the following functions:
+
+* Communicate/manage DUT and Tester by SSH connection.
+* Able to work with DUT (Device Under Test), which installed Fedora, Ubuntu, CentOS, RHEL, etc.
+* Support virtualization hypervisor Qemu.
+* Support both software and hardware traffic generators, including Scapy, TRex and IXIA®.
+* Provide configure files to customize test suite and test cases to run under DUT.
+* Provide debug and log functionalities for tracking test cases execution process.
+* Support to output test result by excel, json, log text file, etc.
+
+DTS environment includes DUT (Device under Test), Tester and Traffic generator. DPDK are deployed on DUT and DTS can run on the Tester or DUT or the third machine.
+
+.. note::
+
+   * If run with functional testing, DTS uses `Scapy` as traffic generator, recommend installing DTS on Tester.
+   * If run with performance testing, DTS can use `TRex` or IXIA as traffic gengerator based on your deployment and configuration, recommend installing DTS on DUT.
+     * If use `TRex`, recommend deploying `TRex` and DUT on the same machine with different sockets.
+
+Please see a functional deployment example in the following figure:
+
+.. figure:: image/dts_func_deploy.png
+
+This architecture provides automatically mechanism to manage tester, DUT and packet generators, and remove dependency between test script and test environment/hardware.
+It defines one abstraction layer for DPDK Test Suite, and provides extensibility to add more test script.
+In the DPDK Test Suite Test Framework, it provides the following modules to help to manage device, platform, configure and test results.
+
+.. table::
+
+    +---------------------+------------------------------------------------------------------------------+
+    | File Name/Directory | Description                                                                  |
+    +=====================+==============================================================================+
+    | dts                 | Main Application for DTS                                                     |
+    +---------------------+------------------------------------------------------------------------------+
+    | framework           | Folder with dts framework modules                                            |
+    +---------------------+------------------------------------------------------------------------------+
+    | nics                | Folder with different network device modules                                 |
+    +---------------------+------------------------------------------------------------------------------+
+    | conf                | Folder with different config files                                           |
+    +---------------------+------------------------------------------------------------------------------+
+    | execution.cfg       | Default execution file                                                       |
+    +---------------------+------------------------------------------------------------------------------+
+    | executions          | Folder with several execution file samples                                   |
+    +---------------------+------------------------------------------------------------------------------+
+    | output              | Folder which contain running log files and result files                      |
+    +---------------------+------------------------------------------------------------------------------+
+    | dep                 | Folder with dependence scripts                                               |
+    +---------------------+------------------------------------------------------------------------------+
+    | test_plans          | Folder with rst files which contain the description of test suites and cases |
+    +---------------------+------------------------------------------------------------------------------+
+    | tests               | Folder with test scripts for test suites and cases                           |
+    +---------------------+------------------------------------------------------------------------------+
+    | doc                 | Folder with DTS related documents                                            |
+    +---------------------+------------------------------------------------------------------------------+
+    | requirements.txt    | DTS required Python packages                                                 |
+    +---------------------+------------------------------------------------------------------------------+
+
+These test script provides example and reference. Everyone can develop their test cases, verify their features functionality, and commit generic test report to maintainer.
+, user-defined test cases, test plans and scripts must follow DPDK Test Suite standard including code standard, naming conventions, configure format, rst test plan, API.
+
+Please see test cases, which are included in the DPDK compliance test suites:
+
+.. table::
+
+    +---------------------+----------------------------------------------------------------------------------------------------------------------------+
+    | Test Suite          | Descriptions                                                                                                               |
+    +=====================+============================================================================================================================+
+    | hello_world         | Print a ``helloworld`` message on every enabled logic core.                                                                |
+    +---------------------+----------------------------------------------------------------------------------------------------------------------------+
+    | Timer               | Shows how timer can be used in a RTE application.                                                                          |
+    +---------------------+----------------------------------------------------------------------------------------------------------------------------+
+    | checksum_offload    | Tests RX/TX L3/L4 Checksum offload features by Poll Mode Drivers                                                           |
+    +---------------------+----------------------------------------------------------------------------------------------------------------------------+
+    | jumbo_frame         | Tests jumbo frames features by Poll Mode Drivers                                                                           |
+    +---------------------+----------------------------------------------------------------------------------------------------------------------------+
+    | testpmd             | Provides benchmark tests for the Intel Ethernet Controller (Niantic) Poll Mode Driver.                                     |
+    +---------------------+----------------------------------------------------------------------------------------------------------------------------+
+    | L3fwd               | Verifies Layer-3 Forwarding results using ``l3fwd`` application.                                                           |
+    +---------------------+----------------------------------------------------------------------------------------------------------------------------+
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 19/24] dts: merge DTS doc/dts_gsg/usr_guide/ixia.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (17 preceding siblings ...)
  2022-04-06 15:11 ` [RFC PATCH v1 18/24] dts: merge DTS doc/dts_gsg/usr_guide/intro.rst " Juraj Linkeš
@ 2022-04-06 15:11 ` Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 20/24] dts: merge DTS doc/dts_gsg/usr_guide/results.rst " Juraj Linkeš
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:11 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/ixia.rst | 248 +++++++++++++++++++++++++++++
 1 file changed, 248 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/ixia.rst

diff --git a/dts/doc/dts_gsg/usr_guide/ixia.rst b/dts/doc/dts_gsg/usr_guide/ixia.rst
new file mode 100644
index 0000000000..bd66565211
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/ixia.rst
@@ -0,0 +1,248 @@
+Practice with IxExplorer
+========================
+
+This chapter describes a DTS practice with IXIA IxExplorer, which mainly used for performance testing.
+Here we take the performance case nic_single_core as an example.
+
+Configuring your own execution file
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+First of all, you must configure execution.cfg as below:
+
+.. code-block:: console
+
+   [Execution1]
+   crbs=192.168.1.1
+   drivername=vfio-pci
+   test_suites=
+       nic_single_core_perf,
+   targets=
+       x86_64-native-linuxapp-gcc
+   parameters=nic_type=cfg:perf=true
+   build_type=meson
+   rx_mode=avx512
+
+Configure CRB information
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Then please add the detail information about your CRB in $DTS_CFG_FOLDER/crbs.conf as following:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   dut_ip=192.168.1.1
+   dut_user=root
+   dut_passwd=passwd
+   os=linux
+   dut_arch=
+   tester_ip=192.168.1.1
+   tester_passwd=passwd
+   pktgen_group=IXIA
+   channels=4
+   bypass_core0=True
+   dut_cores=
+
+Configure port information
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ports topology as below:
+
+.. code-block:: console
+
+   IXIA port 0 <---------> DUT port 0
+   IXIA port 1 <---------> DUT port 1
+
+please add port configuration in $DTS_CFG_FOLDER/ports.cfg as following:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   ports =
+       pci=0000:af:00.0,peer=IXIA:3.1;
+       pci=0000:b1:00.0,peer=IXIA:3.2;
+
+Configure pktgen information
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+please configure Pktgen information in $DTS_CFG_FOLDER/pktgen.cfg
+
+.. code-block:: console
+
+   [IXIA]
+   ixia_version=9.00
+   ixia_ip=192.168.2.1
+   ixia_ports=
+       card=3,port=1;
+       card=3,port=2;
+   ixia_force100g=disable
+
+.. note::
+
+    The version of ixia must be consistent with your version of IxExplorer.
+
+
+Configure your own suites
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Performance tests generally have configuration files.
+it's name corresponds to the suite.
+Below is the $DTS_CFG_FOLDER/nic_single_core_perf.cfg configuration file.
+You can set the test parameters according to your test needs.
+
+
+.. code-block:: console
+
+   [suite]
+   update_expected = True
+   test_parameters = {'1C/1T': {64: [512, 2048]},
+                      '1C/2T': {64: [512, 2048]}}
+   rx_desc_16byte = 'y'
+   test_duration = 60
+   accepted_tolerance = 1
+   expected_throughput = {
+        'fortville_spirit': {
+            '1C/1T': {64: {512: 0.00, 2048: 0.00}},
+            '1C/2T': {64: {512: 0.00, 2048: 0.00}}}}
+
+* accepted_tolerance: defines the accepted tolerance between real pps and expected pps.
+* test_parameters: defines the combination of frame size and descriptor numbers,
+  and the pattern is {'frame size': ['descriptor number #1', 'descriptor number #2']}.
+* rx_desc_16byte: 16byte configuration and default by enabled.
+* test_duration: how many seconds each combination performance will be recorded.
+* expected_throughput: it's a dictionary defining expected throughput numbers based on NIC,
+  and the pattern is {'NIC': {'frame size': {'descriptor number': 'excepted throughput'}}}
+  Every user should fill it out with your actual numbers.
+* update_expected: if update_expected==True, and add argument "--update-expected" in bash command,
+  all objects in this file will changed after the run::
+
+   ./dts --update-expected
+
+At the beginning, please change test_parameters according to your requirements,
+then run ./dts --update-expected to get the absolute results which will replace
+the default numbers 0.00 in this configuration.
+So you will have your own private configuration, and could start your tests as usual.
+
+
+Run DTS performance test with IXIA
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Now you can start DTS performance test with IXIA:
+
+.. code-block:: console
+
+    root@test1:~/dts# ./dts
+                  dts:
+    DUT 192.168.1.1
+                        tester: ssh root@192.168.1.1
+                        ...
+    pktgen: ssh root@192.168.1.1
+                        pktgen: tclsh
+                        pktgen: source ./IxiaWish.tcl
+                        pktgen: set ::env(IXIA_VERSION) 9.00
+                        pktgen: package req IxTclHal
+                        pktgen: ixConnectToTclServer 192.168.2.1
+                        pktgen: ixLogin IxiaTclUser
+                        pktgen: ixConnectToChassis 192.168.2.1
+                        pktgen: set chasId [ixGetChassisID 192.168.2.1]
+                        pktgen: ixClearOwnership [list [list 1 3 1] [list 1 3 2]]
+                        pktgen: ixTakeOwnership [list [list 1 3 1] [list 1 3 2]] force
+                        pktgen: stat getLineSpeed 1 3 1
+                        pktgen: stat getLineSpeed 1 3 2
+                        ...
+
+    TestNicSingleCorePerf: Test Case test_perf_nic_single_core Begin
+    TestNicSingleCorePerf: Executing Test Using cores: ['28', '29'] of config 1C/1T
+    TestNicSingleCorePerf: Test running at parameters: framesize: 64, rxd/txd: 512
+    dut.192.168.1.1: x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 28,29 -n 6 -a 0000:af:00.0 -a 0000:b1:00.0 -- -i --portmask=0x3 --rxq=2 --txq=2 --txd=512 --rxd=512 --nb-cores=1
+    dut.192.168.1.1: start
+                   pktgen: stat getLineSpeed 1 1 1
+                   pktgen: stat getLineSpeed 1 1 2
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: begin traffic ......
+                   tester: scp -v ixiaConfig.tcl root@192.168.1.1:~/
+                   pktgen: source ixiaConfig.tcl
+                   pktgen: begin get port statistic ...
+                   pktgen: stat getRate statAllStats 1 3 2
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: stat getRate statAllStats 1 3 1
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: stat getRate statAllStats 1 3 2
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: stat getRate statAllStats 1 3 1
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: throughput: pps_rx 69504677.000000, bps_rx 35586394625.000000
+                   pktgen: ixStopTransmit portList
+                   pktgen: traffic completed.
+      dut.192.168.1.1: stop
+      dut.192.168.1.1: quit
+      TestNicSingleCorePerf: Trouthput of framesize: 64, rxd/txd: 512 is :69.504677 Mpps
+      ...
+
+         TestNicSingleCorePerf:
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | Fwd_core | Frame Size | TXD/RXD | Throughput  |  Rate   | Expected Throughput | Throughput Difference |
+      +==========+============+=========+=============+=========+=====================+=======================+
+      | 1C/1T    | 64         | 512     | 69.505 Mpps | 93.414% | 0.000 Mpps          | 69.505 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | 1C/1T    | 64         | 2048    | 51.078 Mpps | 68.649% | 0.000 Mpps          | 51.078 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | 1C/2T    | 64         | 512     | 74.404 Mpps | 99.999% | 0.000 Mpps          | 74.404 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | 1C/2T    | 64         | 2048    | 67.851 Mpps | 91.192% | 0.000 Mpps          | 67.851 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+         TestNicSingleCorePerf: Test Case test_perf_nic_single_core Result PASSED:
+
+
+Test result
+~~~~~~~~~~~
+
+After the Test Suite finished the validation, we can find the result files as below in output folder.
+
+.. code-block:: console
+
+   fortville_25g_single_core_perf.json  dts.log  TestNicSingleCorePerf.log test_results.json
+
+The performance case will save the data results in the jison file.
+And the pattern is "nic name + suite name.json".
+Below is the json file of nic_single_core:
+
+.. code-block:: console
+
+      vim fortville_25g_single_core_perf.json
+
+      {"test_perf_nic_single_core": [{
+                "performance": [{"name": "Throughput", "value": 69.505, "unit": "Mpps", "delta": 69.505}],
+                "parameters":  [{"name": "Txd/Rxd", "value": 512, "unit": "descriptor"},
+                               {"name": "frame_size", "value": 64, "unit": "bytes"},
+                               {"name": "Fwd_core", "value": "1C/1T"}], "status": "PASS"},
+                {"performance": [{"name": "Throughput", "value": 51.078, "unit": "Mpps", "delta": 51.078}],
+                 "parameters": [{"name": "Txd/Rxd", "value": 2048, "unit": "descriptor"},
+                                {"name": "frame_size", "value": 64, "unit": "bytes"},
+                                {"name": "Fwd_core", "value": "1C/1T"}], "status": "PASS"},
+               {"performance": [{"name": "Throughput", "value": 74.404, "unit": "Mpps", "delta": 74.404}],
+                "parameters": [{"name": "Txd/Rxd", "value": 512, "unit": "descriptor"},
+                                {"name": "frame_size", "value": 64, "unit": "bytes"},
+                                {"name": "Fwd_core", "value": "1C/2T"}], "status": "PASS"},
+               {"performance": [{"name": "Throughput", "value": 67.851, "unit": "Mpps", "delta": 67.851}],
+                "parameters": [{"name": "Txd/Rxd", "value": 2048, "unit": "descriptor"},
+                               {"name": "frame_size", "value": 64, "unit": "bytes"},
+                               {"name": "Fwd_core", "value": "1C/2T"}], "status": "PASS"}]}
+
+
+You can set your own expectations in con/suite.cfg based on the json data.
+If the actual data differs too much from the expected data, the case fails.
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 20/24] dts: merge DTS doc/dts_gsg/usr_guide/results.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (18 preceding siblings ...)
  2022-04-06 15:11 ` [RFC PATCH v1 19/24] dts: merge DTS doc/dts_gsg/usr_guide/ixia.rst " Juraj Linkeš
@ 2022-04-06 15:11 ` Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 21/24] dts: merge DTS doc/dts_gsg/usr_guide/setup_dut.rst " Juraj Linkeš
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:11 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/results.rst | 101 ++++++++++++++++++++++++++
 1 file changed, 101 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/results.rst

diff --git a/dts/doc/dts_gsg/usr_guide/results.rst b/dts/doc/dts_gsg/usr_guide/results.rst
new file mode 100644
index 0000000000..3ec08d86fe
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/results.rst
@@ -0,0 +1,101 @@
+Test Result
+===========
+
+Overview
+--------
+
+After DTS finished the validation, we can find the result files similar as below in output folder.
+
+.. code-block:: console
+
+   rst_report  dts.log  statistics.txt  TestHelloWorld.log  test_results.json  test_results.xls
+
+*   rst_report: contains the result RST file of performance data
+*   dts.log: Full execution log of DTS framework
+*   statstics.txt: summary statistics of DTS executed suites
+*   TestHelloWorld.log: log message of Test suite: HelloWorld
+*   test_result.json: json format result file
+*   test_result.xls: excel format result file
+
+Statistics
+----------
+
+You can go through the summary of execution result via statistic.txt. This file includes the number of passed test cases, the number of failed case, the number of blocked and pass ratio.
+
+Please see example as the following. You can cat the sample file, then show this information of execution, totally executed two test cases, all cases passed the criterion and no failed or blocked cases.
+
+.. code-block:: console
+
+   [root@tester output]# cat statistics.txt
+   dpdk_version = 21.02.0
+   Passed     = 2
+   Failed     = 0
+   Blocked    = 0
+   Pass rate  = 100.0
+
+Details
+-------
+
+DTS provides 2 formats for test results, one is json, and the other is excel.
+If you need more detail information of test result, either of them is good to check.
+Both of them contain case names and results, also the failure reasons.
+
+* JSON result: result.json
+
+.. code-block:: console
+
+    {
+        "192.168.1.1": {
+            "dpdk_version": "21.02.0",
+            "nic": {
+                "driver": "vfio-pci",
+                "firmware": "8.00 0x80008c1a 1.2766.0",
+                "kdriver": "i40e-2.13.10",
+                "name": "fortville_25g"
+            },
+            "x86_64-native-linuxapp-gcc": {
+                "hello_world/test_hello_world_all_core": "passed"
+                "hello_world/test_hello_world_single_core": "passed"
+            }
+        }
+    }
+
+
+* Excel result: test_result.xls
+
+.. figure:: image/dts_result.png
+
+Logs
+----
+
+If you want to track more details about the process of each suite, please go to log file which named by this suite, all related information will stored in this file.
+
+Please see example for TestHelloWorld suite log as the following. This log file showed that application helloworld sent hello message from core1, and finally matched the pass criterion.
+
+.. code-block:: console
+
+   31/12/2020 11:04:00                 INFO:
+   TEST SUITE : TestHelloWorld
+   31/12/2020 11:04:00                 INFO: NIC :       fortville_25g
+   31/12/2020 11:04:00        SUITE_DUT_CMD: meson configure -Dexamples=helloworld x86_64-native-linuxapp-gcc
+   31/12/2020 11:04:01        SUITE_DUT_CMD: ninja -C x86_64-native-linuxapp-gcc
+   31/12/2020 11:04:07     SUITE_DUT_OUTPUT: ninja: Entering directory `x86_64-native-linuxapp-gcc'^M
+     [0/1] Regenerating build files.^M
+     The Meson build system^M
+     Version: 0.55.3^M
+     Source dir: /root/dpdk^M
+     Build dir: /root/dpdk/x86_64-native-linuxapp-gcc^M
+     Build type: native build^
+     …
+     Build targets in project: 998^M
+     Found ninja-1.10.0.git.kitware.jobserver-1 at /usr/local/bin/ninja^M
+     [1/2] Compiling C object examples/dpdk-helloworld.p/helloworld_main.c.o^M
+     [2/2] Linking target examples/dpdk-helloworld
+   31/12/2020 11:04:09                INFO: Test Case test_hello_world_single_core Begin
+   31/12/2020 11:04:13       SUITE_DUT_CMD: ./x86_64-native-linuxapp-gcc/examples/dpdk-helloworld  -l 1 -n 4   --file-prefix=dpdk_10243_20201231110241
+       SUITE_DUT_OUTPUT: EAL: Detected 72 lcore(s)^M
+   …
+   hello from core 1
+   31/12/2020 11:04:15                 INFO: Test Case test_hello_world_single_core Result PASSED:
+   31/12/2020 11:04:25                 INFO:
+   TEST SUITE ENDED: TestHelloWorld
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 21/24] dts: merge DTS doc/dts_gsg/usr_guide/setup_dut.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (19 preceding siblings ...)
  2022-04-06 15:11 ` [RFC PATCH v1 20/24] dts: merge DTS doc/dts_gsg/usr_guide/results.rst " Juraj Linkeš
@ 2022-04-06 15:11 ` Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 22/24] dts: merge DTS doc/dts_gsg/usr_guide/sys_reqs.rst " Juraj Linkeš
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:11 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/setup_dut.rst | 150 ++++++++++++++++++++++++
 1 file changed, 150 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/setup_dut.rst

diff --git a/dts/doc/dts_gsg/usr_guide/setup_dut.rst b/dts/doc/dts_gsg/usr_guide/setup_dut.rst
new file mode 100644
index 0000000000..c47db8b781
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/setup_dut.rst
@@ -0,0 +1,150 @@
+Set up DUT
+===========
+
+This chapter describes the packages required to compile the DPDK in DUT.
+
+BIOS Setting Prerequisite on x86
+--------------------------------
+
+DPDK prefers devices bound to ``vfio-pci`` kernel module, therefore, `VT-x` and `VT-d` should be enabled.
+
+.. code-block:: console
+
+   Advanced -> Integrated IO Configuration -> Intel(R) VT for Directed I/O <Enabled>
+   Advanced -> Processor Configuration -> Intel(R) Virtualization Technology <Enabled>
+
+
+Set Hugepages
+------------------
+
+Hugepage support is required for the large memory pool allocation used for packet buffers
+(the HUGETLBFS option must be enabled in the running kernel as indicated the previous section).
+By using hugepage allocations, performance is increased since fewer pages are needed,
+and therefore less Translation Lookaside Buffers (TLBs, high speed translation caches),
+which reduce the time it takes to translate a virtual page address to a physical page address.
+Without hugepages, high TLB miss rates would occur with the standard 4k page size, slowing performance.
+
+
+Edit /etc/default/grub
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Set GRUB_CMDLINE_LINUX in etc/default/grub:
+
+for 2M pagesize::
+
+    GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt hugepagesz=2M hugepages=1024 default_hugepagesz=2M intel_pstate=disable"
+
+for 1G pagesize::
+
+    GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt hugepagesz=1G hugepages=16 default_hugepagesz=1G intel_pstate=disable"
+
+Execute grub-mkconfig
+~~~~~~~~~~~~~~~~~~~~~~~
+
+execute below command::
+
+    # grub-mkconfig -o /boot/grub/grub.cfg
+
+.. note::
+
+    some OS may need execute following command::
+
+        #grub2-mkconfig -o /boot/grub2/grub.cfg
+
+then reboot OS to make the hugepage setting take effect.
+
+Packages Required
+------------------
+
+**Required Tools and Libraries:**
+
+.. note::
+
+    The setup commands and installed packages needed on various systems may be different.
+    For details on Linux distributions and the versions tested, please consult the DPDK Release Notes.
+
+*   General development tools including a supported C compiler such as gcc (version 4.9+) or clang (version 3.4+).
+
+    * For RHEL/Fedora systems these can be installed using ``dnf groupinstall "Development Tools"``
+
+    * For Ubuntu/Debian systems these can be installed using ``apt install build-essential``
+
+*   Python 3.5 or later.
+
+*   Meson (version 0.49.2+) and ninja
+
+    * ``meson`` & ``ninja-build`` packages in most Linux distributions
+
+    * If the packaged version is below the minimum version, the latest versions
+      can be installed from Python's "pip" repository: ``pip3 install meson ninja``
+
+*   ``pyelftools`` (version 0.22+)
+
+    * For Fedora systems it can be installed using ``dnf install python-pyelftools``
+
+    * For RHEL/CentOS systems it can be installed using ``pip3 install pyelftools``
+
+    * For Ubuntu/Debian it can be installed using ``apt install python3-pyelftools``
+
+*   Library for handling NUMA (Non Uniform Memory Access).
+
+    * ``numactl-devel`` in RHEL/Fedora;
+
+    * ``libnuma-dev`` in Debian/Ubuntu;
+
+.. note::
+
+   Please ensure that the latest patches are applied to third party libraries
+   and software to avoid any known vulnerabilities.
+
+
+**Optional Tools:**
+
+*   Intel® C++ Compiler (icc). For installation, additional libraries may be required.
+    See the icc Installation Guide found in the Documentation directory under the compiler installation.
+
+*   IBM® Advance ToolChain for Powerlinux. This is a set of open source development tools and runtime libraries
+    which allows users to take leading edge advantage of IBM's latest POWER hardware features on Linux. To install
+    it, see the IBM official installation document.
+
+**Additional Libraries**
+
+A number of DPDK components, such as libraries and poll-mode drivers (PMDs) have additional dependencies.
+For DPDK builds, the presence or absence of these dependencies will be automatically detected
+enabling or disabling the relevant components appropriately.
+
+In each case, the relevant library development package (``-devel`` or ``-dev``) is needed to build the DPDK components.
+
+For libraries the additional dependencies include:
+
+*   libarchive: for some unit tests using tar to get their resources.
+
+*   libelf: to compile and use the bpf library.
+
+
+Compile DPDK
+-------------
+
+Now we can compile the DPDK to check whether the DUT ENV is OK.
+
+commands::
+
+    CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static x86_64-native-linuxapp-gcc
+    ninja -C x86_64-native-linuxapp-gcc -j 110
+
+if there are no errors occurred during the compilation and the DPDK apps have been generated,
+it means the DUT ENV is OK now.
+
+Check dpdk-testpmd::
+
+    root@dpdk:~/dpdk# ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd --help
+    EAL: Detected 72 lcore(s)
+    EAL: Detected 2 NUMA nodes
+
+    Usage: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd [options]
+
+    EAL common options:
+      -c COREMASK         Hexadecimal bitmask of cores to run on
+      -l CORELIST         List of cores to run on
+    ...
+    --match-allocations Free hugepages exactly as allocated
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 22/24] dts: merge DTS doc/dts_gsg/usr_guide/sys_reqs.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (20 preceding siblings ...)
  2022-04-06 15:11 ` [RFC PATCH v1 21/24] dts: merge DTS doc/dts_gsg/usr_guide/setup_dut.rst " Juraj Linkeš
@ 2022-04-06 15:11 ` Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 23/24] dts: merge DTS doc/dts_gsg/usr_guide/trex.rst " Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 24/24] dts: merge DTS doc/dts_gsg/usr_guide/usage.rst " Juraj Linkeš
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:11 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/sys_reqs.rst | 131 +++++++++++++++++++++++++
 1 file changed, 131 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/sys_reqs.rst

diff --git a/dts/doc/dts_gsg/usr_guide/sys_reqs.rst b/dts/doc/dts_gsg/usr_guide/sys_reqs.rst
new file mode 100644
index 0000000000..b91eef9db5
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/sys_reqs.rst
@@ -0,0 +1,131 @@
+System Requirements
+===================
+
+This chapter describes the packages required to deploy DTS, including Tester and DUT.
+Tester and DUT should have one interface connected to the same internet, so that they can be accessed by each other from local IP address.
+The tester and DUT are recommended to install the latest Centos, Redhat or Ubuntu for easily installing DTS(DPDK Test Suite) or DPDK required modules.
+
+.. note::
+
+   Uubuntu 20.04 are installed for Tester and DUT, and  The setup instruction and required packages may be different on different operation systems.
+
+Firewall should be disabled on Tester and DUT so that all packets can be accepted by NIC Interface.
+
+.. code-block:: console
+
+   systemctl disable firewalld.service
+
+
+SSH Service
+-----------
+
+Since DPDK Test Suite Tester communicates with DUT via SSH, please install and start sshd service in your Tester and DUT.
+
+.. code-block:: console
+
+   apt-get install openssh-server      # download / install ssh software
+   service ssh start                   # start ssh service
+
+Generally DTS use Linux username and password to login, but it also supports to use authorized login.
+For create authorized login session, user needs to generate RSA authentication keys to ssh connectioni:
+
+.. code-block:: console
+
+   ssh-keygen -t rsa
+
+Python modules
+--------------
+
+To run DTS, `Python3` must be installed, and it uses the following packages:
+
+* xlwt: it is used to generate spreadsheet files which compatible with MS Excel 97/2000/XP/2003 XLS files。
+* numpy: it provides method to deal with array-processing test results.
+* pexpect: it provides API to automate interactive SSH sessions.
+* docutils:it is a modular system for processing documentation into useful formats, such as HTML, XML, and LaTeX
+* pcapy: it is a Python extension module that interfaces with the libpcap packet capture library. Pcapy enables python scripts to capture packets on the network.
+* xlrd: it is a Python module that extracts data from Excel spreadsheets.
+* threadpool: it is a Python module that maintains a pool of worker threads to perform time consuming operations in parallel.
+* scapy: it is a Python program that enables the user to send, sniff and dissect and forge network packets.
+
+They are recorded in `requirements.txt`.
+
+.. code-block:: console
+
+   [root@tester ~]# cat requirements.txt
+    ...
+    xlwt==1.3.0
+    pexpect==4.7.0
+    numpy==1.18.5
+    docutils
+    pcapy
+    xlrd
+    scapy==2.4.4
+    threadpool
+
+Recommend installing them quickly with following commands:
+
+.. code-block:: console
+
+   apt-get install python3-pip
+   pip3 install -r ../requirements.txt
+
+DTS uses python module scapy to forge or decode packets of a wide number of protocols, send them over the wire, capture them, and analyse the packets.
+We recommend installing scapy-2.4.4, as some protocol such as PFCP, GTPPDUSessionContainer are supported from this version.
+
+.. code-block:: console
+
+   pip3 install scapy  # install default version
+   pip3 install scapy==2.4.4 # install specific version
+
+Here are some differences between scapy 2.4.4 and scapy 2.4.3 about the packet layer:
+
+.. table:: Differences between scapy 2.4.3 with scapy 2.4.4
+
+    +------------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------------+
+    | Layer                  | packet in scapy 2.4.3           | packet in scapy 2.4.4                         | Comments                                              |
+    +========================+=================================+===============================================+=======================================================+
+    | PPP                    | PPP(proto=0xc021)               | PPP(b\'\\xc0\\x21\')                          | PPP protocol filed length is 1 byte in scapy2.4.4     |
+    +------------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------------+
+    | L2TP                   | L2TP(\'\\x00\\x00\\x00\\x11\')  | L2TP(b\'\\x00\\x00\\x00\\x11\')               | L2TP is byte type in scapy2.4.4                       |
+    +------------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------------+
+    | PFCP                   | N/A                             | PFCP(S=1, seid=1)                             | PFCP is not supported in scapy2.4.3                   |
+    +------------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------------+
+    | GTPPDUSessionContainer | N/A                             | GTPPDUSessionContainer(type=0, P=1, QFI=0x34) | GTPPDUSessionContainer is not supported in scapy2.4.3 |
+    +------------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------------+
+
+BIOS Setting Prerequisite on x86
+--------------------------------
+
+For the majority of platforms, no special BIOS settings for Tester and DUT.
+DPDK prefers devices bound to ``vfio-pci`` kernel module, therefore, `VT-x` and `VT-d` should be enabled.
+
+.. code-block:: console
+
+   Advanced -> Integrated IO Configuration -> Intel(R) VT for Directed I/O <Enabled>
+   Advanced -> Processor Configuration -> Intel(R) Virtualization Technology <Enabled>
+
+DPDK running Prerequisite
+-------------------------
+
+Hugepage support is required for the large memory pool allocation used for packet buffers.
+DPDK performance will be imporved more with 1G page size than 2M, therefore, recommend to use 1G pages for DPDK.
+The following options should be passed to Linux Cmdline:
+
+.. code-block:: console
+
+   hugepagesz=1G hugepages=16 default_hugepagesz=1G
+
+For more detail information of DPDK requirements, please refer to `Data Plane Development Kit Getting Started Guide <http://dpdk.org/doc/guides>`_.
+
+Performance testing requirements
+--------------------------------
+
+DTS supports three kinds of traffic generators: `Scapy`, `TRex` and `Ixia IxExplorer`. Scapy is for functional testing, TRex and `Ixia IxExplorer` are for performance testing. The mechanism in DTS that mananges traffic generators for performance is called `Pktgen`.
+
+`Ixia IxExplorer` is the principal means used to program Ixia hardware and to perform testing on network devices. Ixia is a hardware traffic generator product of `keysight <https://www.keysight.com>`_ company. DTS requires to install TCL (Tool Command Language) package to connect and control `Ixia IxExplorer`:
+
+.. code-block:: console
+
+   apt-get install tcl
+
+`TRex <https://trex-tgn.cisco.com>`_ is an open source software traffic generator fuelled by DPDK. It generates L3-7 traffic and provides in one tool capabilities. DTS requires to install `Trex` and configure it before lunching DTS.
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 23/24] dts: merge DTS doc/dts_gsg/usr_guide/trex.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (21 preceding siblings ...)
  2022-04-06 15:11 ` [RFC PATCH v1 22/24] dts: merge DTS doc/dts_gsg/usr_guide/sys_reqs.rst " Juraj Linkeš
@ 2022-04-06 15:11 ` Juraj Linkeš
  2022-04-06 15:11 ` [RFC PATCH v1 24/24] dts: merge DTS doc/dts_gsg/usr_guide/usage.rst " Juraj Linkeš
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:11 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/trex.rst | 377 +++++++++++++++++++++++++++++
 1 file changed, 377 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/trex.rst

diff --git a/dts/doc/dts_gsg/usr_guide/trex.rst b/dts/doc/dts_gsg/usr_guide/trex.rst
new file mode 100644
index 0000000000..8dfa66bdbb
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/trex.rst
@@ -0,0 +1,377 @@
+Practice with TRex
+==================
+
+Download TREX
+-------------
+TREX should be installed in Tester, it could be downloaded from http://trex-tgn.cisco.com/trex/release/.
+We recommend to use the latest version v2.88.
+
+.. code-block:: console
+
+    wget http://trex-tgn.cisco.com/trex/release/v2.88.tar.gz
+
+To read more about T-Rex stateless mode, read the
+`T-Rex stateless support guide <https://trex-tgn.cisco.com/trex/doc/trex_stateless.html>`__.
+
+Configure TREX
+--------------
+
+Extract the downloaded TREX tarball
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Extract the downloaded TREX file to /opt/trex/::
+
+    root@tester:/opt# mkdir trex
+    root@tester:/opt# cd trex
+    root@tester:/opt/trex# tar -zxvf v2.88.tar.gz
+    v2.88/
+    v2.88/_t-rex-64-debug
+    v2.88/t-rex-64-debug
+    ...
+    v2.88/trex_client_v2.88.tar.gz
+
+Generate Configure File
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Identify the performance test ports in tester
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+execute the command like below to list the ports::
+
+    root@tester:/opt/trex/v2.88# ./dpdk_setup_ports.py -s
+
+    Network devices using DPDK-compatible driver
+    ============================================
+    <none>
+
+    Network devices using kernel driver
+    ===================================
+    0000:03:00.0 'VMXNET3 Ethernet Controller' if=ens160 drv=vmxnet3 unused=igb_uio,vfio-pci,uio_pci_generic *Active*
+    0000:0b:00.0 'Device 1592' if=ens192f0 drv=ice unused=igb_uio,vfio-pci,uio_pci_generic
+    0000:0b:00.1 'Device 1592' if=ens192f1 drv=ice unused=igb_uio,vfio-pci,uio_pci_generic
+    Other network devices
+    =====================
+    <none>
+
+Generate Configure File
+^^^^^^^^^^^^^^^^^^^^^^^
+Assume that we use 0000:0b:00.0, 0000:0b:00.1 to connect to DUT port.
+And the ports topology as below::
+
+    trex.0 (0b:00.0/40:a6:b7:0b:55:78) <-------> DUT port 0 (05:00.0/b4:96:91:9f:63:68)
+    trex.1 (0b:00.1/40:a6:b7:0b:55:79) <-------> DUT port 1 (05:00.1/b4:96:91:9f:63:69)
+
+We need to generate the trex config file as below::
+
+    root@tester:/opt/v2.88# ./dpdk_setup_ports.py -i
+    By default, IP based configuration file will be created. Do you want to use MAC based config? (y/N)y
+    +----+------+---------+-------------------+--------------------------------------------+---------+----------+----------+
+    | ID | NUMA |   PCI   |        MAC        |                    Name                    | Driver  | Linux IF |  Active  |
+    +====+======+=========+===================+============================================+=========+==========+==========+
+    | 0  | -1   | 03:00.0 | 00:0c:29:29:30:80 | VMXNET3 Ethernet Controller                | vmxnet3 | ens160   | *Active* |
+    +----+------+---------+-------------------+--------------------------------------------+---------+----------+----------+
+    | 1  | -1   | 0b:00.0 | 40:a6:b7:0b:55:78 | Device 1592                                | ice     | ens192f0 |          |
+    +----+------+---------+-------------------+--------------------------------------------+---------+----------+----------+
+    | 2  | -1   | 0b:00.1 | 40:a6:b7:0b:55:79 | Device 1592                                | ice     | ens192f1 |          |
+    +----+------+---------+-------------------+--------------------------------------------+---------+----------+----------+
+    Please choose an even number of interfaces from the list above, either by ID, PCI or Linux IF
+    Stateful will use order of interfaces: Client1 Server1 Client2 Server2 etc. for flows.
+    Stateless can be in any order.
+    Enter list of interfaces separated by space (for example: 1 3) : 1 2
+    For interface 1, assuming loopback to its dual interface 2.
+    Destination MAC is 40:a6:b7:0b:55:79. Change it to MAC of DUT? (y/N).y
+    Please enter a new destination MAC of interface 1: b4:96:91:9f:63:68
+    For interface 2, assuming loopback to its dual interface 1.
+    Destination MAC is 40:a6:b7:0b:55:78. Change it to MAC of DUT? (y/N).y
+    Please enter a new destination MAC of interface 2: b4:96:91:9f:63:69
+    Print preview of generated config? (Y/n)Y
+    ### Config file generated by dpdk_setup_ports.py ###
+
+    - version: 2
+      interfaces: ['0b:00.0', '0b:00.1']
+      port_info:
+          - dest_mac: b4:96:91:9f:63:68
+            src_mac:  40:a6:b7:0b:55:78
+          - dest_mac: b4:96:91:9f:63:69
+            src_mac:  40:a6:b7:0b:55:79
+
+      platform:
+          master_thread_id: 0
+          latency_thread_id: 1
+          dual_if:
+            - socket: 0
+              threads: [2,3,4,5,6,7]
+
+    Save the config to file? (Y/n)Y
+    Default filename is /etc/trex_cfg.yaml
+    Press ENTER to confirm or enter new file:
+    File /etc/trex_cfg.yaml already exist, overwrite? (y/N)Y
+    Saved to /etc/trex_cfg.yaml.
+    root@tester:/opt/trex/v2.88#
+
+We could not modify the DUT mac during the configuration and modify it in the generated file /etc/trex_cfg.yaml.
+
+Modify Configure File
+^^^^^^^^^^^^^^^^^^^^^
+Make sure the DUT mac of the generated TREX file is correct, and add prefix and limit_memory is better::
+
+    root@tester:/opt/trex/v2.88# cat /etc/trex_cfg.yaml
+    ### Config file generated by dpdk_setup_ports.py ###
+
+    - version: 2
+      interfaces: ['0b:00.0', '0b:00.1']
+      prefix: TREX
+      limit_memory: 4096
+      port_info:
+          - dest_mac: b4:96:91:9f:63:68
+            src_mac:  40:a6:b7:0b:55:78
+          - dest_mac: b4:96:91:9f:63:69
+            src_mac:  40:a6:b7:0b:55:79
+
+      platform:
+          master_thread_id: 0
+          latency_thread_id: 1
+          dual_if:
+            - socket: 0
+              threads: [2,3,4,5,6,7]
+
+    root@tester:/opt/trex/v2.88#
+
+Replace system scapy with TREX scapy
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+As the know trex issue -- trex scapy lib will be conflict with scapy installed in OS, we need the replace the scapy
+in system with trex scapy.
+
+#. backup your scapy::
+
+    cp -rf /usr/local/lib/python3.6/dist-packages/scapy /usr/local/lib/python3.6/dist-packages/scapy_backup
+
+#. unify scapy version with trex::
+
+    cp  -rf /opt/trex/v2.88/external_libs/scapy-2.4.3/scapy/ /usr/local/lib/python3.6/dist-packages/scapy
+
+Configure DTS
+--------------
+
+Configure execution.cfg
+~~~~~~~~~~~~~~~~~~~~~~~
+Add the performance test suite and set perf=true::
+
+    root@tester:dts# cat execution.cfg
+    [Execution1]
+    crbs=192.168.1.1
+    drivername=vfio-pci
+    build_type=meson
+    test_suites=
+            tso,
+    targets=
+        x86_64-native-linuxapp-gcc
+    parameters=nic_type=cfg:perf=true
+    root@tester:dts#
+
+Configure $DTS_CFG_FOLDER/crbs.cfg
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Set the pktgen_group=trex or pktgen_group=TREX, this item is case insensitive::
+
+    root@tester:dts# cat $DTS_CFG_FOLDER/crbs.cfg
+    [192.168.1.1]
+    dut_ip=192.168.1.1
+    dut_user=root
+    dut_passwd=dutpwd
+    os=linux
+    dut_arch=
+    tester_ip=192.168.1.2
+    tester_passwd=testerpwd
+    ixia_group=
+    pktgen_group=trex
+    channels=4
+    bypass_core0=True
+
+Configure $DTS_CFG_FOLDER/ports.cfg
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+This configuration is just same with PF function test, so if you have completed some functional test,
+you have no need to modify the $DTS_CFG_FOLDER/ports.cfg, just like below::
+
+    root@tester:dts# cat $DTS_CFG_FOLDER/ports.cfg
+    [192.168.1.1]
+    ports =
+        pci=0000:05:00.0,peer=0000:0b:00.0;
+        pci=0000:05:00.1,peer=0000:0b:00.1;
+
+In addition, it could be configured as below::
+
+    root@tester:dts# cat $DTS_CFG_FOLDER/ports.cfg
+    [192.168.1.1]
+    ports =
+        pci=0000:05:00.0,peer=TREX:0;
+        pci=0000:05:00.1,peer=TREX:1;
+
+We recommend to use the first format configuration, as it has no need to do modification when we do functional test.
+
+Configure $DTS_CFG_FOLDER/pktgen.cfg
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Fill in the $DTS_CFG_FOLDER/pktgen.cfg with your TREX setting, for the first time, you should set start_trex=yes.
+Set the IP address of the device which you installed TREX into item ‘server=’, it should be the tester IP.
+The configuration should as below::
+
+    root@tester:dts# cat $DTS_CFG_FOLDER/pktgen.cfg
+    [TREX]
+    trex_root_path=/opt/trex/v2.88
+    trex_lib_path=/opt/trex/v2.88/automation/trex_control_plane/interactive
+    config_file=/etc/trex_cfg.yaml
+    server=192.168.1.1
+    pcap_file=/opt/trex/v2.88/stl/sample.pcap
+    core_num=4
+    #core_mask=0x3
+    ip_src=16.0.0.1
+    ip_dst=10.0.0.1
+    warmup=15
+    duration=-1
+    start_trex=yes
+
+As the trex_lib_path may be different in different versions, you could find the correct path as blow command::
+
+    root@tester:/opt/trex/v2.88# find . -name trex_stl_lib
+    ./automation/trex_control_plane/interactive/trex_stl_lib
+    root@tester:/opt/trex/v2.88#
+
+
+Run DTS performance test with TREX
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Now you can start DTS performance test with TREX::
+
+    root@tester:/home/zhaohy/dts# ./dts
+                           dts:
+    DUT 192.168.1.1
+                        tester: ssh root@192.168.1.1
+    ...
+    pktgen: ssh root@192.168.1.1
+    pktgen: cd /opt/trex/v2.88;./t-rex-64 -i --cfg /etc/trex_cfg.yaml -c 4
+                        pktgen: Starting Scapy server..... Scapy server is started
+    Trying to bind to igb_uio ...
+    /usr/bin/python3 dpdk_nic_bind.py --bind=igb_uio 0000:0b:00.0 0000:0b:00.1
+    ...
+                     TestTSO: Test Case test_perf_TSO_2ports Begin
+             dut.10.240.183.72:
+                        tester:
+                       TestTSO: Executing PMD using 1S/1C/2T
+             dut.10.240.183.72: x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -l 1,45 -n 4 -a 0000:05:00.0 -a 0000:05:00.1  --file-prefix=dpdk_31529_20210324143008   -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=0x3 --max-pkt-len=9000 --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32
+             dut.10.240.183.72: EAL: Detected 88 lcore(s)
+             ...
+    pktgen: Rx Port 0 stats:
+    rx_port: 0,  rx_bps: 25354096640.000000, rx_pps: 1239130.250000
+                        pktgen: throughput: pps_rx 5463897.750000, bps_rx 50961129472.000000
+                        pktgen: traffic completed.
+    ...
+                       TestTSO:
+    +------------+---------------+------------+
+    | Frame Size | 1S/1C/2T Mpps | % linerate |
+    +============+===============+============+
+    | 128        | 5.371         | 4          |
+    +------------+---------------+------------+
+    | 2500       | 5.464         | 56         |
+    +------------+---------------+------------+
+                           TestTSO: Test Case test_perf_TSO_2ports Result PASSED
+
+FAQ
+---
+
+dpdk hugepage management conflict issue
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+trex use older dpdk version than we release cycle source code. When dpdk change
+the memory management merchanism, trex will meet the following issue.
+
+Trex should run on an independent platform. DUT/Trex should run on two platforms:
+
+* one is used as TESTER and trex server, another one is used as DUT.(dts/pktgen)
+* one is used as trex server, another one is used as DUT/TESTER.(recommended scheme)
+  This scheme can make sure that trex run on its full status capability.
+
+When trex run with dts on the same platform, trex server sometimes boot up
+failed for hugepage error.
+
+.. code-block:: console
+
+      ./t-rex-64  -i --stl -k 4
+
+         Starting Scapy server..... Scapy server is started
+         Trying to bind to igb_uio ...
+         /usr/bin/python3 dpdk_nic_bind.py --bind=igb_uio 0000:85:00.0 0000:8a:00.1
+         The ports are bound/configured.
+         Starting  TRex v2.41 please wait  ...
+         EAL: Can only reserve 1766 pages from 4096 requested
+         Current CONFIG_RTE_MAX_MEMSEG=256 is not enough
+         Please either increase it or request less amount of memory.
+         EAL: FATAL: Cannot init memory
+
+         EAL: Cannot init memory
+
+          You might need to run ./trex-cfg  once
+         EAL: Error - exiting with code: 1
+           Cause: Invalid EAL arguments
+
+trex quit when using Niantic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+when bind dut NNT port to igb_uio, peer port will get a link down status, then
+trex server using NNT nic will quit.
+
+.. code-block:: console
+
+   WATCHDOG: task 'master' has not responded for more than 2.00044 seconds - timeout is 2 seconds
+
+   *** traceback follows ***
+
+   1       0x55a7c779561a ./_t-rex-64(+0x12761a) [0x55a7c779561a]
+   2       0x7f23da4be1b0 /lib64/libpthread.so.0(+0x121b0) [0x7f23da4be1b0]
+   3       0x55a7c7942d40 rte_delay_us_block + 128
+   4       0x55a7c798d731 ixgbe_setup_mac_link_multispeed_fiber + 337
+   5       0x55a7c79a8f14 ./_t-rex-64(+0x33af14) [0x55a7c79a8f14]
+   6       0x55a7c7954c72 rte_eth_link_get_nowait + 114
+   7       0x55a7c776a988 DpdkTRexPortAttr::update_link_status_nowait() + 24
+   8       0x55a7c77856a6 CGlobalTRex::handle_slow_path() + 118
+   9       0x55a7c7785ad7 CGlobalTRex::run_in_master() + 759
+   10      0x55a7c7785e3c ./_t-rex-64(+0x117e3c) [0x55a7c7785e3c]
+   11      0x55a7c793efba rte_eal_mp_remote_launch + 346
+   12      0x55a7c7789e1e main_test(int, char**) + 1038
+   13      0x7f23d9417f2a __libc_start_main + 234
+   14      0x55a7c7719b9d ./_t-rex-64(+0xabb9d) [0x55a7c7719b9d]
+
+
+   *** addr2line information follows ***
+
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+   ??:0
+
+
+   ./t-rex-64: line 80: 25870 Aborted                 (core dumped) ./_$(
+
+other issues
+~~~~~~~~~~~~
+
+#. linux kernel version should not be too low.
+
+#. Trex only works with even number link peers.
+
+#. Trex only works with nics, which are using the same driver.
+
+#. Before boot up trex, please make sure the peer ports are on up status.
+
+#. If you have ran dpdk on the platform which you want to deploy trex-server,
+   reboot the platform to make sure that trex-server can work fine.
+
+#. If using i40e driver, Trex v2.41 version need i40e nic firmware version newer than 5.02.
+
+#. trex will drop the received packet, which dst mac is the port mac address.
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [RFC PATCH v1 24/24] dts: merge DTS doc/dts_gsg/usr_guide/usage.rst to DPDK
  2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
                   ` (22 preceding siblings ...)
  2022-04-06 15:11 ` [RFC PATCH v1 23/24] dts: merge DTS doc/dts_gsg/usr_guide/trex.rst " Juraj Linkeš
@ 2022-04-06 15:11 ` Juraj Linkeš
  23 siblings, 0 replies; 25+ messages in thread
From: Juraj Linkeš @ 2022-04-06 15:11 UTC (permalink / raw)
  To: thomas, david.marchand, Honnappa.Nagarahalli, ohilyard, lijuan.tu
  Cc: dev, Juraj Linkeš

---
 dts/doc/dts_gsg/usr_guide/usage.rst | 350 ++++++++++++++++++++++++++++
 1 file changed, 350 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/usage.rst

diff --git a/dts/doc/dts_gsg/usr_guide/usage.rst b/dts/doc/dts_gsg/usr_guide/usage.rst
new file mode 100644
index 0000000000..ba714703c0
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/usage.rst
@@ -0,0 +1,350 @@
+Usage
+=====
+
+Configuration
+-------------
+
+Configuring your own execution file
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+First of all, you must configure execution.cfg as below:
+
+.. code-block:: console
+
+   [Execution1]
+   crbs=<CRB IP Address>
+   drivername=vfio-pci
+   build_type=meson
+   rx_mode=avx512
+   test_suites=
+       hello_world,
+   targets=
+       x86_64-native-linuxapp-gcc
+   parameters=nic_type=cfg:func=true
+
+* crbs: IP address of the DUT. The detail information is defined in file $DTS_CFG_FOLDER/crbs.cfg.
+* drivername: the driver devices used by DPDK bound to.
+* build_type: the tool for building DPDK, it can be meson.
+* rx_mode: vector instructions used in tests, it can be novector/sse/avx2/avx512. it is optional, if not set, dpdk uses avx2 by default.
+* test_suites: test suites and cases that to be executed. use ``:`` to separate suite and it's cases and use ``\`` to separate different cases.
+* targets: DPDK targets to be tested.
+* parameters: multiple keywords as following:
+
+  * nic_type: it is the type of the NIC to use. The types are defined in the file settings.py.
+    There's a special type named as **cfg**, which mean network information will be loaded from file $DTS_CFG_FOLDER/ports.cfg.
+    If use NIC type such as niantic, fortville_25g, it requires all DUT are the same types and no any same devices connected to Tester,
+    as DTS will test all devices connected to Tester. Therefore, recommend using **cfg**.
+  * func=true: run only functional test.
+  * perf=true: run only performance test.
+
+.. note::
+
+   The two options ``func=true`` and ``perf=true`` are mutually exclusive, as the traffic generators for functional and performance are mutually exclusive.
+
+Here are an example for functional testing:
+
+.. code-block:: console
+
+   [Execution1]
+   crbs=192.168.1.1
+   drivername=vfio-pci
+   build_type=meson
+   test_suites=
+        unit_tests_eal:test_version\test_common,
+   targets=
+        x86_64-default-linuxapp-gcc,
+   parameters=nic_type=cfg:func=true
+
+
+Configure CRB information
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Then please add the detail information about your CRB in $DTS_CFG_FOLDER/crbs.conf as following:
+
+.. code-block:: console
+
+   [DUT IP]
+   dut_ip=xxx.xxx.xxx.xxx
+   dut_user=root
+   dut_passwd=
+   os=linux
+   dut_arch=
+   tester_ip=xxx.xxx.xxx.xxx
+   tester_passwd=
+   pktgen_group=
+   channels=4
+   bypass_core0=True
+   dut_cores=
+
+* DUT IP: section name, same as ``crbs`` in execution.cfg.
+* dut_ip: IP address of the DUT, same as ``crbs`` in execution.cfg.
+* dut_user: User name of DUT linux account
+* dut_passwd: Password of DUT linux account
+* tester_ip: IP address of tester
+* tester_passwd: Password of Tester linux account, user name should same as dut_user
+* pktgen_group: traffic generator name, it can be ``trex`` or ``ixia``, it is optional, if not set, DTS can't do performance tests.
+* channels: number of memory channels for DPDK EAL
+* bypass_core0: skip the first core when initialize DPDK
+* dut_cores: DUT core list, eg: 1,2,3,4,5,18-22, it is optional, if it is ``None`` or not set, all core list will be used.
+
+Here are an example for functional testing:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   dut_ip=192.168.1.1
+   dut_user=root
+   dut_passwd=dutpasswd
+   os=linux
+   tester_ip=192.168.1.2
+   tester_passwd=testerpasswd
+   channels=4
+   bypass_core0=True
+
+
+Configure port information
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If set ``nic_type=cfg`` in execution.cfg, please add port configuration in $DTS_CFG_FOLDER/ports.cfg as following:
+
+.. code-block:: console
+
+   [DUT IP]
+   ports =
+       pci=<Pci BDF>,peer=<Pci BDF>;
+       pci=<Pci BDF>,peer=IXIA:X.Y;
+       pci=<Pci BDF>,peer=TREX:X;
+
+It supports three patterns, the first one is for functional testing, the second one is for ``IXIA``, the third one is for ``TRex``:
+
+* pci: Device pci address of DUT
+* peer: info of Tester port which connected to the DUT device:
+
+  * if it is func testing, it is pci address
+  * if pktgen is ``TRex``, the `X` in ``TREX:X`` is port id in TRex configuration file, e.g. /etc/trex_cfg.yaml.
+  * if pktgen is ``IXIA``, the `X` is card id ,and the `Y` is port id, which configured in DTS_CFG_FOLDER/pktgen.cfg (./conf/pktgen.cfg by default).
+
+Here are an example for functional testing:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   ports =
+       pci=0000:06:00.0,peer=0000:81:00.0;
+       pci=0000:06:00.1,peer=0000:81:00.1;
+
+Here are an example for IXIA:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   ports =
+       pci=0000:18:00.0,peer=IXIA:1.1;
+       pci=0000:18:00.1,peer=IXIA:1.2;
+
+Here are an example for TRex:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   ports =
+       pci=0000:18:00.0,peer=TREX:1;
+       pci=0000:18:00.1,peer=TREX:1;
+
+
+Configure all test suites
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+$DTS_CFG_FOLDER/global_suite.cfg is a global suite configure file which is shared by all suites.
+
+.. code-block:: console
+
+    [global]
+    vf_driver=vfio-pci
+
+* vf_driver: VF driver that for VF testing, recommend keep the default value ``vfio-pci``.
+
+
+Configure your own suites
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Not all test suites have it's own configuration file which depended on script. If it has, the configuration file is $DTS_CFG_FOLDER/[suite_name].cfg
+For example, suite metrics has its suite configure file $DTS_CFG_FOLDER/metric.cfg:
+
+.. code-block:: console
+
+    [suite]
+    frames_cfg = { 64: 0.07, 128: 0.04, 256: 0.02, 512: 0.01, 1024: 0.01 }
+    duration = 60
+    sample_number = 3
+    rates = [100, 80, 40, 20]
+
+
+Configure your pktgen
+~~~~~~~~~~~~~~~~~~~~~
+
+Pktgen information are configured in $DTS_CFG_FOLDER/pktgen.cfg, pktgen_group must be configured too:
+
+* traffic generator is ``TRex``, set ``pktgen_group=trex`` in crbs.cfg.
+* traffic generator is ``IXIA``, set ``pktgen_group=ixia`` in crbs.cfg.
+
+Then configure $DTS_CFG_FOLDER/pktgen.cfg as following:
+
+.. code-block:: console
+
+   [TREX]
+   trex_root_path=/opt/trex/v2.84/
+   trex_lib_path=/opt/trex/v2.84/automation/trex_control_plane/interactive
+   config_file=/etc/trex_cfg.yaml
+   server=192.168.1.1 # equal to tester IP, TREX should be installed in tester
+   pcap_file=/opt/trex/v2.84/stl/sample.pacp
+   core_num=16
+   ip_src=16.0.0.1
+   ip_dst=10.0.0.1
+   warmup=15
+   duration=-1
+   start_trex=yes
+
+   [IXIA]
+   ixia_version=6.62
+   ixia_ip=xxx.xxx.xxx.xxx
+   ixia_ports=
+       card=1,port=1;
+       card=1,port=2;
+       card=1,port=3;
+       card=1,port=4;
+
+* TREX: section name for TRex.
+* trex_root_path: source code path for TRex
+* trex_lib_path: the director where dts can import Trex API
+* start_trex: whether DTS start TRex server, suggest 'yes' for one-time test, and 'no' for CI integration
+
+* IXIA: section name for IXIA.
+* ixia_version: the version of IxExplorer.
+* ixia_ip: IP of ixia
+* ixia_ports: ixia ports connected to DUT.
+
+Here are an example for TRex:
+
+.. code-block:: console
+
+   [TREX]
+   trex_root_path=/opt/trex/v2.84/
+   trex_lib_path=/opt/trex/v2.84/automation/trex_control_plane/interactive
+   config_file=/etc/trex_cfg.yaml
+   server=192.168.1.1 # equal to tester IP, TREX should be installed in tester
+   pcap_file=/opt/trex/v2.84/stl/sample.pacp
+   core_num=16
+   ip_src=16.0.0.1
+   ip_dst=10.0.0.1
+   warmup=15
+   duration=-1
+   start_trex=yes
+
+Here are an example for IXIA:
+
+.. code-block:: console
+
+   [IXIA]
+   ixia_version=9.00
+   ixia_ip=192.168.2.1
+   ixia_ports=
+       card=3,port=1;
+       card=3,port=2;
+   ixia_force100g=disable
+
+
+Running the Application
+-----------------------
+
+DTS supports multiple parameters which will select different of working mode of test framework.
+In the meantime, DTS can work with none parameter, then every parameter will set to its default value:
+
+.. code-block:: console
+
+   usage: main.py [-h] [--config-file CONFIG_FILE] [--snapshot SNAPSHOT] [--output OUTPUT] [-s]
+                  [-t TEST_CASES] [-d DIR] [-v] [--debug] [--debugcase] [--re_run RE_RUN]
+                  [--commands COMMANDS] [--update-expected]
+
+DTS supports the following parameters:
+
+*   ``-h, --help``
+
+    Display a help message and quit.
+
+*   ``--config-file CONFIG_FILE``
+
+    Execution file which contains test suites, DPDK target information and so on.
+    The default value is `execution.cfg`.
+
+*   ``--snapshot SNAPSHOT``
+
+    Snapshot .tgz file to use as input。
+    The deault value is `./dep/dpdk.tar.gz`.
+
+*   ``--output OUTPUT``
+
+    Output directory where dts log and result saved.
+    The default value is `./output`.
+
+*   ``-s, --skip-setup``
+
+    Skip all possible setup steps done on both DUT and tester.
+
+*   ``-t TEST_CASES, --test-cases TEST_CASES``
+
+    Execute only the specific test cases.
+    The default value is all test cases.
+
+*   ``-d DIR``
+
+    Output directory where dpdk package is extracted.
+
+*   ``-v, --verbose``
+
+    Enable verbose output, all message output on screen.
+
+*   ``--debug``
+
+    Enable debug mode, user can enter debug mode in process with `ctrl+c`
+    User can do further debug by attached to sessions or call pdb module by interact interface:
+
+.. code-block:: console
+
+   help(): show help message
+   list(): list all connected sessions
+   connect(name): connect to session directly
+   exit(): exit dts
+   quit(): quit debug mode and into normal mode
+   debug(): call python debug module
+
+*   ``--debugcase``
+
+   Enable debug mode with test cases.
+   DTS will hang and wait for user command before executing each test case:
+
+.. code-block:: console
+
+   rerun(): rerun current case
+   ctrl + d: exit current case
+
+*   ``--re_run RE_RUN``
+
+    Times that will re-run when case failed.
+    The default value is 0, and it must be >=0.
+
+*   ``--update-expected``
+
+    Enable write-back expected value of performance.
+    It requires test scripts support.
+
+Here are examples:
+
+.. code-block:: console
+
+   ./dts
+   ./dts -s
+   ./dts -s -d /home/dpdk
+   ./dts --debug
+   ./dts --debug --debugcase
+   ./dts --output test1
-- 
2.20.1


^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2022-04-06 15:14 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files to DPDK Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 01/24] dts: merge DTS CONTRIBUTING.TXT " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 02/24] dts: merge DTS doc/dts_gsg/Makefile " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 03/24] dts: merge DTS doc/dts_gsg/conf.py " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 04/24] dts: merge DTS doc/dts_gsg/image/dts_network_arch.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 05/24] dts: merge DTS doc/dts_gsg/image/dts_result.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 06/24] dts: merge DTS doc/dts_gsg/image/dts_soft_arch.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 07/24] dts: merge DTS doc/dts_gsg/image/scene_pf_passthrough.svg " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 08/24] dts: merge DTS doc/dts_gsg/image/virt_flow.svg " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 09/24] dts: merge DTS doc/dts_gsg/index.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 10/24] dts: merge DTS doc/dts_gsg/quick_start.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 11/24] dts: merge DTS doc/dts_gsg/rel_notes/index.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 12/24] dts: merge DTS doc/dts_gsg/rel_notes/release_21_11.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 13/24] dts: merge DTS doc/dts_gsg/usr_guide/asan_test.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 14/24] dts: merge DTS doc/dts_gsg/usr_guide/igb_uio.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 15/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_func_deploy.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 16/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_result.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 17/24] dts: merge DTS doc/dts_gsg/usr_guide/index.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 18/24] dts: merge DTS doc/dts_gsg/usr_guide/intro.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 19/24] dts: merge DTS doc/dts_gsg/usr_guide/ixia.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 20/24] dts: merge DTS doc/dts_gsg/usr_guide/results.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 21/24] dts: merge DTS doc/dts_gsg/usr_guide/setup_dut.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 22/24] dts: merge DTS doc/dts_gsg/usr_guide/sys_reqs.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 23/24] dts: merge DTS doc/dts_gsg/usr_guide/trex.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 24/24] dts: merge DTS doc/dts_gsg/usr_guide/usage.rst " Juraj Linkeš

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).