X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Focteontx.rst;h=b1a868b054d13e20cd54ed7bc47575f590d273e1;hb=6be6690127744bb294005bfcf539508b3d5f389e;hp=a6631cd0e30adb05dfc1fa9051f4e40fc8e4ce1b;hpb=f820b589663116403d8f530d777ed28ae7ec7dd6;p=dpdk.git diff --git a/doc/guides/nics/octeontx.rst b/doc/guides/nics/octeontx.rst index a6631cd0e3..b1a868b054 100644 --- a/doc/guides/nics/octeontx.rst +++ b/doc/guides/nics/octeontx.rst @@ -1,38 +1,11 @@ -.. BSD LICENSE - Copyright (C) Cavium, Inc. 2017. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name of Cavium, Inc nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -OCTEONTX Poll Mode driver -========================= - -The OCTEONTX ETHDEV PMD (**librte_pmd_octeontx**) provides poll mode ethdev -driver support for the inbuilt network device found in the **Cavium OCTEONTX** +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2017 Cavium, Inc + +OCTEON TX Poll Mode driver +========================== + +The OCTEON TX ETHDEV PMD (**librte_net_octeontx**) provides poll mode ethdev +driver support for the inbuilt network device found in the **Cavium OCTEON TX** SoC family as well as their virtual functions (VF) in SR-IOV context. More information can be found at `Cavium, Inc Official Website @@ -41,20 +14,23 @@ More information can be found at `Cavium, Inc Official Website Features -------- -Features of the OCTEONTX Ethdev PMD are: +Features of the OCTEON TX Ethdev PMD are: - Packet type information - Promiscuous mode - Port hardware statistics - Jumbo frames +- Scatter-Gather IO support - Link state information +- MAC/VLAN filtering +- MTU update - SR-IOV VF - Multiple queues for TX - Lock-free Tx queue - HW offloaded `ethdev Rx queue` to `eventdev event queue` packet injection -Supported OCTEONTX SoCs ------------------------ +Supported OCTEON TX SoCs +------------------------ - CN83xx @@ -71,68 +47,11 @@ The features supported by the device and not yet supported by this PMD include: Prerequisites ------------- -There are three main pre-perquisites for executing OCTEONTX PMD on a OCTEONTX -compatible board: - -1. **OCTEONTX Linux kernel PF driver for Network acceleration HW blocks** - - The OCTEONTX Linux kernel drivers (including the required PF driver for the - all network acceleration blocks) are available on GitHub at - `octeontx-kmod `_ - along with build, install and dpdk usage instructions. - -2. **ARM64 Tool Chain** - - For example, the *aarch64* Linaro Toolchain, which can be obtained from - `here `_. - -3. **Rootfile system** - - Any *aarch64* supporting filesystem can be used. For example, - Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained - from ``_. - - As an alternative method, OCTEONTX PMD can also be executed using images provided - as part of SDK from Cavium. The SDK includes all the above prerequisites necessary - to bring up a OCTEONTX board. - - SDK and related information can be obtained from: `Cavium support site `_. - -Follow the DPDK :ref:`Getting Started Guide for Linux ` to setup the basic DPDK environment. +See :doc:`../platform/octeontx` for setup information. Pre-Installation Configuration ------------------------------ -Config File Options -~~~~~~~~~~~~~~~~~~~ - -The following options can be modified in the ``config`` file. -Please note that enabling debugging options may affect system performance. - -- ``CONFIG_RTE_LIBRTE_OCTEONTX_PMD`` (default ``y``) - - Toggle compilation of the ``librte_pmd_octeontx`` driver. - -- ``CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_DRIVER`` (default ``n``) - - Toggle display of generic debugging messages - -- ``CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_INIT`` (default ``n``) - - Toggle display of initialization related messages. - -- ``CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_RX`` (default ``n``) - - Toggle display of receive path message - -- ``CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_TX`` (default ``n``) - - Toggle display of transmit path message - -- ``CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_MBOX`` (default ``n``) - - Toggle display of mbox related message - Driver compilation and testing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -140,14 +59,6 @@ Driver compilation and testing Refer to the document :ref:`compiling and testing a PMD for a NIC ` for details. -To compile the OCTEONTX PMD for Linux arm64 gcc target, run the -following ``make`` command: - -.. code-block:: console - - cd - make config T=arm64-thunderx-linuxapp-gcc install - #. Running testpmd: Follow instructions available in the document @@ -158,13 +69,13 @@ following ``make`` command: .. code-block:: console - ./arm64-thunderx-linuxapp-gcc/app/testpmd -c 700 \ + .//app/dpdk-testpmd -c 700 \ --base-virtaddr=0x100000000000 \ --mbuf-pool-ops-name="octeontx_fpavf" \ --vdev='event_octeontx' \ --vdev='eth_octeontx,nr_port=2' \ - -- --rxq=1 --txq=1 --nb-core=2 --total-num-mbufs=16384 \ - --disable-hw-vlan-filter -i + -- --rxq=1 --txq=1 --nb-core=2 \ + --total-num-mbufs=16384 -i ..... EAL: Detected 24 lcore(s) EAL: Probing VFIO support... @@ -197,7 +108,7 @@ following ``make`` command: Initialization -------------- -The octeontx ethdev pmd is exposed as a vdev device which consists of a set +The OCTEON TX ethdev pmd is exposed as a vdev device which consists of a set of PKI and PKO PCIe VF devices. On EAL initialization, PKI/PKO PCIe VF devices will be probed and then the vdev device can be created from the application code, or from the EAL command line based on @@ -222,7 +133,7 @@ Example: .. code-block:: console - ./your_dpdk_application --mbuf-pool-ops="octeontx_fpavf" \ + ./your_dpdk_application --mbuf-pool-ops-name="octeontx_fpavf" \ --vdev='event_octeontx' \ --vdev="eth_octeontx,nr_port=2" @@ -231,22 +142,28 @@ Limitations ``octeontx_fpavf`` external mempool handler dependency ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The OCTEONTX SoC family NIC has inbuilt HW assisted external mempool manager. +The OCTEON TX SoC family NIC has inbuilt HW assisted external mempool manager. This driver will only work with ``octeontx_fpavf`` external mempool handler as it is the most performance effective way for packet allocation and Tx buffer -recycling on OCTEONTX SoC platform. +recycling on OCTEON TX SoC platform. -CRC striping -~~~~~~~~~~~~ +CRC stripping +~~~~~~~~~~~~~ -The OCTEONTX SoC family NICs strip the CRC for every packets coming into the -host interface. So, CRC will be stripped even when the -``rxmode.hw_strip_crc`` member is set to 0 in ``struct rte_eth_conf``. +The OCTEON TX SoC family NICs strip the CRC for every packets coming into the +host interface irrespective of the offload configuration. Maximum packet length ~~~~~~~~~~~~~~~~~~~~~ -The OCTEONTX SoC family NICs support a maximum of a 32K jumbo frame. The value +The OCTEON TX SoC family NICs support a maximum of a 32K jumbo frame. The value is fixed and cannot be changed. So, even when the ``rxmode.max_rx_pkt_len`` member of ``struct rte_eth_conf`` is set to a value lower than 32k, frames up to 32k bytes can still reach the host interface. + +Maximum mempool size +~~~~~~~~~~~~~~~~~~~~ + +The maximum mempool size supplied to Rx queue setup should be less than 128K. +When running testpmd on OCTEON TX the application can limit the number of mbufs +by using the option ``--total-num-mbufs=131072``.