From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: Re: [PATCH 00/32] NXP DPAA2 PMD Date: Tue, 6 Dec 2016 19:48:35 +0000 Message-ID: <32d28626-8f6e-a12e-7e98-433e81355c18@intel.com> References: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: thomas.monjalon@6wind.com, bruce.richardson@intel.com, shreyansh.jain@nxp.com To: Hemant Agrawal , dev@dpdk.org Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 9A77F2BA8 for ; Tue, 6 Dec 2016 20:48:37 +0100 (CET) In-Reply-To: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 >