[dpdk-dev] [PATCH 00/22] Add DLB2 PMD
Jerin Jacob
jerinjacobk at gmail.com
Mon Sep 21 19:11:41 CEST 2020
On Sat, Sep 12, 2020 at 2:00 AM Timothy McDaniel
<timothy.mcdaniel at intel.com> wrote:
>
> The following patch series adds support for a new eventdev PMD. The DLB2
> PMD adds support for the Intel Dynamic Load Balancer 2.0 (DLB2)
> hardware.
> The DLB2 is a PCIe device that provides load-balanced, prioritized
> scheduling of core-to-core communication. The device consists of
> queues and arbiters that connect producer and consumer cores, and
> implements load-balanced queueing features including:
> - Lock-free multi-producer/multi-consumer operation.
> - Multiple priority levels for varying traffic types.
> - 'Direct' traffic (i.e. multi-producer/single-consumer)
> - Simple unordered load-balanced distribution.
> - Atomic lock-free load balancing across multiple consumers.
> - Queue element reordering feature allowing ordered load-balanced
> distribution.
>
> The DLB2 hardware supports both load balanced and directed ports and
> queues. Unlike other eventdev devices already in the repo, not all
> DLB2 ports and queues are equally capable. In particular, directed
> ports are limited to a single link, and must be connected to a
> directed queue. Additionally, even though LDB ports may link multiple queues,
> the number of queues that may be linked is limited by hardware.
>
> While reviewing the code, please be aware that this PMD has full
> control over the DLB2 hardware. Intel will be extending the DLB2 PMD
> in the future (not as part of this first series) with a mode that we
> refer to as the bifurcated PMD. The bifurcated PMD communicates with a
> kernel driver to configure the device, ports, and queues, and memory
> maps device MMIO so datapath operations occur purely in user-space.
> Note that the DLB2 hardware is a successor of the DLB hardware, and
> as such is structured similarly, both in terms of code layout and
> implementation.
>
> The framework to support both the PF PMD and bifurcated PMD exists in
> this patchset, and is why the iface.[ch] layer is present.
>
> Depends-on: patch-77466 ("eventdev: add PCI probe named convenience function")
> Depends-on: series-12160 ("Eventdev ABI changes")
> Depends-on: patch-77460 ("eal: add umonitor umwait to x86 cpuflags")
>
> Timothy McDaniel (22):
There is two version of driver(DLB and DLB2)[1]
Both are needed?
Is two separate set of HW?
http://patches.dpdk.org/project/dpdk/list/?submitter=826
> event/dlb2: add meson build infrastructure
> event/dlb2: add dynamic logging
> event/dlb2: add private data structures and constants
> event/dlb2: add definitions shared with LKM or shared code
> event/dlb2: add inline functions
> event/dlb2: add probe
> event/dlb2: add xstats
> event/dlb2: add infos get and configure
> event/dlb2: add queue and port default conf
> event/dlb2: add queue setup
> event/dlb2: add port setup
> event/dlb2: add port link
> event/dlb2: add port unlink and port unlinks in progress
> event/dlb2: add eventdev start
> event/dlb2: add enqueue and its burst variants
> event/dlb2: add dequeue and its burst variants
> event/dlb2: add eventdev stop and close
> event/dlb2: add PMD's token pop public interface
> event/dlb2: add PMD self-tests
> event/dlb2: add queue and port release
> event/dlb2: add timeout ticks entry point
> doc: add new DLB2 eventdev driver to relnotes
>
> app/test/test_eventdev.c | 9 +
> config/rte_config.h | 7 +
> doc/guides/rel_notes/release_20_11.rst | 5 +
> drivers/event/dlb2/dlb2.c | 4046 ++++++++++++++
> drivers/event/dlb2/dlb2_iface.c | 88 +
> drivers/event/dlb2/dlb2_iface.h | 75 +
> drivers/event/dlb2/dlb2_inline_fns.h | 85 +
> drivers/event/dlb2/dlb2_log.h | 25 +
> drivers/event/dlb2/dlb2_priv.h | 619 +++
> drivers/event/dlb2/dlb2_selftest.c | 1570 ++++++
> drivers/event/dlb2/dlb2_user.h | 883 +++
> drivers/event/dlb2/dlb2_xstats.c | 1269 +++++
> drivers/event/dlb2/meson.build | 16 +
> drivers/event/dlb2/pf/base/dlb2_hw_types.h | 367 ++
> drivers/event/dlb2/pf/base/dlb2_mbox.h | 596 ++
> drivers/event/dlb2/pf/base/dlb2_osdep.h | 248 +
> drivers/event/dlb2/pf/base/dlb2_osdep_bitmap.h | 447 ++
> drivers/event/dlb2/pf/base/dlb2_osdep_list.h | 131 +
> drivers/event/dlb2/pf/base/dlb2_osdep_types.h | 31 +
> drivers/event/dlb2/pf/base/dlb2_regs.h | 2527 +++++++++
> drivers/event/dlb2/pf/base/dlb2_resource.c | 6023 +++++++++++++++++++++
> drivers/event/dlb2/pf/base/dlb2_resource.h | 1913 +++++++
> drivers/event/dlb2/pf/dlb2_main.c | 692 +++
> drivers/event/dlb2/pf/dlb2_main.h | 107 +
> drivers/event/dlb2/pf/dlb2_pf.c | 734 +++
> drivers/event/dlb2/rte_pmd_dlb2.c | 39 +
> drivers/event/dlb2/rte_pmd_dlb2.h | 59 +
> drivers/event/dlb2/rte_pmd_dlb2_event_version.map | 9 +
> drivers/event/meson.build | 4 +
> 29 files changed, 22624 insertions(+)
> create mode 100644 drivers/event/dlb2/dlb2.c
> create mode 100644 drivers/event/dlb2/dlb2_iface.c
> create mode 100644 drivers/event/dlb2/dlb2_iface.h
> create mode 100644 drivers/event/dlb2/dlb2_inline_fns.h
> create mode 100644 drivers/event/dlb2/dlb2_log.h
> create mode 100644 drivers/event/dlb2/dlb2_priv.h
> create mode 100644 drivers/event/dlb2/dlb2_selftest.c
> create mode 100644 drivers/event/dlb2/dlb2_user.h
> create mode 100644 drivers/event/dlb2/dlb2_xstats.c
> create mode 100644 drivers/event/dlb2/meson.build
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_hw_types.h
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_mbox.h
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_osdep.h
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_osdep_bitmap.h
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_osdep_list.h
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_osdep_types.h
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_regs.h
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_resource.c
> create mode 100644 drivers/event/dlb2/pf/base/dlb2_resource.h
> create mode 100644 drivers/event/dlb2/pf/dlb2_main.c
> create mode 100644 drivers/event/dlb2/pf/dlb2_main.h
> create mode 100644 drivers/event/dlb2/pf/dlb2_pf.c
> create mode 100644 drivers/event/dlb2/rte_pmd_dlb2.c
> create mode 100644 drivers/event/dlb2/rte_pmd_dlb2.h
> create mode 100644 drivers/event/dlb2/rte_pmd_dlb2_event_version.map
>
> --
> 2.6.4
>
More information about the dev
mailing list