DPDK on LX2160A
DPDK on LX2160A
NXP LX216X SoC and SolidRun products based on it support DPDK for all native network interfaces, as well as certain PCI cards.
There are several options for versions, including NXP forks and upstream. SolidRun supports the NXP fork matching the respective NXP BSP release:
LS-5.15.71-2.2.0: DPDK 21.11.2 (NXP fork): GitHub - nxp-qoriq/dpdk tag
lf-5.15.71-2.2.0LSDK-21.08 (legacy): DPDK 20.11.2 (NXP fork): GitHub - nxp-qoriq/dpdk tag
LSDK-21.08
Revision and Notes
Date
Owner
Revision
Notes
02 Jul 2025
0
Draft
22 Oct 2025
1
add dpdk-dumpcap example
Table of Contents
- Revision and Notes - Prebuilt Binaries - Building from Source - Native Build on LX2160 (Ubuntu) - Install Dependencies - Download Sources - Compile - Install - Cross Build on PC - Run Examples - Port Mapping - LX2160A Honeycomb & Clearfog-CX - LX2162A Clearfog - Native Interface Preparation - Unbind Linux Drivers - Map dpni objects to dpmac objects - Unbind Linux Driver from, and destroy a dpni object - Bind to DPDK - PCI Network Interfaces - testpmd - dumpcap - Known Issues - Secondary dpdk process fails opening ethernet ports
Prebuilt Binaries
The SolidRun LX2160A Reference BSP version ls-5.15.7102.2.0 dated 03/07/2025 or later compiles a binary distribution of DPDK that can be execute testpmd. This is for validation purposes only, in deployment customers are expected to build their own. Binaries are available here.
Building from Source
Native Build on LX2160 (Ubuntu)
Install Dependencies
Download Sources
Compile
To configure and compile dpdk using an out-of-tree build directory dpdk-build:
Install
DPDK may be executed from inside the build-directory, or installed system-wide:
Cross Build on PC
The SolidRun LX2160A Reference BSP performs cross-compilation of DPDK as part of a full build - for details please refer to it’s build-script: GitHub - SolidRun/lx2160a_build - runme.sh
Alternatively DPDK may be built as part of Yocto: GitHub - SolidRun/meta-solidrun-arm-lx2xxx - Yocto BSP
Run Examples
Port Mapping
LX216X SoC native ports use nxp internal names dpmac.X where X is in [1-20]. These names are relevant when preparing interfaces for use with DPDK:
LX2160A Honeycomb & Clearfog-CX
Port Names
dpmac.9 (SFP+)
dpmac.7 (SFP+)
dpmac.17 (RJ45)
TBD.
dpmac.10 (SFP+)
dpmac.8 (SFP+)
LX2162A Clearfog
Port Names
dpmac.5 (SFP28)
dpmac.3 (SFP+)
dpmac.16 (RJ45)
dpmac.15 (RJ45)
dpmac.13 (RJ45)
dpmac.14 (RJ45)
dpmac.6 (SFP28)
dpmac.4 (SFP+)
dpmac.12 (RJ45)
dpmac.11 (RJ45)
dpmac.17 (RJ45)
dpmac.18 (RJ45)
Native Interface Preparation
The LX216XA SoCs are using specially managed network interfaces that must be prepared for use with DPDK.
Unbind Linux Drivers
Network interface drivers must first be unbound from the Linux kernel before they are usable with DPDK. Consider from the tables above which interfaces should be used with DPDK, then unbind only selected interfaces according to the instructions below:
Map dpni objects to dpmac objects
For unbinding linux drivers the dpni object assigned to a specific dpmac port is required. The actual mapping is configuration specific and subject to invocations of ls-addni command, the DPL (part of bootloader image), and the dpdp dynamic_dpl.sh script. With same configuration the mapping can be considered stable across reboots.
The command below retrieves the dpmac objects attached to up to 20 dpni objects that may be present at runtime:
Example output on LX2162A Clearfog:
Unbind Linux Driver from, and destroy a dpni object
For each dpni object representing a dpmac instance that shall be used with DPDK, execute the commands below (substitung Y for the particular dpni object number):
Bind to DPDK
After choosing the list of interfaces that DPDK should use - after unbinding Linux drivers - and after destroying any attached dpni objects, they can be prepared for DPDK using the nxp/dpaa2/dynamic_dpl.sh script:
Note: dynamic_dpl.sh is in the path on lx2160a_build, yocto requires calling bash /usr/share/dpdk/dpaa2/dynamic_dpl.sh.
Example output:
PCI Network Interfaces
This was tested specifically with an Intel X710 card - steps may need adaptation for other cards.
For testpmd need to specifically pass each pci device - e.g.:
testpmd
Example Output:
dumpcap
dumpcap utility runs as a secondary process to a dpdk application.
First execute testpmd (see complete instructions above), and instruct it to start tx/rx queues:
Packet capture can now be started from a second terminal on one of the available ports:
Known Issues
Secondary dpdk process fails opening ethernet ports
A secondary dpdk process can fail to initialise while a primary application (e.g. testpmd) is already active, e.g.:
This is caused by a bug in dpaa2 driver that was resolved in 2024: https://mails.dpdk.org/archives/dev/2024-September/301170.html
SolidRun BSP has this patch backported on dpdk v21.11 since 22/10.2025. NXP DPDK v22.11 also has resolved this issue.
Last updated