X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Fnfp.rst;h=020e37d131803cae0d63356489b7b4aadef1b8c7;hb=f5057be340e44f3edc0fe90fa875eb89a4c49b4f;hp=67e574e0a5306bbbf48d426f22323441b72a03a4;hpb=0b598c9c69ec29f088b3b5e455494df6db5a2a72;p=dpdk.git diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst index 67e574e0a5..020e37d131 100644 --- a/doc/guides/nics/nfp.rst +++ b/doc/guides/nics/nfp.rst @@ -1,33 +1,7 @@ -.. BSD LICENSE +.. SPDX-License-Identifier: BSD-3-Clause Copyright(c) 2015-2017 Netronome Systems, Inc. All rights reserved. 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 Intel Corporation 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. - NFP poll mode driver library ============================ @@ -75,7 +49,7 @@ compile it along with other DPDK PMDs even if no BSP was installed previously. Of course, a DPDK app will require such a BSP installed for using the NFP PMD, along with a specific NFP firmware application. -Default PMD configuration is at the **common_linuxapp configuration** file: +Default PMD configuration is at the **common_linux configuration** file: - **CONFIG_RTE_LIBRTE_NFP_PMD=y** @@ -99,32 +73,79 @@ bound to ``igb_uio`` or ``vfio-pci`` kernel drivers. Future DPDK versions will have a PMD able to work with the PF and VFs at the same time and with the PF implementing VF management along with other PF-only functionalities/offloads. -The PMD PF has extra work to do which will delay the DPDK app initialization. -This additional effort could be checking if a firmware is already available in -the device, uploading the firmware if necessary or configuring the Link state -properly when starting or stopping a PF port. Note that firmware upload is not -always necessary which is the main delay for NFP PF PMD initialization. +The PMD PF has extra work to do which will delay the DPDK app initialization +like uploading the firmware and configure the Link state properly when starting or +stopping a PF port. Since DPDK 18.05 the firmware upload happens when +a PF is initialized, which was not always true with older DPDK versions. Depending on the Netronome product installed in the system, firmware files should be available under ``/lib/firmware/netronome``. DPDK PMD supporting the -PF requires a specific link, ``/lib/firmware/netronome/nic_dpdk_default.nffw``, -which should be created automatically with Netronome's Agilio products -installation. +PF looks for a firmware file in this order: + + 1) First try to find a firmware image specific for this device using the + NFP serial number: + + serial-00-15-4d-12-20-65-10-ff.nffw + + 2) Then try the PCI name: + + pci-0000:04:00.0.nffw + + 3) Finally try the card type and media: + + nic_AMDA0099-0001_2x25.nffw + +Netronome's software packages install firmware files under ``/lib/firmware/netronome`` +to support all the Netronome's SmartNICs and different firmware applications. +This is usually done using file names based on SmartNIC type and media and with a +directory per firmware application. Options 1 and 2 for firmware filenames allow +more than one SmartNIC, same type of SmartNIC or different ones, and to upload a +different firmware to each SmartNIC. + + .. Note:: + Currently the NFP PMD supports using the PF with Agilio Basic Firmware. See + https://help.netronome.com/support/solutions for more information on the + various firmwares supported by the Netronome Agilio CX smartNIC. PF multiport support -------------------- -Some NFP cards support several physical ports with just one single PCI device. -The DPDK core is designed with a 1:1 relationship between PCI devices and DPDK -ports, so NFP PMD PF support requires handling the multiport case specifically. -During NFP PF initialization, the PMD will extract the information about the -number of PF ports from the firmware and will create as many DPDK ports as -needed. - -Because the unusual relationship between a single PCI device and several DPDK -ports, there are some limitations when using more than one PF DPDK port: there -is no support for RX interrupts and it is not possible either to use those PF -ports with the device hotplug functionality. +The NFP PMD can work with up to 8 ports on the same PF device. The number of +available ports is firmware and hardware dependent, and the driver looks for a +firmware symbol during initialization to know how many can be used. + +DPDK apps work with ports, and a port is usually a PF or a VF PCI device. +However, with the NFP PF multiport there is just one PF PCI device. Supporting +this particular configuration requires the PMD to create ports in a special way, +although once they are created, DPDK apps should be able to use them as normal +PCI ports. + +NFP ports belonging to same PF can be seen inside PMD initialization with a +suffix added to the PCI ID: wwww:xx:yy.z_port_n. For example, a PF with PCI ID +0000:03:00.0 and four ports is seen by the PMD code as: + + .. code-block:: console + + 0000:03:00.0_port_0 + 0000:03:00.0_port_1 + 0000:03:00.0_port_2 + 0000:03:00.0_port_3 + + .. Note:: + + There are some limitations with multiport support: RX interrupts and + device hot-plugging are not supported. + +PF multiprocess support +----------------------- + +Due to how the driver needs to access the NFP through a CPP interface, which implies +to use specific registers inside the chip, the number of secondary processes with PF +ports is limited to only one. + +This limitation will be solved in future versions but having basic multiprocess support +is important for allowing development and debugging through the PF using a secondary +process which will create a CPP bridge for user space tools accessing the NFP. System configuration