1. 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/CN20K SoC family.

More information about cnxk SoC can be found at Marvell Official Website.

1.1. 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.

CN20k NPA supports:

  • HALO support for 1:1 aura-pool mapping, which uses a single unified context instead of separate aura and pool contexts, saving HW context space.

1.2. Prerequisites and Compilation procedure

See Marvell cnxk platform guide for setup information.

1.3. Pre-Installation Configuration

1.3.1. 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.

  • HALO enable (default 0)

    The HALO feature is available on CN20K platforms and allows 1:1 aura-pool mapping to use a single unified context instead of separate aura and pool contexts, saving HW context space. This parameter enables or disables HALO support for NPA pools created by the mempool driver. For example:

    -a 0002:02:00.0,halo_ena=1
    

    With the above configuration, HALO support will be enabled for mempools created on CN20K platforms.

Note

Since this configuration is per application, the end user needs to provide max_pools and/or halo_ena parameter to the first PCIe device probed by the given application.

1.3.2. Debugging Options

Table 1.155 cnxk mempool debug options

#

Component

EAL log command

1

NPA

–log-level=’pmd.common.cnxk.mempool,8’

1.3.3. 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 -l 4-7 --mbuf-pool-ops-name="cn10k_mempool_ops"