ethdev: add flow tag
[dpdk.git] / doc / guides / nics / dpaa2.rst
index 46225b6..fdfa6fd 100644 (file)
@@ -1,32 +1,6 @@
-..  BSD LICENSE
-    Copyright (C) NXP. 2016.
-    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 NXP 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.
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright 2016 NXP
+
 
 DPAA2 Poll Mode Driver
 ======================
@@ -49,6 +23,8 @@ Contents summary
 - Overview of DPAA2 objects
 - DPAA2 driver architecture overview
 
+.. _dpaa2_overview:
+
 DPAA2 Overview
 ~~~~~~~~~~~~~~
 
@@ -403,7 +379,7 @@ active  --  Ethernet, crypto, compression, etc.
 DPBP based Mempool driver
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The DPBP driver is bound to a DPBP objects and provides sevices to
+The DPBP driver is bound to a DPBP objects and provides services to
 create a hardware offloaded packet buffer mempool.
 
 DPAA2 NIC Driver
@@ -421,14 +397,19 @@ Features of the DPAA2 PMD are:
 
 - Multiple queues for TX and RX
 - Receive Side Scaling (RSS)
+- MAC/VLAN filtering
 - Packet type information
 - Checksum offload
 - Promiscuous mode
+- Multicast mode
+- Port hardware statistics
+- Jumbo frames
+- Link flow control
+- Scattered and gather for TX and RX
 
 Supported DPAA2 SoCs
 --------------------
-
-- LS2080A/LS2040A
+- LX2160A
 - LS2084A/LS2044A
 - LS2088A/LS2048A
 - LS1088A/LS1048A
@@ -436,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/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 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 Helper Scripts**
-
-  DPAA2 based resources can be configured easily with the help of ready scripts
-  as provided in the DPDK helper repository.
-
-  `DPDK Helper Scripts <https://github.com/qoriq-open-source/dpdk-helper>`_.
+See :doc:`../platform/dpaa2` for setup information
 
 Currently supported by DPDK:
 
-- NXP SDK **2.0+**.
-- MC Firmware version **10.0.0** and higher.
+- NXP LSDK **19.08+**.
+- MC Firmware version **10.18.0** and higher.
 - Supported architectures:  **arm64 LE**.
 
 - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
@@ -489,7 +430,7 @@ Currently supported by DPDK:
 .. note::
 
    Some part of fslmc bus code (mc flib - object library) routines are
-   dual licensed (BSD & GPLv2).
+   dual licensed (BSD & GPLv2), however they are used as BSD in DPDK in userspace.
 
 Pre-Installation Configuration
 ------------------------------
@@ -500,101 +441,102 @@ Config File Options
 The following options can be modified in the ``config`` file.
 Please note that enabling debugging options may affect system performance.
 
-- ``CONFIG_RTE_LIBRTE_FSLMC_BUS`` (default ``n``)
+- ``CONFIG_RTE_LIBRTE_FSLMC_BUS`` (default ``y``)
 
-  By default it is enabled only for defconfig_arm64-dpaa2-* config.
   Toggle compilation of the ``librte_bus_fslmc`` driver.
 
-- ``CONFIG_RTE_LIBRTE_DPAA2_PMD`` (default ``n``)
+- ``CONFIG_RTE_LIBRTE_DPAA2_PMD`` (default ``y``)
 
-  By default it is enabled only for defconfig_arm64-dpaa2-* config.
   Toggle compilation of the ``librte_pmd_dpaa2`` driver.
 
 - ``CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER`` (default ``n``)
 
-  Toggle display of generic debugging messages
+  Toggle display of debugging messages/logic
 
-- ``CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA`` (default ``y``)
+- ``CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA`` (default ``n``)
 
   Toggle to use physical address vs virtual address for hardware accelerators.
 
-- ``CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT`` (default ``n``)
-
-  Toggle display of initialization related messages.
-
-- ``CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX`` (default ``n``)
-
-  Toggle display of receive fast path run-time message
-
-- ``CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX`` (default ``n``)
-
-  Toggle display of transmit fast path run-time message
-
-- ``CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE`` (default ``n``)
+Driver compilation and testing
+------------------------------
 
-  Toggle display of transmit fast path buffer free run-time message
+Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
+for details.
 
+#. Running testpmd:
 
-Driver Compilation
-~~~~~~~~~~~~~~~~~~
+   Follow instructions available in the document
+   :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
+   to run testpmd.
 
-To compile the DPAA2 PMD for Linux arm64 gcc target, run the
-following ``make`` command:
+   Example output:
 
-.. code-block:: console
+   .. code-block:: console
 
-   cd <DPDK-source-directory>
-   make config T=arm64-dpaa2-linuxapp-gcc install
+      ./testpmd -c 0xff -n 1 -- -i --portmask=0x3 --nb-cores=1 --no-flush-rx
+
+      .....
+      EAL: Registered [pci] bus.
+      EAL: Registered [fslmc] bus.
+      EAL: Detected 8 lcore(s)
+      EAL: Probing VFIO support...
+      EAL: VFIO support initialized
+      .....
+      PMD: DPAA2: Processing Container = dprc.2
+      EAL: fslmc: DPRC contains = 51 devices
+      EAL: fslmc: Bus scan completed
+      .....
+      Configuring Port 0 (socket 0)
+      Port 0: 00:00:00:00:00:01
+      Configuring Port 1 (socket 0)
+      Port 1: 00:00:00:00:00:02
+      .....
+      Checking link statuses...
+      Port 0 Link Up - speed 10000 Mbps - full-duplex
+      Port 1 Link Up - speed 10000 Mbps - full-duplex
+      Done
+      testpmd>
+
+
+* Use dev arg option ``drv_loopback=1`` to loopback packets at
+  driver level. Any packet received will be reflected back by the
+  driver on same port. e.g. ``fslmc:dpni.1,drv_loopback=1``
+
+* Use dev arg option ``drv_no_prefetch=1`` to disable prefetching
+  of the packet pull command which is issued  in the previous cycle.
+  e.g. ``fslmc:dpni.1,drv_no_prefetch=1``
+
+Enabling logs
+-------------
 
-.. _dpaa2_testpmd_example:
+For enabling logging for DPAA2 PMD, following log-level prefix can be used:
 
-Running testpmd
-~~~~~~~~~~~~~~~
+ .. code-block:: console
 
-This section demonstrates how to launch ``testpmd`` with DPAA2 device
-managed by ``librte_pmd_dpaa2`` in the Linux operating system.
+    <dpdk app> <EAL args> --log-level=bus.fslmc:<level> -- ...
 
-#. Configure the resource container:
+Using ``bus.fslmc`` as log matching criteria, all FSLMC bus logs can be enabled
+which are lower than logging ``level``.
 
-   Configure resources in MC and create the DPRC container:
+ Or
 
  .. code-block:: console
+ .. code-block:: console
 
-      export the DPRC container
-      e.g. export DPRCT=dprc.2
+    <dpdk app> <EAL args> --log-level=pmd.net.dpaa2:<level> -- ...
 
-#. Start ``testpmd`` with basic parameters:
+Using ``pmd.net.dpaa2`` as log matching criteria, all PMD logs can be enabled
+which are lower than logging ``level``.
 
-   .. code-block:: console
+Whitelisting & Blacklisting
+---------------------------
 
-      ./arm64-dpaa2-linuxapp-gcc/testpmd -c 0xff -n 1 \
-        -- -i --portmask=0x3 --nb-cores=1 --no-flush-rx
+For blacklisting a DPAA2 device, following commands can be used.
 
-   Example output:
+ .. code-block:: console
 
-   .. code-block:: console
+    <dpdk app> <EAL args> -b "fslmc:dpni.x" -- ...
 
-        .....
-        EAL: Registered [pci] bus.
-        EAL: Registered [fslmc] bus.
-        EAL: Detected 8 lcore(s)
-        EAL: Probing VFIO support...
-        EAL: VFIO support initialized
-        .....
-        PMD: DPAA2: Processing Container = dprc.2
-        EAL: fslmc: DPRC contains = 51 devices
-        EAL: fslmc: Bus scan completed
-        .....
-        Configuring Port 0 (socket 0)
-        Port 0: 00:00:00:00:00:01
-        Configuring Port 1 (socket 0)
-        Port 1: 00:00:00:00:00:02
-        .....
-        Checking link statuses...
-        Port 0 Link Up - speed 10000 Mbps - full-duplex
-        Port 1 Link Up - speed 10000 Mbps - full-duplex
-        Done
-        testpmd>
+Where x is the device object id as configured in resource container.
 
 Limitations
 -----------
@@ -611,3 +553,9 @@ The DPAA2 SoC family support a maximum of a 10240 jumbo frame. The value
 is fixed and cannot be changed. So, even when the ``rxmode.max_rx_pkt_len``
 member of ``struct rte_eth_conf`` is set to a value lower than 10240, frames
 up to 10240 bytes can still reach the host interface.
+
+Other Limitations
+~~~~~~~~~~~~~~~~~
+
+- RSS hash key cannot be modified.
+- RSS RETA cannot be configured.