LS1088ARDB/LS1088ARDB-PB - How to create a DPAA2 network interface (DPNI) in Linux

Document created by Swati Gupta Employee on Oct 29, 2018Last modified by Swati Gupta Employee on Nov 29, 2018
Version 19Show Document
  • View in full screen mode

In Linux, only one MAC is created by default as a standard kernel Ethernet interface. This interface is named eth0 by default (or eth1 if PCI Express network interface card is discovered first). The following figure shows the Ethernet port (ETH8) that eth0 (or eth1corresponds to, on LS1088ARDB. 



The following figure shows the Ethernet port (DPMAC5) that eth0 (or eth1corresponds to, on LS1088ARDB-PB.


LS1088ARDB-PB ethernet interface

Only one interface is created by default because in DPAA2, Ethernet ports need not be associated with Linux kernel Ethernet driver instances. For example, Ethernet ports can be assigned as ports on switches or can be allocated to user space. Furthermore, these associations can be made dynamically. 

From Linux, you can list the available interfaces using the ifconfig -a command or the ip link command.


For example:

$ ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000

    link/ether 68:05:ca:36:96:6a brd ff:ff:ff:ff:ff:ff

3: sit0@NONE: <NOARP> mtu 1480 qdisc noop qlen 1000

    link/sit brd

4: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000

    link/ether 6e:01:3f:a2:04:b6 brd ff:ff:ff:ff:ff:ff


In this example, Linux eth1 corresponds to Ethernet port DPMAC5 (ETH8) on LS1088ARDB.

Create network interfaces

  1. Check the network interfaces that are currently available using Layerscape script ls-listni.

    For example:

    $ ls-listni

    dprc.1/dpni.0 (interface: eth1, end point: dpmac.5)

    The default interface DPNI.0 is configured with a minimal set of resources.

    For example, it can only receive traffic on GPP0 and its intended uses are network boot and low-bandwidth traffic.

    For fully-featured DPNI objects, dynamic configuration (explained in upcoming steps) is recommended.

  2. Optional - Unbind and destroy existing interface. 

    $ echo dpni.0 > /sys/bus/fsl-mc/drivers/fsl_dpaa2_eth/unbind

    $ restool dpni destroy dpni.0

    dpni.0 is destroyed

    The restool utility is a Linux user space command that allows DPAA2 objects to be managed (created, destroyed, and queried for status).
  3. Add new network interfaces using Layerscape script ls-addni.

    For example:

    $ ls-addni dpmac.3

    Created interface: eth1 (object:dpni.0, endpoint: dpmac.3)

    $ ls-addni dpmac.4

    Created interface: eth2 (object:dpni.1, endpoint: dpmac.4)


    Check that new interfaces are created using the ifconfig -a or ip link command.


  4. Enable the newly created interfaces using the ifconfig command

    For example:

    ifconfig eth1 up

    ifconfig eth2 up

Optional - Save current configuration to a Data Path Layout (DPL) file

DPL file is used to create DPAA2 entities prior to Linux boot.

To save the current configuration to a DPL file, follow the steps below. After creating the custom DPL, you can program it to the boot source (for example, QSPI NOR flash or SD card) so that the configuration is present automatically next time Linux boots. In this case, the existing DPL is replaced with the updated DPL file.

  1. Save this custom configuration to a DPL file (.dts format) on the board.

    $ restool dprc generate-dpl dprc.1 > <my_dpl>.dts
  2. Copy the DPL file to the Linux host machine. You can SCP the file from the board to the Linux host machine.

  3. Run following command to convert it to the .dtb format.

    $ dtc -I dts -O dtb <my_dpl>.dts -o <my_dpl>.dtb


For steps to program the new DPL file in the QSPI NOR flash or on the SD card, see LS1088ARDB - How to update MC firmware, DPC, and DPL images in QSPI NOR flash or LS1088ARDB/LS1088ARDB-PB - How to update MC firmware, DPC, and DPL images on SD card.