xref: /dpdk/doc/guides/nics/enetc.rst (revision 68a03efeed657e6e05f281479b33b51102797e15)
1.. SPDX-License-Identifier: BSD-3-Clause
2   Copyright 2018 NXP
3
4ENETC Poll Mode Driver
5======================
6
7The ENETC NIC PMD (**librte_net_enetc**) provides poll mode driver
8support for the inbuilt NIC found in the **NXP LS1028** SoC.
9
10More information can be found at `NXP Official Website
11<https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/qoriq-layerscape-arm-processors/qoriq-layerscape-1028a-industrial-applications-processor:LS1028A>`_.
12
13ENETC
14-----
15
16This section provides an overview of the NXP ENETC
17and how it is integrated into the DPDK.
18
19Contents summary
20
21- ENETC overview
22- ENETC features
23- PCI bus driver
24- NIC driver
25- Supported ENETC SoCs
26- Prerequisites
27- Driver compilation and testing
28
29ENETC Overview
30~~~~~~~~~~~~~~
31
32ENETC is a PCI Integrated End Point(IEP). IEP implements
33peripheral devices in an SoC such that software sees them as PCIe device.
34ENETC is an evolution of BDR(Buffer Descriptor Ring) based networking
35IPs.
36
37This infrastructure simplifies adding support for IEP and facilitates in following:
38
39- Device discovery and location
40- Resource requirement discovery and allocation (e.g. interrupt assignment,
41  device register address)
42- Event reporting
43
44ENETC Features
45~~~~~~~~~~~~~~
46
47- Link Status
48- Packet type information
49- Basic stats
50- Promiscuous
51- Multicast
52- Jumbo packets
53- Queue Start/Stop
54- Deferred Queue Start
55- CRC offload
56
57NIC Driver (PMD)
58~~~~~~~~~~~~~~~~
59
60ENETC PMD is traditional DPDK PMD which provides necessary interface between
61RTE framework and ENETC internal drivers.
62
63- Driver registers the device vendor table in PCI subsystem.
64- RTE framework scans the PCI bus for connected devices.
65- This scanning will invoke the probe function of ENETC driver.
66- The probe function will set the basic device registers and also setups BD rings.
67- On packet Rx the respective BD Ring status bit is set which is then used for
68  packet processing.
69- Then Tx is done first followed by Rx.
70
71Supported ENETC SoCs
72~~~~~~~~~~~~~~~~~~~~
73
74- LS1028
75
76Prerequisites
77~~~~~~~~~~~~~
78
79There are three main pre-requisites for executing ENETC PMD on a ENETC
80compatible board:
81
821. **ARM 64 Tool Chain**
83
84   For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz>`_.
85
862. **Linux Kernel**
87
88   It can be obtained from `NXP's Github hosting <https://source.codeaurora.org/external/qoriq/qoriq-components/linux>`_.
89
903. **Rootfile system**
91
92   Any *aarch64* supporting filesystem can be used. For example,
93   Ubuntu 16.04 LTS (Xenial) or 18.04 (Bionic) userland which can be obtained
94   from `here <http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04.1-base-arm64.tar.gz>`_.
95
96The following dependencies are not part of DPDK and must be installed
97separately:
98
99- **NXP Linux LSDK**
100
101  NXP Layerscape software development kit (LSDK) includes support for family
102  of QorIQ® ARM-Architecture-based system on chip (SoC) processors
103  and corresponding boards.
104
105  It includes the Linux board support packages (BSPs) for NXP SoCs,
106  a fully operational tool chain, kernel and board specific modules.
107
108  LSDK and related information can be obtained from:  `LSDK <https://www.nxp.com/support/developer-resources/run-time-software/linux-software-and-development-tools/layerscape-software-development-kit:LAYERSCAPE-SDK>`_
109
110Driver compilation and testing
111~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112
113Follow instructions available in the document
114:ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
115to launch **testpmd**
116