[dpdk-dev] [PATCH 00/32] NXP DPAA2 PMD

Hemant Agrawal hemant.agrawal at nxp.com
Sun Dec 4 19:16:55 CET 2016


The patch series adds NXP’s QorIQ-Layerscape DPAA2 Architecture based
network SoC PMD.  This version of the driver supports NXP LS208xA,
LS204xA and LS108x families Network SoCs.

DPAA2, or Data Path Acceleration Architecture, is a hardware architecture
designed for high-speed network packet processing. It uses a bus name
‘fsl-mc’, part of Linux Kernel Staging tree [2], for resource management. 

A brief description of architecture is given below; detailed description
is part of the documentation in the patches itself.

DPAA2 contains hardware component called the Management Complex (or MC).
It manages the DPAA2 hardware resources.  The MC provides an object-based
abstraction for software drivers to use the DPAA2 hardware.

Some of the key objects are:
    - DPNI, which refers to the network interface object. 
    - DPBP, which refers to HW based memory pool object
    - DPIO, refers to processing context for accessing QBMAN

Besides the MC, DPAA2 also includes a Hardware based Queue and Buffer Manager
called QBMAN. Prime responsibility of QBMAN is to allow lockless access to
software/user-space to the queues and buffers implemented in the hardware.

The patch series could be logically structured into following sub-areas:
1. (Patch 0001) DPAA2 Architecture overview document
2. (Patches 0002-0007) Common dpaa2 hw accelerator drivers for MC and QBMAN.
3. (Patch 0008) Enabling crc in armv8 core machine type
4. (Patch 0009) Adding rte_device in rte_eth_dev
5. (Patches 0010-0013) introduce DPAA2 bus and VFIO routines
6. (Patches 0014-0017) dpio and dpbp object drivers
7. (Patches 0018-0027) Support for DPAA2 Ethernet Device (ethdev)
8. (Patches 0028-0032) Additional functionality in DPAA2 ethdev.

The following design decisions are made during development:

1. DPAA2 implements a new bus called "dpaa2" and some common accelerator drivers.
   These drivers will be shared with dpaa2 based crypto drivers.
 - For this, patch series from Shreyansh [1] has been used for creating a
   bus handler.
 - For the purpose of this bus, rte_dpaa2_device/rte_dpaa2_driver might
   also be required but they are not part of the first patch series.
   Currently, rte_device/driver are being directly used as a PoC.

2. DPAA2 implements the HW mempool offload with DPBP object.
 - The new pool is being configured using compile time option and pool name
   as "dpaa2".

3. It maintains per lcore DPIO objects and affine the DPIO instance to the
   processing threads accessing the QBMAN HW.

Prerequisites:
 - For running the PMD, NXP's SoC (board) and SDK (software/BSP) is required.
   Information about obtaining relevant software is available in the docs
   as part of the patch.
 - At present the series has limited support for Ethernet functions. But,
   more functionality would be made available in a phased manner.
 - This PMD has been validated over the Bus Model [1] and SoC Patchset [3]


[1] http://dpdk.org/ml/archives/dev/2016-December/051349.html
[2] https://www.kernel.org/doc/readme/drivers-staging-fsl-mc-README.txt
[3] http://dpdk.org/ml/archives/dev/2016-October/048949.html


Hemant Agrawal (32):
  doc: add dpaa2 nic details
  drivers/common: introducing dpaa2 mc driver
  drivers/common/dpaa2: add mc dpni object support
  drivers/common/dpaa2: add mc dpio object support
  drivers/common/dpaa2: add mc dpbp object support
  drivers/common/dpaa2: add mc dpseci object support
  drivers/common/dpaa2: adding qbman driver
  mk/dpaa2: add the crc support to the machine type
  lib/ether: add rte_device in rte_eth_dev
  net/dpaa2: introducing dpaa2 bus driver for fsl-mc bus
  net/dpaa2: add dpaa2 vfio support
  net/dpaa2: vfio scan for net and sec device
  net/dpaa2: add debug log macros
  net/dpaa2: dpio object driver
  net/dpaa2: dpio routine to affine to crypto threads
  net/dpaa2: dpio add support to check SOC type
  net/dpaa2: dpbp based mempool hw offload driver
  net/dpaa2: introducing dpaa2 pmd driver
  net/dpaa2: adding eth ops to dpaa2
  net/dpaa2: add queue configuration support
  net/dpaa2: add rss flow distribution
  net/dpaa2: configure mac address at init
  net/dpaa2: attach the buffer pool to dpni
  net/dpaa2: add support for l3 and l4 checksum offload
  net/dpaa2: add support for promiscuous mode
  net/dpaa2: add mtu config support
  net/dpaa2: add packet rx and tx support
  net/dpaa2: add support for physical address usages
  net/dpaa2: rx packet parsing and packet type support
  net/dpaa2: frame queue based dq storage alloc
  net/dpaa2: add support for non hw buffer pool packet transmit
  net/dpaa2: enable stashing for LS2088A devices

 config/defconfig_arm64-dpaa2-linuxapp-gcc          |   15 +-
 doc/guides/nics/dpaa2.rst                          |  537 +++++++
 doc/guides/nics/features/dpaa2.ini                 |   16 +
 doc/guides/nics/index.rst                          |    1 +
 drivers/Makefile                                   |    1 +
 drivers/common/Makefile                            |   36 +
 drivers/common/dpaa2/Makefile                      |   37 +
 drivers/common/dpaa2/mc/Makefile                   |   57 +
 drivers/common/dpaa2/mc/dpaa2_mc_version.map       |    4 +
 drivers/common/dpaa2/mc/dpbp.c                     |  230 +++
 drivers/common/dpaa2/mc/dpio.c                     |  272 ++++
 drivers/common/dpaa2/mc/dpni.c                     |  667 +++++++++
 drivers/common/dpaa2/mc/dpseci.c                   |  527 +++++++
 drivers/common/dpaa2/mc/fsl_dpbp.h                 |  220 +++
 drivers/common/dpaa2/mc/fsl_dpbp_cmd.h             |   76 +
 drivers/common/dpaa2/mc/fsl_dpio.h                 |  275 ++++
 drivers/common/dpaa2/mc/fsl_dpio_cmd.h             |  114 ++
 drivers/common/dpaa2/mc/fsl_dpkg.h                 |  177 +++
 drivers/common/dpaa2/mc/fsl_dpni.h                 | 1076 ++++++++++++++
 drivers/common/dpaa2/mc/fsl_dpni_cmd.h             |  301 ++++
 drivers/common/dpaa2/mc/fsl_dpseci.h               |  661 +++++++++
 drivers/common/dpaa2/mc/fsl_dpseci_cmd.h           |  248 ++++
 drivers/common/dpaa2/mc/fsl_mc_cmd.h               |  231 +++
 drivers/common/dpaa2/mc/fsl_mc_sys.h               |   98 ++
 drivers/common/dpaa2/mc/fsl_net.h                  |  480 +++++++
 drivers/common/dpaa2/mc/mc_sys.c                   |  126 ++
 drivers/common/dpaa2/qbman/Makefile                |   55 +
 drivers/common/dpaa2/qbman/dpaa2_qbman_version.map |    4 +
 drivers/common/dpaa2/qbman/include/compat.h        |  550 ++++++++
 .../common/dpaa2/qbman/include/fsl_qbman_base.h    |  157 +++
 .../common/dpaa2/qbman/include/fsl_qbman_portal.h  | 1089 +++++++++++++++
 drivers/common/dpaa2/qbman/qbman_portal.c          | 1476 ++++++++++++++++++++
 drivers/common/dpaa2/qbman/qbman_portal.h          |  269 ++++
 drivers/common/dpaa2/qbman/qbman_private.h         |  164 +++
 drivers/common/dpaa2/qbman/qbman_sys.h             |  375 +++++
 drivers/common/dpaa2/qbman/qbman_sys_decl.h        |   69 +
 drivers/net/Makefile                               |    2 +-
 drivers/net/dpaa2/Makefile                         |   73 +
 drivers/net/dpaa2/base/dpaa2_hw_dpbp.c             |  367 +++++
 drivers/net/dpaa2/base/dpaa2_hw_dpbp.h             |  101 ++
 drivers/net/dpaa2/base/dpaa2_hw_dpio.c             |  513 +++++++
 drivers/net/dpaa2/base/dpaa2_hw_dpio.h             |   76 +
 drivers/net/dpaa2/base/dpaa2_hw_dpni.c             |  343 +++++
 drivers/net/dpaa2/base/dpaa2_hw_dpni.h             |   86 ++
 drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h       |  256 ++++
 drivers/net/dpaa2/base/dpaa2_hw_pvt.h              |  235 ++++
 drivers/net/dpaa2/dpaa2_bus.c                      |  170 +++
 drivers/net/dpaa2/dpaa2_ethdev.c                   |  723 ++++++++++
 drivers/net/dpaa2/dpaa2_ethdev.h                   |   41 +
 drivers/net/dpaa2/dpaa2_logs.h                     |   77 +
 drivers/net/dpaa2/dpaa2_rxtx.c                     |  419 ++++++
 drivers/net/dpaa2/dpaa2_vfio.c                     |  561 ++++++++
 drivers/net/dpaa2/dpaa2_vfio.h                     |   74 +
 drivers/net/dpaa2/rte_dpaa2.h                      |  121 ++
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map        |    4 +
 lib/librte_ether/rte_ethdev.h                      |    1 +
 mk/machine/dpaa2/rte.vars.mk                       |    5 +-
 mk/rte.app.mk                                      |    1 +
 58 files changed, 14936 insertions(+), 4 deletions(-)
 create mode 100644 doc/guides/nics/dpaa2.rst
 create mode 100644 doc/guides/nics/features/dpaa2.ini
 create mode 100644 drivers/common/Makefile
 create mode 100644 drivers/common/dpaa2/Makefile
 create mode 100644 drivers/common/dpaa2/mc/Makefile
 create mode 100644 drivers/common/dpaa2/mc/dpaa2_mc_version.map
 create mode 100644 drivers/common/dpaa2/mc/dpbp.c
 create mode 100644 drivers/common/dpaa2/mc/dpio.c
 create mode 100644 drivers/common/dpaa2/mc/dpni.c
 create mode 100644 drivers/common/dpaa2/mc/dpseci.c
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpbp.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpbp_cmd.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpio.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpio_cmd.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpkg.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpni.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpni_cmd.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpseci.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_dpseci_cmd.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_mc_cmd.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_mc_sys.h
 create mode 100644 drivers/common/dpaa2/mc/fsl_net.h
 create mode 100644 drivers/common/dpaa2/mc/mc_sys.c
 create mode 100644 drivers/common/dpaa2/qbman/Makefile
 create mode 100644 drivers/common/dpaa2/qbman/dpaa2_qbman_version.map
 create mode 100644 drivers/common/dpaa2/qbman/include/compat.h
 create mode 100644 drivers/common/dpaa2/qbman/include/fsl_qbman_base.h
 create mode 100644 drivers/common/dpaa2/qbman/include/fsl_qbman_portal.h
 create mode 100644 drivers/common/dpaa2/qbman/qbman_portal.c
 create mode 100644 drivers/common/dpaa2/qbman/qbman_portal.h
 create mode 100644 drivers/common/dpaa2/qbman/qbman_private.h
 create mode 100644 drivers/common/dpaa2/qbman/qbman_sys.h
 create mode 100644 drivers/common/dpaa2/qbman/qbman_sys_decl.h
 create mode 100644 drivers/net/dpaa2/Makefile
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpbp.c
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpbp.h
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpio.c
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpio.h
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpni.c
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpni.h
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_pvt.h
 create mode 100644 drivers/net/dpaa2/dpaa2_bus.c
 create mode 100644 drivers/net/dpaa2/dpaa2_ethdev.c
 create mode 100644 drivers/net/dpaa2/dpaa2_ethdev.h
 create mode 100644 drivers/net/dpaa2/dpaa2_logs.h
 create mode 100644 drivers/net/dpaa2/dpaa2_rxtx.c
 create mode 100644 drivers/net/dpaa2/dpaa2_vfio.c
 create mode 100644 drivers/net/dpaa2/dpaa2_vfio.h
 create mode 100644 drivers/net/dpaa2/rte_dpaa2.h
 create mode 100644 drivers/net/dpaa2/rte_pmd_dpaa2_version.map

-- 
1.9.1



More information about the dev mailing list