From patchwork Sun Mar 29 14:42:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67315 X-Patchwork-Delegate: maxime.coquelin@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5533DA0562; Sun, 29 Mar 2020 16:43:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 846FC1B949; Sun, 29 Mar 2020 16:43:37 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 818A51BF9D for ; Sun, 29 Mar 2020 16:43:35 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200329144334euoutp017e3d2c67804fd90ad7833b0bceef9919~AzX8eYudk0271602716euoutp01Z for ; Sun, 29 Mar 2020 14:43:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200329144334euoutp017e3d2c67804fd90ad7833b0bceef9919~AzX8eYudk0271602716euoutp01Z DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585493014; bh=mHhQ03gcfc8lc4HgXNspAnL6+ptFrufucmW+PD+kjK4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=WQwmm+Klfh4EyJs+YD9V1UWa39f9kcEz9n1rPqQBmEtoTQlVPBx3ST2QqceMZ4PX0 /DykAWiEgpPIgPbVR9mo9lr6NrYTw3sEwkGtSal+ly/k8ABZ6y0BMpC4E/cAZvMv5D /2nkAMS7tFDCO/zt1iaVZtZxQrh1DyFmnbk2fSd8= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200329144334eucas1p12d50fe8a686a82bfb9549fd17dda5fdd~AzX74CTc41538815388eucas1p1s; Sun, 29 Mar 2020 14:43:34 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 80.A3.60679.514B08E5; Sun, 29 Mar 2020 15:43:33 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200329144333eucas1p2aa754e8de8f2ba01da656821c76eae9f~AzX7jhgxK0989809898eucas1p2m; Sun, 29 Mar 2020 14:43:33 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200329144333eusmtrp2ff7192be3230d62faa3b96aedde5fa67~AzX7i8FWW1656816568eusmtrp2T; Sun, 29 Mar 2020 14:43:33 +0000 (GMT) X-AuditID: cbfec7f4-0cbff7000001ed07-6a-5e80b415d2e7 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id C0.F7.07950.514B08E5; Sun, 29 Mar 2020 15:43:33 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200329144333eusmtip1ef117e8b2db6a3c0e2bd7418969aa684~AzX6-D6j10185501855eusmtip1Q; Sun, 29 Mar 2020 14:43:33 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, tiwei.bie@intel.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com Date: Sun, 29 Mar 2020 17:42:47 +0300 Message-Id: <20200329144308.5103-2-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200329144308.5103-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrFIsWRmVeSWpSXmKPExsWy7djP87qiWxriDLpfWFi07njAYvHu03Ym i1mXmtgtjnXuYbHY2vCfyeLPG1OLzRcnMTmwe/xasJTVY/Gel0we7/ddZfPo27KKMYAlissm JTUnsyy1SN8ugSvjzYHfjAXLBSta1/xka2Bs5Oti5OSQEDCR2HvpB2MXIxeHkMAKRokvxw8z QzhfGCWa/z1jgnA+M0rsONvACtOy6dVOFojEckaJ33+mQfV/ZZQ4NXkHI0gVm4CGxOmOeWDt IgLzGSVO9nxmBkkIC9hIfD0wE2wUi4CqxMIvD1hAbF4BC4kXDy8yQ6yQl1i94QCYzSlgKTHh /V2wDRICt9kknve8YoEocpGYtv8DO4QtLPHq+BYoW0bi/875TBB2tcSerrfsEM0djBJfG7Yy QiTsJba8PgeU4OBgFtCUWL9LHyLsKPHrbC8bSFhCgE/ixltBkDAzkDlp23RmiDCvREebEES1 ksSBk5egwhISf3/zQJgeEisfqkGCZDejxPlbn5gnMMrNQli1gJFxFaN4amlxbnpqsVFearle cWJucWleul5yfu4mRmAKOP3v+JcdjLv+JB1iFOBgVOLhNaisjxNiTSwrrsw9xCjBwawkwsvm 3xAnxJuSWFmVWpQfX1Sak1p8iFGag0VJnNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA+OS17vP m4Up/Pue94NHp2bdf74rDcI7Os3yCspfOYpf+9LAx/ThUXFp3DaOwyXbt3xfnSE8TfBxgs8x qaQcmw9yU7r6tXdacEQdcTpx93zQPcW4Y8pr7hRXPo6JvxQ/jcHSdP7KJA1feWWFe2LlW48o lV97v7ggtNb0Yc90My23+0v/aX7vkFViKc5INNRiLipOBAAatDqx/QIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsVy+t/xu7qiWxriDC59VrZo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLlJ5N UX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7GmwO/GQuW C1a0rvnJ1sDYyNfFyMkhIWAisenVThYQW0hgKaPEvy71LkYOoLiExOsnzBAlwhJ/rnWxdTFy AZV8ZpS4/Pg0O0iCTUBD4nTHPCaQhIjAckaJ/sutbCAJYQEbia8HZrKC2CwCqhILvzwAW8Ar YCHx4uFFqKnyEqs3HACzOQUsJSa8v8sIcUS6xMFdJ5gmMPIuYGRYxSiSWlqcm55bbKRXnJhb XJqXrpecn7uJERiQ24793LKDsetd8CFGAQ5GJR5eg8r6OCHWxLLiytxDjBIczEoivGz+DXFC vCmJlVWpRfnxRaU5qcWHGE2BjprILCWanA+MlrySeENTQ3MLS0NzY3NjMwslcd4OgYMxQGck lqRmp6YWpBbB9DFxcEo1MBZEpoXJPL/93MaW6cz8G6/Pci9dNF/VP2J1C5tob8w6g286DrFV k8ruFvao5U2Mn3rkXPq39Mpk+ZflxtwLt28XzU33u+dqu3b/Ov9AxqWpF/ecP3HoZ0L1+3dF XGUhD0p7eSycuX4LXp/vu+7WcVsvSxm/tTZfcsWPrT1vYnxHNumNi9NLPyWW4oxEQy3mouJE AF70tcxeAgAA X-CMS-MailID: 20200329144333eucas1p2aa754e8de8f2ba01da656821c76eae9f X-Msg-Generator: CA X-RootMTR: 20200329144333eucas1p2aa754e8de8f2ba01da656821c76eae9f X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200329144333eucas1p2aa754e8de8f2ba01da656821c76eae9f References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200329144308.5103-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v7 1/5] net/virtio: refactor devargs parsing 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" refactor vdpa specific devargs parsing to more generic way Signed-off-by: Ivan Dyukov --- drivers/net/virtio/virtio_ethdev.c | 34 +++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index f9d0ea70d..870ff7801 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1957,16 +1957,18 @@ eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev) } static int vdpa_check_handler(__rte_unused const char *key, - const char *value, __rte_unused void *opaque) + const char *value, void *ret_val) { - if (strcmp(value, "1")) - return -1; + if (strcmp(value, "1") == 0) + *(int *)ret_val = 1; + else + *(int *)ret_val = 0; return 0; } static int -vdpa_mode_selected(struct rte_devargs *devargs) +virtio_dev_devargs_parse(struct rte_devargs *devargs, int *vdpa) { struct rte_kvargs *kvlist; const char *key = "vdpa"; @@ -1982,12 +1984,16 @@ vdpa_mode_selected(struct rte_devargs *devargs) if (!rte_kvargs_count(kvlist, key)) goto exit; - /* vdpa mode selected when there's a key-value pair: vdpa=1 */ - if (rte_kvargs_process(kvlist, key, - vdpa_check_handler, NULL) < 0) { - goto exit; + if (vdpa) { + /* vdpa mode selected when there's a key-value pair: + * vdpa=1 + */ + ret = rte_kvargs_process(kvlist, key, + vdpa_check_handler, vdpa); + if (ret < 0) + goto exit; } - ret = 1; + exit: rte_kvargs_free(kvlist); @@ -1997,8 +2003,16 @@ vdpa_mode_selected(struct rte_devargs *devargs) static int eth_virtio_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct rte_pci_device *pci_dev) { + int vdpa = 0; + int ret = 0; + + ret = virtio_dev_devargs_parse(pci_dev->device.devargs, &vdpa); + if (ret < 0) { + PMD_INIT_LOG(ERR, "devargs parsing is failed"); + return ret; + } /* virtio pmd skips probe if device needs to work in vdpa mode */ - if (vdpa_mode_selected(pci_dev->device.devargs)) + if (vdpa == 1) return 1; return rte_eth_dev_pci_generic_probe(pci_dev, sizeof(struct virtio_hw), From patchwork Sun Mar 29 14:42:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67316 X-Patchwork-Delegate: maxime.coquelin@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E209EA0562; Sun, 29 Mar 2020 16:44:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F27CC1BFDC; Sun, 29 Mar 2020 16:43:39 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id DA45A1BF9D for ; Sun, 29 Mar 2020 16:43:36 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200329144336euoutp020035b39d72915bb787d98b6fbb34c037~AzX_EM5Re1301113011euoutp02c for ; Sun, 29 Mar 2020 14:43:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200329144336euoutp020035b39d72915bb787d98b6fbb34c037~AzX_EM5Re1301113011euoutp02c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585493016; bh=ZbN59GHW4ffE3sG8tYnOAPv/kl6HquKSHf4JmyUTkGE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=k4Sq9p29rb5PnFDfkiZNC3OvsTnCxFazMOuheiOOEeUfCWiQC0C1ik3sE2Yd7hD94 vfSmanR5kvLM7yxmzisiPErp2xoKrOx2fgw883xvn524rZKGyVbk9CRCUJhs+y8O1P CzP4VJJvybGp53V/jbxeUE93Fyl5RXomKVUCRVHg= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200329144336eucas1p29f5e5aad14617be3c703fb855d58cd56~AzX97Nlne0654106541eucas1p2l; Sun, 29 Mar 2020 14:43:36 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 41.A3.60679.814B08E5; Sun, 29 Mar 2020 15:43:36 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200329144335eucas1p1b3962cf40116e2da679b99c26f3f8ed7~AzX9cIhJ71502915029eucas1p1r; Sun, 29 Mar 2020 14:43:35 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200329144335eusmtrp1d1d102ce0a60bb5a29ee95e0cd079288~AzX9bJD5Z1668216682eusmtrp1b; Sun, 29 Mar 2020 14:43:35 +0000 (GMT) X-AuditID: cbfec7f4-0e5ff7000001ed07-6f-5e80b418093b Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 9D.D6.08375.714B08E5; Sun, 29 Mar 2020 15:43:35 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200329144335eusmtip10bada5fa0d36f53d6a51d1b983e62bcf~AzX820Ruk0278902789eusmtip1L; Sun, 29 Mar 2020 14:43:35 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, tiwei.bie@intel.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com Date: Sun, 29 Mar 2020 17:42:48 +0300 Message-Id: <20200329144308.5103-3-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200329144308.5103-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTURz37N7dXZeT2xT8u8JgEJTQZmZ0g3AVi/ZN+xQEWktvU9qmbNOa EY1M02FlRlRDUirfaFrztTaZSyY6ULLMEZlZ4PKV5ANtabZ5J337Pc//fw6HxISzuIjM1hoY nVapFhN8vMP9e/gAWE3pCZ/H+XRR11ec/rnYyaEtIzd5tLvUjtPtpk0OvT53mH79roJznKfw V9dwFc/t0xzFQs8oobhrbUSp+Dn+sUxGnZ3P6KTJF/hZHf5hLNeRdHWgpRmZ0Pt4MwongUoC X28TbkZ8UkjVI/DYBrksWUbgcI6FyBKCwaq3+Hblwx17yKhDMNpcSbBkJUA67xPBFEHtA0/J U07QiKaqEAyULWFBI4o6Cou9dbwgxqm9UGMu3ioIKBrGP5Vx2BF7oKnVuZUPD+TLF8ZR8CCg Jgho3Wwh2JAcvHO/QjtFwUy/lcfi3eB5UBbSr4HdPM9jyyUIVkztiDVkYJ0dChgkiVH74aVN ysonwNQWvA4ZwJHgnd8ZlLEArOh4hLGyAEqKhWxaDM6BkZAMsPEngpUVMOO7HXrTNwh61sxY OYqz/J9VjVAjimHy9BoVo0/UMlckeqVGn6dVSTJyNK9Q4At4/vYvdyHb+kUXokgkjhAkGG+k C7nKfL1R40JAYuJoAZFiShcKMpXGAkaXc16Xp2b0LrSLxMUxgkPPptOElEppYC4zTC6j23Y5 ZLjIhCTXbZOrEV+8Ral9Q1LCe7Zyo/aJu2HHUJvnZK1MtJYibY9Tr8qyM3wTFr/525H+j3L5 mSmXTp3hTiuNbUqsh++38juNPQ33YhO7o8MG5YUOgyQ57rTvkh9FzmQ5+x6+kHkLDJYfE2OT jacmuWEOruqxaqJQJZ8SV4rI7iIxrs9SHozHdHrlP5JWX4n+AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsVy+t/xu7riWxriDObtVbFo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLlJ5N UX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7Gtl/nmQv2 mlScXLeWsYHxslYXIyeHhICJxJXePaxdjFwcQgJLGSXW/PvC3MXIAZSQkHj9hBmiRljiz7Uu Noiaz4wSK1qWM4Ek2AQ0JE53zGMCSYgILGeU6L/cygaSEBawlPh0cDk7iM0ioCqxtKsNLM4r YCFx91YPE8RUeYnVGw6AbeAEqp/w/i4jiC0kkC5xcNcJpgmMvAsYGVYxiqSWFuem5xYb6hUn 5haX5qXrJefnbmIEhuS2Yz8372C8tDH4EKMAB6MSD69BZX2cEGtiWXFl7iFGCQ5mJRFeNv+G OCHelMTKqtSi/Pii0pzU4kOMpkBHTWSWEk3OB8ZLXkm8oamhuYWlobmxubGZhZI4b4fAwRig MxJLUrNTUwtSi2D6mDg4pRoYEyKrImvM4q4GcNULJCfFynR+kKmfJB4SvES+6vWhqPK8owcL lnwJUdkWNiGdY+dl1Z8++a6JDWz/mMNf/jZ+8TX6weGKk9bipx0mFVTbpk/PnCzTwLrpXJPs fOurL6pSbsU7ps5p/zpvSTqr84TPH4Me87A280y18Pl1bJUx+5aiOfcNJnxQYinOSDTUYi4q TgQAQBAU6V8CAAA= X-CMS-MailID: 20200329144335eucas1p1b3962cf40116e2da679b99c26f3f8ed7 X-Msg-Generator: CA X-RootMTR: 20200329144335eucas1p1b3962cf40116e2da679b99c26f3f8ed7 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200329144335eucas1p1b3962cf40116e2da679b99c26f3f8ed7 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200329144308.5103-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v7 2/5] net/virtio: add link speed devarg 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Some applications like pktgen use link speed to calculate transmission rate. It limits outcome traffic to hardcoded 10G. This patch adds speed devarg which allows to configure link speed of virtio device. Signed-off-by: Ivan Dyukov --- doc/guides/nics/virtio.rst | 7 +++ drivers/net/virtio/virtio_ethdev.c | 97 +++++++++++++++++++++++++----- drivers/net/virtio/virtio_pci.h | 1 + 3 files changed, 89 insertions(+), 16 deletions(-) diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst index d1f5fb898..0341907ef 100644 --- a/doc/guides/nics/virtio.rst +++ b/doc/guides/nics/virtio.rst @@ -356,6 +356,13 @@ Below devargs are supported by the PCI virtio driver: a virtio device needs to work in vDPA mode. (Default: 0 (disabled)) +#. ``speed``: + + It is used to specify link speed of virtio device. Link speed is a part of + link status structure. It could be requested by application using + rte_eth_link_get_nowait function. + (Default: 10000 (10G)) + Below devargs are supported by the virtio-user vdev: #. ``path``: diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 870ff7801..fe0e292ef 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -45,6 +45,10 @@ static int virtio_dev_promiscuous_enable(struct rte_eth_dev *dev); static int virtio_dev_promiscuous_disable(struct rte_eth_dev *dev); static int virtio_dev_allmulticast_enable(struct rte_eth_dev *dev); static int virtio_dev_allmulticast_disable(struct rte_eth_dev *dev); +static uint32_t virtio_dev_speed_capa_get(uint32_t speed); +static int virtio_dev_devargs_parse(struct rte_devargs *devargs, + int *vdpa, + uint32_t *speed); static int virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); static int virtio_dev_link_update(struct rte_eth_dev *dev, @@ -1861,6 +1865,7 @@ int eth_virtio_dev_init(struct rte_eth_dev *eth_dev) { struct virtio_hw *hw = eth_dev->data->dev_private; + uint32_t speed = ETH_SPEED_NUM_10G; int ret; if (sizeof(struct virtio_net_hdr_mrg_rxbuf) > RTE_PKTMBUF_HEADROOM) { @@ -1886,7 +1891,11 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) return 0; } - + ret = virtio_dev_devargs_parse(eth_dev->device->devargs, + NULL, &speed); + if (ret < 0) + return ret; + hw->speed = speed; /* * Pass the information to the rte_eth_dev_close() that it should also * release the private port resources. @@ -1956,6 +1965,7 @@ eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev) return 0; } + static int vdpa_check_handler(__rte_unused const char *key, const char *value, void *ret_val) { @@ -1967,33 +1977,89 @@ static int vdpa_check_handler(__rte_unused const char *key, return 0; } + +static uint32_t +virtio_dev_speed_capa_get(uint32_t speed) +{ + switch (speed) { + case ETH_SPEED_NUM_10G: + return ETH_LINK_SPEED_10G; + case ETH_SPEED_NUM_20G: + return ETH_LINK_SPEED_20G; + case ETH_SPEED_NUM_25G: + return ETH_LINK_SPEED_25G; + case ETH_SPEED_NUM_40G: + return ETH_LINK_SPEED_40G; + case ETH_SPEED_NUM_50G: + return ETH_LINK_SPEED_50G; + case ETH_SPEED_NUM_56G: + return ETH_LINK_SPEED_56G; + case ETH_SPEED_NUM_100G: + return ETH_LINK_SPEED_100G; + default: + return 0; + } +} + + +#define VIRTIO_ARG_SPEED "speed" +#define VIRTIO_ARG_VDPA "vdpa" + + +static int +link_speed_handler(const char *key __rte_unused, + const char *value, void *ret_val) +{ + uint32_t val; + if (!value || !ret_val) + return -EINVAL; + val = strtoul(value, NULL, 0); + /* validate input */ + if (virtio_dev_speed_capa_get(val) == 0) + return -EINVAL; + *(uint32_t *)ret_val = val; + + return 0; +} + + static int -virtio_dev_devargs_parse(struct rte_devargs *devargs, int *vdpa) +virtio_dev_devargs_parse(struct rte_devargs *devargs, int *vdpa, + uint32_t *speed) { struct rte_kvargs *kvlist; - const char *key = "vdpa"; int ret = 0; if (devargs == NULL) return 0; kvlist = rte_kvargs_parse(devargs->args, NULL); - if (kvlist == NULL) + if (kvlist == NULL) { + PMD_INIT_LOG(ERR, "error when parsing param"); return 0; - - if (!rte_kvargs_count(kvlist, key)) - goto exit; - - if (vdpa) { + } + if (vdpa && rte_kvargs_count(kvlist, VIRTIO_ARG_VDPA) == 1) { /* vdpa mode selected when there's a key-value pair: * vdpa=1 */ - ret = rte_kvargs_process(kvlist, key, + ret = rte_kvargs_process(kvlist, VIRTIO_ARG_VDPA, vdpa_check_handler, vdpa); - if (ret < 0) + if (ret < 0) { + PMD_INIT_LOG(ERR, "Failed to parse %s", + VIRTIO_ARG_VDPA); goto exit; + } + } + if (speed && rte_kvargs_count(kvlist, VIRTIO_ARG_SPEED) == 1) { + ret = rte_kvargs_process(kvlist, + VIRTIO_ARG_SPEED, + link_speed_handler, speed); + if (ret < 0) { + PMD_INIT_LOG(ERR, "Failed to parse %s", + VIRTIO_ARG_SPEED); + goto exit; + } } - exit: rte_kvargs_free(kvlist); @@ -2006,7 +2072,7 @@ static int eth_virtio_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, int vdpa = 0; int ret = 0; - ret = virtio_dev_devargs_parse(pci_dev->device.devargs, &vdpa); + ret = virtio_dev_devargs_parse(pci_dev->device.devargs, &vdpa, NULL); if (ret < 0) { PMD_INIT_LOG(ERR, "devargs parsing is failed"); return ret; @@ -2385,7 +2451,7 @@ virtio_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complet memset(&link, 0, sizeof(link)); link.link_duplex = ETH_LINK_FULL_DUPLEX; - link.link_speed = ETH_SPEED_NUM_10G; + link.link_speed = hw->speed; link.link_autoneg = ETH_LINK_FIXED; if (!hw->started) { @@ -2440,8 +2506,7 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { uint64_t tso_mask, host_features; struct virtio_hw *hw = dev->data->dev_private; - - dev_info->speed_capa = ETH_LINK_SPEED_10G; /* fake value */ + dev_info->speed_capa = virtio_dev_speed_capa_get(hw->speed); dev_info->max_rx_queues = RTE_MIN(hw->max_queue_pairs, VIRTIO_MAX_RX_QUEUES); diff --git a/drivers/net/virtio/virtio_pci.h b/drivers/net/virtio/virtio_pci.h index 7433d2f08..ed98e11c3 100644 --- a/drivers/net/virtio/virtio_pci.h +++ b/drivers/net/virtio/virtio_pci.h @@ -259,6 +259,7 @@ struct virtio_hw { uint16_t port_id; uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; uint32_t notify_off_multiplier; + uint32_t speed; /* link speed in MB */ uint8_t *isr; uint16_t *notify_base; struct virtio_pci_common_cfg *common_cfg; From patchwork Sun Mar 29 14:42:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67317 X-Patchwork-Delegate: maxime.coquelin@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 86841A0562; Sun, 29 Mar 2020 16:44:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EFB2D1C036; Sun, 29 Mar 2020 16:43:40 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 42B851BFD7 for ; Sun, 29 Mar 2020 16:43:38 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200329144337euoutp02957a9e9db51bd75145ada031d0b0db5b~AzX-SMQ0k0963909639euoutp029 for ; Sun, 29 Mar 2020 14:43:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200329144337euoutp02957a9e9db51bd75145ada031d0b0db5b~AzX-SMQ0k0963909639euoutp029 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585493017; bh=5tV+PUkbyK8uGKqGJo6atUhkYthNNopDlr81QODeU7I=; h=From:To:Subject:Date:In-Reply-To:References:From; b=V21XxP5VBu/f8jfL6vhcvJP7+io0FtYPjnZ0UctTItLTf4Miltyw7YtpMbXjCk6fj gwgQ8Mnvbep3X5xFYFHOD/G7U/7jK9FxGLuaoJFqrOFKwJaZV9CxbbPKrqR0oYJjlv iVC2rzo33qnPmSGldbhSCL6X752wMo0PrnMPCL/o= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200329144337eucas1p2a93632e03a276d9a31db92e169de8d9c~AzX_8wZk20561705617eucas1p2f; Sun, 29 Mar 2020 14:43:37 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id E1.A3.60679.914B08E5; Sun, 29 Mar 2020 15:43:37 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200329144337eucas1p2cc22be55d036822bf52dc69149d538af~AzX_u7-UK0846808468eucas1p2U; Sun, 29 Mar 2020 14:43:37 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200329144337eusmtrp28db350455c312456a18a3e56141fa6b1~AzX_uZiyp1656816568eusmtrp2U; Sun, 29 Mar 2020 14:43:37 +0000 (GMT) X-AuditID: cbfec7f4-0cbff7000001ed07-72-5e80b4197a72 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 41.F7.07950.914B08E5; Sun, 29 Mar 2020 15:43:37 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200329144336eusmtip19f614961d7c2a094160dcdd87d41bef0~AzX_MVFB60056600566eusmtip1Q; Sun, 29 Mar 2020 14:43:36 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, tiwei.bie@intel.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com Date: Sun, 29 Mar 2020 17:42:49 +0300 Message-Id: <20200329144308.5103-4-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200329144308.5103-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBIsWRmVeSWpSXmKPExsWy7djPc7qSWxriDI6+ELJo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLFJdN SmpOZllqkb5dAlfGjKuXmQuecVTMunCfuYFxJnsXIyeHhICJxJHVF5m6GLk4hARWMEocmr+Y DSQhJPCFUWLJ5DoI+zOjxKdZnDANG+/eY4RoWM4ocXvzRDYI5yujxM2DX1hBqtgENCROd8wD GysiMJ9R4mTPZ2aQhLCAjcSabyuB2jk4WARUJQ5dlgAJ8wpYSPxd/44FYoO8xOoNB8DKOQUs JSa8vwu2TULgPpvEu2v/oe52kehr2wHVICzx6vgWqLiMxP+d85kg7GqJPV1v2SGaOxglvjZs ZYRI2EtseX2OHeQIZgFNifW79CHCjhK7nraxgYQlBPgkbrwVBAkzA5mTtk1nhgjzSnS0CUFU K0kcOHkJKiwh8fc3D0TYQ+LC/P+skCDZzShx9/Ir1gmMcrMQdi1gZFzFKJ5aWpybnlpslJda rlecmFtcmpeul5yfu4kRGP+n/x3/soNx15+kQ4wCHIxKPLwGlfVxQqyJZcWVuYcYJTiYlUR4 2fwb4oR4UxIrq1KL8uOLSnNSiw8xSnOwKInzGi96GSskkJ5YkpqdmlqQWgSTZeLglGpgNOyo f2zIZKQqzbG8dOGMa+p7HvddalO4vNci6tjqd1uDnq3ukVA3r/oYvsZF4tJisy17103+v2IG 4xULUz3b5u3lEybwOD25LCPyv0jY73zj/pSyE3dW+P57Ffunkycj4A/HnPaSgOtHSj+YNE3P ujNh0VmDa7EVkSpV0YFfZ2S3Vle1pb1arcRSnJFoqMVcVJwIALp9NBP7AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsVy+t/xu7qSWxriDF7PY7Fo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLlJ5N UX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7GjKuXmQue cVTMunCfuYFxJnsXIyeHhICJxMa79xi7GLk4hASWMkrcfdrN2sXIAZSQkHj9hBmiRljiz7Uu Noiaz4wSk26+ZwVJsAloSJzumMcEkhARWM4o0X+5lQ0kISxgI7Hm20pGkEEsAqoShy5LgIR5 BSwk/q5/xwIxVF5i9YYDYAs4BSwlJry/ywhiCwmkSxzcdYJpAiPvAkaGVYwiqaXFuem5xUZ6 xYm5xaV56XrJ+bmbGIEBue3Yzy07GLveBR9iFOBgVOLhNaisjxNiTSwrrsw9xCjBwawkwsvm 3xAnxJuSWFmVWpQfX1Sak1p8iNEU6KaJzFKiyfnAaMkriTc0NTS3sDQ0NzY3NrNQEuftEDgY A3RGYklqdmpqQWoRTB8TB6dUA+OSfuOvmQqhd458EK7p/79p/numqA0ns0xLGgUPiR1cHNKl 6nVsp0ja6+iifmfPfYdD4ves1FssM705cnpK5Fff09ubHWe/kjIWuWou+q3UYVN+fFlMz3S7 P6FmIhPF42OlvPS5C/+z3PCreOtxq2Fe55F+uw3u9VIL7mhz5TVWbprOKnthuxJLcUaioRZz UXEiAOAKfepeAgAA X-CMS-MailID: 20200329144337eucas1p2cc22be55d036822bf52dc69149d538af X-Msg-Generator: CA X-RootMTR: 20200329144337eucas1p2cc22be55d036822bf52dc69149d538af X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200329144337eucas1p2cc22be55d036822bf52dc69149d538af References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200329144308.5103-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v7 3/5] net/virtio-user: fix devargs parsing 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" strtoull returns 0 if it fails to parse input string. It's ignored in get_integer_arg. This patch handles error cases for strtoull function. Signed-off-by: Ivan Dyukov --- drivers/net/virtio/virtio_user_ethdev.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c index e61af4068..a79f68a36 100644 --- a/drivers/net/virtio/virtio_user_ethdev.c +++ b/drivers/net/virtio/virtio_user_ethdev.c @@ -477,12 +477,17 @@ static int get_integer_arg(const char *key __rte_unused, const char *value, void *extra_args) { + uint64_t integer = 0; if (!value || !extra_args) return -EINVAL; - - *(uint64_t *)extra_args = strtoull(value, NULL, 0); - - return 0; + errno = 0; + integer = strtoull(value, NULL, 0); + /* extra_args keeps default value, it should be replaced + * only in case of successful parsing of the 'value' arg + */ + if (errno == 0) + *(uint64_t *)extra_args = integer; + return -errno; } static struct rte_eth_dev * From patchwork Sun Mar 29 14:42:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67320 X-Patchwork-Delegate: maxime.coquelin@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0248FA0562; Sun, 29 Mar 2020 16:44:58 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 63B471C0BD; Sun, 29 Mar 2020 16:43:48 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 48ECC1C02A for ; Sun, 29 Mar 2020 16:43:40 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200329144339euoutp015d8adf2ce4d5a45acfb309f72c703c6d~AzYBaFta12908129081euoutp01I for ; Sun, 29 Mar 2020 14:43:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200329144339euoutp015d8adf2ce4d5a45acfb309f72c703c6d~AzYBaFta12908129081euoutp01I DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585493020; bh=I9YXrBYTC5W24DxEpIEmAKswyLbTsR7EIwzmiLzk6XY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ESQeocUuApKmt0p/0YBHkpzBaTMoxd2zvNJm+B5mCresJR0gXWAwd4EamTnlj4ixA FR19F31WktNSs2uFbNGpjXxfJQn8RMXh6URK8dOiDs+NH03qMdF15ams1KLqhNJONI yY0g2VwWm4i6Q+y/4HEzvWnXyHvzxIuqSutWyIrQ= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200329144339eucas1p289cacc50caa72084d31ce76f05d470bf~AzYBRwl2D0846808468eucas1p2V; Sun, 29 Mar 2020 14:43:39 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 62.A3.60679.B14B08E5; Sun, 29 Mar 2020 15:43:39 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200329144338eucas1p1842eae4822199508ae611b4ee3b60441~AzYACmxXH1546415464eucas1p15; Sun, 29 Mar 2020 14:43:38 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200329144338eusmtrp1ea3fd1c66714803a170c1d0e39f41681~AzYACDEUB1668216682eusmtrp1c; Sun, 29 Mar 2020 14:43:38 +0000 (GMT) X-AuditID: cbfec7f4-0cbff7000001ed07-76-5e80b41b7daa Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 1E.D6.08375.A14B08E5; Sun, 29 Mar 2020 15:43:38 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200329144337eusmtip1379b7d90b5360a92b31f99fbdc0232f9~AzX-afFfX0278902789eusmtip1M; Sun, 29 Mar 2020 14:43:37 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, tiwei.bie@intel.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com Date: Sun, 29 Mar 2020 17:42:50 +0300 Message-Id: <20200329144308.5103-5-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200329144308.5103-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJIsWRmVeSWpSXmKPExsWy7djPc7rSWxriDK4/17Vo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLFJdN SmpOZllqkb5dAlfG5C1LWQt+8FUsuPOQsYFxOU8XIyeHhICJxNmGP4wgtpDACkaJN5dduhi5 gOwvjBK3P35lgnA+M0p0Ht7OAtMxs/sCVGI5o8TzRxtZIJyvjBLn1m9nB6liE9CQON0xD6xK RGA+o8TJns/MIAlhAUeJ0zP3gNksAqoSxyY/AVvOK2Ah8frfWqgV8hKrNxwAq+EUsJSY8P4u I8ggCYHbbBIdC++wQhS5SPRevssMYQtLvDq+hR3ClpE4PbkHalC1xJ6ut+wQzR2MEl8btjJC JOwltrw+B5Tg4GAW0JRYv0sfIuwoMWfqCiaQsIQAn8SNt4IgYWYgc9K26cwQYV6JjjYhiGol iQMnL0GFJST+/oYGqYfE+fVvoUG6m1Hi4+rYCYxysxBWLWBkXMUonlpanJueWmyUl1quV5yY W1yal66XnJ+7iRGYAE7/O/5lB+OuP0mHGAU4GJV4eA0q6+OEWBPLiitzDzFKcDArifCy+TfE CfGmJFZWpRblxxeV5qQWH2KU5mBREuc1XvQyVkggPbEkNTs1tSC1CCbLxMEp1cAYtTvs8+Ks B32Gjw6JP73w/vr1SS8Wu89cVN6jIDhn7+pzujwdZb+YNs99K+27OzfTIdDo8oYbLmIdf+yP /38Tzn81wY5H3y4xnUdBnS///mOptfovrY8mCLc38aR/l7xed5+ZrUeuyaluTbjPUr/dx4oZ d8fXbXltW3nDxs/s2ysnPa25HupKLMUZiYZazEXFiQAyDH2k/AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsVy+t/xu7pSWxriDM69kbBo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLlJ5N UX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7G5C1LWQt+ 8FUsuPOQsYFxOU8XIyeHhICJxMzuC0xdjFwcQgJLGSW+PlnD3sXIAZSQkHj9hBmiRljiz7Uu Noiaz4wSvX+2MIIk2AQ0JE53zANrFhFYzijRf7mVDSQhLOAocXrmHrBuFgFViWOTn4A18ApY SLz+t5YFYqq8xOoNB8BqOAUsJSa8vwtWIySQLnFw1wmmCYy8CxgZVjGKpJYW56bnFhvqFSfm Fpfmpesl5+duYgSG5LZjPzfvYLy0MfgQowAHoxIPr0FlfZwQa2JZcWXuIUYJDmYlEV42/4Y4 Id6UxMqq1KL8+KLSnNTiQ4ymQEdNZJYSTc4HxkteSbyhqaG5haWhubG5sZmFkjhvh8DBGKAz EktSs1NTC1KLYPqYODilGhgN1TjsgztaWMy/y/ZdKw55sOi9RsbC/256l1k4X2ZvKJ7tqXGo ULcgpF/O/+6djVYt2+cK7WJ52hv6ZXZw6U/mKcJWgockzoddZs8/WLc2SNX7Q53h7b2y8+wu OTU/UDI1vznplMPdXReO7HrJtU0/Ir/USnAynyJ3K6Ogsupp+cLdh5h5KpRYijMSDbWYi4oT ASQelxZfAgAA X-CMS-MailID: 20200329144338eucas1p1842eae4822199508ae611b4ee3b60441 X-Msg-Generator: CA X-RootMTR: 20200329144338eucas1p1842eae4822199508ae611b4ee3b60441 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200329144338eucas1p1842eae4822199508ae611b4ee3b60441 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200329144308.5103-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v7 4/5] net/virtio-user: adding link speed devarg 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" virtio driver already parses speed devarg. virtio-user should add it to list of valid devargs and call eth_virtio_dev_init function which init speed value. eth_virtio_dev_init already is called from virtio_user_pmd_probe function. The only change is required to enable speed devargs: adding speed to list of valid devargs. Signed-off-by: Ivan Dyukov --- doc/guides/nics/virtio.rst | 8 ++++++++ drivers/net/virtio/virtio_user_ethdev.c | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst index 0341907ef..6286286db 100644 --- a/doc/guides/nics/virtio.rst +++ b/doc/guides/nics/virtio.rst @@ -410,6 +410,14 @@ Below devargs are supported by the virtio-user vdev: It is used to enable virtio device packed virtqueue feature. (Default: 0 (disabled)) +#. ``speed``: + + It is used to specify link speed of virtio device. Link speed is a part of + link status structure. It could be requested by application using + rte_eth_link_get_nowait function. + (Default: 10000 (10G)) + + Virtio paths Selection and Usage -------------------------------- diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c index a79f68a36..5b32d30fa 100644 --- a/drivers/net/virtio/virtio_user_ethdev.c +++ b/drivers/net/virtio/virtio_user_ethdev.c @@ -450,6 +450,8 @@ static const char *valid_args[] = { VIRTIO_USER_ARG_IN_ORDER, #define VIRTIO_USER_ARG_PACKED_VQ "packed_vq" VIRTIO_USER_ARG_PACKED_VQ, +#define VIRTIO_USER_ARG_SPEED "speed" + VIRTIO_USER_ARG_SPEED, NULL }; @@ -782,4 +784,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_virtio_user, "server=<0|1> " "mrg_rxbuf=<0|1> " "in_order=<0|1> " - "packed_vq=<0|1>"); + "packed_vq=<0|1> " + "speed="); From patchwork Sun Mar 29 14:42:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67321 X-Patchwork-Delegate: maxime.coquelin@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 40CB3A0562; Sun, 29 Mar 2020 16:45:07 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8BE6A1C0C3; Sun, 29 Mar 2020 16:43:49 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id E79831C02C for ; Sun, 29 Mar 2020 16:43:40 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200329144340euoutp0286e78e90c3331fae7fe4b3f11342b2de~AzYCHhWoO1301113011euoutp02f for ; Sun, 29 Mar 2020 14:43:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200329144340euoutp0286e78e90c3331fae7fe4b3f11342b2de~AzYCHhWoO1301113011euoutp02f DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585493020; bh=M7fJPba7ImOU1eJfmvdx8D1pboFpBOi4ntuP+Fmij4o=; h=From:To:Subject:Date:In-Reply-To:References:From; b=MLGXiYHD07Jd1lDRzsMQmDeF2AipQS+a66DAD8HUfwHLpxSyCpKTq6NFupYpphPoE yhYrTfpbIuWWRW54iydMC+z4r8iX6uJXhpTBeoJyAtlej9qAm41miAMeu5pbi1Jm3z OkwCzYd1WAwpkTHQ7nNbtZZYyLmepJ5F7JJmIy3Y= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200329144340eucas1p14e391c8792c57d5e41efe58a35281db2~AzYBjr3AJ1546415464eucas1p16; Sun, 29 Mar 2020 14:43:40 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id E2.A3.60679.C14B08E5; Sun, 29 Mar 2020 15:43:40 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200329144339eucas1p19f866f53b24156a01ef54ec5e6bb8926~AzYBKRdQN1536015360eucas1p19; Sun, 29 Mar 2020 14:43:39 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200329144339eusmtrp1001d5a454a7544b5351e5ef79ce758ba~AzYBJmM151668216682eusmtrp1d; Sun, 29 Mar 2020 14:43:39 +0000 (GMT) X-AuditID: cbfec7f4-0e5ff7000001ed07-77-5e80b41ca93b Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 9E.D6.08375.B14B08E5; Sun, 29 Mar 2020 15:43:39 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200329144339eusmtip1f09c101709e67e23f6b7ca6eda695d99~AzYAq4awO0185501855eusmtip1R; Sun, 29 Mar 2020 14:43:39 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, tiwei.bie@intel.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com Date: Sun, 29 Mar 2020 17:42:51 +0300 Message-Id: <20200329144308.5103-6-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200329144308.5103-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJIsWRmVeSWpSXmKPExsWy7djPc7oyWxriDD4tZLNo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLFJdN SmpOZllqkb5dAlfGpWWb2QumqlRcaJnI1sB4Q7aLkZNDQsBEouXuRSYQW0hgBaPE2jbLLkYu IPsLo8SW3UdZIJzPjBJ98/axwXRMPXOHGSKxnFHixcctTBDOV0aJsxdng1WxCWhInO6YB5YQ EZjPKHGy5zMzSEJYwENiWXs/WBGLgKpE/437YDavgIXEsUV/WSBWyEus3nAArJ5TwFJiwvu7 jCCDJATus0l8OboZqIgDyHGRuD1TC6JeWOLV8S3sELaMxOnJPVBzqiX2dL1lh+jtYJT42rCV ESJhL7Hl9Tl2kDnMApoS63fpQ4QdJa7+7GOCGM8nceOtIEiYGcictG06M0SYV6KjTQiiWkni wMlLUGEJib+/eSDCHhLXj+9hgwTJbkaJJe0/WCYwys1C2LWAkXEVo3hqaXFuemqxUV5quV5x Ym5xaV66XnJ+7iZGYAI4/e/4lx2Mu/4kHWIU4GBU4uE1qKyPE2JNLCuuzD3EKMHBrCTCy+bf ECfEm5JYWZValB9fVJqTWnyIUZqDRUmc13jRy1ghgfTEktTs1NSC1CKYLBMHp1QD48zka3vX tO3i/2jvExYSM0Hi+3OfZ2tddH0EfTrPazivfrzK88/lB6tNKpOsm5/eCPbnnnmT55A0Y5L6 hGOlum+ThU5LTJvQE/PEJdU453dDtPyvpvt3573XSL98eO5ft5m/2dZYa2pOOLZwQjLD9xvO m5LCdiiuX/d2W7+2atWjuY25C6VehyixFGckGmoxFxUnAgACq0nr/AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsVy+t/xu7rSWxriDA7M07Jo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLlJ5N UX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7GpWWb2Qum qlRcaJnI1sB4Q7aLkZNDQsBEYuqZO8xdjFwcQgJLGSVe3r3N3sXIAZSQkHj9hBmiRljiz7Uu NhBbSOAzo0RTszKIzSagIXG6Yx4TSK+IwHJGif7LrWBFwgIeEsva+8FsFgFVif4b98FsXgEL iWOL/rJADJWXWL3hANgCTgFLiQnv7zJCLEiXOLjrBNMERt4FjAyrGEVSS4tz03OLDfWKE3OL S/PS9ZLzczcxAgNy27Gfm3cwXtoYfIhRgINRiYfXoLI+Tog1say4MvcQowQHs5IIL5t/Q5wQ b0piZVVqUX58UWlOavEhRlOgoyYyS4km5wOjJa8k3tDU0NzC0tDc2NzYzEJJnLdD4GAM0BmJ JanZqakFqUUwfUwcnFINjM3/d026cuTiAv6Hzw//FFut/G/P+/I//mFOCyd9dPebEibPK3p0 4p77E/901840ORlca2nezF/w7RjTli8S6caPzj2793iai3iB+ZRL5Y6Ohw9dZo6V3Mpx9t7u Rz5Pf65cl1MaGv91sXXopgAmvtr+vOnqBTuexHxkubxoIs+iS6Ftf2sdmCSVWIozEg21mIuK EwE2nWFWXgIAAA== X-CMS-MailID: 20200329144339eucas1p19f866f53b24156a01ef54ec5e6bb8926 X-Msg-Generator: CA X-RootMTR: 20200329144339eucas1p19f866f53b24156a01ef54ec5e6bb8926 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200329144339eucas1p19f866f53b24156a01ef54ec5e6bb8926 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200329144308.5103-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v7 5/5] net/virtio: Support of VIRTIO_NET_F_SPEED_DUPLEX 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch adds a support of VIRTIO_NET_F_SPEED_DUPLEX feature for virtio driver. There are few ways to specify speed of the link: 'speed' devarg negotiate speed from qemu via VIRTIO_NET_F_SPEED_DUPLEX The highest priority is devarg. If devarg is not specified, drivers tries to negotiate it from qemu. Signed-off-by: Ivan Dyukov --- drivers/net/virtio/virtio_ethdev.c | 26 +++++++++++++++++++++++--- drivers/net/virtio/virtio_ethdev.h | 3 ++- drivers/net/virtio/virtio_pci.h | 16 ++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index fe0e292ef..8a6e1933a 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1662,7 +1662,8 @@ virtio_configure_intr(struct rte_eth_dev *dev) return 0; } - +#define SPEED_UNKNOWN 0xffffffff +#define DUPLEX_UNKNOWN 0xff /* reset device and renegotiate features if needed */ static int virtio_init_device(struct rte_eth_dev *eth_dev, uint64_t req_features) @@ -1718,6 +1719,25 @@ virtio_init_device(struct rte_eth_dev *eth_dev, uint64_t req_features) hw->mac_addr[0], hw->mac_addr[1], hw->mac_addr[2], hw->mac_addr[3], hw->mac_addr[4], hw->mac_addr[5]); + if (hw->speed == SPEED_UNKNOWN) { + if (vtpci_with_feature(hw, VIRTIO_NET_F_SPEED_DUPLEX)) { + config = &local_config; + vtpci_read_dev_config(hw, + offsetof(struct virtio_net_config, speed), + &config->speed, sizeof(config->speed)); + vtpci_read_dev_config(hw, + offsetof(struct virtio_net_config, duplex), + &config->duplex, sizeof(config->duplex)); + hw->speed = config->speed; + hw->duplex = config->duplex; + } + } + if (hw->speed == SPEED_UNKNOWN) + hw->speed = ETH_SPEED_NUM_10G; + if (hw->duplex == DUPLEX_UNKNOWN) + hw->duplex = ETH_LINK_FULL_DUPLEX; + PMD_INIT_LOG(DEBUG, "link speed = %d, duplex = %d", + hw->speed, hw->duplex); if (vtpci_with_feature(hw, VIRTIO_NET_F_CTRL_VQ)) { config = &local_config; @@ -1865,7 +1885,7 @@ int eth_virtio_dev_init(struct rte_eth_dev *eth_dev) { struct virtio_hw *hw = eth_dev->data->dev_private; - uint32_t speed = ETH_SPEED_NUM_10G; + uint32_t speed = SPEED_UNKNOWN; int ret; if (sizeof(struct virtio_net_hdr_mrg_rxbuf) > RTE_PKTMBUF_HEADROOM) { @@ -2450,7 +2470,7 @@ virtio_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complet struct virtio_hw *hw = dev->data->dev_private; memset(&link, 0, sizeof(link)); - link.link_duplex = ETH_LINK_FULL_DUPLEX; + link.link_duplex = hw->duplex; link.link_speed = hw->speed; link.link_autoneg = ETH_LINK_FIXED; diff --git a/drivers/net/virtio/virtio_ethdev.h b/drivers/net/virtio/virtio_ethdev.h index cd8947656..febaf17a8 100644 --- a/drivers/net/virtio/virtio_ethdev.h +++ b/drivers/net/virtio/virtio_ethdev.h @@ -37,7 +37,8 @@ 1ULL << VIRTIO_F_RING_PACKED | \ 1ULL << VIRTIO_F_IOMMU_PLATFORM | \ 1ULL << VIRTIO_F_ORDER_PLATFORM | \ - 1ULL << VIRTIO_F_NOTIFICATION_DATA) + 1ULL << VIRTIO_F_NOTIFICATION_DATA | \ + 1ULL << VIRTIO_NET_F_SPEED_DUPLEX) #define VIRTIO_PMD_SUPPORTED_GUEST_FEATURES \ (VIRTIO_PMD_DEFAULT_GUEST_FEATURES | \ diff --git a/drivers/net/virtio/virtio_pci.h b/drivers/net/virtio/virtio_pci.h index ed98e11c3..1da3df940 100644 --- a/drivers/net/virtio/virtio_pci.h +++ b/drivers/net/virtio/virtio_pci.h @@ -141,6 +141,9 @@ struct virtnet_ctl; */ #define VIRTIO_F_NOTIFICATION_DATA 38 +/* Device set linkspeed and duplex */ +#define VIRTIO_NET_F_SPEED_DUPLEX 63 + /* The Guest publishes the used index for which it expects an interrupt * at the end of the avail ring. Host should ignore the avail->flags field. */ /* The Host publishes the avail index for which it expects a kick @@ -260,6 +263,7 @@ struct virtio_hw { uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; uint32_t notify_off_multiplier; uint32_t speed; /* link speed in MB */ + uint8_t duplex; uint8_t *isr; uint16_t *notify_base; struct virtio_pci_common_cfg *common_cfg; @@ -306,6 +310,18 @@ struct virtio_net_config { uint16_t status; uint16_t max_virtqueue_pairs; uint16_t mtu; + /* + * speed, in units of 1Mb. All values 0 to INT_MAX are legal. + * Any other value stands for unknown. + */ + uint32_t speed; + /* + * 0x00 - half duplex + * 0x01 - full duplex + * Any other value stands for unknown. + */ + uint8_t duplex; + } __attribute__((packed)); /*