Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/104679/?format=api
http://patchwork.dpdk.org/api/patches/104679/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20211124171609.3101896-1-ferruh.yigit@intel.com/", "project": { "id": 1, "url": "http://patchwork.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": "<20211124171609.3101896-1-ferruh.yigit@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20211124171609.3101896-1-ferruh.yigit@intel.com", "date": "2021-11-24T17:16:08", "name": "[v3,1/2] doc: note KNI alternatives", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "c8e9e42139fd0e5741aa96992dd9a6f7d87c8243", "submitter": { "id": 324, "url": "http://patchwork.dpdk.org/api/people/324/?format=api", "name": "Ferruh Yigit", "email": "ferruh.yigit@intel.com" }, "delegate": { "id": 1, "url": "http://patchwork.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20211124171609.3101896-1-ferruh.yigit@intel.com/mbox/", "series": [ { "id": 20759, "url": "http://patchwork.dpdk.org/api/series/20759/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=20759", "date": "2021-11-24T17:16:08", "name": "[v3,1/2] doc: note KNI alternatives", "version": 3, "mbox": "http://patchwork.dpdk.org/series/20759/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/104679/comments/", "check": "success", "checks": "http://patchwork.dpdk.org/api/patches/104679/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 99094A0C52;\n\tWed, 24 Nov 2021 18:21:20 +0100 (CET)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 350E540DF5;\n\tWed, 24 Nov 2021 18:21:20 +0100 (CET)", "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id BE26A40696\n for <dev@dpdk.org>; Wed, 24 Nov 2021 18:21:18 +0100 (CET)", "from orsmga007.jf.intel.com ([10.7.209.58])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Nov 2021 09:16:18 -0800", "from silpixa00399752.ir.intel.com (HELO\n silpixa00399752.ger.corp.intel.com) ([10.237.222.27])\n by orsmga007.jf.intel.com with ESMTP; 24 Nov 2021 09:16:14 -0800" ], "X-IronPort-AV": [ "E=McAfee;i=\"6200,9189,10178\"; a=\"296135641\"", "E=Sophos;i=\"5.87,260,1631602800\"; d=\"scan'208\";a=\"296135641\"", "E=Sophos;i=\"5.87,260,1631602800\"; d=\"scan'208\";a=\"497751700\"" ], "X-ExtLoop1": "1", "From": "Ferruh Yigit <ferruh.yigit@intel.com>", "To": "", "Cc": "Ferruh Yigit <ferruh.yigit@intel.com>, dev@dpdk.org,\n Olivier Matz Olivier Matz <olivier.matz@6wind.com>,\n David Marchand David Marchand <david.marchand@redhat.com>,\n Stephen Hemminger Stephen Hemminger <stephen@networkplumber.org>,\n Elad Nachman <eladv6@gmail.com>, Igor Ryzhov <iryzhov@nfware.com>,\n Dan Gora <dg@adax.com>", "Subject": "[PATCH v3 1/2] doc: note KNI alternatives", "Date": "Wed, 24 Nov 2021 17:16:08 +0000", "Message-Id": "<20211124171609.3101896-1-ferruh.yigit@intel.com>", "X-Mailer": "git-send-email 2.31.1", "In-Reply-To": "<20210623173142.3803801-1-ferruh.yigit@intel.com>", "References": "<20210623173142.3803801-1-ferruh.yigit@intel.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org" }, "content": "Add more information on alternatives of KNI and the cons of KNI against\nthese alternatives.\n\nSigned-off-by: Ferruh Yigit <ferruh.yigit@intel.com>\n---\nCc: Olivier Matz Olivier Matz <olivier.matz@6wind.com>\nCc: David Marchand David Marchand <david.marchand@redhat.com>\nCc: Stephen Hemminger Stephen Hemminger <stephen@networkplumber.org>\nCc: Elad Nachman <eladv6@gmail.com>\nCc: Igor Ryzhov <iryzhov@nfware.com>\nCc: Dan Gora <dg@adax.com>\n\nv3:\n* reference tap document directly instead of adding label to it.\n---\n .../prog_guide/kernel_nic_interface.rst | 34 +++++++++++++++++--\n 1 file changed, 31 insertions(+), 3 deletions(-)", "diff": "diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst b/doc/guides/prog_guide/kernel_nic_interface.rst\nindex 1ce03ec1a374..f5a8b7c0782c 100644\n--- a/doc/guides/prog_guide/kernel_nic_interface.rst\n+++ b/doc/guides/prog_guide/kernel_nic_interface.rst\n@@ -6,16 +6,44 @@\n Kernel NIC Interface\n ====================\n \n+.. Note::\n+\n+ :ref:`virtio_user_as_exceptional_path` alternative is the preferred way for\n+ interfacing with the Linux network stack as it is an in-kernel solution and\n+ has similar performance expectations.\n+\n The DPDK Kernel NIC Interface (KNI) allows userspace applications access to the Linux* control plane.\n \n-The benefits of using the DPDK KNI are:\n+KNI provides an interface with the kernel network stack and allows management of\n+DPDK ports using standard Linux net tools such as ``ethtool``, ``ifconfig`` and\n+``tcpdump``.\n+\n+The main use case of KNI is to get/receive exception packets from/to Linux network\n+stack while main datapath IO is done bypassing the networking stack.\n+\n+There are other alternatives to KNI, all are available in the upstream Linux:\n+\n+#. :ref:`virtio_user_as_exceptional_path`\n+\n+#. :doc:`../nics/tap` as wrapper to `Linux tun/tap\n+ <https://www.kernel.org/doc/Documentation/networking/tuntap.txt>`_\n+\n+The benefits of using the KNI against alternatives are:\n \n * Faster than existing Linux TUN/TAP interfaces\n (by eliminating system calls and copy_to_user()/copy_from_user() operations.\n \n-* Allows management of DPDK ports using standard Linux net tools such as ethtool, ifconfig and tcpdump.\n+The cons of the KNI are:\n+\n+* It is out-of-tree Linux kernel module and it can't be distributed as binary as\n+ part of operating system vendor DPDK packages. This makes it harder to\n+ consume, although it is always possible to compile it from the source code.\n+\n+* As it shares memory between userspace and kernelspace, and kernel part\n+ directly uses input provided by userspace, it is not safe. This makes hard to\n+ upstream the module.\n \n-* Allows an interface with the kernel network stack.\n+* Only a subset of net devices control commands are supported by KNI.\n \n The components of an application using the DPDK Kernel NIC Interface are shown in :numref:`figure_kernel_nic_intf`.\n \n", "prefixes": [ "v3", "1/2" ] }{ "id": 104679, "url": "