db2a347a50
Marvell CN10k mempool supports batch enqueue/dequeue which can dequeue up to 512 pointers and enqueue up to 15 pointers using a single instruction. These batch operations require a DMA memory to enqueue/dequeue pointers. This patch adds the initialization of this DMA memory. Signed-off-by: Ashwin Sekhar T K <asekhar@marvell.com>
92 lines
3.1 KiB
ReStructuredText
92 lines
3.1 KiB
ReStructuredText
.. SPDX-License-Identifier: BSD-3-Clause
|
|
Copyright(C) 2021 Marvell.
|
|
|
|
cnxk NPA Mempool Driver
|
|
=======================
|
|
|
|
The cnxk NPA PMD (**librte_mempool_cnxk**) provides mempool driver support for
|
|
the integrated mempool device found in **Marvell OCTEON CN9K/CN10K** SoC family.
|
|
|
|
More information about cnxk SoC can be found at `Marvell Official Website
|
|
<https://www.marvell.com/embedded-processors/infrastructure-processors/>`_.
|
|
|
|
Features
|
|
--------
|
|
|
|
cnxk NPA PMD supports:
|
|
|
|
- Up to 128 NPA LFs
|
|
- 1M Pools per LF
|
|
- HW mempool manager
|
|
- Ethdev Rx buffer allocation in HW to save CPU cycles in the Rx path.
|
|
- Ethdev Tx buffer recycling in HW to save CPU cycles in the Tx path.
|
|
|
|
CN9k NPA supports:
|
|
|
|
- Burst alloc of up to 32 pointers.
|
|
|
|
CN10k NPA supports:
|
|
|
|
- Batch dequeue of up to 512 pointers with single instruction.
|
|
- Batch enqueue of up to 15 pointers with single instruction.
|
|
|
|
Prerequisites and Compilation procedure
|
|
---------------------------------------
|
|
|
|
See :doc:`../platform/cnxk` for setup information.
|
|
|
|
Pre-Installation Configuration
|
|
------------------------------
|
|
|
|
|
|
Runtime Config Options
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
- ``Maximum number of mempools per application`` (default ``128``)
|
|
|
|
The maximum number of mempools per application needs to be configured on
|
|
HW during mempool driver initialization. HW can support up to 1M mempools,
|
|
Since each mempool costs set of HW resources, the ``max_pools`` ``devargs``
|
|
parameter is being introduced to configure the number of mempools required
|
|
for the application.
|
|
For example::
|
|
|
|
-a 0002:02:00.0,max_pools=512
|
|
|
|
With the above configuration, the driver will set up only 512 mempools for
|
|
the given application to save HW resources.
|
|
|
|
.. note::
|
|
|
|
Since this configuration is per application, the end user needs to
|
|
provide ``max_pools`` parameter to the first PCIe device probed by the given
|
|
application.
|
|
|
|
Debugging Options
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
.. _table_cnxk_mempool_debug_options:
|
|
|
|
.. table:: cnxk mempool debug options
|
|
|
|
+---+------------+-------------------------------------------------------+
|
|
| # | Component | EAL log command |
|
|
+===+============+=======================================================+
|
|
| 1 | NPA | --log-level='pmd\.mempool.cnxk,8' |
|
|
+---+------------+-------------------------------------------------------+
|
|
|
|
Standalone mempool device
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The ``usertools/dpdk-devbind.py`` script shall enumerate all the mempool
|
|
devices available in the system. In order to avoid, the end user to bind the
|
|
mempool device prior to use ethdev and/or eventdev device, the respective
|
|
driver configures an NPA LF and attach to the first probed ethdev or eventdev
|
|
device. In case, if end user need to run mempool as a standalone device
|
|
(without ethdev or eventdev), end user needs to bind a mempool device using
|
|
``usertools/dpdk-devbind.py``
|
|
|
|
Example command to run ``mempool_autotest`` test with standalone CN10K NPA device::
|
|
|
|
echo "mempool_autotest" | <build_dir>/app/test/dpdk-test -c 0xf0 --mbuf-pool-ops-name="cn10k_mempool_ops"
|