doc: update NFP with PF support information

NFP PMD has now support for both, PF and VFs. This patch updates
the guide and give some information about implications.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
This commit is contained in:
Alejandro Lucero 2017-09-06 16:14:16 +01:00 committed by Ferruh Yigit
parent ad60bca348
commit d625beafc8

View File

@ -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).
(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).
Dependencies
------------
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@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
instructions.
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
initialization.
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 <pmd_build_and_test>`
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 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
like checking if a firmware is already available in the device, uploading the
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_dpdk_default.nffw``,
which should be created automatically with Netronome's Agilio products
installation.
PF multiport support
--------------------
Some NFP cards support several physical ports with just one single PCI device.
DPDK core is designed with the 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 ports: there
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 with
Virtual Functions (VFs) on a NFP device. Make sure that one of the Physical
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 Linux
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 instructions
for building and installing it.
Virtual Functions need to be enabled before they can be used with the PMD.
Before enabling the VFs it is useful to obtain information about the