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

Ferruh Yigit ferruh.yigit at intel.com
Tue Dec 6 20:48:35 CET 2016


On 12/4/2016 6:16 PM, Hemant Agrawal wrote:
> 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]

Just to clarify this patchset depends other patchset, although mentioned
above, it is good to have links for dependent patches:

Dependencies:

- [4]

[4] http://dpdk.org/dev/patchwork/patch/17620/

> 
> 
> [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
> 



More information about the dev mailing list