From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02hn0231.outbound.protection.outlook.com [104.47.4.231]) by dpdk.org (Postfix) with ESMTP id 007491B2C4 for ; Thu, 18 Jan 2018 11:02:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=BALlpME9x76DVSmQRGaCp9GZzJSE5jtNyUhZhP7Kwoc=; b=IRgQ6TJjlfsq1hze4qa7wxVxoZD7dULZ+vgkdrpyVA4HMXSuLoEnk/sFXGx4MI59KUmqKN8Z6lenUsomms1xePbPIHdrt5Z5JCxA7IUQcKXweoQ5upK+blZbadYhCdik/PPp+T6PsvCf5UOkFysEim6yLjrJSMNoBsUC54qvtbY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=matan@mellanox.com; Received: from mellanox.com (37.142.13.130) by AM6PR0502MB3797.eurprd05.prod.outlook.com (2603:10a6:209:a::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.428.17; Thu, 18 Jan 2018 10:02:05 +0000 From: Matan Azrad To: Ferruh Yigit Cc: Thomas Monjalon , dev@dpdk.org, stephen@networkplumber.org, Adrien Mazarguil Date: Thu, 18 Jan 2018 10:01:45 +0000 Message-Id: <1516269709-15252-5-git-send-email-matan@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1516269709-15252-1-git-send-email-matan@mellanox.com> References: <1516265026-6469-1-git-send-email-matan@mellanox.com> <1516269709-15252-1-git-send-email-matan@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR0202CA0033.eurprd02.prod.outlook.com (2603:10a6:803:14::46) To AM6PR0502MB3797.eurprd05.prod.outlook.com (2603:10a6:209:a::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 34a33dab-f7b7-4e79-2502-08d55e5a87e8 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:AM6PR0502MB3797; X-Microsoft-Exchange-Diagnostics: 1; AM6PR0502MB3797; 3:6oT5HwDYEg5T/J/3cppQvykBNKJqlp/oMTLSd0p12KuL1GQfoaU8faZoV5Ti/vZU0SHQx//CnQeGqJvtw8M5ui6MCSkGncnjhVJtPbxe17gLL6xQEkBtnYth2rfewfXGB5rS3odH3mRU1l/+BcZlP1PJKN2ojUiGX5sGkYFCEF6H16uAM4CxxuLb87GmB+c+QXevQ+SrQosFuE9BgR2uPNNqDz17xvzh30oZW6v1oYQTjNAgdQvI0oUNKp+Yt/rQ; 25:5yuMT6u/fAUKTsVC0HYoJej5+mQ8XfZPFAcMUe2P1roi1ZH+5ZdM68rdGZIVS8qNacpxgaPGrwd9/Hp6CrVpCP1hjIX/NZYOptd+kfj+gWT353LmsDt+1omyQoMVQICaBrnqhL0dLLKvXuDcIakGATHFuPBN9VnPVwpSLyzrjcPaNKzcqEcZssGEhGfrDoIWo7+MxTPReetbUepmw0eaIFDn6GcdKvLccLxvNY2nI+PG/yoeaAsOSQOmrvS9V8XNuAAjRl33lT6G1E1LTBxeIutHRH6HOZ1syw63kg4wGRRR1W009l3oeymKRh29VGFjIzck2mGNDtbhoxRyjzImXQ==; 31:ai+kufAdJznQ5vFa7k1pZMz+MqC7ljTBlkVSfZh7APvU0O9KUozMHEM3ne/4e0QVbhdcphvrA5BidXHq21l0qxOYFHJeczbMSPyc9Ch9QaR96jnuq0gwL6z7v04GPrY80eQm2x9MrjNtKeU+Ri4TSkkGqw3v6QZ/JwaiDKsi7CLwdnOpivV7eeD6m5gY1u8Ib9LHIFlJkFbA4c/T3kW7zDfKa5t3IwzBXLP4lnlyukw= X-MS-TrafficTypeDiagnostic: AM6PR0502MB3797:|AM6PR0502MB3797: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM6PR0502MB3797; 20:Ku3k733o2lT8fZm5uJJvVBJRSHwR/CyPHrF8BCT9/CzCOsYlaHHbwkucvK/WO9eZWW9MI+vEcWU5E1ouuCCYjWdzXy8wa1JcX45xDs61xlf/KVBejfWnoF87CoIBayEqMGIGqKg2x3mAyh7IKWQ/MDqRcsaMWJIqt/wkoAiEDyQl4SBv8O+tDHAAJHvWb5KIL2ynnAWr6AAER+W39t6artAczefmLPOm8rkfmj9QKnXEysuORKKt19or1OJFiKKJr3wYr6RHzWMHAMvrpIGAi6wwxw481M9PEGgkWUFvCqKWXGOmOm/Ktu43DfAA08so2aZBZ/C+tGV/NLaz8HVnQiZmcBu16vhBmEKZjXH9ctCX7pQw5HCm1x33XTA5/ysVrn2kn02RHPYUbiHK7BcObtlh8xa/wXXcKkhpniMNr97Tw2roOOkrBgIcUz/JpXDWcX8dlgd9JO44obHhnhO8uSscUxk7q6cYYs00Zntu3z2XSOz2jWkMqGB5rkIlB/xi; 4:lTklav3tj4UOJEaCXd49/B55QAjh9JXw4xU8aC3eWpN2Vb+73ki5DSNI9fvUBoisFJLobImq/Gqf59jPNUlzBsB9q9Yc4Vsxg6ozEEGo/eTEaY8oarrZlkVynIEryqXu+yWilu0J6jDuMXkwMECh5GpOe35n9teK0wnZ/4tAfgSJb/yAO8cJSgyrKVHReP/Y7gC3GvnBNS+INaSdKiPdNlylwvcjwALg9uZbqXt7NWI+H6Lbr5P18NXcDYa9dkjrFFfXo5PEYEzpVfvE1/MDq7GwDCNziSV+k26lHC6ptRgoi5ZjV6OQih0pceq61XZq/6ALSjfZPXUR1fiBMSGvVFjyaN4euvvt2j/rX+1VxLs= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(28532068793085)(66839620246622); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(10201501046)(3231023)(2232055)(944501161)(3002001)(93006095)(93001095)(6055026)(6041268)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:AM6PR0502MB3797; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM6PR0502MB3797; X-Forefront-PRVS: 05568D1FF7 X-Forefront-Antispam-Report: SFV:SPM; SFS:(10009020)(39860400002)(366004)(39380400002)(346002)(396003)(376002)(199004)(189003)(6116002)(53936002)(76176011)(386003)(4720700003)(59450400001)(26005)(7736002)(305945005)(50466002)(66066001)(2906002)(47776003)(966005)(16586007)(54906003)(8676002)(45080400002)(478600001)(316002)(21086003)(2950100002)(25786009)(48376002)(52116002)(6666003)(51416003)(7696005)(6916009)(81166006)(81156014)(8936002)(4326008)(86362001)(16526018)(6306002)(97736004)(68736007)(36756003)(50226002)(5660300001)(105586002)(3846002)(69596002)(106356001)(33026002)(55016002)(59010400001); DIR:OUT; SFP:1501; SCL:5; SRVR:AM6PR0502MB3797; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM6PR0502MB3797; 23:FjBcUeXjLy028ul+f/MmEXj+KeyeTS33n/W9HmY?= =?us-ascii?Q?RRFhH7IHlyomFYgCBNzDlF0+80U1Pky7T6Ftaw6DR94eEnVF3CL43SAtFL2O?= =?us-ascii?Q?65qpmBD3YfO3Cpzx+F4M9CXWVQ1tvmS4rn4/XA3xE3vgnKr27eBu80z0si6H?= =?us-ascii?Q?eMmYolbNmmMSnmQyqTX4Fy0ndHGDhaVCkV0xJ+rJyQSdeoV7drs8nNnh8OGK?= =?us-ascii?Q?Ll5I5GoCloIFLQHLVbrK5PzMIyPwRYkG8vSRq1MsLZW+cYzh9M4AO6NXLQq2?= =?us-ascii?Q?eVVQHuLWR9mw0mkFQgOHMhJmWFADoJH80wLokEQ1F62jgDx0YezvsiOuqyZD?= =?us-ascii?Q?qIX7xf+OBrv8PfFO6tB6j+EgC6c+FsFIbeUs5xvZERDFgAn0NWjIJBPVJ0tj?= =?us-ascii?Q?LcLQ/ZECtCR+BuFgpXVATyX+mETjk4UjrYTmb+d/EwRPhMnEagLyxLHRilTI?= =?us-ascii?Q?Ls+X0hJFfQ7F+c1IzTaz6XDok6EVYmo24EcyN7y2moxyTOXaYnP0xqRmgnVC?= =?us-ascii?Q?OTse2trmGXgqnXyJBYmBR1obYgJrlQZ9zFU/ZJt5rVBTVTPr8U6LemMXovSL?= =?us-ascii?Q?A2XwUVUXcQgVGWc8TkDBZoDMv/JYmyEEAYDpdSL3clVYG19/R6ARWyRwXCLm?= =?us-ascii?Q?M7EKkQrR5GSUFGj24HmG5cPaDwt0O7Yazbnoga+M08QYbkkUNw9nq+H8YUdd?= =?us-ascii?Q?exRg++m5vmlE/ah9gFEElMtdeDdCpYG7XZGPKXqw4RNCl2nJgHt3mA0EEWtK?= =?us-ascii?Q?uecBJF1OjH/WstRkNhvQRTfBFNOK5w9Y4dSF9YUbYnfHX3BnpXZ+OwiIo95j?= =?us-ascii?Q?ERG+4ArQEu5z++xgulCDaRjdd68sdDWaCLlUQVQPjrb45c+4iYThgXaGt+js?= =?us-ascii?Q?xaNZnIIxl4HeSDGLoAB7025oA6qWZIwWXFAWdn5RGPguVAmnoD0QuYpzHSTr?= =?us-ascii?Q?cSKVQXW4xTvHs8CCDWVBowdotuH+QAjUyKJV5lcSaxIR1AyLLKnq/hQ5USGy?= =?us-ascii?Q?t9lndU0dnje2V3d9QXepQhjev6aZXpmWt87gHS1ZmoMQnnmB19KssQ60Ph1A?= =?us-ascii?Q?UQgvrvwLkGeFHfQfdWJh82klqyQ3LFEaMOeKhcQfBvr+XzjZhT61FMxcrstd?= =?us-ascii?Q?/H5PZQdwgyso7lAEbq+YFLo5TOgiq4ROQ/mWJGYa44SArxsoItg5OSy1281a?= =?us-ascii?Q?Zr8cXR3JDN78FTdpay3y7zSPIlTMYxiMOLRpFGi2lwoPVID1tQgYN1eWfJT3?= =?us-ascii?Q?0KYac2f/v+vpad4FkKL6it6+dRnidePJtfVRdTN+RTXY+wqrgasHRqr3haWT?= =?us-ascii?Q?jrtmIK8+MgWxFCHZUVjiAz8eQzkm0y7sH9SboVx9vTaOM?= X-Microsoft-Exchange-Diagnostics: 1; AM6PR0502MB3797; 23:4hxslf+VkqSlJyPrIlMy3MUp2JDNnOW+KOfv4YggmY+aAcdqBc+9hUNqtb3QxhRgRiNP6ajrZPJqC2YfRPbMqrGS1p/Me0FOwZBeIj1bhhuE8QK1gXwpIIcfENRJkcfrIxmW8OM7uVLXtWS4DK09zQ==; 6:GeCnaImesuDx3VL9TyGOBUeQJ0DSWkkwJEo5Af6AJUf0pCh9OILH7j8iA1Gz/DI8wYAEAzbyFLD4a60IGrlNC3YWFvDA7X/jhOWHGxAviw0lLtcHq4pjn5OwrPso4FwgFRBCgfM6vFf5Gl9kHApkLLzF/w1NuoDLL+fIsdT5MIDiCVPVV9coDab4XW8noETlYf5s88c9atSHoeE7dFa1fva8q6FKPwGpEt1I+Hlmmokbupq3J7hD1685nIIATJ6ZDcXLN7BrIUqn6CtwuKAslUFASjioy6mwuO8GFIPJq6P4/rnvG1IXZfWVDdqytRSCVSrZsPCkDYISaU59/kCl4cjuSrjxmQ2nMLJ5qwkXYJ4=; 5:L8gIjPLuHuPNCRy4ZrH8BBwt/hhv777JTGrY9k8YnoLUqFIj5xZ/s6f5HtkZdXNMQ6RLmM/a1S0ZkVjVdzIEDPCHE70ipypA5WV2Y4CDB7ghR/0Wm0y5y4QEl6GaezAOb3L7bQi3w3kjreG4pdGdvSg017KQ5/7rasKgCzwEMJg= X-Microsoft-Antispam-Message-Info: Y0pjOtpR0Ba6QLCRFXmRfhd4HKL9cNLsw1ejaDQQkcu1Odty94pS09MHd520rPmKXpVV3i/NTWHNrkZPyuyKwItT3IwV86EzgVRara1kPxKJJELci3oeNpjBKOGQTmyU SpamDiagnosticOutput: 1:22 X-Microsoft-Exchange-Diagnostics: 1; AM6PR0502MB3797; 7:AKN0ZVJSmzyBVgSVHSIFO0CAA4oJsZ9gCDLMs+1DrgMb6m9vCOJnVm0uicDoViCDn1+Lv/YQdcXNnQe6YMAhcY8+EED/LR9kWY+NjSoUFnBm8aaR/oCneVzoSDgS1KjbQ3rHUBeAh8PrAKiDqBpAyBJewOUsIIo7xXzeh6oQBHdkR1L9a2B8l7cnrtvYe12Xaw/rW1+kGJq8y+6hcsig8cw3Z+SR9p6giMgh/H/ROH1wSAbbtDPMKpNj7lG3iTIg X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2018 10:02:05.5498 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 34a33dab-f7b7-4e79-2502-08d55e5a87e8 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0502MB3797 Subject: [dpdk-dev] [PATCH v5 4/8] net/vdev_netvsc: introduce Hyper-V platform driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2018 10:02:15 -0000 This patch lays the groundwork for this driver (draft documentation, copyright notices, code base skeleton and build system hooks). While it can be successfully compiled and invoked, it's an empty shell at this stage. Signed-off-by: Adrien Mazarguil Signed-off-by: Matan Azrad --- MAINTAINERS | 6 ++ config/common_base | 5 ++ config/common_linuxapp | 1 + doc/guides/nics/features/vdev_netvsc.ini | 12 +++ doc/guides/nics/index.rst | 1 + doc/guides/nics/vdev_netvsc.rst | 20 +++++ drivers/net/Makefile | 1 + drivers/net/vdev_netvsc/Makefile | 27 ++++++ .../vdev_netvsc/rte_pmd_vdev_netvsc_version.map | 4 + drivers/net/vdev_netvsc/vdev_netvsc.c | 99 ++++++++++++++++++++++ mk/rte.app.mk | 1 + 11 files changed, 177 insertions(+) create mode 100644 doc/guides/nics/features/vdev_netvsc.ini create mode 100644 doc/guides/nics/vdev_netvsc.rst create mode 100644 drivers/net/vdev_netvsc/Makefile create mode 100644 drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map create mode 100644 drivers/net/vdev_netvsc/vdev_netvsc.c diff --git a/MAINTAINERS b/MAINTAINERS index af8de4f..97efbb9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -462,6 +462,12 @@ F: drivers/net/mrvl/ F: doc/guides/nics/mrvl.rst F: doc/guides/nics/features/mrvl.ini +Microsoft vdev-netvsc - EXPERIMENTAL +M: Matan Azrad +F: drivers/net/vdev-netvsc/ +F: doc/guides/nics/vdev-netvsc.rst +F: doc/guides/nics/features/vdev-netvsc.ini + Netcope szedata2 M: Matej Vido F: drivers/net/szedata2/ diff --git a/config/common_base b/config/common_base index 90508a8..664ff21 100644 --- a/config/common_base +++ b/config/common_base @@ -279,6 +279,11 @@ CONFIG_RTE_LIBRTE_NFP_DEBUG_RX=n CONFIG_RTE_LIBRTE_MRVL_PMD=n # +# Compile virtual device driver for NetVSC on Hyper-V/Azure +# +CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD=n + +# # Compile burst-oriented Broadcom BNXT PMD driver # CONFIG_RTE_LIBRTE_BNXT_PMD=y diff --git a/config/common_linuxapp b/config/common_linuxapp index 74c7d64..e043262 100644 --- a/config/common_linuxapp +++ b/config/common_linuxapp @@ -47,6 +47,7 @@ CONFIG_RTE_LIBRTE_PMD_VHOST=y CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y CONFIG_RTE_LIBRTE_PMD_TAP=y CONFIG_RTE_LIBRTE_AVP_PMD=y +CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD=y CONFIG_RTE_LIBRTE_NFP_PMD=y CONFIG_RTE_LIBRTE_POWER=y CONFIG_RTE_VIRTIO_USER=y diff --git a/doc/guides/nics/features/vdev_netvsc.ini b/doc/guides/nics/features/vdev_netvsc.ini new file mode 100644 index 0000000..cfc5cb9 --- /dev/null +++ b/doc/guides/nics/features/vdev_netvsc.ini @@ -0,0 +1,12 @@ +; +; Supported features of the 'vdev_netvsc' network poll mode driver. +; +; Refer to default.ini for the full list of available PMD features. +; +[Features] +ARMv7 = Y +ARMv8 = Y +Power8 = Y +x86-32 = Y +x86-64 = Y +Usage doc = Y diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst index 23babe9..5666046 100644 --- a/doc/guides/nics/index.rst +++ b/doc/guides/nics/index.rst @@ -64,6 +64,7 @@ Network Interface Controller Drivers szedata2 tap thunderx + vdev_netvsc virtio vhost vmxnet3 diff --git a/doc/guides/nics/vdev_netvsc.rst b/doc/guides/nics/vdev_netvsc.rst new file mode 100644 index 0000000..a952908 --- /dev/null +++ b/doc/guides/nics/vdev_netvsc.rst @@ -0,0 +1,20 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2017 6WIND S.A. + Copyright 2017 Mellanox Technologies, Ltd. + +VDEV_NETVSC driver +================== + +The VDEV_NETVSC driver (librte_pmd_vdev_netvsc) provides support for NetVSC +interfaces and associated SR-IOV virtual function (VF) devices found in +Linux virtual machines running on Microsoft Hyper-V_ (including Azure) +platforms. + +.. _Hyper-V: https://docs.microsoft.com/en-us/windows-hardware/drivers/network/overview-of-hyper-v + +Build options +------------- + +- ``CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD`` (default ``y``) + + Toggle compilation of this driver. diff --git a/drivers/net/Makefile b/drivers/net/Makefile index c2fd7f5..e112732 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile @@ -39,6 +39,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += sfc DIRS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += szedata2 DIRS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap DIRS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += thunderx +DIRS-$(CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD) += vdev_netvsc DIRS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += virtio DIRS-$(CONFIG_RTE_LIBRTE_VMXNET3_PMD) += vmxnet3 diff --git a/drivers/net/vdev_netvsc/Makefile b/drivers/net/vdev_netvsc/Makefile new file mode 100644 index 0000000..2fb059d --- /dev/null +++ b/drivers/net/vdev_netvsc/Makefile @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2017 6WIND S.A. +# Copyright 2017 Mellanox Technologies, Ltd. + +include $(RTE_SDK)/mk/rte.vars.mk + +# Properties of the generated library. +LIB = librte_pmd_vdev_netvsc.a +LIBABIVER := 1 +EXPORT_MAP := rte_pmd_vdev_netvsc_version.map + +# Additional compilation flags. +CFLAGS += -O3 +CFLAGS += -g +CFLAGS += -std=c11 -pedantic -Wall -Wextra +CFLAGS += $(WERROR_FLAGS) + +# Dependencies. +LDLIBS += -lrte_bus_vdev +LDLIBS += -lrte_eal +LDLIBS += -lrte_ethdev +LDLIBS += -lrte_kvargs + +# Source files. +SRCS-$(CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD) += vdev_netvsc.c + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map new file mode 100644 index 0000000..179140f --- /dev/null +++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map @@ -0,0 +1,4 @@ +DPDK_18.02 { + + local: *; +}; diff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c b/drivers/net/vdev_netvsc/vdev_netvsc.c new file mode 100644 index 0000000..e895b32 --- /dev/null +++ b/drivers/net/vdev_netvsc/vdev_netvsc.c @@ -0,0 +1,99 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2017 6WIND S.A. + * Copyright 2017 Mellanox Technologies, Ltd. + */ + +#include + +#include +#include +#include +#include +#include + +#define VDEV_NETVSC_DRIVER net_vdev_netvsc +#define VDEV_NETVSC_ARG_IFACE "iface" +#define VDEV_NETVSC_ARG_MAC "mac" + +#define DRV_LOG(level, ...) \ + rte_log(RTE_LOG_ ## level, \ + vdev_netvsc_logtype, \ + RTE_FMT(RTE_STR(VDEV_NETVSC_DRIVER) ": " \ + RTE_FMT_HEAD(__VA_ARGS__,) "\n", \ + RTE_FMT_TAIL(__VA_ARGS__,))) + +/** Driver-specific log messages type. */ +static int vdev_netvsc_logtype; + +/** Number of driver instances relying on context list. */ +static unsigned int vdev_netvsc_ctx_inst; + +/** + * Probe NetVSC interfaces. + * + * @param dev + * Virtual device context for driver instance. + * + * @return + * Always 0, even in case of errors. + */ +static int +vdev_netvsc_vdev_probe(struct rte_vdev_device *dev) +{ + static const char *const vdev_netvsc_arg[] = { + VDEV_NETVSC_ARG_IFACE, + VDEV_NETVSC_ARG_MAC, + NULL, + }; + const char *name = rte_vdev_device_name(dev); + const char *args = rte_vdev_device_args(dev); + struct rte_kvargs *kvargs = rte_kvargs_parse(args ? args : "", + vdev_netvsc_arg); + + DRV_LOG(DEBUG, "invoked as \"%s\", using arguments \"%s\"", name, args); + if (!kvargs) { + DRV_LOG(ERR, "cannot parse arguments list"); + goto error; + } +error: + if (kvargs) + rte_kvargs_free(kvargs); + ++vdev_netvsc_ctx_inst; + return 0; +} + +/** + * Remove driver instance. + * + * @param dev + * Virtual device context for driver instance. + * + * @return + * Always 0. + */ +static int +vdev_netvsc_vdev_remove(__rte_unused struct rte_vdev_device *dev) +{ + --vdev_netvsc_ctx_inst; + return 0; +} + +/** Virtual device descriptor. */ +static struct rte_vdev_driver vdev_netvsc_vdev = { + .probe = vdev_netvsc_vdev_probe, + .remove = vdev_netvsc_vdev_remove, +}; + +RTE_PMD_REGISTER_VDEV(VDEV_NETVSC_DRIVER, vdev_netvsc_vdev); +RTE_PMD_REGISTER_ALIAS(VDEV_NETVSC_DRIVER, eth_vdev_netvsc); +RTE_PMD_REGISTER_PARAM_STRING(net_vdev_netvsc, + VDEV_NETVSC_ARG_IFACE "= " + VDEV_NETVSC_ARG_MAC "="); + +/** Initialize driver log type. */ +RTE_INIT(vdev_netvsc_init_log) +{ + vdev_netvsc_logtype = rte_log_register("pmd.vdev_netvsc"); + if (vdev_netvsc_logtype >= 0) + rte_log_set_level(vdev_netvsc_logtype, RTE_LOG_NOTICE); +} diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 78f23c5..2f8af49 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -157,6 +157,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += -lrte_pmd_sfc_efx _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += -lrte_pmd_szedata2 -lsze2 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += -lrte_pmd_tap _LDLIBS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += -lrte_pmd_thunderx_nicvf +_LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD) += -lrte_pmd_vdev_netvsc _LDLIBS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += -lrte_pmd_virtio ifeq ($(CONFIG_RTE_LIBRTE_VHOST),y) _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += -lrte_pmd_vhost -- 1.8.3.1