-.. 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
======================
- Overview of DPAA2 objects
- DPAA2 driver architecture overview
+.. _dpaa2_overview:
+
DPAA2 Overview
~~~~~~~~~~~~~~
- 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
--------------------
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>`_.
+ For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/6.4-2017.08/aarch64-linux-gnu/>`_.
2. **Linux Kernel**
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**
+- **DPDK Extra Scripts**
DPAA2 based resources can be configured easily with the help of ready scripts
- as provided in the DPDK helper repository.
+ as provided in the DPDK Extra repository.
- `DPDK Helper Scripts <https://github.com/qoriq-open-source/dpdk-helper>`_.
+ `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_.
Currently supported by DPDK:
-- NXP SDK **2.0+**.
-- MC Firmware version **10.0.0** and higher.
+- NXP SDK **17.08+**.
+- MC Firmware version **10.3.1** and higher.
- Supported architectures: **arm64 LE**.
- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
.. 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
------------------------------
- ``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``)
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``)
-
- Toggle display of transmit fast path buffer free run-time message
-
-
-Driver Compilation
-~~~~~~~~~~~~~~~~~~
-
-To compile the DPAA2 PMD for Linux arm64 gcc target, run the
-following ``make`` command:
-
-.. code-block:: console
+Driver compilation and testing
+------------------------------
- cd <DPDK-source-directory>
- make config T=arm64-dpaa2-linuxapp-gcc install
+Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
+for details.
-.. _dpaa2_testpmd_example:
+#. Running testpmd:
-Running testpmd
-~~~~~~~~~~~~~~~
+ Follow instructions available in the document
+ :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
+ to run testpmd.
-This section demonstrates how to launch ``testpmd`` with DPAA2 device
-managed by ``librte_pmd_dpaa2`` in the Linux operating system.
+ Example output:
-#. Configure the resource container:
+ .. code-block:: console
- Configure resources in MC and create the DPRC container:
+ ./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>
+
+Enabling logs
+-------------
- .. code-block:: console
+For enabling logging for DPAA2 PMD, following log-level prefix can be used:
- export the DPRC container
- e.g. export DPRCT=dprc.2
+ .. code-block:: console
-#. Start ``testpmd`` with basic parameters:
+ <dpdk app> <EAL args> --log-level=bus.fslmc,<level> -- ...
- .. code-block:: console
+Using ``bus.fslmc`` as log matching criteria, all FSLMC bus logs can be enabled
+which are lower than logging ``level``.
- ./arm64-dpaa2-linuxapp-gcc/testpmd -c 0xff -n 1 \
- -- -i --portmask=0x3 --nb-cores=1 --no-flush-rx
+ Or
- Example output:
+ .. code-block:: console
- .. code-block:: console
+ <dpdk app> <EAL args> --log-level=pmd.net.dpaa2,<level> -- ...
- .....
- 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>
+Using ``pmd.dpaa2`` as log matching criteria, all PMD logs can be enabled
+which are lower than logging ``level``.
Limitations
-----------
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.
+- Secondary process packet I/O is not supported.