[dpdk-dev] [PATCH v3] doc: update NFP with PF support information
alejandro.lucero at netronome.com
Wed Sep 6 16:55:27 CEST 2017
It seems I did not commit with the right signature.
I will send it again. Sorry about this.
On Wed, Sep 6, 2017 at 3:47 PM, Alejandro Lucero <
alejandro.lucero at netronome.com> wrote:
> From: root <root at netronome.com>
> NFP PMD has now support for both, PF and VFs. This patch updates
> the guide and give some information about implications.
> Signed-off-by: root <root at netronome.com>
> doc/guides/nics/nfp.rst | 78 ++++++++++++++++++++++++++++++
> 1 file changed, 59 insertions(+), 19 deletions(-)
> diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst
> index c732fb1..99a3b76 100644
> --- a/doc/guides/nics/nfp.rst
> +++ b/doc/guides/nics/nfp.rst
> @@ -1,5 +1,5 @@
> .. BSD LICENSE
> - Copyright(c) 2015 Netronome Systems, Inc. All rights reserved.
> + Copyright(c) 2015-2017 Netronome Systems, Inc. All rights reserved.
> All rights reserved.
> Redistribution and use in source and binary forms, with or without
> @@ -38,31 +38,32 @@ up to 400 Gbps.
> This document explains how to use DPDK with the Netronome Poll Mode
> Driver (PMD) supporting Netronome's Network Flow Processor 6xxx
> +(NFP-6xxx) and Netronome's Flow Processor 4xxx (NFP-4xxx).
> -Currently the driver supports virtual functions (VFs) only.
> +NFP is a SRIOV capable device and the PMD driver supports the physical
> +function (PF) and virtual functions (VFs).
> -Before using the Netronome's DPDK PMD some NFP-6xxx configuration,
> +Before using the Netronome's DPDK PMD some NFP configuration,
> which is not related to DPDK, is required. The system requires
> -installation of **Netronome's BSP (Board Support Package)** which includes
> -Linux drivers, programs and libraries.
> +installation of **Netronome's BSP (Board Support Package)** along
> +with some specific NFP firmware application. Netronome's NSP ABI
> +version should be 0.20 or higher.
> -If you have a NFP-6xxx device you should already have the code and
> -documentation for doing this configuration. Contact
> +If you have a NFP device you should already have the code and
> +documentation for doing all this configuration. Contact
> **support at netronome.com** to obtain the latest available firmware.
> -The NFP Linux kernel drivers (including the required PF driver for the
> -NFP) are available on Github at
> +The NFP Linux netdev kernel driver for VFs is part of vanilla kernel
> +since kernel version 4.5, and support for the PF since kernel version
> +4.11. Support for older kernels can be obtained on Github at
> **https://github.com/Netronome/nfp-drv-kmods** along with build
> -DPDK runs in userspace and PMDs uses the Linux kernel UIO interface to
> -allow access to physical devices from userspace. The NFP PMD requires
> -the **igb_uio** UIO driver, available with DPDK, to perform correct
> +NFP PMD needs to be used along with UIO ``igb_uio`` or VFIO (``vfio-pci``)
> +Linux kernel driver.
> Building the software
> @@ -71,7 +72,7 @@ Netronome's PMD code is provided in the
> **drivers/net/nfp** directory.
> Although NFP PMD has Netronome´s BSP dependencies, it is possible to
> compile it along with other DPDK PMDs even if no BSP was installed before.
> Of course, a DPDK app will require such a BSP installed for using the
> -NFP PMD.
> +NFP PMD, along with a specific NFP firmware application.
> Default PMD configuration is at **common_linuxapp configuration** file:
> @@ -87,14 +88,53 @@ Driver compilation and testing
> Refer to the document :ref:`compiling and testing a PMD for a NIC
> for details.
> +Using the PF
> +NFP PMD has support for using the NFP PF as another DPDK port, but it
> does not
> +have any functionality for controlling VFs. In fact, it is not possible
> to use
> +the PMD with the VFs if the PF is being used by DPDK, that is, with the
> NFP PF
> +bound to ``igb_uio`` or ``vfio-pci`` kernel drivers. Future DPDK version
> +have a PMD able to work with the PF and VFs at the same time and with the
> +implementing VF management along with other PF-only
> +The PMD PF has extra work to do which will delay the DPDK app
> +like checking if a firmware is already available in the device, uploading
> +firmware if necessary, and configure 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.
> +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_
> +which should be created automatically with Netronome's Agilio products
> +PF multiport support
> +Some NFP cards support several physical ports with just one single PCI
> +DPDK core is designed with the 1:1 relationship between PCI devices and
> +ports, so NFP PMD PF support requires handling the multiport case
> +During NFP PF initialization, the PMD will extract the information about
> +number of PF ports from the firmware and will create as many DPDK ports as
> +Because the unusual relationship between a single PCI device and several
> +ports, there are some limitations when using more than one PF DPDK ports:
> +is no support for RX interrupts and it is not possible either to use
> those PF
> +ports with the device hotplug functionality.
> System configuration
> -#. **Enable SR-IOV on the NFP-6xxx device:** The current NFP PMD works
> - Virtual Functions (VFs) on a NFP device. Make sure that one of the
> - Function (PF) drivers from the above Github repository is installed and
> - loaded.
> +#. **Enable SR-IOV on the NFP device:** The current NFP PMD supports the
> PF and
> + the VFs on a NFP device. However, it is not possible to work with both
> at the
> + same time because the VFs require the PF being bound to the NFP PF
> + netdev driver. Make sure you are working with a kernel with NFP PF
> support or
> + get the drivers from the above Github repository and follow the
> + for building and installing it.
> Virtual Functions need to be enabled before they can be used with the
> Before enabling the VFs it is useful to obtain information about the
More information about the dev