DPDK patches and discussions
 help / color / mirror / Atom feed
From: Alejandro Lucero <alejandro.lucero@netronome.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v2 16/18] doc: update NFP with PF support information
Date: Fri,  1 Sep 2017 15:12:19 +0100	[thread overview]
Message-ID: <1504275141-35448-17-git-send-email-alejandro.lucero@netronome.com> (raw)
In-Reply-To: <1504275141-35448-1-git-send-email-alejandro.lucero@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: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 doc/guides/nics/nfp.rst | 77 +++++++++++++++++++++++++++++++++++++------------
 1 file changed, 58 insertions(+), 19 deletions(-)

diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst
index c732fb1..45dbbc3 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).
+(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 vesion 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:
 
@@ -88,13 +89,51 @@ Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and
 for details.
 
 
+Using the PF
+------------
+
+NFP PMD has support for using the NFP PF as another DPDK port, but it has not
+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, this is, 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 wih 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's 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 to handle 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 interrrupts 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
-- 
1.9.1

  parent reply	other threads:[~2017-09-01 14:12 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-01 14:12 [dpdk-dev] [PATCH v2 00/18] net/nfp: add PF support Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 01/18] net/nfp: add NSP user space interface Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 02/18] net/nfp: add specific PF probe function Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 03/18] net/nfp: add support for new PCI id Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 04/18] net/nfp: add NSP support for commands Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 05/18] net/nfp: add NSP FW upload command Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 06/18] net/nfp: add NSP symbol resolution command Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 07/18] net/nfp: add FW upload logic Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 08/18] net/nfp: add support for vnic config bar mapping Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 09/18] net/nfp: add support for vNIC Rx/Tx bar mappings Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 10/18] net/nfp: support PF devices inside PMD initialization Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 11/18] net/nfp: allocate ethernet device from PF probe function Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 12/18] net/nfp: support PF multiport Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 13/18] net/nfp: add NSP support for HW link configuration Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 14/18] net/nfp: add support for HW port " Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 15/18] net/nfp: read PF port MAC addr using NSP Alejandro Lucero
2017-09-01 14:12 ` Alejandro Lucero [this message]
2017-09-04 14:20   ` [dpdk-dev] [PATCH v2 16/18] doc: update NFP with PF support information Mcnamara, John
2017-09-04 16:03     ` Alejandro Lucero
2017-09-06  9:53       ` Ferruh Yigit
2017-09-06 10:43         ` Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 17/18] doc: update release notes with NFP PF support Alejandro Lucero
2017-09-04 16:12   ` Mcnamara, John
2017-09-19  9:53   ` Ferruh Yigit
2017-09-19 10:49     ` Alejandro Lucero
2017-09-01 14:12 ` [dpdk-dev] [PATCH v2 18/18] doc: create different features files for NFP drivers Alejandro Lucero
2017-09-04 16:29   ` Mcnamara, John
2017-09-06 16:15 ` [dpdk-dev] [PATCH v2 00/18] net/nfp: add PF support Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1504275141-35448-17-git-send-email-alejandro.lucero@netronome.com \
    --to=alejandro.lucero@netronome.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).