17. ENETC Poll Mode Driver
The ENETC NIC PMD (librte_net_enetc) provides poll mode driver support for the inbuilt NIC found in the NXP LS1028 SoC.
More information can be found at NXP Official Website.
17.1. ENETC
This section provides an overview of the NXP ENETC and how it is integrated into the DPDK.
Contents summary
ENETC overview
ENETC features
PCI bus driver
NIC driver
Supported ENETC SoCs
Prerequisites
Driver compilation and testing
17.1.1. ENETC Overview
ENETC is a PCI Integrated End Point(IEP). IEP implements peripheral devices in an SoC such that software sees them as PCIe device. ENETC is an evolution of BDR(Buffer Descriptor Ring) based networking IPs.
This infrastructure simplifies adding support for IEP and facilitates in following:
Device discovery and location
Resource requirement discovery and allocation (e.g. interrupt assignment, device register address)
Event reporting
17.1.2. ENETC Features
Link Status
Packet type information
Basic stats
Promiscuous
Multicast
Jumbo packets
Queue Start/Stop
Deferred Queue Start
CRC offload
17.1.3. NIC Driver (PMD)
ENETC PMD is traditional DPDK PMD which provides necessary interface between RTE framework and ENETC internal drivers.
Driver registers the device vendor table in PCI subsystem.
RTE framework scans the PCI bus for connected devices.
This scanning will invoke the probe function of ENETC driver.
The probe function will set the basic device registers and also setups BD rings.
On packet Rx the respective BD Ring status bit is set which is then used for packet processing.
Then Tx is done first followed by Rx.
17.1.4. Supported ENETC SoCs
LS1028
17.1.5. Prerequisites
There are three main pre-requisites for executing ENETC PMD on a ENETC compatible board:
ARM 64 Tool Chain
For example, the *aarch64* Linaro Toolchain.
Linux Kernel
It can be obtained from NXP’s Github hosting.
Rootfile system
Any aarch64 supporting filesystem can be used. For example, Ubuntu 16.04 LTS (Xenial) or 18.04 (Bionic) userland which can be obtained from here.
The following dependencies are not part of DPDK and must be installed separately:
NXP Linux LSDK
NXP Layerscape software development kit (LSDK) includes support for family of QorIQ® ARM-Architecture-based system on chip (SoC) processors and corresponding boards.
It includes the Linux board support packages (BSPs) for NXP SoCs, a fully operational tool chain, kernel and board specific modules.
LSDK and related information can be obtained from: LSDK
17.1.6. Driver compilation and testing
Follow instructions available in the document compiling and testing a PMD for a NIC to launch testpmd