doc: fix spelling reported by aspell in guides
[dpdk.git] / doc / guides / nics / enetc.rst
1 .. SPDX-License-Identifier: BSD-3-Clause
2    Copyright 2018 NXP
3
4 ENETC Poll Mode Driver
5 ======================
6
7 The ENETC NIC PMD (**librte_pmd_enetc**) provides poll mode driver
8 support for the inbuilt NIC found in the **NXP LS1028** SoC.
9
10 More 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
13 ENETC
14 -----
15
16 This section provides an overview of the NXP ENETC
17 and how it is integrated into the DPDK.
18
19 Contents 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
29 ENETC Overview
30 ~~~~~~~~~~~~~~
31
32 ENETC is a PCI Integrated End Point(IEP). IEP implements
33 peripheral devices in an SoC such that software sees them as PCIe device.
34 ENETC is an evolution of BDR(Buffer Descriptor Ring) based networking
35 IPs.
36
37 This 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
44 ENETC 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
57 NIC Driver (PMD)
58 ~~~~~~~~~~~~~~~~
59
60 ENETC PMD is traditional DPDK PMD which provides necessary interface between
61 RTE 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
71 Supported ENETC SoCs
72 ~~~~~~~~~~~~~~~~~~~~
73
74 - LS1028
75
76 Prerequisites
77 ~~~~~~~~~~~~~
78
79 There are three main pre-requisites for executing ENETC PMD on a ENETC
80 compatible board:
81
82 1. **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
86 2. **Linux Kernel**
87
88    It can be obtained from `NXP's Github hosting <https://source.codeaurora.org/external/qoriq/qoriq-components/linux>`_.
89
90 3. **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
96 The following dependencies are not part of DPDK and must be installed
97 separately:
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
110 Driver compilation and testing
111 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112
113 Follow instructions available in the document
114 :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
115 to launch **testpmd**
116
117 To compile in performance mode, please set ``CONFIG_RTE_CACHE_LINE_SIZE=64``