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