1 .. SPDX-License-Identifier: BSD-3-Clause
2 Copyright(c) 2018 Marvell International Ltd.
3 Copyright(c) 2018 Semihalf.
6 MVNETA Poll Mode Driver
7 =======================
9 The MVNETA PMD (librte_pmd_mvneta) provides poll mode driver support
10 for the Marvell NETA 1/2.5 Gbps adapter.
12 Detailed information about SoCs that use PPv2 can be obtained here:
14 * https://www.marvell.com/embedded-processors/armada-3700/
18 Due to external dependencies, this driver is disabled by default. It must
19 be enabled manually by setting relevant configuration option manually.
20 Please refer to `Config File Options`_ section for further details.
26 Features of the MVNETA PMD are:
44 - Flushing vlans added for filtering is not possible due to MUSDK missing
45 functionality. Current workaround is to reset board so that NETA has a
46 chance to start in a sane state.
51 - Custom Linux Kernel sources
53 .. code-block:: console
55 git clone https://github.com/MarvellEmbeddedProcessors/linux-marvell.git -b linux-4.4.120-armada-18.09
58 - MUSDK (Marvell User-Space SDK) sources
60 .. code-block:: console
62 git clone https://github.com/MarvellEmbeddedProcessors/musdk-marvell.git -b musdk-armada-18.09
64 MUSDK is a light-weight library that provides direct access to Marvell's
65 NETA. Alternatively prebuilt MUSDK library can be
66 requested from `Marvell Extranet <https://extranet.marvell.com>`_. Once
67 approval has been granted, library can be found by typing ``musdk`` in
70 MUSDK must be configured with the following features:
72 .. code-block:: console
74 --enable-pp2=no --enable-neta
78 Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup
81 Pre-Installation Configuration
82 ------------------------------
87 The following options can be modified in the ``config`` file.
89 - ``CONFIG_RTE_LIBRTE_MVNETA_PMD`` (default ``n``)
91 Toggle compilation of the librte_pmd_mvneta driver.
96 The following ``devargs`` options can be enabled at runtime. They must
97 be passed as part of EAL arguments.
99 - ``iface`` (mandatory, with no default value)
101 The name of port (owned by MUSDK) that should be enabled in DPDK.
102 This options can be repeated resulting in a list of ports to be
103 enabled. For instance below will enable ``eth0`` and ``eth1`` ports.
105 .. code-block:: console
107 ./testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 \
114 Driver needs precompiled MUSDK library during compilation.
116 .. code-block:: console
118 export CROSS_COMPILE=<toolchain>/bin/aarch64-linux-gnu-
120 ./configure --host=aarch64-linux-gnu --enable-pp2=no --enable-neta
123 MUSDK will be installed to `usr/local` under current directory.
124 For the detailed build instructions please consult ``doc/musdk_get_started.txt``.
126 Before the DPDK build process the environmental variable ``LIBMUSDK_PATH`` with
127 the path to the MUSDK installation directory needs to be exported.
129 .. code-block:: console
131 export LIBMUSDK_PATH=<musdk>/usr/local
132 export CROSS=aarch64-linux-gnu-
133 make config T=arm64-armv8a-linuxapp-gcc
134 sed -ri 's,(MVNETA_PMD=)n,\1y,' build/.config
140 MVNETA PMD requires extra out of tree kernel modules to function properly.
141 `musdk_uio` and `mv_neta_uio` sources are part of the MUSDK. Please consult
142 ``doc/musdk_get_started.txt`` for the detailed build instructions.
144 .. code-block:: console
147 insmod mv_neta_uio.ko
149 Additionally interfaces used by DPDK application need to be put up:
151 .. code-block:: console
156 In order to run testpmd example application following command can be used:
158 .. code-block:: console
160 ./testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- \
161 -i --p 3 -a --txd 256 --rxd 128 --rxq=1 --txq=1 --nb-cores=1
164 In order to run l2fwd example application following command can be used:
166 .. code-block:: console
168 ./l2fwd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- -T 1 -p 3