Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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)

...

Alternatively DPDK may be built as part of Yocto: GitHub - SolidRun/meta-solidrun-arm-lx2xxx - Yocto BSP

Run Examples

Native Interface Preparation

...

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.

Unbind Linux Drivers

Network interface drivers must first be unbound from the Linux kernel before they are usable with DPDK.

:

LX2160A Honeycomb & Clearfog-CX

...

Port Names

TBD.

TBD.

dpmac.17 (RJ45)

...

TBD.

TBD.

...

TBD.

...

LX2162A Clearfog

...

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)

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:

Code Block
languagebash
for i in $(seq 0 1 19); do
  restool dpni info dpni.$i | grep endpoint: | xargs echo dpni.$i:
done

Example output on LX2162A Clearfog:

Code Block
dpni.0: endpoint: dpmac.18, link is down
dpni.1: endpoint: dpmac.17, link is down
dpni.2: endpoint: dpmac.16, link is up
dpni.3: endpoint: dpmac.15, link is down
dpni.4: endpoint: dpmac.14, link is down
dpni.5: endpoint: dpmac.13, link is down
dpni.6: endpoint: dpmac.12, link is down
dpni.7: endpoint: dpmac.11, link is down
dpni.8: endpoint: dpmac.6, link is down
dpni.9: endpoint: dpmac.5, link is down
dpni.10: endpoint: dpmac.4, link is down
dpni.11: endpoint: dpmac.3, link is down
dpni.12:
dpni.13:
dpni.14:
dpni.15:
dpni.16:
dpni.17:
dpni.18:
dpni.19:

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):

Code Block
TBD.echo dpni.Y > /sys/bus/fsl-mc/drivers/fsl_dpaa2_eth/unbind
restool dpni destroy dpni.Y

Bind to DPDK

After selecting choosing the list of interfaces that DPDK should use - after unbinding Linux drivers - and after destroying any attached dpni objects, they can be bound prepared for DPDK using the nxp/dpaa2/dynamic_dpl.sh script:

Code Block
# bind HoneycombLX2162 / Clearfog-CX SFP+ ports bashon named dprc object
export DPRC=dprc.2
export DPDMAI_COUNT=60 # max. 60 on LX2162A
dynamic_dpl.sh dpmac.5 dpmac.7 dpmac.8 dpmac.9 dpmac.10
export DPRC=dprc.2

testpmd

...

3 dpmac.6 dpmac.4

Example output:

Code Block
parent - dprc.1
Creating Non nested DPRC
NEW DPRCs
dprc.1
  dprc.2
Using board type as 2160
Using High Performance Buffers

##################### Container  dprc.2  is created ####################

Container dprc.2 have following resources :=>

 * 3 DPMCP
 * 16 DPBP
 * 8 DPCON
 * 16 DPSECI
 * 4 DPNI
 * 34 DPIO
 * 8 DPCI
 * 60 DPDMAI
 * 0 DPRTC


######################### Configured Interfaces #########################

Interface Name        Endpoint              Mac Address              
==============        ========              ==================       
dpni.8                dpmac.5               -Dynamic-                
dpni.9                dpmac.3               -Dynamic-                
dpni.10               dpmac.6               -Dynamic-                
dpni.11               dpmac.4               -Dynamic-

testpmd

Code Block
# enable 2G pages
dpdk-hugepages.py --setup 2G

# interactive testpmd session
dpdk-testpmd -- -i