[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