Register dev_configure API to configure DPI PCI devices. After successful initialization send message to PF to open corresponding DPI DMA queue. At present hardware doesn't support mail box for DPI, so PMD to PF communication uses pre build kernel devfs. Signed-off-by: Satha Rao <skoteshwar@marvell.com> Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
85 lines
2.5 KiB
ReStructuredText
85 lines
2.5 KiB
ReStructuredText
.. SPDX-License-Identifier: BSD-3-Clause
|
|
Copyright(c) 2019 Marvell International Ltd.
|
|
|
|
OCTEON TX2 DMA Driver
|
|
=====================
|
|
|
|
OCTEON TX2 has an internal DMA unit which can be used by applications to initiate
|
|
DMA transaction internally, from/to host when OCTEON TX2 operates in PCIe End
|
|
Point mode. The DMA PF function supports 8 VFs corresponding to 8 DMA queues.
|
|
Each DMA queue was exposed as a VF function when SRIOV enabled.
|
|
|
|
Features
|
|
--------
|
|
|
|
This DMA PMD supports below 3 modes of memory transfers
|
|
|
|
#. Internal - OCTEON TX2 DRAM to DRAM without core intervention
|
|
|
|
#. Inbound - Host DRAM to OCTEON TX2 DRAM without host/OCTEON TX2 cores involvement
|
|
|
|
#. Outbound - OCTEON TX2 DRAM to Host DRAM without host/OCTEON TX2 cores involvement
|
|
|
|
Prerequisites and Compilation procedure
|
|
---------------------------------------
|
|
|
|
See :doc:`../platform/octeontx2` for setup information.
|
|
|
|
|
|
Pre-Installation Configuration
|
|
------------------------------
|
|
|
|
Config File Options
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
The following options can be modified in the ``config`` file.
|
|
|
|
- ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_DMA_RAWDEV`` (default ``y``)
|
|
|
|
Toggle compilation of the ``lrte_pmd_octeontx2_dma`` driver.
|
|
|
|
Enabling logs
|
|
-------------
|
|
|
|
For enabling logs, use the following EAL parameter:
|
|
|
|
.. code-block:: console
|
|
|
|
./your_dma_application <EAL args> --log-level=pmd.raw.octeontx2.dpi,<level>
|
|
|
|
Using ``pmd.raw.octeontx2.dpi`` as log matching criteria, all Event PMD logs
|
|
can be enabled which are lower than logging ``level``.
|
|
|
|
Initialization
|
|
--------------
|
|
|
|
The number of DMA VFs (queues) enabled can be controlled by setting sysfs
|
|
entry, `sriov_numvfs` for the corresponding PF driver.
|
|
|
|
.. code-block:: console
|
|
|
|
echo <num_vfs> > /sys/bus/pci/drivers/octeontx2-dpi/0000\:05\:00.0/sriov_numvfs
|
|
|
|
Once the required VFs are enabled, to be accessible from DPDK, VFs need to be
|
|
bound to vfio-pci driver.
|
|
|
|
Device Configuration
|
|
--------------------
|
|
|
|
Configuring DMA rawdev device is done using the ``rte_rawdev_configure()``
|
|
API, which takes the mempool as parameter. PMD uses this pool to submit DMA
|
|
commands to HW.
|
|
|
|
The following code shows how the device is configured
|
|
|
|
.. code-block:: c
|
|
|
|
struct dpi_rawdev_conf_s conf = {0};
|
|
struct rte_rawdev_info rdev_info = {.dev_private = &conf};
|
|
|
|
conf.chunk_pool = (void *)rte_mempool_create_empty(...);
|
|
rte_mempool_set_ops_byname(conf.chunk_pool, rte_mbuf_platform_mempool_ops(), NULL);
|
|
rte_mempool_populate_default(conf.chunk_pool);
|
|
|
|
rte_rawdev_configure(dev_id, (rte_rawdev_obj_t)&rdev_info);
|