xref: /dpdk/doc/guides/nics/mvneta.rst (revision b583b9a1bb49e86aa0937d55415713282000c536)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2018 Marvell International Ltd.
3    Copyright(c) 2018 Semihalf.
4    All rights reserved.
5
6MVNETA Poll Mode Driver
7=======================
8
9The MVNETA PMD (**librte_net_mvneta**) provides poll mode driver support
10for the Marvell NETA 1/2.5 Gbps adapter.
11
12Detailed information about SoCs that use PPv2 can be obtained here:
13
14* https://www.marvell.com/embedded-processors/armada-3700/
15
16
17Features
18--------
19
20Features of the MVNETA PMD are:
21
22- Start/stop
23- tx/rx_queue_setup
24- tx/rx_burst
25- Speed capabilities
26- Jumbo frame
27- MTU update
28- Promiscuous mode
29- Unicast MAC filter
30- Link status
31- CRC offload
32- L3 checksum offload
33- L4 checksum offload
34- Packet type parsing
35- Basic stats
36
37
38Limitations
39-----------
40
41- Flushing vlans added for filtering is not possible due to MUSDK missing
42  functionality. Current workaround is to reset board so that NETA has a
43  chance to start in a sane state.
44
45Prerequisites
46-------------
47
48- Custom Linux Kernel sources
49
50  .. code-block:: console
51
52     git clone https://github.com/MarvellEmbeddedProcessors/linux-marvell.git -b linux-4.4.120-armada-18.09
53
54
55- MUSDK (Marvell User-Space SDK) sources
56
57  .. code-block:: console
58
59     git clone https://github.com/MarvellEmbeddedProcessors/musdk-marvell.git -b musdk-release-SDK-10.3.5.0-PR2
60
61  MUSDK is a light-weight library that provides direct access to Marvell's
62  NETA. Alternatively prebuilt MUSDK library can be
63  requested from `Marvell Extranet <https://extranet.marvell.com>`_. Once
64  approval has been granted, library can be found by typing ``musdk`` in
65  the search box.
66
67  MUSDK must be configured with the following features:
68
69  .. code-block:: console
70
71     --enable-pp2=no --enable-neta
72
73- DPDK environment
74
75  Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup
76  DPDK environment.
77
78
79Runtime Configuration
80---------------------
81
82The following ``devargs`` options can be enabled at runtime. They must
83be passed as part of EAL arguments.
84
85- ``iface`` (mandatory, with no default value)
86
87  The name of port (owned by MUSDK) that should be enabled in DPDK.
88  This options can be repeated resulting in a list of ports to be
89  enabled.  For instance below will enable ``eth0`` and ``eth1`` ports.
90
91.. code-block:: console
92
93   ./dpdk-testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 \
94    -c 3 -- -i --p 3 -a
95
96
97Building MUSDK
98--------------
99
100Driver needs precompiled MUSDK library during compilation.
101
102.. code-block:: console
103
104   export CROSS_COMPILE=<toolchain>/bin/aarch64-linux-gnu-
105   ./bootstrap
106   ./configure --host=aarch64-linux-gnu --enable-pp2=no --enable-neta
107   make install
108
109MUSDK will be installed to `usr/local` under current directory.
110For the detailed build instructions please consult ``doc/musdk_get_started.txt``.
111
112Building DPDK
113-------------
114
115Add path to libmusdk.pc in PKG_CONFIG_PATH environment variable.
116
117.. code-block:: console
118
119   export PKG_CONFIG_PATH=$<musdk_install_dir>/lib/pkgconfig/:$PKG_CONFIG_PATH
120   meson setup build --cross-file config/arm/arm64_armada_linux_gcc
121   ninja -C build
122
123
124Usage Example
125-------------
126
127MVNETA PMD requires extra out of tree kernel modules to function properly.
128`musdk_uio` and `mv_neta_uio` sources are part of the MUSDK. Please consult
129``doc/musdk_get_started.txt`` for the detailed build instructions.
130
131.. code-block:: console
132
133   insmod musdk_uio.ko
134   insmod mv_neta_uio.ko
135
136Additionally interfaces used by DPDK application need to be put up:
137
138.. code-block:: console
139
140   ip link set eth0 up
141   ip link set eth1 up
142
143In order to run testpmd example application following command can be used:
144
145.. code-block:: console
146
147   ./dpdk-testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- \
148     -i --p 3 -a --txd 256 --rxd 128 --rxq=1 --txq=1  --nb-cores=1
149
150
151In order to run l2fwd example application following command can be used:
152
153.. code-block:: console
154
155   ./dpdk-l2fwd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- -T 1 -p 3
156