diff options
Diffstat (limited to 'doc')
23 files changed, 478 insertions, 358 deletions
diff --git a/doc/build-sdk-meson.txt b/doc/build-sdk-meson.txt index 508e2cb6..a4dd0919 100644 --- a/doc/build-sdk-meson.txt +++ b/doc/build-sdk-meson.txt @@ -132,7 +132,7 @@ Installing the Compiled Files Use ``ninja install`` to install the required DPDK files onto the system. The install prefix defaults to ``/usr/local`` but can be used as with other -options above. The environment variable ``DEST_DIR`` can be used to adjust +options above. The environment variable ``DESTDIR`` can be used to adjust the root directory for the install, for example when packaging. With the base install directory, the individual directories for libraries @@ -203,3 +203,9 @@ From examples/helloworld/Makefile:: build: @mkdir -p $@ + +NOTE: for --static builds, DPDK needs to be built with Meson >= 0.46 in order to +fully generate the list of private dependencies. If DPDK is built with an older +version of Meson, it might be necessary to manually specify dependencies of DPDK +PMDs/libraries, for example -lmlx5 -lmnl for librte-pmd-mlx5, or the static link +step might fail. diff --git a/doc/guides/cryptodevs/dpaa2_sec.rst b/doc/guides/cryptodevs/dpaa2_sec.rst index 9191704e..aee79ab4 100644 --- a/doc/guides/cryptodevs/dpaa2_sec.rst +++ b/doc/guides/cryptodevs/dpaa2_sec.rst @@ -129,7 +129,7 @@ AEAD algorithms: Supported DPAA2 SoCs -------------------- -* LS2080A/LS2040A +* LS2160A * LS2084A/LS2044A * LS2088A/LS2048A * LS1088A/LS1048A @@ -157,31 +157,15 @@ Prerequisites DPAA2_SEC driver has similar pre-requisites as described in :ref:`dpaa2_overview`. The following dependencies are not part of DPDK and must be installed separately: -* **NXP Linux SDK** - - NXP Linux software development kit (SDK) includes support for the family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - -* **DPDK Extra Scripts** - - DPAA2 based resources can be configured easily with the help of ready scripts - as provided in the DPDK helper repository. - - `DPDK Extra Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. +See :doc:`../platform/dpaa2` for setup information Currently supported by DPDK: -* NXP SDK **17.08+**. -* MC Firmware version **10.3.1** and higher. -* Supported architectures: **arm64 LE**. +- NXP SDK **18.09+**. +- MC Firmware version **10.10.0** and higher. +- Supported architectures: **arm64 LE**. -* Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. Pre-Installation Configuration ------------------------------ diff --git a/doc/guides/cryptodevs/dpaa_sec.rst b/doc/guides/cryptodevs/dpaa_sec.rst index dd683894..897a4fe8 100644 --- a/doc/guides/cryptodevs/dpaa_sec.rst +++ b/doc/guides/cryptodevs/dpaa_sec.rst @@ -101,32 +101,11 @@ Prerequisites ------------- DPAA_SEC driver has similar pre-requisites as described in :ref:`dpaa_overview`. -The following dependencies are not part of DPDK and must be installed separately: -* **NXP Linux SDK** +See :doc:`../platform/dpaa` for setup information - NXP Linux software development kit (SDK) includes support for the family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - -* **DPDK Extras Scripts** - - DPAA based resources can be configured easily with the help of ready scripts - as provided in the DPDK Extras repository. - - `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. - -Currently supported by DPDK: - -* NXP SDK **2.0+**. -* Supported architectures: **arm64 LE**. - -* Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. Pre-Installation Configuration ------------------------------ diff --git a/doc/guides/cryptodevs/octeontx.rst b/doc/guides/cryptodevs/octeontx.rst index 660e980c..1600a56d 100644 --- a/doc/guides/cryptodevs/octeontx.rst +++ b/doc/guides/cryptodevs/octeontx.rst @@ -53,11 +53,8 @@ AEAD Algorithms * ``RTE_CRYPTO_AEAD_AES_GCM`` -Compilation ------------ - -The **OCTEON TX** :sup:`®` board must be running the linux kernel based on -sdk-6.2.0 patch 3. In this, the OCTEON TX crypto PF driver is already built in. +Config flags +------------ For compiling the OCTEON TX crypto poll mode driver, please check if the CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO setting is set to `y` in @@ -65,23 +62,21 @@ config/common_base file. * ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=y`` -The following are the steps to compile the OCTEON TX crypto poll mode driver: +Compilation +----------- -.. code-block:: console +The OCTEON TX crypto poll mode driver can be compiled either natively on +**OCTEON TX** :sup:`®` board or cross-compiled on an x86 based platform. - cd <dpdk directory> - make config T=arm64-thunderx-linuxapp-gcc - make +Refer :doc:`../platform/octeontx` for details about setting up the platform +and building DPDK applications. -The example applications can be compiled using the following: +.. note:: -.. code-block:: console + OCTEON TX crypto PF driver needs microcode to be available at `/lib/firmware/` directory. + Refer SDK documents for further information. - cd <dpdk directory> - export RTE_SDK=$PWD - export RTE_TARGET=build - cd examples/<application> - make +SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_. Execution --------- diff --git a/doc/guides/eventdevs/dpaa.rst b/doc/guides/eventdevs/dpaa.rst index 2f356d3c..cfc40347 100644 --- a/doc/guides/eventdevs/dpaa.rst +++ b/doc/guides/eventdevs/dpaa.rst @@ -25,57 +25,17 @@ The DPAA EVENTDEV implements many features in the eventdev API; Supported DPAA SoCs -------------------- -- LS1046A -- LS1043A +- LS1046A/LS1026A +- LS1043A/LS1023A Prerequisites ------------- -There are following pre-requisites for executing EVENTDEV on a DPAA compatible -platform: - -1. **ARM 64 Tool Chain** - - For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/6.4-2017.08/aarch64-linux-gnu/>`_. - -2. **Linux Kernel** - - It can be obtained from `NXP's Github hosting <https://github.com/qoriq-open-source/linux>`_. - -3. **Rootfile System** - - Any *aarch64* supporting filesystem can be used. For example, - Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained - from `here <http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. - -As an alternative method, DPAA EVENTDEV can also be executed using images provided -as part of SDK from NXP. The SDK includes all the above prerequisites necessary -to bring up a DPAA board. - -The following dependencies are not part of DPDK and must be installed -separately: - -- **NXP Linux SDK** - - NXP Linux software development kit (SDK) includes support for family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - -- **DPDK Extra Scripts** - - DPAA based resources can be configured easily with the help of ready to use - xml files as provided in the DPDK Extra repository. - - `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. +See :doc:`../platform/dpaa` for setup information Currently supported by DPDK: -- NXP SDK **2.0+** or LSDK **17.09+** +- NXP SDK **2.0+** or LSDK **18.09+** - Supported architectures: **arm64 LE**. - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. diff --git a/doc/guides/eventdevs/dpaa2.rst b/doc/guides/eventdevs/dpaa2.rst index ad94f24b..2b1700a5 100644 --- a/doc/guides/eventdevs/dpaa2.rst +++ b/doc/guides/eventdevs/dpaa2.rst @@ -26,7 +26,7 @@ The DPAA2 EVENTDEV implements many features in the eventdev API; Supported DPAA2 SoCs -------------------- -- LS2080A/LS2040A +- LX2160A - LS2084A/LS2044A - LS2088A/LS2048A - LS1088A/LS1048A @@ -34,52 +34,12 @@ Supported DPAA2 SoCs Prerequisites ------------- -There are three main pre-requisities for executing DPAA2 EVENTDEV on a DPAA2 -compatible board: - -1. **ARM 64 Tool Chain** - - For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu>`_. - -2. **Linux Kernel** - - It can be obtained from `NXP's Github hosting <https://github.com/qoriq-open-source/linux>`_. - -3. **Rootfile system** - - Any *aarch64* supporting filesystem can be used. For example, - Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained - from `here <http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. - -As an alternative method, DPAA2 EVENTDEV can also be executed using images provided -as part of SDK from NXP. The SDK includes all the above prerequisites necessary -to bring up a DPAA2 board. - -The following dependencies are not part of DPDK and must be installed -separately: - -- **NXP Linux SDK** - - NXP Linux software development kit (SDK) includes support for family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - -- **DPDK Extra Scripts** - - DPAA2 based resources can be configured easily with the help of ready scripts - as provided in the DPDK Extra repository. - - `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. +See :doc:`../platform/dpaa2` for setup information Currently supported by DPDK: -- NXP SDK **2.0+**. -- MC Firmware version **10.0.0** and higher. +- NXP SDK **18.09+**. +- MC Firmware version **10.10.0** and higher. - Supported architectures: **arm64 LE**. - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. @@ -155,4 +115,4 @@ DPAA2 drivers for DPDK can only work on NXP SoCs as listed in the Port-core binding ~~~~~~~~~~~~~~~~~ -DPAA2 EVENTDEV driver requires event port 'x' to be used on core 'x'. +DPAA2 EVENTDEV can support only one eventport per core. diff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst index 371a817f..8da6a31b 100644 --- a/doc/guides/linux_gsg/linux_drivers.rst +++ b/doc/guides/linux_gsg/linux_drivers.rst @@ -48,6 +48,13 @@ be loaded as shown below: ``vfio-pci`` kernel module rather than ``igb_uio`` or ``uio_pci_generic``. For more details see :ref:`linux_gsg_binding_kernel` below. +.. note:: + + If the devices used for DPDK are bound to the ``uio_pci_generic`` kernel module, + please make sure that the IOMMU is disabled or passthrough. One can add + ``intel_iommu=off`` or ``amd_iommu=off`` or ``intel_iommu=on iommu=pt``in GRUB + command line on x86_64 systems, or add ``iommu.passthrough=1`` on arm64 system. + Since DPDK release 1.7 onward provides VFIO support, use of UIO is optional for platforms that support using VFIO. diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst index e2230f37..29c5f47a 100644 --- a/doc/guides/linux_gsg/sys_reqs.rst +++ b/doc/guides/linux_gsg/sys_reqs.rst @@ -64,7 +64,11 @@ Compilation of the DPDK x86_x32 ABI is currently supported with distribution packages only on Ubuntu higher than 13.10 or recent Debian distribution. The only supported compiler is gcc 4.9+. -* libnuma-devel - library for handling NUMA (Non Uniform Memory Access). +* Library for handling NUMA (Non Uniform Memory Access). + + * numactl-devel in Red Hat/Fedora; + + * libnuma-dev in Debian/Ubuntu; * Python, version 2.7+ or 3.2+, to use various helper scripts included in the DPDK package. @@ -103,6 +107,13 @@ System Software uname -r +.. note:: + + Kernel version 3.2 is no longer a kernel.org longterm stable kernel. + For DPDK 19.02 the minimum required kernel will be updated to + the current kernel.org oldest longterm stable supported kernel 3.16, + or recent versions of common distributions, notably RHEL/CentOS 7. + * glibc >= 2.7 (for features related to cpuset) The version can be checked using the ``ldd --version`` command. @@ -183,12 +194,6 @@ On a NUMA machine, pages should be allocated explicitly on separate nodes:: For 1G pages, it is not possible to reserve the hugepage memory after the system has booted. - On IBM POWER system, the nr_overcommit_hugepages should be set to the same value as nr_hugepages. - For example, if the required page number is 128, the following commands are used:: - - echo 128 > /sys/kernel/mm/hugepages/hugepages-16384kB/nr_hugepages - echo 128 > /sys/kernel/mm/hugepages/hugepages-16384kB/nr_overcommit_hugepages - Using Hugepages with the DPDK ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst index 620c045d..2173673b 100644 --- a/doc/guides/nics/dpaa.rst +++ b/doc/guides/nics/dpaa.rst @@ -181,65 +181,8 @@ Supported DPAA SoCs Prerequisites ------------- -There are three main pre-requisities for executing DPAA PMD on a DPAA -compatible board: +See :doc:`../platform/dpaa` for setup information -1. **ARM 64 Tool Chain** - - For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/6.4-2017.08/aarch64-linux-gnu/>`_. - -2. **Linux Kernel** - - It can be obtained from `NXP's Github hosting <https://github.com/qoriq-open-source/linux>`_. - -3. **Rootfile system** - - Any *aarch64* supporting filesystem can be used. For example, - Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained - from `here <http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. - -4. **FMC Tool** - - Before any DPDK application can be executed, the Frame Manager Configuration - Tool (FMC) need to be executed to set the configurations of the queues. This - includes the queue state, RSS and other policies. - This tool can be obtained from `NXP (Freescale) Public Git Repository <https://github.com/qoriq-open-source/fmc>`_. - - This tool needs configuration files which are available in the - :ref:`DPDK Extra Scripts <extra_scripts>`, described below for DPDK usages. - -As an alternative method, DPAA PMD can also be executed using images provided -as part of SDK from NXP. The SDK includes all the above prerequisites necessary -to bring up a DPAA board. - -The following dependencies are not part of DPDK and must be installed -separately: - -- **NXP Linux SDK** - - NXP Linux software development kit (SDK) includes support for family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - - -.. _extra_scripts: - -- **DPDK Extra Scripts** - - DPAA based resources can be configured easily with the help of ready scripts - as provided in the DPDK Extra repository. - - `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. - -Currently supported by DPDK: - -- NXP SDK **2.0+**. -- Supported architectures: **arm64 LE**. - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. diff --git a/doc/guides/nics/dpaa2.rst b/doc/guides/nics/dpaa2.rst index e2f385d4..769dc4e1 100644 --- a/doc/guides/nics/dpaa2.rst +++ b/doc/guides/nics/dpaa2.rst @@ -409,8 +409,7 @@ Features of the DPAA2 PMD are: Supported DPAA2 SoCs -------------------- - -- LS2080A/LS2040A +- LX2160A - LS2084A/LS2044A - LS2088A/LS2048A - LS1088A/LS1048A @@ -418,52 +417,12 @@ Supported DPAA2 SoCs Prerequisites ------------- -There are three main pre-requisities for executing DPAA2 PMD on a DPAA2 -compatible board: - -1. **ARM 64 Tool Chain** - - For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/6.4-2017.08/aarch64-linux-gnu/>`_. - -2. **Linux Kernel** - - It can be obtained from `NXP's Github hosting <https://github.com/qoriq-open-source/linux>`_. - -3. **Rootfile system** - - Any *aarch64* supporting filesystem can be used. For example, - Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained - from `here <http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. - -As an alternative method, DPAA2 PMD can also be executed using images provided -as part of SDK from NXP. The SDK includes all the above prerequisites necessary -to bring up a DPAA2 board. - -The following dependencies are not part of DPDK and must be installed -separately: - -- **NXP Linux SDK** - - NXP Linux software development kit (SDK) includes support for family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - -- **DPDK Extra Scripts** - - DPAA2 based resources can be configured easily with the help of ready scripts - as provided in the DPDK Extra repository. - - `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. +See :doc:`../platform/dpaa2` for setup information Currently supported by DPDK: -- NXP SDK **17.08+**. -- MC Firmware version **10.3.1** and higher. +- NXP SDK **18.09+**. +- MC Firmware version **10.10.0** and higher. - Supported architectures: **arm64 LE**. - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. diff --git a/doc/guides/platform/dpaa.rst b/doc/guides/platform/dpaa.rst new file mode 100644 index 00000000..39048715 --- /dev/null +++ b/doc/guides/platform/dpaa.rst @@ -0,0 +1,103 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2018 NXP + +NXP QorIQ DPAA Board Support Package +==================================== + +This doc has information about steps to setup QorIq dpaa +based layerscape platform and information about common offload +hw block drivers of **NXP QorIQ DPAA** SoC family. + +Supported DPAA SoCs +-------------------- + +* LS1046A/LS1026A +* LS1043A/LS1023A + +More information about SoC can be found at `NXP Official Website +<https://www.nxp.com/products/processors-and-microcontrollers/arm-based- +processors-and-mcus/qoriq-layerscape-arm-processors:QORIQ-ARM>`_. + + +Common Offload HW Block Drivers +------------------------------- + +1. **Nics Driver** + + See :doc:`../nics/dpaa` for NXP dpaa nic driver information. + +2. **Cryptodev Driver** + + See :doc:`../cryptodevs/dpaa_sec` for NXP dpaa cryptodev driver information. + +3. **Eventdev Driver** + + See :doc:`../eventdevs/dpaa` for NXP dpaa eventdev driver information. + + +Steps To Setup Platform +----------------------- + +There are four main pre-requisities for executing DPAA PMD on a DPAA +compatible board: + +1. **ARM 64 Tool Chain** + + For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz>`_. + +2. **Linux Kernel** + + It can be obtained from `NXP's Github hosting <https://source.codeaurora.org/external/qoriq/qoriq-components/linux>`_. + +3. **Rootfile system** + + Any *aarch64* supporting filesystem can be used. For example, + Ubuntu 16.04 LTS (Xenial) or 18.04 (Bionic) userland which can be obtained + from `here + <http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04.1-base-arm64.tar.gz>`_. + +4. **FMC Tool** + + Before any DPDK application can be executed, the Frame Manager Configuration + Tool (FMC) need to be executed to set the configurations of the queues. This + includes the queue state, RSS and other policies. + This tool can be obtained from `NXP (Freescale) Public Git Repository <https://source.codeaurora.org/external/qoriq/qoriq-components/fmc>`_. + + This tool needs configuration files which are available in the + :ref:`DPDK Extra Scripts <extra_scripts>`, described below for DPDK usages. + +As an alternative method, DPAA PMD can also be executed using images provided +as part of SDK from NXP. The SDK includes all the above prerequisites necessary +to bring up a DPAA board. + +The following dependencies are not part of DPDK and must be installed +separately: + +- **NXP Linux SDK** + + NXP Linux software development kit (SDK) includes support for family + of QorIQ® ARM-Architecture-based system on chip (SoC) processors + and corresponding boards. + + It includes the Linux board support packages (BSPs) for NXP SoCs, + a fully operational tool chain, kernel and board specific modules. + + SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. + + +.. _extra_scripts: + +- **DPDK Extra Scripts** + + DPAA based resources can be configured easily with the help of ready scripts + as provided in the DPDK Extra repository. + + `DPDK Extras Scripts <https://source.codeaurora.org/external/qoriq/qoriq-components/dpdk-extras>`_. + +Currently supported by DPDK: + +- NXP SDK **2.0+** (preferred: LSDK 18.09). +- Supported architectures: **arm64 LE**. + +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` + to setup the basic DPDK environment. diff --git a/doc/guides/platform/dpaa2.rst b/doc/guides/platform/dpaa2.rst new file mode 100644 index 00000000..5a64406e --- /dev/null +++ b/doc/guides/platform/dpaa2.rst @@ -0,0 +1,109 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2018 NXP + +NXP QorIQ DPAA2 Board Support Package +===================================== + +This doc has information about steps to setup NXP QoriQ DPAA2 platform +and information about common offload hw block drivers of +**NXP QorIQ DPAA2** SoC family. + +Supported DPAA2 SoCs +-------------------- + +- LX2160A +- LS2084A/LS2044A +- LS2088A/LS2048A +- LS1088A/LS1048A + +More information about SoC can be found at `NXP Official Website +<https://www.nxp.com/products/processors-and-microcontrollers/arm-based- +processors-and-mcus/qoriq-layerscape-arm-processors:QORIQ-ARM>`_. + + +Common Offload HW Block Drivers +------------------------------- + +1. **Nics Driver** + + See :doc:`../nics/dpaa2` for NXP dpaa2 nic driver information. + +2. **Cryptodev Driver** + + See :doc:`../cryptodevs/dpaa2_sec` for NXP dpaa2 cryptodev driver information. + +3. **Eventdev Driver** + + See :doc:`../eventdevs/dpaa2` for NXP dpaa2 eventdev driver information. + +4. **Rawdev AIOP CMDIF Driver** + + See :doc:`../rawdevs/dpaa2_cmdif` for NXP dpaa2 AIOP command interface driver information. + +5. **Rawdev QDMA Driver** + + See :doc:`../rawdevs/dpaa2_qdma` for NXP dpaa2 QDMA driver information. + + +Steps To Setup Platform +----------------------- + +There are four main pre-requisities for executing DPAA2 PMD on a DPAA2 +compatible board: + +1. **ARM 64 Tool Chain** + + For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz>`_. + +2. **Linux Kernel** + + It can be obtained from `NXP's Github hosting <https://source.codeaurora.org/external/qoriq/qoriq-components/linux>`_. + +3. **Rootfile system** + + Any *aarch64* supporting filesystem can be used. For example, + Ubuntu 16.04 LTS (Xenial) or 18.04 (Bionic) userland which can be obtained + from `here + <http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04.1-base-arm64.tar.gz>`_. + +4. **Resource Scripts** + + DPAA2 based resources can be configured easily with the help of ready scripts + as provided in the DPDK Extra repository. + +As an alternative method, DPAA2 PMD can also be executed using images provided +as part of SDK from NXP. The SDK includes all the above prerequisites necessary +to bring up a DPAA2 board. + +The following dependencies are not part of DPDK and must be installed +separately: + +- **NXP Linux SDK** + + NXP Linux software development kit (SDK) includes support for family + of QorIQ® ARM-Architecture-based system on chip (SoC) processors + and corresponding boards. + + It includes the Linux board support packages (BSPs) for NXP SoCs, + a fully operational tool chain, kernel and board specific modules. + + SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. + + +.. _extra_scripts: + +- **DPDK Extra Scripts** + + DPAA2 based resources can be configured easily with the help of ready scripts + as provided in the DPDK Extra repository. + + `DPDK Extras Scripts <https://source.codeaurora.org/external/qoriq/qoriq-components/dpdk-extras>`_. + +Currently supported by DPDK: + +- NXP SDK **2.0+** (preferred: LSDK 18.09). +- MC Firmware version **10.10.0** and higher. +- Supported architectures: **arm64 LE**. + +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` + to setup the basic DPDK environment. diff --git a/doc/guides/platform/index.rst b/doc/guides/platform/index.rst index ca6113d6..98c66389 100644 --- a/doc/guides/platform/index.rst +++ b/doc/guides/platform/index.rst @@ -10,4 +10,6 @@ The following are platform specific guides and setup information. :maxdepth: 2 :numbered: + dpaa + dpaa2 octeontx diff --git a/doc/guides/platform/octeontx.rst b/doc/guides/platform/octeontx.rst index 9f75d2a8..3bde91f9 100644 --- a/doc/guides/platform/octeontx.rst +++ b/doc/guides/platform/octeontx.rst @@ -15,11 +15,15 @@ More information about SoC can be found at `Cavium, Inc Official Website Common Offload HW Block Drivers ------------------------------- -1. **Eventdev Driver** +1. **Crypto Driver** + See :doc:`../cryptodevs/octeontx` for octeontx crypto driver + information. + +2. **Eventdev Driver** See :doc:`../eventdevs/octeontx` for octeontx ssovf eventdev driver information. -2. **Mempool Driver** +3. **Mempool Driver** See :doc:`../mempool/octeontx` for octeontx fpavf mempool driver information. @@ -35,6 +39,12 @@ OCTEON TX compatible board: Platform drivers) are available on Github at `octeontx-kmod <https://github.com/caviumnetworks/octeontx-kmod>`_ along with build, install and dpdk usage instructions. +.. note:: + + The PF driver and the required microcode for the crypto offload block will be + available with OCTEON TX SDK only. So for using crypto offload, follow the steps + mentioned in :ref:`setup_platform_using_OCTEON_TX_SDK`. + 2. **ARM64 Tool Chain** For example, the *aarch64* Linaro Toolchain, which can be obtained from @@ -48,8 +58,104 @@ OCTEON TX compatible board: As an alternative method, Platform drivers can also be executed using images provided as part of SDK from Cavium. The SDK includes all the above prerequisites necessary - to bring up a OCTEON TX board. - - SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_. + to bring up a OCTEON TX board. Please refer :ref:`setup_platform_using_OCTEON_TX_SDK`. - Follow the DPDK :doc:`../linux_gsg/index` to setup the basic DPDK environment. + +.. _setup_platform_using_OCTEON_TX_SDK: + +Setup Platform Using OCTEON TX SDK +---------------------------------- + +The OCTEON TX platform drivers can be compiled either natively on +**OCTEON TX** :sup:`®` board or cross-compiled on an x86 based platform. + +The **OCTEON TX** :sup:`®` board must be running the linux kernel based on +OCTEON TX SDK 6.2.0 patch 3. In this, the PF drivers for all hardware +offload blocks are already built in. + +Native Compilation +~~~~~~~~~~~~~~~~~~ + +If the kernel and modules are cross-compiled and copied to the target board, +some intermediate binaries required for native build would be missing on the +target board. To make sure all the required binaries are available in the +native architecture, the linux sources need to be compiled once natively. + +.. code-block:: console + + cd /lib/modules/$(uname -r)/source + make menuconfig + make + +The above steps would rebuild the modules and the required intermediate binaries. +Once the target is ready for native compilation, the OCTEON TX platform +drivers can be compiled with the following steps, + +.. code-block:: console + + cd <dpdk directory> + make config T=arm64-thunderx-linuxapp-gcc + make + +The example applications can be compiled using the following: + +.. code-block:: console + + cd <dpdk directory> + export RTE_SDK=$PWD + export RTE_TARGET=build + cd examples/<application> + make + +Cross Compilation +~~~~~~~~~~~~~~~~~ + +The DPDK applications can be cross-compiled on any x86 based platform. The +OCTEON TX SDK need to be installed on the build system. The SDK package will +provide the required toolchain etc. + +Refer to :doc:`../linux_gsg/cross_build_dpdk_for_arm64` for further steps on +compilation. The 'host' & 'CC' to be used in the commands would change, +in addition to the paths to which libnuma related files have to be +copied. + +The following steps can be used to perform cross-compilation with OCTEON TX +SDK 6.2.0 patch 3: + +.. code-block:: console + + cd <sdk_install_dir> + source env-setup + + git clone https://github.com/numactl/numactl.git + cd numactl + git checkout v2.0.11 -b v2.0.11 + ./autogen.sh + autoconf -i + ./configure --host=aarch64-thunderx-linux CC=aarch64-thunderx-linux-gnu-gcc --prefix=<numa install dir> + make install + +The above steps will prepare build system with numa additions. Now this build system can be used +to build applications for **OCTEON TX** :sup:`®` platforms. + +.. code-block:: console + + cd <dpdk directory> + export RTE_SDK=$PWD + export RTE_KERNELDIR=$THUNDER_ROOT/linux/kernel/linux + make config T=arm64-thunderx-linuxapp-gcc + make -j CROSS=aarch64-thunderx-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n EXTRA_CFLAGS="-isystem <numa_install_dir>/include" EXTRA_LDFLAGS="-L<numa_install_dir>/lib -lnuma" + +If NUMA support is not required, it can be disabled as explained in +:doc:`../linux_gsg/cross_build_dpdk_for_arm64`. + +Following steps could be used in that case. + +.. code-block:: console + + make config T=arm64-thunderx-linuxapp-gcc + make CROSS=aarch64-thunderx-linux-gnu- + + +SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_. diff --git a/doc/guides/prog_guide/metrics_lib.rst b/doc/guides/prog_guide/metrics_lib.rst index 5cbe17c9..e68e4e74 100644 --- a/doc/guides/prog_guide/metrics_lib.rst +++ b/doc/guides/prog_guide/metrics_lib.rst @@ -271,3 +271,12 @@ de-initialise the latency library. .. code-block:: c rte_latencystats_uninit(); + +Timestamp and latency calculation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Latency stats library marks the time in the timestamp field of the +mbuf for the ingress packets and sets the ``PKT_RX_TIMESTAMP`` flag of +``ol_flags`` for the mbuf to indicate the marked time as a valid one. +At the egress, the mbufs with the flag set are considered having valid +timestamp and are used for the latency calculation. diff --git a/doc/guides/rawdevs/dpaa2_cmdif.rst b/doc/guides/rawdevs/dpaa2_cmdif.rst index 20a60993..bebda833 100644 --- a/doc/guides/rawdevs/dpaa2_cmdif.rst +++ b/doc/guides/rawdevs/dpaa2_cmdif.rst @@ -29,52 +29,12 @@ Supported DPAA2 SoCs Prerequisites ------------- -There are three main pre-requisities for executing DPAA2 CMDIF on a DPAA2 -compatible board: - -1. **ARM 64 Tool Chain** - - For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu>`_. - -2. **Linux Kernel** - - It can be obtained from `NXP's Github hosting <https://github.com/qoriq-open-source/linux>`_. - -3. **Rootfile system** - - Any *aarch64* supporting filesystem can be used. For example, - Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained - from `here <http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. - -As an alternative method, DPAA2 CMDIF can also be executed using images provided -as part of SDK from NXP. The SDK includes all the above prerequisites necessary -to bring up a DPAA2 board. - -The following dependencies are not part of DPDK and must be installed -separately: - -- **NXP Linux SDK** - - NXP Linux software development kit (SDK) includes support for family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - -- **DPDK Extra Scripts** - - DPAA2 based resources can be configured easily with the help of ready scripts - as provided in the DPDK Extra repository. - - `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. +See :doc:`../platform/dpaa2` for setup information Currently supported by DPDK: -- NXP SDK **2.0+**. -- MC Firmware version **10.0.0** and higher. +- NXP SDK **18.09+**. +- MC Firmware version **10.10.0** and higher. - Supported architectures: **arm64 LE**. - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. diff --git a/doc/guides/rawdevs/dpaa2_qdma.rst b/doc/guides/rawdevs/dpaa2_qdma.rst index b9bc4ec6..793a8513 100644 --- a/doc/guides/rawdevs/dpaa2_qdma.rst +++ b/doc/guides/rawdevs/dpaa2_qdma.rst @@ -25,6 +25,7 @@ The DPAA2 QDMA implements following features in the rawdev API; Supported DPAA2 SoCs -------------------- +- LX2160A - LS2084A/LS2044A - LS2088A/LS2048A - LS1088A/LS1048A @@ -32,52 +33,12 @@ Supported DPAA2 SoCs Prerequisites ------------- -There are three main pre-requisities for executing DPAA2 QDMA on a DPAA2 -compatible board: - -1. **ARM 64 Tool Chain** - - For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu>`_. - -2. **Linux Kernel** - - It can be obtained from `NXP's Github hosting <https://github.com/qoriq-open-source/linux>`_. - -3. **Rootfile system** - - Any *aarch64* supporting filesystem can be used. For example, - Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained - from `here <http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. - -As an alternative method, DPAA2 QDMA can also be executed using images provided -as part of SDK from NXP. The SDK includes all the above prerequisites necessary -to bring up a DPAA2 board. - -The following dependencies are not part of DPDK and must be installed -separately: - -- **NXP Linux SDK** - - NXP Linux software development kit (SDK) includes support for family - of QorIQ® ARM-Architecture-based system on chip (SoC) processors - and corresponding boards. - - It includes the Linux board support packages (BSPs) for NXP SoCs, - a fully operational tool chain, kernel and board specific modules. - - SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. - -- **DPDK Extra Scripts** - - DPAA2 based resources can be configured easily with the help of ready scripts - as provided in the DPDK Extra repository. - - `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_. +See :doc:`../platform/dpaa2` for setup information Currently supported by DPDK: -- NXP LSDK **17.12+**. -- MC Firmware version **10.3.0** and higher. +- NXP SDK **18.09+**. +- MC Firmware version **10.10.0** and higher. - Supported architectures: **arm64 LE**. - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. diff --git a/doc/guides/rel_notes/release_18_11.rst b/doc/guides/rel_notes/release_18_11.rst index 51d00758..32ff0e5c 100644 --- a/doc/guides/rel_notes/release_18_11.rst +++ b/doc/guides/rel_notes/release_18_11.rst @@ -279,6 +279,25 @@ New Features their telemetry via a UNIX socket in JSON. The JSON can be consumed by any Service Assurance agent, such as CollectD. +* **Updated KNI kernel module, rte_kni library, and KNI sample application.** + + Updated the KNI kernel module with a new kernel module parameter, + ``carrier=[on|off]`` to allow the user to control the default carrier + state of KNI kernel network interfaces. The default carrier state + is now set to ``off``, so the interfaces cannot be used until the + carrier state is set to ``on`` via ``rte_kni_update_link`` or + by writing ``1`` to ``/sys/devices/virtual/net/<iface>/carrier``. + In previous versions the default carrier state was left undefined. + See :doc:`../prog_guide/kernel_nic_interface` for more information. + + Added the new API function ``rte_kni_update_link`` to allow the user + to set the carrier state of the KNI kernel network interface. + + Added a new command line flag ``-m`` to the KNI sample application to + monitor and automatically reflect the physical NIC carrier state to the + KNI kernel network interface with the new ``rte_kni_update_link`` API. + See :doc:`../sample_app_ug/kernel_nic_interface` for more information. + * **Added ability to switch queue deferred start flag on testpmd app.** Added a console command to testpmd app, giving ability to switch @@ -385,6 +404,20 @@ API Changes * eventdev: Type of 2nd parameter to ``rte_event_eth_rx_adapter_caps_get()`` has been changed from uint8_t to uint16_t. +* kni: By default, interface carrier status is ``off`` which means there won't + be any traffic. It can be set to ``on`` via ``rte_kni_update_link()`` API + or via ``sysfs`` interface: + ``echo 1 > /sys/class/net/vEth0/carrier``. + Note interface should be ``up`` to be able to read/write sysfs interface. + When KNI sample application is used, ``-m`` parameter can be used to + automatically update the carrier status for the interface. + +* kni: When ethtool support enabled (``CONFIG_RTE_KNI_KMOD_ETHTOOL=y``) + ethtool commands ``ETHTOOL_GSET & ETHTOOL_SSET`` are no more supported for the + kernels that has ``ETHTOOL_GLINKSETTINGS & ETHTOOL_SLINKSETTINGS`` support. + This means ``ethtool "-a|--show-pause", "-s|--change"`` won't work, and + ``ethtool <iface>`` output will have less information. + ABI Changes ----------- @@ -532,6 +565,8 @@ Known Issues driver; the Linux netvsc device must be brought up before the netvsc device is unbound and passed to the DPDK. +* IBM Power8 is not supported by this release of DPDK. IBM Power9 is supported. + Tested Platforms ---------------- diff --git a/doc/guides/sample_app_ug/compiling.rst b/doc/guides/sample_app_ug/compiling.rst index a2d75ed2..6f04743c 100644 --- a/doc/guides/sample_app_ug/compiling.rst +++ b/doc/guides/sample_app_ug/compiling.rst @@ -9,7 +9,6 @@ This section explains how to compile the DPDK sample applications. To compile all the sample applications -------------------------------------- - Set the path to DPDK source code if its not set: .. code-block:: console @@ -93,3 +92,17 @@ Build the application: export RTE_TARGET=build make + +To cross compile the sample application(s) +------------------------------------------ + +For cross compiling the sample application(s), please append 'CROSS=$(CROSS_COMPILER_PREFIX)' to the 'make' command. +In example of AARCH64 cross compiling: + + .. code-block:: console + + export RTE_TARGET=build + export RTE_SDK=/path/to/rte_sdk + make -C examples CROSS=aarch64-linux-gnu- + or + make CROSS=aarch64-linux-gnu- diff --git a/doc/guides/sample_app_ug/flow_filtering.rst b/doc/guides/sample_app_ug/flow_filtering.rst index 0d6fe2bb..840d557c 100644 --- a/doc/guides/sample_app_ug/flow_filtering.rst +++ b/doc/guides/sample_app_ug/flow_filtering.rst @@ -367,7 +367,7 @@ The forwarding loop can be interrupted and the application closed using The generate_ipv4_flow function ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The generate_ipv4_rule function is responsible for creating the flow rule. +The generate_ipv4_flow function is responsible for creating the flow rule. This function is located in the ``flow_blocks.c`` file. .. code-block:: c diff --git a/doc/guides/sample_app_ug/ip_reassembly.rst b/doc/guides/sample_app_ug/ip_reassembly.rst index 18912cd2..e1b56d7b 100644 --- a/doc/guides/sample_app_ug/ip_reassembly.rst +++ b/doc/guides/sample_app_ug/ip_reassembly.rst @@ -23,8 +23,8 @@ There are two key differences from the L2 Forwarding sample application: * The second difference is that the application differentiates between IP and non-IP traffic by means of offload flags. -The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, +associated with that IPv4 address. Any unmatched packets are forwarded to the originating port. Compiling the Application diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst index ce1474ec..f6efa7f6 100644 --- a/doc/guides/sample_app_ug/ipv4_multicast.rst +++ b/doc/guides/sample_app_ug/ipv4_multicast.rst @@ -319,7 +319,6 @@ It is the mcast_out_pkt() function that performs the packet duplication (either hdr->pkt.in_port = pkt->pkt.in_port; hdr->pkt.vlan_macip = pkt->pkt.vlan_macip; hdr->pkt.hash = pkt->pkt.hash; - hdr->ol_flags = pkt->ol_flags; rte_mbuf_sanity_check(hdr, RTE_MBUF_PKT, 1); return hdr; diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst index 1ad4f149..5be9f24d 100644 --- a/doc/guides/sample_app_ug/vm_power_management.rst +++ b/doc/guides/sample_app_ug/vm_power_management.rst @@ -657,6 +657,31 @@ To build just the ``guest_vm_power_manager`` application using ``make``: The resulting binary will be ${RTE_SDK}/build/examples/guest_cli +.. Note:: + This sample application conditionally links in the Jansson JSON + library, so if you are using a multilib or cross compile environment you + may need to set the ``PKG_CONFIG_LIBDIR`` environmental variable to point to + the relevant pkgconfig folder so that the correct library is linked in. + + For example, if you are building for a 32-bit target, you could find the + correct directory using the following ``find`` command: + + .. code-block:: console + + # find /usr -type d -name pkgconfig + /usr/lib/i386-linux-gnu/pkgconfig + /usr/lib/x86_64-linux-gnu/pkgconfig + + Then use: + + .. code-block:: console + + export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig + + You then use the make command as normal, which should find the 32-bit + version of the library, if it installed. If not, the application will + be built without the JSON interface functionality. + To build just the ``vm_power_manager`` application using ``meson/ninja``: .. code-block:: console |