[v2,03/13] doc: add guide for ppfe net PMD
diff mbox series

Message ID 20190828110849.14759-4-g.singh@nxp.com
State Superseded, archived
Delegated to: Ferruh Yigit
Headers show
Series
  • introduces ppfe network PMD
Related show

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Gagandeep Singh Aug. 28, 2019, 11:08 a.m. UTC
This patch add documentation for ppfe network
poll mode driver.

PPFE is a hardware programmable packet
forwarding engine to provide high performance
ethernet interfaces.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
---
 MAINTAINERS                       |   1 +
 doc/guides/nics/features/ppfe.ini |   1 +
 doc/guides/nics/index.rst         |   1 +
 doc/guides/nics/ppfe.rst          | 168 ++++++++++++++++++++++++++++++
 4 files changed, 171 insertions(+)
 create mode 100644 doc/guides/nics/ppfe.rst

Comments

Ferruh Yigit Sept. 26, 2019, 4:56 p.m. UTC | #1
On 8/28/2019 12:08 PM, Gagandeep Singh wrote:
> This patch add documentation for ppfe network
> poll mode driver.
> 
> PPFE is a hardware programmable packet
> forwarding engine to provide high performance
> ethernet interfaces.
> 
> Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
<...>

> +PPFE Overview
> +~~~~~~~~~~~~~~
> +
> +PPFE is a hardware programmable packet forwarding engine to provide
> +high performance Ethernet interfaces. The diagram below shows a
> +system level overview of PPFE:
> +
> +.. code-block:: console
> +
> +   ====================================================+===============
> +   US   +-----------------------------------------+    | Kernel Space
> +        |                                         |    |
> +        |          PPFE Ethernet Driver           |    |
> +        +-----------------------------------------+    |
> +                  ^   |          ^     |               |
> +   PPFE        RXQ|   |TXQ    RXQ|     |TXQ            |
> +   PMD            |   |          |     |               |
> +                  |   v          |     v               |   +----------+
> +               +---------+     +----------+            |   | pfe.ko   |
> +               | pfe_eth0|     | pfe_eth1 |            |   +----------+
> +               +---------+     +----------+            |
> +                  ^   |          ^     |               |
> +               TXQ|   |RXQ    TXQ|     |RXQ            |
> +                  |   |          |     |               |
> +                  |   v          |     v               |
> +                 +------------------------+            |
> +                 |                        |            |
> +                 |     PPFE HIF driver    |            |
> +                 +------------------------+            |
> +                       ^         |                     |
> +                    RX |      TX |                     |
> +                   RING|     RING|                     |
> +                       |         v                     |
> +                     +--------------+                  |
> +                     |              |                  |
> +   ==================|    HIF       |==================+===============
> +         +-----------+              +--------------+
> +         |           |              |              |        HW
> +         | PPFE      +--------------+              |
> +         |       +-----+                +-----+    |
> +         |       | MAC |                | MAC |    |
> +         |       |     |                |     |    |
> +         +-------+-----+----------------+-----+----+
> +                 | PHY |                | PHY |
> +                 +-----+                +-----+
> +
> +
> +The HIF, PPFE, MAC and PHY are the hardware blocks, the pfe.ko is a kernel
> +module, the PPFE HIF driver and the PPFE ethernet driver combined represent
> +as DPDK PPFE poll mode driver are running in the userspace.
> +
> +The PPFE hardware supports one HIF (host interface) RX ring and one TX ring
> +to send and receive packets through packet forwarding engine. Both network
> +interface traffic is multiplexed and send over HIF queue.
> +
> +pfe_eth0 and pfe_eth1 are logical ethernet interfaces, created by HIF client

Is it always fixed size logical interface, eth0 & eth1? There is following
comment in the code, is it something else:

"
 /* Extracted from ls1012a_pfe_platform_data, there are 3 interfaces which are
  * supported by PFE driver. Should be updated if number of eth devices are
  * changed.
  */
 #define PFE_CDEV_ETH_COUNT 3
"

> +driver. HIF driver is responsible for send and receive packets between
> +host interface and these logical interfaces. PPFE ethernet driver is a
> +hardware independent and register with the HIF client driver to transmit and
> +receive packets from HIF via logical interfaces.
> +
> +pfe.ko is required for PHY initialisation.

Is char device "/dev/pfe_us_cdev" created by this kernel module?

<...>

> +Driver compilation and testing
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +Follow instructions available in the document
> +:ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
> +to launch **testpmd**
> +
> +Additionally, PPFE driver need `--vdev` as an input with value `eth_pfe` to execute DPDK application,
> +see the command below:
> +
> + .. code-block:: console
> +
> +    <dpdk app> <EAL args> --vdev="eth_pfe0" --vdev="eth_pfe1" -- ...

Can you please document the "intf" (PPFE_VDEV_GEM_ID_ARG) device argument?
Ferruh Yigit Sept. 26, 2019, 6 p.m. UTC | #2
On 8/28/2019 12:08 PM, Gagandeep Singh wrote:
> This patch add documentation for ppfe network
> poll mode driver.
> 
> PPFE is a hardware programmable packet
> forwarding engine to provide high performance
> ethernet interfaces.
> 
> Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
> ---
>  MAINTAINERS                       |   1 +
>  doc/guides/nics/features/ppfe.ini |   1 +
>  doc/guides/nics/index.rst         |   1 +
>  doc/guides/nics/ppfe.rst          | 168 ++++++++++++++++++++++++++++++

Can you please update 19.11 release notes and document new driver?

Patch
diff mbox series

diff --git a/MAINTAINERS b/MAINTAINERS
index 7996dcdd8..2b83235ac 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -784,6 +784,7 @@  F: doc/guides/nics/features/enetc.ini
 NXP ppfe
 M: Gagandeep Singh <g.singh@nxp.com>
 M: Akhil Goyal <akhil.goyal@nxp.com>
+F: doc/guides/nics/ppfe.rst
 F: drivers/net/ppfe/
 F: doc/guides/nics/features/ppfe.ini
 
diff --git a/doc/guides/nics/features/ppfe.ini b/doc/guides/nics/features/ppfe.ini
index 4bcac779c..cd5f836a3 100644
--- a/doc/guides/nics/features/ppfe.ini
+++ b/doc/guides/nics/features/ppfe.ini
@@ -6,3 +6,4 @@ 
 [Features]
 Linux VFIO           = Y
 ARMv8                = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst
index 9fec02f3e..46b0895f0 100644
--- a/doc/guides/nics/index.rst
+++ b/doc/guides/nics/index.rst
@@ -47,6 +47,7 @@  Network Interface Controller Drivers
     nfp
     octeontx
     octeontx2
+    ppfe
     qede
     sfc_efx
     softnic
diff --git a/doc/guides/nics/ppfe.rst b/doc/guides/nics/ppfe.rst
new file mode 100644
index 000000000..5c58c7837
--- /dev/null
+++ b/doc/guides/nics/ppfe.rst
@@ -0,0 +1,168 @@ 
+.. SPDX-License-Identifier: BSD-3-Clause
+   Copyright 2019 NXP
+
+PPFE Poll Mode Driver
+======================
+
+The PPFE NIC PMD (**librte_pmd_ppfe**) provides poll mode driver
+support for the inbuilt NIC found in the **NXP LS1012** SoC.
+
+More information can be found at `NXP Official Website
+<https://nxp.com/ls1012a>`_.
+
+PPFE
+-----
+
+This section provides an overview of the NXP PPFE
+and how it is integrated into the DPDK.
+
+Contents summary
+
+- PPFE overview
+- PPFE features
+- Supported PPFE SoCs
+- Prerequisites
+- Driver compilation and testing
+- Limitations
+
+PPFE Overview
+~~~~~~~~~~~~~~
+
+PPFE is a hardware programmable packet forwarding engine to provide
+high performance Ethernet interfaces. The diagram below shows a
+system level overview of PPFE:
+
+.. code-block:: console
+
+   ====================================================+===============
+   US   +-----------------------------------------+    | Kernel Space
+        |                                         |    |
+        |          PPFE Ethernet Driver           |    |
+        +-----------------------------------------+    |
+                  ^   |          ^     |               |
+   PPFE        RXQ|   |TXQ    RXQ|     |TXQ            |
+   PMD            |   |          |     |               |
+                  |   v          |     v               |   +----------+
+               +---------+     +----------+            |   | pfe.ko   |
+               | pfe_eth0|     | pfe_eth1 |            |   +----------+
+               +---------+     +----------+            |
+                  ^   |          ^     |               |
+               TXQ|   |RXQ    TXQ|     |RXQ            |
+                  |   |          |     |               |
+                  |   v          |     v               |
+                 +------------------------+            |
+                 |                        |            |
+                 |     PPFE HIF driver    |            |
+                 +------------------------+            |
+                       ^         |                     |
+                    RX |      TX |                     |
+                   RING|     RING|                     |
+                       |         v                     |
+                     +--------------+                  |
+                     |              |                  |
+   ==================|    HIF       |==================+===============
+         +-----------+              +--------------+
+         |           |              |              |        HW
+         | PPFE      +--------------+              |
+         |       +-----+                +-----+    |
+         |       | MAC |                | MAC |    |
+         |       |     |                |     |    |
+         +-------+-----+----------------+-----+----+
+                 | PHY |                | PHY |
+                 +-----+                +-----+
+
+
+The HIF, PPFE, MAC and PHY are the hardware blocks, the pfe.ko is a kernel
+module, the PPFE HIF driver and the PPFE ethernet driver combined represent
+as DPDK PPFE poll mode driver are running in the userspace.
+
+The PPFE hardware supports one HIF (host interface) RX ring and one TX ring
+to send and receive packets through packet forwarding engine. Both network
+interface traffic is multiplexed and send over HIF queue.
+
+pfe_eth0 and pfe_eth1 are logical ethernet interfaces, created by HIF client
+driver. HIF driver is responsible for send and receive packets between
+host interface and these logical interfaces. PPFE ethernet driver is a
+hardware independent and register with the HIF client driver to transmit and
+receive packets from HIF via logical interfaces.
+
+pfe.ko is required for PHY initialisation.
+
+PPFE Features
+~~~~~~~~~~~~~~
+
+- ARMv8
+
+Supported PPFE SoCs
+~~~~~~~~~~~~~~~~~~~~
+
+- LS1012
+
+Prerequisites
+~~~~~~~~~~~~~
+
+Below are some pre-requisites for executing PPFE PMD on a PPFE
+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. The ethernet device will be registered as virtual device, so ppfe has dependency on
+   **rte_bus_vdev** library and it is mandatory to use `--vdev` with value `eth_pfe` to
+   run DPDK application.
+
+The following dependencies are not part of DPDK and must be installed
+separately:
+
+- **NXP Linux LSDK**
+
+  NXP Layerscape software development kit (LSDK) 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.
+
+  LSDK and related information can be obtained from:  `LSDK <https://www.nxp.com/support/developer-resources/run-time-software/linux-software-and-development-tools/layerscape-software-development-kit:LAYERSCAPE-SDK>`_
+
+- **pfe kernel module**
+
+  pfe kernel module can be obtained from NXP Layerscape software development kit at
+  location `/lib/modules/<kernel version>/kernel/drivers/staging/fsl_ppfe` in rootfs.
+  Module should be loaded using below command:
+
+  .. code-block:: console
+
+     insmod pfe.ko us=1
+
+
+Driver compilation and testing
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Follow instructions available in the document
+:ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
+to launch **testpmd**
+
+Additionally, PPFE driver need `--vdev` as an input with value `eth_pfe` to execute DPDK application,
+see the command below:
+
+ .. code-block:: console
+
+    <dpdk app> <EAL args> --vdev="eth_pfe0" --vdev="eth_pfe1" -- ...
+
+
+Limitations
+~~~~~~~~~~~
+
+- Multi buffer pool cannot be supported.