[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