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

Hemant Agrawal hemant.agrawal at nxp.com
Wed Dec 7 10:53:21 CET 2016


On 12/7/2016 1:18 AM, Ferruh Yigit wrote:
> 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/

Thanks for pointing. I missed it.

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