diff options
Diffstat (limited to 'src/plugins/marvell')
-rw-r--r-- | src/plugins/marvell/README.md | 65 | ||||
-rw-r--r-- | src/plugins/marvell/README.rst | 85 |
2 files changed, 85 insertions, 65 deletions
diff --git a/src/plugins/marvell/README.md b/src/plugins/marvell/README.md deleted file mode 100644 index 3f3c27e3618..00000000000 --- a/src/plugins/marvell/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Marvell device plugin for VPP {#marvell_plugin_doc} - -##Overview -This plugins provides native device support for Marvell PP2 network device, by use of Marvell Usermode SDK ([MUSDK][1]). -Code is developed and tested on [MACCHIATObin][2] board. - -##Prerequisites -Plugins depends on installed MUSDK and Marvell provided linux [kernel][3] with MUSDK provided kernel patches (see `patches/linux` in musdk repo and relevant documentation. -Kernel version used: **4.14.22 armada-18.09.3** -MUSDK version used: **armada-18.09.3** -Following kernel modules from MUSDK must be loaded for plugin to work: -* `musdk_cma.ko` -* `mv_pp_uio.ko` - -##Musdk 18.09.3 compilation steps - -``` -./bootstrap -./configure --prefix=/opt/vpp/external/aarch64/ CFLAGS="-Wno-error=unused-result -g -fPIC" --enable-shared=no -sed -i -e 's/marvell,mv-pp-uio/generic-uio/' modules/pp2/mv_pp_uio.c -sed -i -e 's/O_CREAT/O_CREAT, S_IRUSR | S_IWUSR/' src/lib/file_utils.c -make -sudo make install -``` - -## Usage -### Interface Cration -Interfaces are dynamically created with following CLI: -``` -create interface marvell pp2 name eth0 -set interface state mv-ppio-0/0 up -``` - -Where `eth0` is linux interface name and `mv-ppio-X/Y` is VPP interface name where X is PP2 device ID and Y is PPIO ID -Interface needs to be assigned to MUSDK in FDT configuration and linux interface state must be up. - -### Interface Deletion -Interface can be deleted with following CLI: -``` -delete interface marvell pp2 <interface name> -``` - - -### Interface Statistics -Interface statistics can be displayed with `sh hardware-interface mv-ppio0/0` -command. - -### Interaction with DPDK plugin -This plugin doesn't have any dependency on DPDK or DPDK plugin but it can -work with DPDK plugin enabled or disabled. It is observed that performace is -better around 30% when DPDK plugin is disabled, as DPDK plugin registers -own buffer manager, which needs to deal with additional metadata in each packet. - -DPKD plugin can be disabled by adding following config to the startup.conf. - -``` -plugins { - dpdk_plugin.so { disable } -} -``` - - -[1]: https://github.com/MarvellEmbeddedProcessors/musdk-marvell -[2]: http://macchiatobin.net -[3]: https://github.com/MarvellEmbeddedProcessors/linux-marvell diff --git a/src/plugins/marvell/README.rst b/src/plugins/marvell/README.rst new file mode 100644 index 00000000000..19cf1c49d0e --- /dev/null +++ b/src/plugins/marvell/README.rst @@ -0,0 +1,85 @@ +Marvell device plugin +===================== + +Overview +-------- + +This plugins provides native device support for Marvell PP2 network +device, by use of Marvell Usermode SDK +(`MUSDK <https://github.com/MarvellEmbeddedProcessors/musdk-marvell>`__). +Code is developed and tested on +`MACCHIATObin <http://macchiatobin.net>`__ board. + +Prerequisites +------------- + +Plugins depends on installed MUSDK and Marvell provided linux +`kernel <https://github.com/MarvellEmbeddedProcessors/linux-marvell>`__ +with MUSDK provided kernel patches (see ``patches/linux`` in musdk repo +and relevant documentation. Kernel version used: **4.14.22 +armada-18.09.3** MUSDK version used: **armada-18.09.3** Following kernel +modules from MUSDK must be loaded for plugin to work: \* +``musdk_cma.ko`` \* ``mv_pp_uio.ko`` + +Musdk 18.09.3 compilation steps +------------------------------- + +:: + + ./bootstrap + ./configure --prefix=/opt/vpp/external/aarch64/ CFLAGS="-Wno-error=unused-result -g -fPIC" --enable-shared=no + sed -i -e 's/marvell,mv-pp-uio/generic-uio/' modules/pp2/mv_pp_uio.c + sed -i -e 's/O_CREAT/O_CREAT, S_IRUSR | S_IWUSR/' src/lib/file_utils.c + make + sudo make install + +Usage +----- + +Interface Creation +~~~~~~~~~~~~~~~~~~ + +Interfaces are dynamically created with following CLI: + +:: + + create interface marvell pp2 name eth0 + set interface state mv-ppio-0/0 up + +Where ``eth0`` is linux interface name and ``mv-ppio-X/Y`` is VPP +interface name where X is PP2 device ID and Y is PPIO ID Interface needs +to be assigned to MUSDK in FDT configuration and linux interface state +must be up. + +Interface Deletion +~~~~~~~~~~~~~~~~~~ + +Interface can be deleted with following CLI: + +:: + + delete interface marvell pp2 <interface name> + +Interface Statistics +~~~~~~~~~~~~~~~~~~~~ + +Interface statistics can be displayed with +``sh hardware-interface mv-ppio0/0`` command. + +Interaction with DPDK plugin +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This plugin doesn’t have any dependency on DPDK or DPDK plugin but it +can work with DPDK plugin enabled or disabled. It is observed that +performance is better around 30% when DPDK plugin is disabled, as DPDK +plugin registers own buffer manager, which needs to deal with additional +metadata in each packet. + +DPKD plugin can be disabled by adding following config to the +startup.conf. + +:: + + plugins { + dpdk_plugin.so { disable } + } |