14ccc8d77SZyta Szpak.. SPDX-License-Identifier: BSD-3-Clause 24ccc8d77SZyta Szpak Copyright(c) 2018 Marvell International Ltd. 34ccc8d77SZyta Szpak Copyright(c) 2018 Semihalf. 44ccc8d77SZyta Szpak All rights reserved. 54ccc8d77SZyta Szpak 64ccc8d77SZyta SzpakMVNETA Poll Mode Driver 74ccc8d77SZyta Szpak======================= 84ccc8d77SZyta Szpak 98809f78cSBruce RichardsonThe MVNETA PMD (**librte_net_mvneta**) provides poll mode driver support 104ccc8d77SZyta Szpakfor the Marvell NETA 1/2.5 Gbps adapter. 114ccc8d77SZyta Szpak 124ccc8d77SZyta SzpakDetailed information about SoCs that use PPv2 can be obtained here: 134ccc8d77SZyta Szpak 144ccc8d77SZyta Szpak* https://www.marvell.com/embedded-processors/armada-3700/ 154ccc8d77SZyta Szpak 164ccc8d77SZyta Szpak 174ccc8d77SZyta SzpakFeatures 184ccc8d77SZyta Szpak-------- 194ccc8d77SZyta Szpak 204ccc8d77SZyta SzpakFeatures of the MVNETA PMD are: 214ccc8d77SZyta Szpak 224ccc8d77SZyta Szpak- Start/stop 234ccc8d77SZyta Szpak- tx/rx_queue_setup 24ce7ea764SZyta Szpak- tx/rx_burst 254ccc8d77SZyta Szpak- Speed capabilities 264ccc8d77SZyta Szpak- Jumbo frame 27112ef725SZyta Szpak- MTU update 28cf9ccda9SZyta Szpak- Promiscuous mode 29f3118fb0SZyta Szpak- Unicast MAC filter 3088d3cb3cSZyta Szpak- Link status 314ccc8d77SZyta Szpak- CRC offload 32ce7ea764SZyta Szpak- L3 checksum offload 33ce7ea764SZyta Szpak- L4 checksum offload 34ce7ea764SZyta Szpak- Packet type parsing 35e9d5faffSZyta Szpak- Basic stats 364ccc8d77SZyta Szpak 374ccc8d77SZyta Szpak 384ccc8d77SZyta SzpakLimitations 394ccc8d77SZyta Szpak----------- 404ccc8d77SZyta Szpak 414ccc8d77SZyta Szpak- Flushing vlans added for filtering is not possible due to MUSDK missing 424ccc8d77SZyta Szpak functionality. Current workaround is to reset board so that NETA has a 434ccc8d77SZyta Szpak chance to start in a sane state. 444ccc8d77SZyta Szpak 454ccc8d77SZyta SzpakPrerequisites 464ccc8d77SZyta Szpak------------- 474ccc8d77SZyta Szpak 484ccc8d77SZyta Szpak- Custom Linux Kernel sources 494ccc8d77SZyta Szpak 504ccc8d77SZyta Szpak .. code-block:: console 514ccc8d77SZyta Szpak 524ccc8d77SZyta Szpak git clone https://github.com/MarvellEmbeddedProcessors/linux-marvell.git -b linux-4.4.120-armada-18.09 534ccc8d77SZyta Szpak 544ccc8d77SZyta Szpak 554ccc8d77SZyta Szpak- MUSDK (Marvell User-Space SDK) sources 564ccc8d77SZyta Szpak 574ccc8d77SZyta Szpak .. code-block:: console 584ccc8d77SZyta Szpak 597432c8cfSLiron Himi git clone https://github.com/MarvellEmbeddedProcessors/musdk-marvell.git -b musdk-release-SDK-10.3.5.0-PR2 604ccc8d77SZyta Szpak 614ccc8d77SZyta Szpak MUSDK is a light-weight library that provides direct access to Marvell's 624ccc8d77SZyta Szpak NETA. Alternatively prebuilt MUSDK library can be 634ccc8d77SZyta Szpak requested from `Marvell Extranet <https://extranet.marvell.com>`_. Once 644ccc8d77SZyta Szpak approval has been granted, library can be found by typing ``musdk`` in 654ccc8d77SZyta Szpak the search box. 664ccc8d77SZyta Szpak 674ccc8d77SZyta Szpak MUSDK must be configured with the following features: 684ccc8d77SZyta Szpak 694ccc8d77SZyta Szpak .. code-block:: console 704ccc8d77SZyta Szpak 714ccc8d77SZyta Szpak --enable-pp2=no --enable-neta 724ccc8d77SZyta Szpak 734ccc8d77SZyta Szpak- DPDK environment 744ccc8d77SZyta Szpak 754ccc8d77SZyta Szpak Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup 764ccc8d77SZyta Szpak DPDK environment. 774ccc8d77SZyta Szpak 784ccc8d77SZyta Szpak 79*b583b9a1SFerruh YigitRuntime Configuration 80*b583b9a1SFerruh Yigit--------------------- 814ccc8d77SZyta Szpak 824ccc8d77SZyta SzpakThe following ``devargs`` options can be enabled at runtime. They must 834ccc8d77SZyta Szpakbe passed as part of EAL arguments. 844ccc8d77SZyta Szpak 854ccc8d77SZyta Szpak- ``iface`` (mandatory, with no default value) 864ccc8d77SZyta Szpak 874ccc8d77SZyta Szpak The name of port (owned by MUSDK) that should be enabled in DPDK. 884ccc8d77SZyta Szpak This options can be repeated resulting in a list of ports to be 894ccc8d77SZyta Szpak enabled. For instance below will enable ``eth0`` and ``eth1`` ports. 904ccc8d77SZyta Szpak 914ccc8d77SZyta Szpak.. code-block:: console 924ccc8d77SZyta Szpak 9368d99d00SCiara Power ./dpdk-testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 \ 944ccc8d77SZyta Szpak -c 3 -- -i --p 3 -a 954ccc8d77SZyta Szpak 964ccc8d77SZyta Szpak 977432c8cfSLiron HimiBuilding MUSDK 987432c8cfSLiron Himi-------------- 994ccc8d77SZyta Szpak 1004ccc8d77SZyta SzpakDriver needs precompiled MUSDK library during compilation. 1014ccc8d77SZyta Szpak 1024ccc8d77SZyta Szpak.. code-block:: console 1034ccc8d77SZyta Szpak 1044ccc8d77SZyta Szpak export CROSS_COMPILE=<toolchain>/bin/aarch64-linux-gnu- 1054ccc8d77SZyta Szpak ./bootstrap 1064ccc8d77SZyta Szpak ./configure --host=aarch64-linux-gnu --enable-pp2=no --enable-neta 1074ccc8d77SZyta Szpak make install 1084ccc8d77SZyta Szpak 1094ccc8d77SZyta SzpakMUSDK will be installed to `usr/local` under current directory. 1104ccc8d77SZyta SzpakFor the detailed build instructions please consult ``doc/musdk_get_started.txt``. 1114ccc8d77SZyta Szpak 1127432c8cfSLiron HimiBuilding DPDK 1137432c8cfSLiron Himi------------- 1147432c8cfSLiron Himi 1157432c8cfSLiron HimiAdd path to libmusdk.pc in PKG_CONFIG_PATH environment variable. 1164ccc8d77SZyta Szpak 1174ccc8d77SZyta Szpak.. code-block:: console 1184ccc8d77SZyta Szpak 1197432c8cfSLiron Himi export PKG_CONFIG_PATH=$<musdk_install_dir>/lib/pkgconfig/:$PKG_CONFIG_PATH 120e24b8ad4SStephen Hemminger meson setup build --cross-file config/arm/arm64_armada_linux_gcc 1217432c8cfSLiron Himi ninja -C build 12268d99d00SCiara Power 1234ccc8d77SZyta Szpak 1244ccc8d77SZyta SzpakUsage Example 1254ccc8d77SZyta Szpak------------- 1264ccc8d77SZyta Szpak 1274ccc8d77SZyta SzpakMVNETA PMD requires extra out of tree kernel modules to function properly. 1284ccc8d77SZyta Szpak`musdk_uio` and `mv_neta_uio` sources are part of the MUSDK. Please consult 1294ccc8d77SZyta Szpak``doc/musdk_get_started.txt`` for the detailed build instructions. 1304ccc8d77SZyta Szpak 1314ccc8d77SZyta Szpak.. code-block:: console 1324ccc8d77SZyta Szpak 1334ccc8d77SZyta Szpak insmod musdk_uio.ko 1344ccc8d77SZyta Szpak insmod mv_neta_uio.ko 1354ccc8d77SZyta Szpak 1364ccc8d77SZyta SzpakAdditionally interfaces used by DPDK application need to be put up: 1374ccc8d77SZyta Szpak 1384ccc8d77SZyta Szpak.. code-block:: console 1394ccc8d77SZyta Szpak 1404ccc8d77SZyta Szpak ip link set eth0 up 1414ccc8d77SZyta Szpak ip link set eth1 up 1424ccc8d77SZyta Szpak 1434ccc8d77SZyta SzpakIn order to run testpmd example application following command can be used: 1444ccc8d77SZyta Szpak 1454ccc8d77SZyta Szpak.. code-block:: console 1464ccc8d77SZyta Szpak 14768d99d00SCiara Power ./dpdk-testpmd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- \ 1484ccc8d77SZyta Szpak -i --p 3 -a --txd 256 --rxd 128 --rxq=1 --txq=1 --nb-cores=1 1494ccc8d77SZyta Szpak 1504ccc8d77SZyta Szpak 1514ccc8d77SZyta SzpakIn order to run l2fwd example application following command can be used: 1524ccc8d77SZyta Szpak 1534ccc8d77SZyta Szpak.. code-block:: console 1544ccc8d77SZyta Szpak 15568d99d00SCiara Power ./dpdk-l2fwd --vdev=net_mvneta,iface=eth0,iface=eth1 -c 3 -- -T 1 -p 3 156