From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hemant Agrawal Subject: [PATCHv8 00/46] NXP DPAA2 PMD Date: Fri, 3 Mar 2017 18:16:17 +0530 Message-ID: <1488545223-25739-1-git-send-email-hemant.agrawal@nxp.com> References: <1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Cc: , , , , , To: Return-path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0059.outbound.protection.outlook.com [104.47.33.59]) by dpdk.org (Postfix) with ESMTP id 4E22C952 for ; Fri, 3 Mar 2017 08:13:13 +0100 (CET) In-Reply-To: <1487205586-6785-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" The patch series adds NXP’s QorIQ-Layerscape DPAA2 Architecture based fsl-mc bus driver and 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 [1], 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. Make file changes for crc in armv8 core machine type and driver dependency 2. Indroducing fsl-mc bus as rte_bus, it's componenets. 3. Introducing dpaa2 pmd driver 4. Introducing dpaa2 mempool 5. Support for DPAA2 Ethernet Device (ethdev) 6. Additional functionality in DPAA2 ethdev. The following design decisions are made during development: 1. DPAA2 implements a new bus called "fsl-mc" and some common accelerator drivers. These drivers will be shared with dpaa2 based crypto drivers. 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) is required. Information about obtaining relevant software is available in the docs as part of the patch. Future Changes/Caveats: 1. VFIO code for fsl-mc bus is different than eal-vfio code for pci bus. This need to be re-worked to make possible re-use of the existing code. References: [1] https://www.kernel.org/doc/readme/drivers-staging-fsl-mc-README.txt --- v8: * rebased over master (17.02: 35b09d76) * Removed all drivers/common/* code and moved to drivers/bus/fslmc * Updated documentation to remove non-open source dependency * Reduced shared symbols in map files v7: * rebased over master (17.02) * fix the shared lib compilation * re partitiion the patches as per Ferruh comments. * handling Ferruh's comment for NXP dpaa2 driver v6: * rebased over master (61207d0) * removing DPAA2_COMMON as configurable option * renaming drivers bus, pool libraries removing 'pmd' * Headers of Licenses * exposed variable renaming with *rte_* prefix * handling Ferruh's comment for NXP dpaa2 driver * moving around MAINTAINER and DOC file patches v5: * rebased over master (6818a7f4) v4: * rebased over master (1feda4d8) and patches from Shreyansh [1] for Bus Arch. v3: * rebased over master (eac901ce2) and patches from Shreyansh [1] for Bus Arch. * Fixed comment from John on Patch-0003 for documentation * Removed Patch-0001 for rte_device in rte_eth_dev; Already upstreamed through another series v2: * separated the "fsl-mc" bus from the dpaa2 pmd driver - introduced drivers/bus * separated the "dpaa2" hw mempool from dpaa2 pmd driver - introduced drivers/pool * removed documentation warnings and missing information. * removed arm64 part specific code from driver * changed rte_panic to errors * reduced checkpatch warnings Hemant Agrawal (45): mk/dpaa2: add the crc support to the machine type bus/fslmc: introducing fsl-mc bus driver bus/fslmc: add QBMAN driver to bus bus/fslmc: introduce MC object functions bus/fslmc: add mc dpio object support bus/fslmc: add mc dpbp object support eal/vfio: adding vfio utility functions in map file bus/fslmc: add vfio support bus/fslmc: scan for net and sec device net/dpaa2: introducing NXP DPAA2 PMD driver doc: add DPAA2 NIC details bus/fslmc: add debug log support net/dpaa2: add debug log support config: enable support for DPAA2 debug logging net/dpaa2: add mc dpni object support bus/fslmc: dpio portal driver bus/fslmc: introduce support for hw mempool object pool/dpaa2: add DPAA2 hardware offloaded mempool bus/fslmc: affine dpio to crypto threads bus/fslmc: define queues for DPAA2 devices net/dpaa2: adding eth ops to dpaa2 net/dpaa2: add RSS flow distribution net/dpaa2: configure MAC address at init bus/fslmc: define hardware annotation area size net/dpaa2: attach the buffer pool to dpni bus/fslmc: introduce true and false macros net/dpaa2: add support for L3 and L4 checksum offload net/dpaa2: add support for promiscuous mode bus/fslmc: define VLAN header length net/dpaa2: add MTU configuration support bus/fslmc: add packet FLE definitions net/dpaa2: enable packet Rx and Tx operations net/dpaa2: support for Rx packet parsing and packet type net/dpaa2: link status update net/dpaa2: basic stats support net/dpaa2: enable stashing for LS2088A devices net/dpaa2: handle non-hardware backed buffer pool bus/fslmc: add physical-virtual address translation helpers pool/dpaa2: enable physical addressing for pool buffers net/dpaa2: enable physical addressing for packet buffers config: add configuration for toggling physical addressing bus/fslmc: add support for DMA mapping for ARM SMMU net/dpaa2: enable DMA Mapping during device scanning bus/fslmc: frame queue based dq storage alloc net/dpaa2: enable frame queue based dequeuing Shreyansh Jain (1): mk: handle intra drivers dependencies for shared build MAINTAINERS | 8 + config/common_base | 21 + config/defconfig_arm64-dpaa2-linuxapp-gcc | 27 +- doc/guides/nics/dpaa2.rst | 614 ++++++++ doc/guides/nics/features/dpaa2.ini | 18 + doc/guides/nics/index.rst | 1 + doc/guides/rel_notes/release_17_02.rst | 12 +- drivers/Makefile | 2 + drivers/bus/Makefile | 38 + drivers/bus/fslmc/Makefile | 79 ++ drivers/bus/fslmc/fslmc_bus.c | 135 ++ drivers/bus/fslmc/fslmc_logs.h | 76 + drivers/bus/fslmc/fslmc_vfio.c | 629 ++++++++ drivers/bus/fslmc/fslmc_vfio.h | 82 ++ drivers/bus/fslmc/mc/dpbp.c | 237 ++++ drivers/bus/fslmc/mc/dpio.c | 279 ++++ drivers/bus/fslmc/mc/fsl_dpbp.h | 227 +++ drivers/bus/fslmc/mc/fsl_dpbp_cmd.h | 83 ++ drivers/bus/fslmc/mc/fsl_dpio.h | 282 ++++ drivers/bus/fslmc/mc/fsl_dpio_cmd.h | 121 ++ drivers/bus/fslmc/mc/fsl_mc_cmd.h | 238 ++++ drivers/bus/fslmc/mc/fsl_mc_sys.h | 105 ++ drivers/bus/fslmc/mc/mc_sys.c | 114 ++ drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c | 137 ++ drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 441 ++++++ drivers/bus/fslmc/portal/dpaa2_hw_dpio.h | 70 + drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 247 ++++ drivers/bus/fslmc/qbman/include/compat.h | 406 ++++++ drivers/bus/fslmc/qbman/include/fsl_qbman_base.h | 160 +++ drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h | 1093 ++++++++++++++ drivers/bus/fslmc/qbman/qbman_portal.c | 1496 ++++++++++++++++++++ drivers/bus/fslmc/qbman/qbman_portal.h | 277 ++++ drivers/bus/fslmc/qbman/qbman_private.h | 170 +++ drivers/bus/fslmc/qbman/qbman_sys.h | 385 +++++ drivers/bus/fslmc/qbman/qbman_sys_decl.h | 73 + drivers/bus/fslmc/rte_bus_fslmc_version.map | 49 + drivers/bus/fslmc/rte_fslmc.h | 148 ++ drivers/net/Makefile | 2 +- drivers/net/dpaa2/Makefile | 77 + drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 344 +++++ drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h | 257 ++++ drivers/net/dpaa2/dpaa2_ethdev.c | 1040 ++++++++++++++ drivers/net/dpaa2/dpaa2_ethdev.h | 83 ++ drivers/net/dpaa2/dpaa2_rxtx.c | 422 ++++++ drivers/net/dpaa2/mc/dpni.c | 739 ++++++++++ drivers/net/dpaa2/mc/fsl_dpkg.h | 184 +++ drivers/net/dpaa2/mc/fsl_dpni.h | 1217 ++++++++++++++++ drivers/net/dpaa2/mc/fsl_dpni_cmd.h | 334 +++++ drivers/net/dpaa2/mc/fsl_net.h | 487 +++++++ drivers/net/dpaa2/rte_pmd_dpaa2_version.map | 4 + drivers/pool/Makefile | 40 + drivers/pool/dpaa2/Makefile | 72 + drivers/pool/dpaa2/dpaa2_hw_mempool.c | 352 +++++ drivers/pool/dpaa2/dpaa2_hw_mempool.h | 95 ++ drivers/pool/dpaa2/rte_pool_dpaa2_version.map | 8 + lib/librte_eal/bsdapp/eal/rte_eal_version.map | 3 + lib/librte_eal/linuxapp/eal/rte_eal_version.map | 3 + mk/machine/dpaa2/rte.vars.mk | 5 +- mk/rte.app.mk | 3 + mk/rte.lib.mk | 2 +- 60 files changed, 14347 insertions(+), 6 deletions(-) create mode 100644 doc/guides/nics/dpaa2.rst create mode 100644 doc/guides/nics/features/dpaa2.ini create mode 100644 drivers/bus/Makefile create mode 100644 drivers/bus/fslmc/Makefile create mode 100644 drivers/bus/fslmc/fslmc_bus.c create mode 100644 drivers/bus/fslmc/fslmc_logs.h create mode 100644 drivers/bus/fslmc/fslmc_vfio.c create mode 100644 drivers/bus/fslmc/fslmc_vfio.h create mode 100644 drivers/bus/fslmc/mc/dpbp.c create mode 100644 drivers/bus/fslmc/mc/dpio.c create mode 100644 drivers/bus/fslmc/mc/fsl_dpbp.h create mode 100644 drivers/bus/fslmc/mc/fsl_dpbp_cmd.h create mode 100644 drivers/bus/fslmc/mc/fsl_dpio.h create mode 100644 drivers/bus/fslmc/mc/fsl_dpio_cmd.h create mode 100644 drivers/bus/fslmc/mc/fsl_mc_cmd.h create mode 100644 drivers/bus/fslmc/mc/fsl_mc_sys.h create mode 100644 drivers/bus/fslmc/mc/mc_sys.c create mode 100644 drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c create mode 100644 drivers/bus/fslmc/portal/dpaa2_hw_dpio.c create mode 100644 drivers/bus/fslmc/portal/dpaa2_hw_dpio.h create mode 100644 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h create mode 100644 drivers/bus/fslmc/qbman/include/compat.h create mode 100644 drivers/bus/fslmc/qbman/include/fsl_qbman_base.h create mode 100644 drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h create mode 100644 drivers/bus/fslmc/qbman/qbman_portal.c create mode 100644 drivers/bus/fslmc/qbman/qbman_portal.h create mode 100644 drivers/bus/fslmc/qbman/qbman_private.h create mode 100644 drivers/bus/fslmc/qbman/qbman_sys.h create mode 100644 drivers/bus/fslmc/qbman/qbman_sys_decl.h create mode 100644 drivers/bus/fslmc/rte_bus_fslmc_version.map create mode 100644 drivers/bus/fslmc/rte_fslmc.h create mode 100644 drivers/net/dpaa2/Makefile create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpni.c create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h 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_rxtx.c create mode 100644 drivers/net/dpaa2/mc/dpni.c create mode 100644 drivers/net/dpaa2/mc/fsl_dpkg.h create mode 100644 drivers/net/dpaa2/mc/fsl_dpni.h create mode 100644 drivers/net/dpaa2/mc/fsl_dpni_cmd.h create mode 100644 drivers/net/dpaa2/mc/fsl_net.h create mode 100644 drivers/net/dpaa2/rte_pmd_dpaa2_version.map create mode 100644 drivers/pool/Makefile create mode 100644 drivers/pool/dpaa2/Makefile create mode 100644 drivers/pool/dpaa2/dpaa2_hw_mempool.c create mode 100644 drivers/pool/dpaa2/dpaa2_hw_mempool.h create mode 100644 drivers/pool/dpaa2/rte_pool_dpaa2_version.map -- 1.9.1