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.0
LSDK-21.08 (legacy): DPDK 20.11.2 (NXP fork): GitHub - nxp-qoriq/dpdk tag
LSDK-21.08
Building from Source
Native Build on LX2160 (Ubuntu)
Install Dependencies
apt-get install build-essential git meson pciutils
Download Sources
git clone https://github.com/nxp-qoriq/dpdk cd dpdk # pick desired tag here from list above git reset --hard lf-5.15.71-2.2.0 cd ..
Compile
To configure and compile dpdk using an out-of-tree build directory dpdk-build
:
meson setup --reconfigure -Dexamples=all --buildtype release --strip dpdk-build dpdk meson compile -C dpdk-build
Install
DPDK may be executed from inside the build-directory, or installed system-wide:
meson install -C dpdk-build
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
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.
LX2160A Honeycomb & Clearfog-CX
On LX2160A Honeycomb & Clearfog-CX after boot only the 1Gbps RJ45 port has a driver attached that must be unbound if this port should be used with DPDK:
Port Names | ||||
---|---|---|---|---|
dpmac.17 (RJ45) | ||||
TBD.
LX2162A Clearfog
On LX2162A Clearfog all interfaces have a driver attached that must be unbound for each port that should be used with DPDK:
Port Names | ||||||
---|---|---|---|---|---|---|
dpmac.5 (SFP+) | dpmac.3 (SFP+) | dpmac.16 (RJ45) | dpmac.15 (RJ45) | dpmac.13 (RJ45) | dpmac.14 (RJ45) | |
dpmac.6 (SFP+) | dpmac.4 (SFP+) | dpmac.12 (RJ45) | dpmac.11 (RJ45) | dpmac.17 (RJ45) | dpmac.18 (RJ45) |
TBD.
Bind to DPDK
After selecting the list of interfaces that DPDK should use, they can be bound using the nxp/dpaa2/dynamic_dpl.sh
script:
# bind Honeycomb / Clearfog-CX SFP+ ports bash dynamic_dpl.sh dpmac.7 dpmac.8 dpmac.9 dpmac.10 export DPRC=dprc.2
testpmd
TBD.