Configuration Information
-------------------------
-**DPDK Configuration Parameters**
-
- The following configuration options are available for the ARK PMD:
-
- * **CONFIG_RTE_LIBRTE_ARK_PMD** (default y): Enables or disables inclusion
- of the ARK PMD driver in the DPDK compilation.
+**DPDK Configuration Parameter**
* **RTE_LIBRTE_ARK_MIN_TX_PKTLEN** (default 0): Sets the minimum
packet length for tx packets to the FPGA. Packets less than this
- MACSEC PMD API is considered as experimental and is subject to change/removal in next DPDK releases.
-Configuration Information
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``CONFIG_RTE_LIBRTE_ATLANTIC_PMD`` (default ``y``)
Application Programming Interface
---------------------------------
- Jumbo Frame up to 9K
-Configuration Information
--------------------------
-
-The following options can be modified in the ``.config`` file. Please note that
-enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_AXGBE_PMD`` (default **y**)
-
- Toggle compilation of axgbe PMD.
-
-- ``CONFIG_RTE_LIBRTE_AXGBE_PMD_DEBUG`` (default **n**)
-
- Toggle display for PMD debug related messages.
-
-
Building DPDK
-------------
Pre-Installation Configuration
------------------------------
-Config File Options
-~~~~~~~~~~~~~~~~~~~
+Config Options
+~~~~~~~~~~~~~~
-The following options can be modified in the ``.config`` file. Please note that
+The following options can be enabled with Meson flags. Please note that
enabling debugging options may affect system performance.
-- ``CONFIG_RTE_LIBRTE_BNX2X_PMD`` (default **n**)
-
- Toggle compilation of bnx2x driver. To use bnx2x PMD set this config parameter
- to 'y'. Also, in order for firmware binary to load user will need zlib devel
- package installed.
-
-- ``CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX`` (default **n**)
+- ``RTE_LIBRTE_BNX2X_DEBUG_TX`` (default **disabled**)
Toggle display of transmit fast path run-time messages.
-- ``CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX`` (default **n**)
+- ``RTE_LIBRTE_BNX2X_DEBUG_RX`` (default **disabled**)
Toggle display of receive fast path run-time messages.
-- ``CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC`` (default **n**)
+- ``RTE_LIBRTE_BNX2X_DEBUG_PERIODIC`` (default **disabled**)
Toggle display of register reads and writes.
-
.. _bnx2x_driver-compilation:
Driver compilation and testing
clock using DPDK IEEE1588 APIs. Note that the PTP client application needs to
run on PF and vector mode needs to be disabled.
-For the PTP time synchronization support, the BNXT PMD must be compiled with
-``CONFIG_RTE_LIBRTE_IEEE1588=y`` (this compilation flag is currently pending).
-
.. code-block:: console
testpmd> set fwd ieee1588 // enable IEEE 1588 mode
* oerrors
By default, per-queue stats for 16 queues are supported. For more than 16
-queues, BNXT PMD should be compiled with ``CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS``
+queues, BNXT PMD should be compiled with ``RTE_ETHDEV_QUEUE_STAT_CNTRS``
set to the desired number of queues.
Extended Stats
.. code-block:: console
- ./x86_64-native-linux-gcc/app/testpmd -l 0-3 -n 4 -- -i
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 -- -i
Successful execution will show initialization messages from EAL, PMD and
testpmd application. A prompt will be displayed at the end for user commands
:ref:`linux-installation` for Linux and section :ref:`freebsd-installation`
for FreeBSD.
-Pre-Installation Configuration
-------------------------------
-
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``.config`` file. Please note that
-enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_CXGBE_PMD`` (default **y**)
-
- Toggle compilation of librte_pmd_cxgbe driver.
-
- .. note::
-
- This controls compilation of both CXGBE and CXGBEVF PMD.
Runtime Options
-~~~~~~~~~~~~~~~
+---------------
The following ``devargs`` options can be enabled at runtime. They must
be passed as part of EAL arguments. For example,
.. code-block:: console
- testpmd -w 02:00.4,keep_ovlan=1 -- -i
+ dpdk-testpmd -w 02:00.4,keep_ovlan=1 -- -i
Common Runtime Options
-^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~
- ``keep_ovlan`` (default **0**)
coalesce limit has been reached.
CXGBE VF Only Runtime Options
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ``force_link_up`` (default **0**)
to send traffic to each other even when the physical link is down.
CXGBE PF Only Runtime Options
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ``filtermode`` (default **0**)
.. code-block:: console
- testpmd -w 02:00.4,filtermode=0x88 -- -i
+ dpdk-testpmd -w 02:00.4,filtermode=0x88 -- -i
- ``filtermask`` (default **0**)
.. code-block:: console
- testpmd -w 02:00.4,filtermode=0x88,filtermask=0x80 -- -i
+ dpdk-testpmd -w 02:00.4,filtermode=0x88,filtermask=0x80 -- -i
.. _driver-compilation:
.. code-block:: console
- cp x86_64-native-freebsd-clang/kmod/contigmem.ko /boot/kernel/
+ cp <build_dir>/kernel/freebsd/contigmem.ko /boot/kernel/
#. Add the following lines to /boot/loader.conf:
.. code-block:: console
- kldload ./x86_64-native-freebsd-clang/kmod/nic_uio.ko
+ kldload <build_dir>/kernel/freebsd/nic_uio.ko
#. Start testpmd with basic parameters:
.. code-block:: console
- ./x86_64-native-freebsd-clang/app/testpmd -l 0-3 -n 4 -w 0000:02:00.4 -- -i
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 -w 0000:02:00.4 -- -i
Example output:
Pre-Installation Configuration
------------------------------
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_DPAA_BUS`` (default ``y``)
-
- Toggle compilation of the ``librte_bus_dpaa`` driver.
-
-- ``CONFIG_RTE_LIBRTE_DPAA_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_dpaa`` driver.
-
-- ``CONFIG_RTE_LIBRTE_DPAA_DEBUG_DRIVER`` (default ``n``)
-
- Toggles display of bus configurations and enables a debugging queue
- to fetch error (Rx/Tx) packets to driver. By default, packets with errors
- (like wrong checksum) are dropped by the hardware.
-
-- ``CONFIG_RTE_LIBRTE_DPAA_HWDEBUG`` (default ``n``)
-
- Enables debugging of the Queue and Buffer Manager layer which interacts
- with the DPAA hardware.
-
Environment Variables
~~~~~~~~~~~~~~~~~~~~~
.. code-block:: console
- ./arm64-dpaa-linux-gcc/testpmd -c 0xff -n 1 \
+ ./<build_dir>/app/dpdk-testpmd -c 0xff -n 1 \
-- -i --portmask=0x3 --nb-cores=1 --no-flush-rx
.....
Some part of fslmc bus code (mc flib - object library) routines are
dual licensed (BSD & GPLv2), however they are used as BSD in DPDK in userspace.
-Pre-Installation Configuration
-------------------------------
-
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_FSLMC_BUS`` (default ``y``)
-
- Toggle compilation of the ``librte_bus_fslmc`` driver.
-
-- ``CONFIG_RTE_LIBRTE_DPAA2_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_dpaa2`` driver.
-
-- ``CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER`` (default ``n``)
-
- Toggle display of debugging messages/logic
-
-- ``CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA`` (default ``n``)
-
- Toggle to use physical address vs virtual address for hardware accelerators.
Driver compilation and testing
------------------------------
.. code-block:: console
- ./testpmd -c 0xff -n 1 -- -i --portmask=0x3 --nb-cores=1 --no-flush-rx
+ ./dpdk-testpmd -c 0xff -n 1 -- -i --portmask=0x3 --nb-cores=1 --no-flush-rx
.....
EAL: Registered [pci] bus.
Configuration information
-------------------------
-**DPDK Configuration Parameters**
-
- The following configuration options are available for the ENA PMD:
-
- * **CONFIG_RTE_LIBRTE_ENA_PMD** (default y): Enables or disables inclusion
- of the ENA PMD driver in the DPDK compilation.
-
- * **CONFIG_RTE_LIBRTE_ENA_DEBUG_RX** (default n): Enables or disables debug
- logging of RX logic within the ENA PMD driver.
-
- * **CONFIG_RTE_LIBRTE_ENA_DEBUG_TX** (default n): Enables or disables debug
- logging of TX logic within the ENA PMD driver.
-
- * **CONFIG_RTE_LIBRTE_ENA_COM_DEBUG** (default n): Enables or disables debug
- logging of low level tx/rx logic in ena_com(base) within the ENA PMD driver.
-
**Runtime Configuration Parameters**
* **large_llq_hdr** (default 0)
Follow instructions available in the document
:ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
to launch **testpmd**
-
-To compile in performance mode, please set ``CONFIG_RTE_CACHE_LINE_SIZE=64``
Configuration information
-------------------------
-- **DPDK Configuration Parameters**
-
- The following configuration options are available for the ENIC PMD:
-
- - **CONFIG_RTE_LIBRTE_ENIC_PMD** (default y): Enables or disables inclusion
- of the ENIC PMD driver in the DPDK compilation.
-
- **vNIC Configuration Parameters**
- **Number of Queues**
PMD. Typically, the limit has to be raised to higher than 2GB.
e.g., 2621440
-The compilation of any unused drivers can be disabled using the
-configuration file in config/ directory (e.g., config/common_linux).
-This would help in bringing down the time taken for building the
-libraries and the initialization time of the application.
-
Additional Reference
--------------------
ability to redirect operations to a secondary device when the primary has been
removed from the system.
-.. note::
-
- The library is enabled by default. You can enable it or disable it manually
- by setting the ``CONFIG_RTE_LIBRTE_PMD_FAILSAFE`` configuration option.
Features
--------
Check the feature matrix for the complete set of supported features.
-Compilation option
-------------------
-
-Available options within the ``$RTE_TARGET/build/.config`` file:
-
-- ``CONFIG_RTE_LIBRTE_PMD_FAILSAFE`` (default **y**)
-
- This option enables or disables compiling librte_pmd_failsafe.
Using the Fail-safe PMD from the EAL command line
-------------------------------------------------
.. code-block:: console
- $RTE_TARGET/build/app/testpmd -c 0xff -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -c 0xff -n 4 \
--vdev 'net_failsafe0,mac=de:ad:be:ef:01:02,dev(84:00.0),dev(net_ring0)' \
-b 84:00.0 -b 00:04.0 -- -i
.. code-block:: console
- $RTE_TARGET/build/app/testpmd -c 0xff -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -c 0xff -n 4 \
--vdev 'net_failsafe0,mac=de:ad:be:ef:01:02,dev(84:00.0),dev(net_ring0)' \
-w 81:00.0 -- -i
.. code-block:: console
- $RTE_TARGET/build/app/testpmd -c 0xff -n 4 -w ff:ff.f \
+ ./<build_dir>/app/dpdk-testpmd -c 0xff -n 4 -w ff:ff.f \
--vdev='net_failsafe0,exec(echo 84:00.0)' -- -i
#. Start testpmd, automatically probing the device 84:00.0 and using it with
.. code-block:: console
- $RTE_TARGET/build/app/testpmd -c 0xff -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -c 0xff -n 4 \
--vdev 'net_failsafe0,dev(0000:84:00.0),dev(net_ring0)' -- -i
Support armv7 architecture.
-Use ``defconfig_arm-armv7a-*-*``.
-
.. _nic_features_armv8:
Support armv8a (64bit) architecture.
-Use ``defconfig_arm64-armv8a-*-*``
-
.. _nic_features_power8:
Support PowerPC architecture.
-Use ``defconfig_ppc_64-power8-*-*``
.. _nic_features_x86-32:
Support 32bits x86 architecture.
-Use ``defconfig_x86_x32-native-*-*`` and ``defconfig_i686-native-*-*``.
-
.. _nic_features_x86-64:
Support 64bits x86 architecture.
-Use ``defconfig_x86_64-native-*-*``.
-
.. _nic_features_usage_doc:
vPMD packet I/O. They are transparently registered at runtime RX/TX execution
if all required conditions are met.
-1. To date, only an SSE version of FM10K vPMD is available.
- To ensure that vPMD is in the binary code, set
- ``CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y`` in the configure file.
-
Some constraints apply as pre-conditions for specific optimizations on bulk
packet transfers. The following sections explain RX and TX constraints in the
vPMD.
- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
-Pre-Installation Configuration
-------------------------------
-
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-
-- ``CONFIG_RTE_LIBRTE_HINIC_PMD`` (default ``y``)
Driver compilation and testing
------------------------------
- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
-Pre-Installation Configuration
-------------------------------
-
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_HNS3_PMD`` (default ``y``)
Driver compilation and testing
------------------------------
Config File Options
~~~~~~~~~~~~~~~~~~~
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
+The following options can be modified in the ``config/rte_config.h`` file.
-- ``CONFIG_RTE_LIBRTE_I40E_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_i40e`` driver.
-
-- ``CONFIG_RTE_LIBRTE_I40E_DEBUG_*`` (default ``n``)
-
- Toggle display of generic debugging messages.
-
-- ``CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC`` (default ``y``)
-
- Toggle bulk allocation for RX.
-
-- ``CONFIG_RTE_LIBRTE_I40E_INC_VECTOR`` (default ``n``)
-
- Toggle the use of Vector PMD instead of normal RX/TX path.
- To enable vPMD for RX, bulk allocation for Rx must be allowed.
-
-- ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC`` (default ``n``)
-
- Toggle to use a 16-byte RX descriptor, by default the RX descriptor is 32 byte.
-
-- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF`` (default ``64``)
+- ``RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF`` (default ``64``)
Number of queues reserved for PF.
-- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM`` (default ``4``)
+- ``RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM`` (default ``4``)
Number of queues reserved for each VMDQ Pool.
.. code-block:: console
- ./app/testpmd -l 0-15 -n 4 -- -i --forward-mode=mac
+ ./<build_dir>/app/dpdk-testpmd -l 0-15 -n 4 -- -i --forward-mode=mac
...
testpmd> set promisc 0 off
.. code-block:: console
- ./app/testpmd -l 0-15 -n 4 -- -i --disable-rss --pkt-filter-mode=perfect \
- --rxq=8 --txq=8 --nb-cores=8 --nb-ports=1
+ ./<build_dir>/app/dpdk-testpmd -l 0-15 -n 4 -- -i --disable-rss \
+ --pkt-filter-mode=perfect --rxq=8 --txq=8 --nb-cores=8 \
+ --nb-ports=1
Add a rule to direct ``ipv4-udp`` packet whose ``dst_ip=2.2.2.5, src_ip=2.2.2.3, src_port=32, dst_port=32`` to queue 1:
byte RX descriptor. If the Linux i40e kernel driver is used as host driver,
while DPDK i40e PMD is used as the VF driver, DPDK cannot choose 16 byte receive
descriptor. The reason is that the RX descriptor is already set to 32 byte by
-the i40e kernel driver. That is to say, user should keep
-``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n`` in config file.
+the i40e kernel driver.
In the future, if the Linux i40e driver supports 16 byte RX descriptor, user
should make sure the DPDK VF uses the same RX descriptor mode, 16 byte or 32
byte, as the PF driver.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As i40e PMD supports both 16 and 32 bytes RX descriptor sizes, and 16 bytes size can provide helps to high performance of small packets.
-Configuration of ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC`` in config files can be changed to use 16 bytes size RX descriptors.
+In ``config/rte_config.h`` set the following to use 16 bytes size RX descriptors::
+
+ #define RTE_LIBRTE_I40E_16BYTE_RX_DESC 1
Input set requirement of each pctype for FDIR
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7. The command line of running l3fwd would be something like the following::
- ./l3fwd -l 18-21 -n 4 -w 82:00.0 -w 85:00.0 \
+ ./dpdk-l3fwd -l 18-21 -n 4 -w 82:00.0 -w 85:00.0 \
-- -p 0x3 --config '(0,0,18),(0,1,19),(1,0,20),(1,1,21)'
This means that the application uses core 18 for port 0, queue pair 0 forwarding, core 19 for port 0, queue pair 1 forwarding,
Pre-Installation Configuration
------------------------------
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_ICE_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_ice`` driver.
-
-- ``CONFIG_RTE_LIBRTE_ICE_DEBUG_*`` (default ``n``)
-
- Toggle display of generic debugging messages.
-
-- ``CONFIG_RTE_LIBRTE_ICE_16BYTE_RX_DESC`` (default ``n``)
-
- Toggle to use a 16-byte RX descriptor, by default the RX descriptor is 32 byte.
Runtime Config Options
~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: console
- testpmd -w 18:00.0,proto_xtr='[(1,2-3,8-9):tcp,10-13:vlan]'
+ dpdk-testpmd -w 18:00.0,proto_xtr='[(1,2-3,8-9):tcp,10-13:vlan]'
This setting means queues 1, 2-3, 8-9 are TCP extraction, queues 10-13 are
VLAN extraction, other queues run with no protocol extraction.
.. code-block:: console
- testpmd -w 18:00.0,proto_xtr=vlan,proto_xtr='[(1,2-3,8-9):tcp,10-23:ipv6]'
+ dpdk-testpmd -w 18:00.0,proto_xtr=vlan,proto_xtr='[(1,2-3,8-9):tcp,10-23:ipv6]'
This setting means queues 1, 2-3, 8-9 are TCP extraction, queues 10-23 are
IPv6 extraction, other queues use the default VLAN extraction.
#. Bind the VF0, and run testpmd with 'cap=dcf' devarg::
- testpmd -l 22-25 -n 4 -w 18:01.0,cap=dcf -- -i
+ dpdk-testpmd -l 22-25 -n 4 -w 18:01.0,cap=dcf -- -i
#. Monitor the VF2 interface network traffic::
.. code-block:: console
- ./app/testpmd -l 0-15 -n 4 -- -i
+ ./app/dpdk-testpmd -l 0-15 -n 4 -- -i
...
testpmd> rx_vlan add 10 0
`https://ark.intel.com/content/www/us/en/ark/products/series/184686/
intel-ethernet-controller-i225-series.html`
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_IGC_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_igc`` driver.
-
-- ``CONFIG_RTE_LIBRTE_IGC_DEBUG_*`` (default ``n``)
-
- Toggle display of generic debugging messages.
-
Driver compilation and testing
------------------------------
.. code-block:: console
- ./app/testpmd -l 4-8 -- -i
+ ./app/dpdk-testpmd -l 4-8 -- -i
...
testpmd> vlan set filter on 0
.. code-block:: console
- ./testpmd -l 4-8 -- i --rxq=4 --txq=4 --pkt-filter-mode=perfect --disable-rss
+ ./dpdk-testpmd -l 4-8 -- i --rxq=4 --txq=4 --pkt-filter-mode=perfect --disable-rss
Add a rule to direct packet whose ``ether-type=0x801`` to queue 1:
In a virtualized environment, the programmer can enable a maximum of *128 Virtual Functions (VF)*
globally per Intel® X710/XL710 Gigabit Ethernet Controller NIC device.
-The number of queue pairs of each VF can be configured by ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF`` in ``config`` file.
The Physical Function in host could be either configured by the Linux* i40e driver
(in the case of the Linux Kernel-based Virtual Machine [KVM]) or by DPDK PMD PF driver.
When using both DPDK PMD PF/VF drivers, the whole NIC will be taken over by DPDK based application.
.. code-block:: console
- make install T=x86_64-native-linux-gcc
- ./x86_64-native-linux-gcc/app/testpmd -l 0-3 -n 4 -- -i
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 -- -i
#. Finally, access the Guest OS using vncviewer with the localhost:5900 port and check the lspci command output in the Guest OS.
The virtual functions will be listed as available for use.
-#. Configure and install the DPDK with an x86_64-native-linux-gcc configuration on the Guest OS as normal,
- that is, there is no change to the normal installation procedure.
-
- .. code-block:: console
-
- make config T=x86_64-native-linux-gcc O=x86_64-native-linux-gcc
- cd x86_64-native-linux-gcc
- make
+#. Configure and install the DPDK on the Guest OS as normal, that is, there is no change to the normal installation procedure.
.. note::
b5:00.0 Ethernet controller: Device 1dd8:1002
b6:00.0 Ethernet controller: Device 1dd8:1002
-Pre-Installation Configuration
-------------------------------
-
-The following options can be modified in the ``config`` file.
-
-- ``CONFIG_RTE_LIBRTE_IONIC_PMD`` (default ``y``)
-
- Toggle compilation of ionic PMD.
Building DPDK
-------------
Pre-Installation Configuration
------------------------------
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-
-- ``CONFIG_RTE_LIBRTE_IPN3KE_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_ipn3ke`` driver.
Runtime Config Options
~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: console
- ./app/testpmd -l 0-15 -n 4 --vdev 'ifpga_rawdev_cfg0,ifpga=b3:00.0,port=0' --vdev 'ipn3ke_cfg0,afu=0|b3:00.0,i40e_pf={0000:b1:00.0|0000:b1:00.1|0000:b1:00.2|0000:b1:00.3|0000:b5:00.0|0000:b5:00.1|0000:b5:00.2|0000:b5:00.3}' -- -i --no-numa --port-topology=loop
+ ./<build_dir>/app/dpdk-testpmd -l 0-15 -n 4 --vdev 'ifpga_rawdev_cfg0,ifpga=b3:00.0,port=0' --vdev 'ipn3ke_cfg0,afu=0|b3:00.0,i40e_pf={0000:b1:00.0|0000:b1:00.1|0000:b1:00.2|0000:b1:00.3|0000:b5:00.0|0000:b5:00.1|0000:b5:00.2|0000:b5:00.3}' -- -i --no-numa --port-topology=loop
HQoS and flow acceleration
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: console
- ./app/testpmd -l 0-15 -n 4 --vdev 'ifpga_rawdev_cfg0,ifpga=b3:00.0,port=0' --vdev 'ipn3ke_cfg0,afu=0|b3:00.0,fpga_acc={tm|flow},i40e_pf={0000:b1:00.0|0000:b1:00.1|0000:b1:00.2|0000:b1:00.3|0000:b5:00.0|0000:b5:00.1|0000:b5:00.2|0000:b5:00.3}' -- -i --no-numa --forward-mode=macswap
+ ./<build_dir>/app/dpdk-testpmd -l 0-15 -n 4 --vdev 'ifpga_rawdev_cfg0,ifpga=b3:00.0,port=0' --vdev 'ipn3ke_cfg0,afu=0|b3:00.0,fpga_acc={tm|flow},i40e_pf={0000:b1:00.0|0000:b1:00.1|0000:b1:00.2|0000:b1:00.3|0000:b5:00.0|0000:b5:00.1|0000:b5:00.2|0000:b5:00.3}' -- -i --no-numa --forward-mode=macswap
Limitations or Known issues
---------------------------
.. code-block:: console
- insmod build/kmod/rte_kni.ko lo_mode=lo_mode_fifo_skb
+ insmod <build_dir>/kernel/linux/kni/rte_kni.ko lo_mode=lo_mode_fifo_skb
* Start testpmd with no physical device but two KNI virtual devices:
.. code-block:: console
- ./testpmd --vdev net_kni0 --vdev net_kni1 -- -i
+ ./dpdk-testpmd --vdev net_kni0 --vdev net_kni1 -- -i
.. code-block:: console
- LiquidIO II CN2360 210SVPT
-Pre-Installation Configuration
-------------------------------
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_LIO_PMD`` (default ``y``)
-
- Toggle compilation of LiquidIO PMD.
-
-- ``CONFIG_RTE_LIBRTE_LIO_DEBUG_RX`` (default ``n``)
-
- Toggle display of receive fast path run-time messages.
-
-- ``CONFIG_RTE_LIBRTE_LIO_DEBUG_TX`` (default ``n``)
-
- Toggle display of transmit fast path run-time messages.
-
-- ``CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX`` (default ``n``)
-
- Toggle display of mailbox messages.
-
-- ``CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS`` (default ``n``)
-
- Toggle display of register reads and writes.
-
-
SR-IOV: Prerequisites and Sample Application Notes
--------------------------------------------------
First create ``server`` interface::
- #./build/app/testpmd -l 0-1 --proc-type=primary --file-prefix=pmd1 --vdev=net_memif,role=server -- -i
+ #./<build_dir>/app/dpdk-testpmd -l 0-1 --proc-type=primary --file-prefix=pmd1 --vdev=net_memif,role=server -- -i
Now create ``client`` interface (server must be already running so the client will connect)::
- #./build/app/testpmd -l 2-3 --proc-type=primary --file-prefix=pmd2 --vdev=net_memif -- -i
+ #./<build_dir>/app/dpdk-testpmd -l 2-3 --proc-type=primary --file-prefix=pmd2 --vdev=net_memif -- -i
You can also enable ``zero-copy`` on ``client`` interface::
- #./build/app/testpmd -l 2-3 --proc-type=primary --file-prefix=pmd2 --vdev=net_memif,zero-copy=yes --single-file-segments -- -i
+ #./<build_dir>/app/dpdk-testpmd -l 2-3 --proc-type=primary --file-prefix=pmd2 --vdev=net_memif,zero-copy=yes --single-file-segments -- -i
Start forwarding packets::
Now create memif interface by running testpmd with these command line options::
- #./testpmd --vdev=net_memif,socket=/run/vpp/memif.sock -- -i
+ #./dpdk-testpmd --vdev=net_memif,socket=/run/vpp/memif.sock -- -i
Testpmd should now create memif client interface and try to connect to server.
In testpmd set forward option to icmpecho and start forwarding::
To set the loopback, just use the same socket and id with different roles::
- #./testpmd --vdev=net_memif0,role=server,id=0 --vdev=net_memif1,role=client,id=0 -- -i
+ #./dpdk-testpmd --vdev=net_memif0,role=server,id=0 --vdev=net_memif1,role=client,id=0 -- -i
Then start the communication::
There is also a `section dedicated to this poll mode driver
<http://www.mellanox.com/page/products_dyn?product_family=209&mtag=pmd_for_dpdk>`_.
-.. note::
-
- Due to external dependencies, this driver is disabled by default. It must
- be enabled manually by setting ``CONFIG_RTE_LIBRTE_MLX4_PMD=y`` and
- recompiling DPDK.
Implementation details
----------------------
Compilation options
~~~~~~~~~~~~~~~~~~~
-These options can be modified in the ``.config`` file.
-
-- ``CONFIG_RTE_LIBRTE_MLX4_PMD`` (default **n**)
-
- Toggle compilation of librte_pmd_mlx4 itself.
-
-- ``CONFIG_RTE_IBVERBS_LINK_DLOPEN`` (default **n**)
-
- Build PMD with additional code to make it loadable without hard
- dependencies on **libibverbs** nor **libmlx4**, which may not be installed
- on the target system.
-
- In this mode, their presence is still required for it to run properly,
- however their absence won't prevent a DPDK application from starting (with
- ``CONFIG_RTE_BUILD_SHARED_LIB`` disabled) and they won't show up as
- missing with ``ldd(1)``.
+The ibverbs libraries can be linked with this PMD in a number of ways,
+configured by the ``ibverbs_link`` build option:
- It works by moving these dependencies to a purpose-built rdma-core "glue"
- plug-in which must either be installed in a directory whose name is based
- on ``CONFIG_RTE_EAL_PMD_PATH`` suffixed with ``-glue`` if set, or in a
- standard location for the dynamic linker (e.g. ``/lib``) if left to the
- default empty string (``""``).
+- ``shared`` (default): the PMD depends on some .so files.
- This option has no performance impact.
+- ``dlopen``: Split the dependencies glue in a separate library
+ loaded when needed by dlopen.
+ It make dependencies on libibverbs and libmlx4 optional,
+ and has no performance impact.
-- ``CONFIG_RTE_IBVERBS_LINK_STATIC`` (default **n**)
-
- Embed static flavor of the dependencies **libibverbs** and **libmlx4**
+- ``static``: Embed static flavor of the dependencies libibverbs and libmlx4
in the PMD shared library or the executable static binary.
-- ``CONFIG_RTE_LIBRTE_MLX4_DEBUG`` (default **n**)
-
- Toggle debugging code and stricter compilation flags. Enabling this option
- adds additional run-time checks and debugging messages at the cost of
- lower performance.
-
-This option is available in meson:
-
-- ``ibverbs_link`` can be ``static``, ``shared``, or ``dlopen``.
Environment variables
~~~~~~~~~~~~~~~~~~~~~
A list of directories in which to search for the rdma-core "glue" plug-in,
separated by colons or semi-colons.
- Only matters when compiled with ``CONFIG_RTE_IBVERBS_LINK_DLOPEN``
- enabled and most useful when ``CONFIG_RTE_EAL_PMD_PATH`` is also set,
- since ``LD_LIBRARY_PATH`` has no effect in this case.
Run-time configuration
~~~~~~~~~~~~~~~~~~~~~~
.. _`RDMA core installation documentation`: https://raw.githubusercontent.com/linux-rdma/rdma-core/master/README.md
-If rdma-core libraries are built but not installed, DPDK makefile can link them,
-thanks to these environment variables:
-
- - ``EXTRA_CFLAGS=-I/path/to/rdma-core/build/include``
- - ``EXTRA_LDFLAGS=-L/path/to/rdma-core/build/lib``
- - ``PKG_CONFIG_PATH=/path/to/rdma-core/build/lib/pkgconfig``
-
.. _Mellanox_OFED_as_a_fallback:
Mellanox OFED as a fallback
There is also a `section dedicated to this poll mode driver
<http://www.mellanox.com/page/products_dyn?product_family=209&mtag=pmd_for_dpdk>`__.
-.. note::
-
- Due to external dependencies, this driver is disabled in default configuration
- of the "make" build. It can be enabled with ``CONFIG_RTE_LIBRTE_MLX5_PMD=y``
- or by using "meson" build system which will detect dependencies.
Design
------
Compilation options
~~~~~~~~~~~~~~~~~~~
-These options can be modified in the ``.config`` file.
-
-- ``CONFIG_RTE_LIBRTE_MLX5_PMD`` (default **n**)
-
- Toggle compilation of librte_pmd_mlx5 itself.
-
-- ``CONFIG_RTE_IBVERBS_LINK_DLOPEN`` (default **n**)
+The ibverbs libraries can be linked with this PMD in a number of ways,
+configured by the ``ibverbs_link`` build option:
- Build PMD with additional code to make it loadable without hard
- dependencies on **libibverbs** nor **libmlx5**, which may not be installed
- on the target system.
+- ``shared`` (default): the PMD depends on some .so files.
- In this mode, their presence is still required for it to run properly,
- however their absence won't prevent a DPDK application from starting (with
- ``CONFIG_RTE_BUILD_SHARED_LIB`` disabled) and they won't show up as
- missing with ``ldd(1)``.
+- ``dlopen``: Split the dependencies glue in a separate library
+ loaded when needed by dlopen.
+ It make dependencies on libibverbs and libmlx4 optional,
+ and has no performance impact.
- It works by moving these dependencies to a purpose-built rdma-core "glue"
- plug-in which must either be installed in a directory whose name is based
- on ``CONFIG_RTE_EAL_PMD_PATH`` suffixed with ``-glue`` if set, or in a
- standard location for the dynamic linker (e.g. ``/lib``) if left to the
- default empty string (``""``).
-
- This option has no performance impact.
-
-- ``CONFIG_RTE_IBVERBS_LINK_STATIC`` (default **n**)
-
- Embed static flavor of the dependencies **libibverbs** and **libmlx5**
+- ``static``: Embed static flavor of the dependencies libibverbs and libmlx4
in the PMD shared library or the executable static binary.
-- ``CONFIG_RTE_LIBRTE_MLX5_DEBUG`` (default **n**)
-
- Toggle debugging code and stricter compilation flags. Enabling this option
- adds additional run-time checks and debugging messages at the cost of
- lower performance.
-
-.. note::
-
- For BlueField, target should be set to ``arm64-bluefield-linux-gcc``. This
- will enable ``CONFIG_RTE_LIBRTE_MLX5_PMD`` and set ``RTE_CACHE_LINE_SIZE`` to
- 64. Default armv8a configuration of make build and meson build set it to 128
- then brings performance degradation.
-
-This option is available in meson:
-
-- ``ibverbs_link`` can be ``static``, ``shared``, or ``dlopen``.
-
Environment variables
~~~~~~~~~~~~~~~~~~~~~
A list of directories in which to search for the rdma-core "glue" plug-in,
separated by colons or semi-colons.
- Only matters when compiled with ``CONFIG_RTE_IBVERBS_LINK_DLOPEN``
- enabled and most useful when ``CONFIG_RTE_EAL_PMD_PATH`` is also set,
- since ``LD_LIBRARY_PATH`` has no effect in this case.
-
- ``MLX5_SHUT_UP_BF``
Configures HW Tx doorbell register as IO-mapped.
.. _`Linux installation documentation`: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/plain/Documentation/admin-guide/README.rst
.. _`RDMA Core installation documentation`: https://raw.githubusercontent.com/linux-rdma/rdma-core/master/README.md
-If rdma-core libraries are built but not installed, DPDK makefile can link them,
-thanks to these environment variables:
-
- - ``EXTRA_CFLAGS=-I/path/to/rdma-core/build/include``
- - ``EXTRA_LDFLAGS=-L/path/to/rdma-core/build/lib``
- - ``PKG_CONFIG_PATH=/path/to/rdma-core/build/lib/pkgconfig``
Mellanox OFED/EN
^^^^^^^^^^^^^^^^
* https://www.marvell.com/embedded-processors/armada-3700/
-.. Note::
-
- Due to external dependencies, this driver is disabled by default. It must
- be enabled manually by setting relevant configuration option manually.
- Please refer to `Config File Options`_ section for further details.
-
Features
--------
Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup
DPDK environment.
-Pre-Installation Configuration
-------------------------------
-
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-
-- ``CONFIG_RTE_LIBRTE_MVNETA_PMD`` (default ``n``)
-
- Toggle compilation of the librte_pmd_mvneta driver.
Runtime options
-~~~~~~~~~~~~~~~
+---------------
The following ``devargs`` options can be enabled at runtime. They must
be passed as part of EAL arguments.
.. code-block:: console
- ./testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 \
+ ./dpdk-testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 \
-c 3 -- -i --p 3 -a
MUSDK will be installed to `usr/local` under current directory.
For the detailed build instructions please consult ``doc/musdk_get_started.txt``.
-Before the DPDK build process the environmental variable ``LIBMUSDK_PATH`` with
-the path to the MUSDK installation directory needs to be exported.
+The path to the MUSDK installation directory needs to set in meson, shown in the
+following command:
.. code-block:: console
- export LIBMUSDK_PATH=<musdk>/usr/local
- export CROSS=aarch64-linux-gnu-
- make config T=arm64-armv8a-linux-gcc
- sed -ri 's,(MVNETA_PMD=)n,\1y,' build/.config
- make
+ meson -Dlib_musdk_dir=/path/to/musdk build ninja -C build
+
Usage Example
-------------
.. code-block:: console
- ./testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- \
+ ./dpdk-testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- \
-i --p 3 -a --txd 256 --rxd 128 --rxq=1 --txq=1 --nb-cores=1
.. code-block:: console
- ./l2fwd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- -T 1 -p 3
+ ./dpdk-l2fwd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- -T 1 -p 3
* https://www.marvell.com/embedded-processors/armada-70xx/
* https://www.marvell.com/embedded-processors/armada-80xx/
-.. Note::
-
- Due to external dependencies, this driver is disabled by default. It must
- be enabled manually by setting relevant configuration option manually.
- Please refer to `Config File Options`_ section for further details.
-
Features
--------
DPDK environment.
-Config File Options
--------------------
-
-The following options can be modified in the ``config`` file.
-
-- ``CONFIG_RTE_LIBRTE_MVPP2_PMD`` (default ``n``)
-
- Toggle compilation of the librte mvpp2 driver.
-
- .. Note::
-
- When MVPP2 PMD is enabled ``CONFIG_RTE_LIBRTE_MVNETA_PMD`` must be disabled
-
-
Building DPDK
-------------
MUSDK will be installed to `usr/local` under current directory.
For the detailed build instructions please consult ``doc/musdk_get_started.txt``.
-Before the DPDK build process the environmental variable ``LIBMUSDK_PATH`` with
-the path to the MUSDK installation directory needs to be exported.
+The path to the MUSDK installation directory needs to set in meson, shown in the
+command below.
For additional instructions regarding DPDK cross compilation please refer to :doc:`Cross compile DPDK for ARM64 <../linux_gsg/cross_build_dpdk_for_arm64>`.
.. code-block:: console
- export LIBMUSDK_PATH=<musdk>/usr/local
- export CROSS=<toolchain>/bin/aarch64-linux-gnu-
- export RTE_KERNELDIR=<kernel-dir>
- export RTE_TARGET=arm64-armv8a-linux-gcc
+ meson -Dlib_musdk_dir=/path/to/musdk build ninja -C build
- make config T=arm64-armv8a-linux-gcc
- sed -i "s/MVNETA_PMD=y/MVNETA_PMD=n/" build/.config
- sed -i "s/MVPP2_PMD=n/MVPP2_PMD=y/" build/.config
- make
Usage Example
-------------
.. code-block:: console
- ./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 7 -- \
+ ./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 7 -- \
--burst=128 --txd=2048 --rxd=1024 --rxq=2 --txq=2 --nb-cores=2 \
-i -a --rss-udp
.. code-block:: console
- ./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2,cfg=/home/user/mrvl.conf \
+ ./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2,cfg=/home/user/mrvl.conf \
-c 7 -- -i -a --disable-hw-vlan-strip --rxq=3 --txq=3
.. _flowapi:
.. code-block:: console
- ./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 3 -- -i --p 3 -a --disable-hw-vlan-strip
+ ./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 3 -- -i --p 3 -a --disable-hw-vlan-strip
Example #1
^^^^^^^^^^
.. code-block:: console
- ./testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 6 -- -i -p 3 -a --txd 1024 --rxd 1024
+ ./dpdk-testpmd --vdev=eth_mvpp2,iface=eth0,iface=eth2 -c 6 -- -i -p 3 -a --txd 1024 --rxd 1024
2. Create meter profile:
.. code-block:: console
- ./testpmd --vdev=net_mrvl,iface=eth0,iface=eth2,cfg=./qos_config -c 7 -- \
+ ./dpdk-testpmd --vdev=net_mrvl,iface=eth0,iface=eth2,cfg=./qos_config -c 7 -- \
-i -p 3 --disable-hw-vlan-strip --rxq 3 --txq 3 --txd 1024 --rxd 1024
2. Stop all ports:
(`Netcope Development Kit <http://www.netcope.com/en/products/fpga-development-kit>`_)
can be found on the `Netcope Technologies website <http://www.netcope.com/>`_.
-.. note::
-
- This driver has external dependencies.
- Therefore it is disabled in default configuration files.
- It can be enabled by setting ``CONFIG_RTE_LIBRTE_NFB_PMD=y``
- and recompiling.
-
.. note::
Currently the driver is supported only on x86_64 architectures.
Configuration
-------------
-These configuration options can be modified before compilation in the
-``.config`` file:
-
-* ``CONFIG_RTE_LIBRTE_NFB_PMD`` default value: **n**
-
- Value **y** enables compilation of nfb PMD.
-
-
Timestamps
The PMD supports hardware timestamps of frame receipt on physical network interface. In order to use
.. code-block:: console
- $RTE_TARGET/app/testpmd -w b3:00.0,timestamp=1 <other EAL params> -- <testpmd params>
+ ./<build_dir>/app/dpdk-testpmd -w b3:00.0,timestamp=1 <other EAL params> -- <testpmd params>
When the timestamps are enabled with the *devarg*, a timestamp validity flag is set in the MBUFs
containing received frames and timestamp is inserted into the `rte_mbuf` struct.
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 2 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 2 \
-- --port-topology=chained --rxq=2 --txq=2 --nb-cores=2 -i -a
Example output:
Of course, a DPDK app will require such a BSP installed for using the
NFP PMD, along with a specific NFP firmware application.
-Default PMD configuration is at the **common_linux configuration** file:
-
-- **CONFIG_RTE_LIBRTE_NFP_PMD=y**
-
Once the DPDK is built all the DPDK apps and examples include support for
the NFP PMD.
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev net_null0 --vdev net_null1 -- -i
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 --vdev net_null0 --vdev net_null1 -- -i
Runtime Config Options
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev "net_null0,copy=1" -- -i
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 --vdev "net_null0,copy=1" -- -i
- ``size`` [optional, default=64 bytes]
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev "net_null0,size=256" -- -i
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 --vdev "net_null0,size=256" -- -i
- ``no-rx`` [optional, default disabled]
Pre-Installation Configuration
------------------------------
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_OCTEONTX_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_octeontx`` driver.
Driver compilation and testing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
for details.
-To compile the OCTEON TX PMD for Linux arm64 gcc target, run the
-following ``make`` command:
-
-.. code-block:: console
-
- cd <DPDK-source-directory>
- make config T=arm64-thunderx-linux-gcc install
-
#. Running testpmd:
Follow instructions available in the document
.. code-block:: console
- ./arm64-thunderx-linux-gcc/app/testpmd -c 700 \
+ ./<build_dir>/app/dpdk-testpmd -c 700 \
--base-virtaddr=0x100000000000 \
--mbuf-pool-ops-name="octeontx_fpavf" \
--vdev='event_octeontx' \
See :doc:`../platform/octeontx2` for setup information.
-Compile time Config Options
----------------------------
-
-The following options may be modified in the ``config`` file.
-
-- ``CONFIG_RTE_LIBRTE_OCTEONTX2_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_octeontx2`` driver.
Driver compilation and testing
------------------------------
Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
for details.
-To compile the OCTEON TX2 PMD for Linux arm64 gcc,
-use arm64-octeontx2-linux-gcc as target.
-
#. Running testpmd:
Follow instructions available in the document
.. code-block:: console
- ./build/app/testpmd -c 0x300 -w 0002:02:00.0 -- --portmask=0x1 --nb-cores=1 --port-topology=loop --rxq=1 --txq=1
+ ./<build_dir>/app/dpdk-testpmd -c 0x300 -w 0002:02:00.0 -- --portmask=0x1 --nb-cores=1 --port-topology=loop --rxq=1 --txq=1
EAL: Detected 24 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
.. note::
- The libpcap -based PMD is disabled by default in the build configuration files,
- owing to an external dependency on the libpcap development files which must be installed on the board.
- Once the libpcap development files are installed,
- the library can be enabled by setting CONFIG_RTE_LIBRTE_PMD_PCAP=y and recompiling the DPDK.
+ The libpcap -based PMD has an external dependency on the libpcap development files which must
+ be installed on the board.
Using the Drivers from the EAL Command Line
-------------------------------------------
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,stream_opt0=..,stream_opt1=..' \
--vdev='net_pcap1,stream_opt0=..'
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,rx_pcap=file_rx.pcap,tx_pcap=file_tx.pcap' \
-- --port-topology=chained
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,rx_iface=eth0,tx_pcap=file_tx.pcap' \
-- --port-topology=chained
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,rx_pcap=file_rx.pcap,tx_iface=eth1' \
-- --port-topology=chained
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,iface=eth0' --vdev='net_pcap1,iface=eth1'
Enable 2 tx queues on a network interface:
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,rx_iface=eth1,tx_iface=eth1,tx_iface=eth1' \
-- --txq 2
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,rx_iface_in=eth1,tx_iface=eth1'
Using libpcap-based PMD with the testpmd Application
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 \
--vdev 'net_pcap0,rx_pcap=file_rx.pcap,tx_pcap=file_tx.pcap' \
-- --port-topology=chained --no-flush-rx
.. code-block:: console
- ./testpmd -l 1-3 -n 4 --vdev=net_ring0 --vdev=net_ring1 -- -i
+ ./dpdk-testpmd -l 1-3 -n 4 --vdev=net_ring0 --vdev=net_ring1 -- -i
EAL: Detected lcore 1 as core 1 on socket 0
...
- For better performance, it is recommended to use 4K or higher RX/TX rings.
-Config File Options
-~~~~~~~~~~~~~~~~~~~
+Config Options
+~~~~~~~~~~~~~~
-The following options can be modified in the ``.config`` file. Please note that
-enabling debugging options may affect system performance.
+The following option can be modified in the ``config/rte_config.h`` file.
-- ``CONFIG_RTE_LIBRTE_QEDE_PMD`` (default **y**)
-
- Toggle compilation of QEDE PMD driver.
-
-- ``CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX`` (default **n**)
-
- Toggle display of transmit fast path run-time messages.
-
-- ``CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX`` (default **n**)
-
- Toggle display of receive fast path run-time messages.
-
-- ``CONFIG_RTE_LIBRTE_QEDE_FW`` (default **""**)
+- ``RTE_LIBRTE_QEDE_FW`` (default **""**)
Gives absolute path of firmware file.
``Eg: "/lib/firmware/qed/qed_init_values-8.40.33.0.bin"``
CAUTION this option is more for custom firmware, it is not
recommended for use under normal condition.
+The following options can be enabled with Meson flags.
+
+- ``RTE_LIBRTE_QEDE_DEBUG_TX`` (default **disabled**)
+
+ Toggle display of transmit fast path run-time messages.
+
+- ``RTE_LIBRTE_QEDE_DEBUG_RX`` (default **disabled**)
+
+ Toggle display of receive fast path run-time messages.
+
Config notes
~~~~~~~~~~~~
section of :ref:`the DPDK documentation <linux_gsg>` or refer to *DPDK
Release Notes*.
-Build options
--------------
-
-The default PMD configuration available in the common_linux configuration file:
-
-CONFIG_RTE_LIBRTE_PMD_SOFTNIC=y
-
-Once the DPDK is built, all the DPDK applications include support for the
-Soft NIC PMD.
Soft NIC PMD arguments
----------------------
.. code-block:: console
- ./testpmd -c 0x7 -s 0x4 --vdev 'net_softnic0,firmware=<script path>/firmware.cli,cpu_id=0,conn_port=8086' -- -i
+ ./dpdk-testpmd -c 0x7 -s 0x4 --vdev 'net_softnic0,firmware=<script path>/firmware.cli,cpu_id=0,conn_port=8086' -- -i
--portmask=0x2
.. code-block:: console
.. code-block:: console
- ./x86_64-native-linux-gcc/app/testpmd -c 0x7 -s 0x4 -n 4 \
+ ./<build_dir>/app/dpdk-testpmd -c 0x7 -s 0x4 -n 4 \
--vdev 'net_softnic0, \
firmware=./drivers/net/softnic/ \
firmware.cli, \
(`Netcope Development Kit <http://www.netcope.com/en/products/fpga-development-kit>`_)
can be found on the `Netcope Technologies website <http://www.netcope.com/>`_.
-.. note::
-
- This driver has external dependencies.
- Therefore it is disabled in default configuration files.
- It can be enabled by setting ``CONFIG_RTE_LIBRTE_PMD_SZEDATA2=y``
- and recompiling.
-
.. note::
Currently the driver is supported only on x86_64 architectures.
* for DPDK up to 18.02 (including): **3.0.5**
-Configuration
--------------
-
-These configuration options can be modified before compilation in the
-``.config`` file:
-
-* ``CONFIG_RTE_LIBRTE_PMD_SZEDATA2`` default value: **n**
-
- Value **y** enables compilation of szedata2 PMD.
Using the SZEDATA2 PMD
----------------------
.. code-block:: console
- $RTE_TARGET/app/testpmd -l 0-3 -n 2 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 2 \
-- --port-topology=chained --rxq=2 --txq=2 --nb-cores=2 -i -a
Example output:
-------------
- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
-Pre-Installation Configuration
-------------------------------
-
-Config File Options
-~~~~~~~~~~~~~~~~~~~
-
-The following options can be modified in the ``config`` file.
-Please note that enabling debugging options may affect system performance.
-
-- ``CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD`` (default ``y``)
-
- Toggle compilation of the ``librte_pmd_thunderx_nicvf`` driver.
-
-- ``CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX`` (default ``n``)
-
- Toggle asserts of receive fast path.
-
-- ``CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX`` (default ``n``)
-
- Toggle asserts of transmit fast path.
Driver compilation and testing
------------------------------
Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
for details.
-To compile the ThunderX NICVF PMD for Linux arm64 gcc,
-use arm64-thunderx-linux-gcc as target.
+Use config/arm/arm64-thunderx-linux-gcc as a meson cross-file when cross-compiling.
Linux
-----
.. code-block:: console
- ./arm64-thunderx-linux-gcc/app/testpmd -l 0-3 -n 4 -w 0002:01:00.2 \
+ ./<build_dir>/app/dpdk-testpmd -l 0-3 -n 4 -w 0002:01:00.2 \
-- -i --no-flush-rx \
--port-topology=loop
either when hot-plug will be fully supported in EAL and bus drivers or when
a new NetVSC driver will be integrated.
-Build options
--------------
-
-- ``CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD`` (default ``y``)
-
- Toggle compilation of this driver.
Run-time parameters
-------------------
.. code-block:: console
- ./testpmd -l 0-3 -n 4 --vdev 'net_vhost0,iface=/tmp/sock0,queues=1' -- -i
+ ./dpdk-testpmd -l 0-3 -n 4 --vdev 'net_vhost0,iface=/tmp/sock0,queues=1' -- -i
Other basic DPDK preparations like hugepage enabling here.
Please refer to the *DPDK Getting Started Guide* for detailed instructions.
.. code-block:: console
- examples/kni/build/app/kni -l 0-3 -n 4 -- -p 0x1 -P --config="(0,1,3)"
+ <build_dir>/examples/dpdk-kni -l 0-3 -n 4 -- -p 0x1 -P --config="(0,1,3)"
This command generates one network device vEth0 for physical port.
If specify more physical ports, the generated network device will be vEth1, vEth2, and so on.
.. code-block:: console
- $ l3fwd-power -l 0-1 -- -p 1 -P --config="(0,0,1)" \
+ $ dpdk-l3fwd-power -l 0-1 -- -p 1 -P --config="(0,0,1)" \
--no-numa --parse-ptype