X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Fszedata2.rst;h=30710a80b8ad325678654d672ab10e6f2a1c6c4c;hb=9a2f44c762070295645575c274dce7f94961933f;hp=e093704cd512ec7d18cf2201c9e86f6476398af2;hpb=366c1a2cb308a9cdc144d54dfaaa71ef8c52ca19;p=dpdk.git diff --git a/doc/guides/nics/szedata2.rst b/doc/guides/nics/szedata2.rst index e093704cd5..30710a80b8 100644 --- a/doc/guides/nics/szedata2.rst +++ b/doc/guides/nics/szedata2.rst @@ -1,46 +1,19 @@ -.. BSD LICENSE - Copyright 2015 CESNET - 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 CESNET 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. +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2015 - 2016 CESNET SZEDATA2 poll mode driver library ================================= -The SZEDATA2 poll mode driver library implements support for cards from COMBO -family (**COMBO-80G**, **COMBO-100G**). -The SZEDATA2 PMD is virtual PMD which uses interface provided by libsze2 -library to communicate with COMBO cards over sze2 layer. +The SZEDATA2 poll mode driver library implements support for the Netcope +FPGA Boards (**NFB-40G2, NFB-100G2, NFB-200G2QL**) and Silicom **FB2CGG3** card, +FPGA-based programmable NICs. The SZEDATA2 PMD uses interface provided by the libsze2 +library to communicate with the NFB cards over the sze2 layer. -More information about family of -`COMBO cards `_ +More information about the +`NFB cards `_ and used technology -(`NetCOPE platform `_) can be -found on the `Liberouter website `_. +(`Netcope Development Kit `_) +can be found on the `Netcope Technologies website `_. .. note:: @@ -54,8 +27,8 @@ found on the `Liberouter website `_. Currently the driver is supported only on x86_64 architectures. Only x86_64 versions of the external libraries are provided. -Prerequisities --------------- +Prerequisites +------------- This PMD requires kernel modules which are responsible for initialization and allocation of resources needed for sze2 layer function. @@ -70,54 +43,83 @@ separately: * **Kernel modules** + * combo6core * combov3 - * szedata2_cv3 + * szedata2 + * szedata2_cv3 or szedata2_cv3_fdt Kernel modules manage initialization of hardware, allocation and - sharing of resources for user space applications: + sharing of resources for user space applications. Information about getting the dependencies can be found `here -`_. +`_. +Versions of the packages +~~~~~~~~~~~~~~~~~~~~~~~~ -Using the SZEDATA2 PMD ----------------------- +The minimum version of the provided packages: -SZEDATA2 PMD can be created by passing ``--vdev=`` option to EAL in the -following format: +* for DPDK from 18.05: **4.4.1** -.. code-block:: console +* for DPDK up to 18.02 (including): **3.0.5** + +Configuration +------------- + +These configuration options can be modified before compilation in the +``.config`` file: + +* ``CONFIG_RTE_LIBRTE_PMD_SZEDATA2`` default value: **n** + + Value **y** enables compilation of szedata2 PMD. - --vdev 'DEVICE,dev_path=PATH,rx_ifaces=RX_MASK,tx_ifaces=TX_MASK' +Using the SZEDATA2 PMD +---------------------- -``DEVICE`` and options ``dev_path``, ``rx_ifaces``, ``tx_ifaces`` are mandatory -and must be separated by commas. +From DPDK version 16.04 the type of SZEDATA2 PMD is changed to PMD_PDEV. +SZEDATA2 device is automatically recognized during EAL initialization. +No special command line options are needed. -* ``DEVICE``: contains prefix ``eth_szedata2`` followed by numbers or letters, - must be unique for each virtual device +Kernel modules have to be loaded before running the DPDK application. -* ``dev_path``: Defines path to szedata2 device. - Value is valid path to szedata2 device. Example: +NFB card architecture +--------------------- - .. code-block:: console +The NFB cards are multi-port multi-queue cards, where (generally) data from any +Ethernet port may be sent to any queue. +They were historically represented in DPDK as a single port. - dev_path=/dev/szedataII0 +However, the new NFB-200G2QL card employs an add-on cable which allows to connect +it to two physical PCI-E slots at the same time (see the diagram below). +This is done to allow 200 Gbps of traffic to be transferred through the PCI-E +bus (note that a single PCI-E 3.0 x16 slot provides only 125 Gbps theoretical +throughput). -* ``rx_ifaces``: Defines which receive channels will be used. - For each channel is created one queue. Value is mask for selecting which - receive channels are required. Example: +Since each slot may be connected to a different CPU and therefore to a different +NUMA node, the card is represented as two ports in DPDK (each with half of the +queues), which allows DPDK to work with data from the individual queues on the +right NUMA node. - .. code-block:: console +.. figure:: img/szedata2_nfb200g_architecture.* + :align: center - rx_ifaces=0x3 + NFB-200G2QL high-level diagram -* ``tx_ifaces``: Defines which transmit channels will be used. - For each channel is created one queue. Value is mask for selecting which - transmit channels are required. Example: +Limitations +----------- - .. code-block:: console +The SZEDATA2 PMD does not support operations related to Ethernet ports +(link_up, link_down, set_mac_address, etc.). - tx_ifaces=0x3 +NFB cards employ multiple Ethernet ports. +Until now, Ethernet port-related operations were performed on all of them +(since the whole card was represented as a single port). +With NFB-200G2QL card, this is no longer viable (see above). + +Since there is no fixed mapping between the queues and Ethernet ports, and since +a single card can be represented as two ports in DPDK, there is no way of +telling which (if any) physical ports should be associated with individual +ports in DPDK. Example of usage ---------------- @@ -127,6 +129,34 @@ transmit channel: .. code-block:: console - $RTE_TARGET/app/testpmd -c 0xf -n 2 \ - --vdev 'eth_szedata20,dev_path=/dev/szedataII0,rx_ifaces=0x3,tx_ifaces=0x3' \ - -- --port-topology=chained --rxq=2 --txq=2 --nb-cores=2 + $RTE_TARGET/app/testpmd -l 0-3 -n 2 \ + -- --port-topology=chained --rxq=2 --txq=2 --nb-cores=2 -i -a + +Example output: + +.. code-block:: console + + [...] + EAL: PCI device 0000:06:00.0 on NUMA socket -1 + EAL: probe driver: 1b26:c1c1 rte_szedata2_pmd + PMD: Initializing szedata2 device (0000:06:00.0) + PMD: SZEDATA2 path: /dev/szedataII0 + PMD: Available DMA channels RX: 8 TX: 8 + PMD: resource0 phys_addr = 0xe8000000 len = 134217728 virt addr = 7f48f8000000 + PMD: szedata2 device (0000:06:00.0) successfully initialized + Interactive-mode selected + Auto-start selected + Configuring Port 0 (socket 0) + Port 0: 00:11:17:00:00:00 + Checking link statuses... + Port 0 Link Up - speed 10000 Mbps - full-duplex + Done + Start automatic packet forwarding + io packet forwarding - CRC stripping disabled - packets/burst=32 + nb forwarding cores=2 - nb forwarding ports=1 + RX queues=2 - RX desc=128 - RX free threshold=0 + RX threshold registers: pthresh=0 hthresh=0 wthresh=0 + TX queues=2 - TX desc=512 - TX free threshold=0 + TX threshold registers: pthresh=0 hthresh=0 wthresh=0 + TX RS bit threshold=0 - TXQ flags=0x0 + testpmd>