Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/8531/?format=api
https://patches.dpdk.org/api/patches/8531/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/1446467130-300-9-git-send-email-alejandro.lucero@netronome.com/", "project": { "id": 1, "url": "https://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1446467130-300-9-git-send-email-alejandro.lucero@netronome.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1446467130-300-9-git-send-email-alejandro.lucero@netronome.com", "date": "2015-11-02T12:25:28", "name": "[dpdk-dev,v5,8/9] nfp: adding nic guide", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "dc476529a126b97af1872201bb23b454c62d8ec0", "submitter": { "id": 270, "url": "https://patches.dpdk.org/api/people/270/?format=api", "name": "Alejandro Lucero", "email": "alejandro.lucero@netronome.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dpdk/patch/1446467130-300-9-git-send-email-alejandro.lucero@netronome.com/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/8531/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/8531/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id CBAFB9191;\n\tMon, 2 Nov 2015 13:25:37 +0100 (CET)", "from ubuntu (host217-39-174-19.in-addr.btopenworld.com\n\t[217.39.174.19]) by dpdk.org (Postfix) with SMTP id E17228E8B\n\tfor <dev@dpdk.org>; Mon, 2 Nov 2015 13:25:31 +0100 (CET)", "by ubuntu (Postfix, from userid 5466)\n\tid 440C2EA780; Mon, 2 Nov 2015 12:25:30 +0000 (GMT)" ], "From": "\"Alejandro.Lucero\" <alejandro.lucero@netronome.com>", "To": "dev@dpdk.org", "Date": "Mon, 2 Nov 2015 12:25:28 +0000", "Message-Id": "<1446467130-300-9-git-send-email-alejandro.lucero@netronome.com>", "X-Mailer": "git-send-email 1.7.9.5", "In-Reply-To": "<1446467130-300-1-git-send-email-alejandro.lucero@netronome.com>", "References": "<1446467130-300-1-git-send-email-alejandro.lucero@netronome.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "quoted-printable", "Subject": "[dpdk-dev] =?utf-8?q?=5BPATCH_v5_8/9=5D_nfp=3A_adding_nic_guide?=", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "patches and discussions about DPDK <dev.dpdk.org>", "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://dpdk.org/ml/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "From: \"Alejandro.Lucero\" <alejandro.lucero@netronome.com>\n\nSigned-off-by: Alejandro.Lucero <alejandro.lucero@netronome.com>\nSigned-off-by: Rolf.Neugebauer <rolf.neugebauer@netronome.com>\n---\n doc/guides/nics/index.rst | 1 +\n doc/guides/nics/nfp.rst | 189 +++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 190 insertions(+)\n create mode 100644 doc/guides/nics/nfp.rst", "diff": "diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst\nindex 2d4936d..1a7bffe 100644\n--- a/doc/guides/nics/index.rst\n+++ b/doc/guides/nics/index.rst\n@@ -46,6 +46,7 @@ Network Interface Controller Drivers\n intel_vf\n mlx4\n mlx5\n+ nfp\n virtio\n vmxnet3\n pcap_ring\ndiff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst\nnew file mode 100644\nindex 0000000..bb2afda\n--- /dev/null\n+++ b/doc/guides/nics/nfp.rst\n@@ -0,0 +1,189 @@\n+.. BSD LICENSE\n+ Copyright(c) 2015 Netronome Systems, Inc. All rights reserved.\n+ All rights reserved.\n+\n+ Redistribution and use in source and binary forms, with or without\n+ modification, are permitted provided that the following conditions\n+ are met:\n+\n+ * Redistributions of source code must retain the above copyright\n+ notice, this list of conditions and the following disclaimer.\n+ * Redistributions in binary form must reproduce the above copyright\n+ notice, this list of conditions and the following disclaimer in\n+ the documentation and/or other materials provided with the\n+ distribution.\n+ * Neither the name of Intel Corporation nor the names of its\n+ contributors may be used to endorse or promote products derived\n+ from this software without specific prior written permission.\n+\n+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+\n+NFP poll mode driver library\n+============================\n+\n+Netronome's sixth generation of flow processors pack 216 programmable\n+cores and over 100 hardware accelerators that uniquely combine packet,\n+flow, security and content processing in a single device that scales\n+up to 400 Gbps.\n+\n+This document explains how to use DPDK with the Netronome Poll Mode\n+Driver (PMD) supporting Netronome's Network Flow Processor 6xxx\n+(NFP-6xxx).\n+\n+Currently the driver supports virtual functions (VFs) only.\n+\n+Dependencies\n+------------\n+\n+Before using the Netronome's DPDK PMD some NFP-6xxx configuration,\n+which is not related to DPDK, is required. The system requires\n+installation of **Netronome's BSP (Board Support Package)** which includes\n+Linux drivers, programs and libraries.\n+\n+If you have a NFP-6xxx device you should already have the code and\n+documentation for doing this configuration. Contact\n+**support@netronome.com** to obtain the latest available firmware.\n+\n+The NFP Linux kernel drivers (including the required PF driver for the\n+NFP) are available on Github at\n+**https://github.com/Netronome/nfp-drv-kmods** along with build\n+instructions.\n+\n+Using Netronome´s NFP PMD requires to have the Netronome´s BSP module\n+loaded.\n+\n+Building the software\n+---------------------\n+\n+Netronome's PMD code is provided in the **drivers/net/nfp** directory.\n+This PMD is included as part of the DPDK **common_linuxapp configuration**\n+file, but it is not enabled by default. If it is enabled without a BSP\n+installed in the system, the compilation will fail.\n+\n+For enabling the PMD, just modifies the **common_linuxapp** file with:\n+\n+- **CONFIG_RTE_LIBRTE_NFP_PMD=y**\n+\n+Once DPDK is built all the DPDK apps and examples include support for\n+the NFP PMD.\n+\n+System configuration\n+--------------------\n+\n+Using the NFP PMD is not different to using other PMDs. Usual steps are:\n+\n+#. **Configure hugepages:** All major Linux distributions have the hugepages\n+ functionality enabled by default. By default this allows the system uses for\n+ working with transparent hugepages. But in this case some hugepages need to\n+ be created/reserved for use with the DPDK through the hugetlbfs file system.\n+ First the virtual file system need to be mounted:\n+\n+ .. code-block:: console\n+\n+ mount -t hugetlbfs none /mnt/hugetlbfs\n+\n+ The command uses the common mount point for this file system and it needs to\n+ be created if necessary.\n+\n+ Configuring hugepages is performed via sysfs:\n+\n+ .. code-block:: console\n+\n+ /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages\n+\n+ This sysfs file is used to specify the number of hugepages to reserve.\n+ For example:\n+\n+ .. code-block:: console\n+\n+ echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages\n+\n+ This will reserve 2GB of memory using 1024 2MB hugepages. The file may be\n+ read to see if the operation was performed correctly:\n+\n+ .. code-block:: console\n+\n+ cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages\n+\n+ The number of unused hugepages may also be inspected.\n+\n+ Before executing the DPDK app it should match the value of nr_hugepages.\n+\n+ .. code-block:: console\n+\n+ cat /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages\n+\n+ The hugepages reservation should be performed at system initialisation and\n+ it is usual to use a kernel parameter for configuration. If the reservation\n+ is attempted on a busy system it will likely fail. Reserving memory for\n+ hugepages may be done adding the following to the grub kernel command line:\n+\n+ .. code-block:: console\n+\n+ default_hugepagesz=1M hugepagesz=2M hugepages=1024\n+\n+ This will reserve 2GBytes of memory using 2Mbytes huge pages.\n+\n+ Finally, for a NUMA system the allocation needs to be made on the correct\n+ NUMA node. In a DPDK app there is a master core which will (usually) perform\n+ memory allocation. It is important that some of the hugepages are reserved\n+ on the NUMA memory node where the network device is attached. This is because\n+ of a restriction in DPDK by which TX and RX descriptors rings must be created\n+ on the master code.\n+\n+ Per-node allocation of hugepages may be inspected and controlled using sysfs.\n+ For example:\n+\n+ .. code-block:: console\n+\n+ cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages\n+\n+ For a NUMA system there will be a specific hugepage directory per node\n+ allowing control of hugepage reservation. A common problem may occur when\n+ hugepages reservation is performed after the system has been working for\n+ some time. Configuration using the global sysfs hugepage interface will\n+ succeed but the per-node allocations may be unsatisfactory.\n+\n+ The number of hugepages that need to be reserved depends on how the app uses\n+ TX and RX descriptors, and packets mbufs.\n+\n+#. **Enable SR-IOV on the NFP-6xxx device:** The current NFP PMD works with\n+ Virtual Functions (VFs) on a NFP device. Make sure that one of the Physical\n+ Function (PF) drivers from the above Github repository is installed and\n+ loaded.\n+\n+ Virtual Functions need to be enabled before they can be used with the PMD.\n+ Before enabling the VFs it is useful to obtain information about the\n+ current NFP PCI device detected by the system:\n+\n+ .. code-block:: console\n+\n+ lspci -d19ee:\n+\n+ Now, for example, configure two virtual functions on a NFP-6xxx device\n+ whose PCI system identity is \"0000:03:00.0\":\n+\n+ .. code-block:: console\n+\n+ echo 2 > /sys/bus/pci/devices/0000:03:00.0/sriov_numvfs\n+\n+ The result of this command may be shown using lspci again:\n+\n+ .. code-block:: console\n+\n+ lspci -d19ee: -k\n+\n+ Two new PCI devices should appear in the output of the above command. The\n+ -k option shows the device driver, if any, that devices are bound to.\n+ Depending on the modules loaded at this point the new PCI devices may be\n+ bound to nfp_netvf driver.\n", "prefixes": [ "dpdk-dev", "v5", "8/9" ] }{ "id": 8531, "url": "