.. SPDX-License-Identifier: BSD-3-Clause Copyright 2021 NXP ENETFEC Poll Mode Driver ======================== The ENETFEC NIC PMD (**librte_net_enetfec**) provides poll mode driver support for the inbuilt NIC found in the ** NXP i.MX 8M Mini** SoC. More information can be found at NXP Official Website This section provides an overview of the NXP ENETFEC and how it is integrated into the DPDK. Driver is taken as **experimental** as driver depends on a Linux kernel module 'enetfec-uio', which is not upstreamed yet. Contents summary - ENETFEC overview - ENETFEC features - Supported ENETFEC SoCs - Prerequisites - Driver compilation and testing - Limitations ENETFEC Overview ---------------- The i.MX 8M Mini Media Applications Processor is built to achieve both high performance and low power consumption. ENETFEC PMD is a hardware programmable packet forwarding engine to provide high performance Ethernet interface. It has only 1 GB Ethernet interface with RJ45 connector. The diagram below shows a system level overview of ENETFEC: .. code-block:: console ===================================================== Userspace +-----------------------------------------+ | ENETFEC Driver | | +-------------------------+ | | | virtual ethernet device | | +-----------------------------------------+ ^ | | | | | RXQ | | TXQ | | | v ===================================================== Kernel Space +---------+ | fec-uio | ====================+=========+====================== Hardware +-----------------------------------------+ | i.MX 8M MINI EVK | | +-----+ | | | MAC | | +---------------+-----+-------------------+ | PHY | +-----+ ENETFEC Ethernet driver is traditional DPDK PMD running in userspace. 'fec-uio' is the kernel driver. The MAC and PHY are the hardware blocks. ENETFEC PMD uses standard UIO interface to access kernel for PHY initialisation and for mapping the allocated memory of register & buffer descriptor with DPDK which gives access to non-cacheable memory for buffer descriptor. net_enetfec is logical Ethernet interface, created by ENETFEC driver. - ENETFEC driver registers the device in virtual device driver. - RTE framework scans and will invoke the probe function of ENETFEC 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 via logical interfaces. ENETFEC Features ---------------- - Basic stats - Promiscuous - VLAN offload - L3/L4 checksum offload - Linux - ARMv8 Supported ENETFEC SoCs ---------------------- - i.MX 8M Mini Prerequisites ------------- There are three main pre-requisites for executing ENETFEC PMD on a i.MX 8M Mini compatible board: 1. **ARM 64 Tool Chain** For example, the `*aarch64* Linaro Toolchain `_. 2. **Linux Kernel** It can be obtained from `NXP's Github hosting `_. .. note:: Branch is 'lf-5.10.y' 3. **Rootfile system** Any *aarch64* supporting filesystem can be used. For example, Ubuntu 18.04 LTS (Bionic) or 20.04 LTS(Focal) userland which can be obtained from `here `_. 4. The Ethernet device will be registered as virtual device, so ENETFEC has dependency on **rte_bus_vdev** library and it is mandatory to use `--vdev` with value `net_enetfec` to run DPDK application. Driver compilation and testing ------------------------------ Follow instructions available in the document :doc:`build_and_test` to launch **dpdk-testpmd**. Limitations ----------- - Multi queue is not supported.