From patchwork Mon Mar 30 07:57:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67400 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 181BAA0562; Mon, 30 Mar 2020 09:58:35 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 893791C065; Mon, 30 Mar 2020 09:58:30 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 367322C15 for ; Mon, 30 Mar 2020 09:58:29 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200330075828euoutp02de3614b160cc8b3c49d55f4f7bf448f1~BBfh6WOpt0127201272euoutp02C for ; Mon, 30 Mar 2020 07:58:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200330075828euoutp02de3614b160cc8b3c49d55f4f7bf448f1~BBfh6WOpt0127201272euoutp02C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585555108; bh=mHhQ03gcfc8lc4HgXNspAnL6+ptFrufucmW+PD+kjK4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=mBYi22ehSRlurWDKbhvOXfvKOCAK/9gH5WMaBqOCUxG8Y5Y9koX9IGIywYngbt/z7 /z+85OK13jEsPUcsVJJwFKie0Rn9rGLPwcSRQl2zngxVnzeJmXrhUuFgkfJENw0MHe 28CbrGfjC3hTKzePkdByAIRacSFfHumb4aJ6x1Qw= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200330075828eucas1p23897ee1eb088c143c2d8a3ba144013be~BBfhneVwI0503405034eucas1p29; Mon, 30 Mar 2020 07:58:28 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id F5.3B.60698.4A6A18E5; Mon, 30 Mar 2020 08:58:28 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200330075827eucas1p2b4718ecf08cc7d20227befb4ce3a5675~BBfhUtNOl3250232502eucas1p2k; Mon, 30 Mar 2020 07:58:27 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200330075827eusmtrp1a054e43566b76f20476da7f26b303be0~BBfhUB-Ad2812428124eusmtrp1U; Mon, 30 Mar 2020 07:58:27 +0000 (GMT) X-AuditID: cbfec7f5-a0fff7000001ed1a-b4-5e81a6a4e207 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id A3.DF.07950.3A6A18E5; Mon, 30 Mar 2020 08:58:27 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200330075827eusmtip2dcdbd5753d7d0a6ab95e675f6b16cab3~BBfg1Bz0n0188301883eusmtip2x; Mon, 30 Mar 2020 07:58:27 +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: Mon, 30 Mar 2020 10:57:58 +0300 Message-Id: <20200330075814.6857-2-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330075814.6857-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBIsWRmVeSWpSXmKPExsWy7djP87pLljXGGez6zGvRuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKC6b lNSczLLUIn27BK6MNwd+MxYsF6xoXfOTrYGxka+LkZNDQsBE4tfFtyxdjFwcQgIrGCXWv9rE DJIQEvjCKHH9syuE/ZlRYul8tS5GDrCGv/0JEPXLGSVW3PzCDuF8ZZS4ea6XHaSBTUBD4nTH PCaQhIjAfEaJkz2fwaYKC9hI7J3TxgpiswioSkz78wzM5hWwkLg95Q0zxEnyEqs3HACzOQUs Jc5M3Ao2SELgNpvEjp9LWSCKXCSmTDnDCmELS7w6voUdwpaROD25B6qmWmJP11t2iOYORomv DVsZIRL2Elten2MH+YdZQFNi/S59iLCjxPczK1gh3uSTuPFWECTMDGRO2jadGSLMK9HRJgRR rSRx4OQlqLCExN/fPBBhD4nuC93QMNnNKHFx5x32CYxysxB2LWBkXMUonlpanJueWmycl1qu V5yYW1yal66XnJ+7iREY/6f/Hf+6g3Hfn6RDjAIcjEo8vDO2NsQJsSaWFVfmHmKU4GBWEuFl 8wcK8aYkVlalFuXHF5XmpBYfYpTmYFES5zVe9DJWSCA9sSQ1OzW1ILUIJsvEwSnVwBilosw0 /d06h8ibJqefFC56vEe08pe0Yg9zrND6WxX7NFu5XZpXP55894zGxbnx11Q593qKyBkvmFBY Vu6XllDTvj03au+zpWes4iM3PlVgui+4/FV5o9yb/c0pu3Umngp/w3PbQ5o9P2/trUrGXNnE LxZ2TInHFF0nyCUcDgu6IyDmxuP5U4mlOCPRUIu5qDgRADMIU+b7AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsVy+t/xe7qLlzXGGSw4bW7RuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKD2b ovzSklSFjPziElulaEMLIz1DSws9IxNLPUNj81grI1MlfTublNSczLLUIn27BL2MNwd+MxYs F6xoXfOTrYGxka+LkYNDQsBE4m9/QhcjF4eQwFJGiV+TnjFBxCUkXj9h7mLkBDKFJf5c62KD qPnMKPFmy2Z2kASbgIbE6Y55TCAJEYHljBL9l1vZQBLCAjYSe+e0sYLYLAKqEtP+PAOzeQUs JG5PeQM1VV5i9YYDYDangKXEmYlbmUBsIYF0icbbHUwTGHkXMDKsYhRJLS3OTc8tNtIrTswt Ls1L10vOz93ECAzIbcd+btnB2PUu+BCjAAejEg/vjK0NcUKsiWXFlbmHGCU4mJVEeNn8gUK8 KYmVValF+fFFpTmpxYcYTYGOmsgsJZqcD4yWvJJ4Q1NDcwtLQ3Njc2MzCyVx3g6BgzFAZySW pGanphakFsH0MXFwSjUwKqol2n0Is/Oy/fencvmOqOSQ+fpbgoTkmZVzL3WcTVI2Fu/TVC29 fULchYefhWvtjbVM/o9mbd/G/y+uUyN2Qqa+YrK17TbRLutui4P1y17MN7Uoyw1a4W92cf2/ 0h1buJXuCwiv+ZCk/+ywwncrbcnYSr/+bP5L87j3aVaLqGlcXVG2wVGJpTgj0VCLuag4EQB+ oAF8XgIAAA== X-CMS-MailID: 20200330075827eucas1p2b4718ecf08cc7d20227befb4ce3a5675 X-Msg-Generator: CA X-RootMTR: 20200330075827eucas1p2b4718ecf08cc7d20227befb4ce3a5675 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200330075827eucas1p2b4718ecf08cc7d20227befb4ce3a5675 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200330075814.6857-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v8 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 Mon Mar 30 07:57:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67401 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 E2271A0562; Mon, 30 Mar 2020 09:58:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EDAC41C07C; Mon, 30 Mar 2020 09:58:32 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id DC1FF1C06A for ; Mon, 30 Mar 2020 09:58:30 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200330075830euoutp01f8d2fe698bf931a99714ff292c895c88~BBfjla6dW2510925109euoutp01X for ; Mon, 30 Mar 2020 07:58:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200330075830euoutp01f8d2fe698bf931a99714ff292c895c88~BBfjla6dW2510925109euoutp01X DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585555110; bh=ZbN59GHW4ffE3sG8tYnOAPv/kl6HquKSHf4JmyUTkGE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=jzOEP+pGi5i2FHW8jgJpNbyDqS5kZjvuqGR0euYTyuWAJ/wb+oyE3ICMhnCbdqlnA tQ5eq+iobIKhFHTYjOnIkQyV6aLzpZG4rKHLtWffznhT7KOrZZ4vWGPVb5SVcWXtov YBHW06cZcRbwP8G2ppzaqcGhK4RdeO5dPKm36VIs= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200330075830eucas1p22044bedf12ad0e94586ee29fb74417f3~BBfjWM5DN3036230362eucas1p2x; Mon, 30 Mar 2020 07:58:30 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id C2.FE.60679.5A6A18E5; Mon, 30 Mar 2020 08:58:30 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200330075829eucas1p1b21f029dafd6056b950bdd810fe8458e~BBfjBoaZE3137131371eucas1p1q; Mon, 30 Mar 2020 07:58:29 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200330075829eusmtrp1563ea5d47f4fd07de1c5e8956d02a581~BBfjBEKXL2812428124eusmtrp1Z; Mon, 30 Mar 2020 07:58:29 +0000 (GMT) X-AuditID: cbfec7f4-0cbff7000001ed07-76-5e81a6a54a26 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 31.AE.08375.5A6A18E5; Mon, 30 Mar 2020 08:58:29 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200330075829eusmtip2cd1017b94a6387d578323b5b31695834~BBfidxbis0192701927eusmtip2J; Mon, 30 Mar 2020 07:58:29 +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: Mon, 30 Mar 2020 10:57:59 +0300 Message-Id: <20200330075814.6857-3-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330075814.6857-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNIsWRmVeSWpSXmKPExsWy7djPc7rLljXGGWzuZbRo3fGAxeLdp+1M FrMuNbFbHOvcw2KxteE/k8WfN6YWmy9OYnJg9/i1YCmrx+I9L5k83u+7yubRt2UVYwBLFJdN SmpOZllqkb5dAlfGtl/nmQv2mlScXLeWsYHxslYXIyeHhICJRPun5exdjFwcQgIrGCVW3d/N BuF8YZSY0nKECcL5zCjxfMleZpiW3k0/oKqWM0p0rX4J5XxllHi37iNYFZuAhsTpjnlg7SIC 8xklTvZ8BksIC1hKNG7bywpiswioSvz8eRHM5hWwkDjWthVqhbzE6g0HwGxOoPozE7eCDZIQ uM0m0TBhHwtEkYvEhj/9UA3CEq+Ob2GHsGUkTk/ugaqpltjT9ZYdormDUeJrw1ZGiIS9xJbX 54ASHBzMApoS63fpQ4QdJU59u8AEEpYQ4JO48VYQJMwMZE7aNp0ZIswr0dEmBFGtJHHg5CWo sITE3988EGEPialrfkHDdDejxNT/exknMMrNQti1gJFxFaN4amlxbnpqsVFearlecWJucWle ul5yfu4mRmASOP3v+JcdjLv+JB1iFOBgVOLhnbG1IU6INbGsuDL3EKMEB7OSCC+bP1CINyWx siq1KD++qDQntfgQozQHi5I4r/Gil7FCAumJJanZqakFqUUwWSYOTqkGxgi5vyGGuVsmseq1 BPvk7jxvr977+pdSnRrj5gVGL66qruZ+fDQ0o2RBc1U9F+t9JSVp2bj5R86vsNA1fsj7tFZv nlVlYZLp8jDThDciZ7bsLn31i/H4Kg2DXadSnk3iX6s/41Jre0tZuZalP9+c9vD3b9Icds5e Lbzp+vTZ4Z2BH95Y6T4rUGIpzkg01GIuKk4EAPwAHub+AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsVy+t/xe7pLlzXGGRydqGnRuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKD2b ovzSklSFjPziElulaEMLIz1DSws9IxNLPUNj81grI1MlfTublNSczLLUIn27BL2Mbb/OMxfs Nak4uW4tYwPjZa0uRk4OCQETid5NP9i6GLk4hASWMkoc2HMLyOEASkhIvH7CDFEjLPHnWhdU zWdGiZu3mhlBEmwCGhKnO+YxgSREBJYzSvRfbmUDSQgLWEo0btvLCmKzCKhK/Px5EczmFbCQ ONa2FWqqvMTqDQfAbE6g+jMTtzKB2EIC6RKNtzuYJjDyLmBkWMUoklpanJueW2yoV5yYW1ya l66XnJ+7iREYktuO/dy8g/HSxuBDjAIcjEo8vDO2NsQJsSaWFVfmHmKU4GBWEuFl8wcK8aYk VlalFuXHF5XmpBYfYjQFOmois5Rocj4wXvJK4g1NDc0tLA3Njc2NzSyUxHk7BA7GAJ2RWJKa nZpakFoE08fEwSnVwOjw9YCCLlOFJuOKPf9Ff0ibTDtme7nM9cinG3W6+kmLF7QUPlzgY6bf euLxpquv/ZxOfK17fdrLWveP09Xn5x7Yc978fYtfQ/bN3CazPxsyb22RuLnz2Y2Fz/R+tzud tLZfnmxzWORZaapR7vcogRlbH17Yqabx8ubnM4c+MdWYHJ2z6utEGYtCJZbijERDLeai4kQA AMO6Q18CAAA= X-CMS-MailID: 20200330075829eucas1p1b21f029dafd6056b950bdd810fe8458e X-Msg-Generator: CA X-RootMTR: 20200330075829eucas1p1b21f029dafd6056b950bdd810fe8458e X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200330075829eucas1p1b21f029dafd6056b950bdd810fe8458e References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200330075814.6857-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v8 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 Mon Mar 30 07:58:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67402 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 C9C18A0562; Mon, 30 Mar 2020 09:58:53 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 510B41C0AA; Mon, 30 Mar 2020 09:58:35 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 3C4F41C07B for ; Mon, 30 Mar 2020 09:58:32 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200330075832euoutp02be92325493e31e038f7ab40110d3beb2~BBflKNACC0173601736euoutp02w for ; Mon, 30 Mar 2020 07:58:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200330075832euoutp02be92325493e31e038f7ab40110d3beb2~BBflKNACC0173601736euoutp02w DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585555112; bh=5tV+PUkbyK8uGKqGJo6atUhkYthNNopDlr81QODeU7I=; h=From:To:Subject:Date:In-Reply-To:References:From; b=KSZwk8ahEgD9+p5AXB3SkKWZ8lYIAa61YvLgbtc2LAXSB37wJ4DKzBW6k2pn1tlwx 0zsca4SUnmHPPkUN2lI6IZ5q+yLGbFRccVRBGruvARxOh2oOiqxMEFBYnNtwiyjByK pbtQQ+nfCnV8huu0fjvyGTLG09kVjlza6tavRR9s= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200330075831eucas1p1cba36087ba7162d0b71ae241de074895~BBfk7nwJX0921409214eucas1p1H; Mon, 30 Mar 2020 07:58:31 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 34.FE.60679.7A6A18E5; Mon, 30 Mar 2020 08:58:31 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200330075831eucas1p22cd157c9ba83fa3b6c0fa85ba37f1bb4~BBfktiABU2833228332eucas1p28; Mon, 30 Mar 2020 07:58:31 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200330075831eusmtrp1c80d1015c96a2f72ae9eea155b0e6430~BBfks-hTw2775327753eusmtrp1V; Mon, 30 Mar 2020 07:58:31 +0000 (GMT) X-AuditID: cbfec7f4-0cbff7000001ed07-7c-5e81a6a718ec Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 56.DF.07950.7A6A18E5; Mon, 30 Mar 2020 08:58:31 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200330075830eusmtip2d7acd24f5946ca4dc81e0549fb16e104~BBfkG3MVt3056530565eusmtip2h; Mon, 30 Mar 2020 07:58:30 +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: Mon, 30 Mar 2020 10:58:00 +0300 Message-Id: <20200330075814.6857-4-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330075814.6857-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djPc7rLlzXGGdw5oW/RuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKC6b lNSczLLUIn27BK6MGVcvMxc846iYdeE+cwPjTPYuRg4OCQETifYTKV2MXBxCAisYJSZ+a2aF cL4wSny5vpali5ETyPnMKNH7wh7EBmk42/KOEaJoOaPEj3fn2SGcr4wS73afYgapYhPQkDjd MY8JJCEiMJ9R4mTPZ7CEsICNxKTmA4wgNouAqkTT0yNgNq+AhUT/2x5WiBXyEqs3HACr5xSw lDgzcSvYIAmB62wSO3s3MUIUuUg8+dTNBmELS7w6voUdwpaROD25hwXCrpbY0/WWHaK5g1Hi a8NWqGZ7iS2vz4FDgFlAU2L9Ln2IsKPE4871LJCA4ZO48VYQJMwMZE7aNp0ZIswr0dEmBFGt JHHg5CWosITE3988EKaHxJ5+Jki47WaU+HcvdQKj3CyETQsYGVcxiqeWFuempxYb5aWW6xUn 5haX5qXrJefnbmIERv/pf8e/7GDc9SfpEKMAB6MSD++MrQ1xQqyJZcWVuYcYJTiYlUR42fyB QrwpiZVVqUX58UWlOanFhxilOViUxHmNF72MFRJITyxJzU5NLUgtgskycXBKNTBu4JlwJ1ey VvnMq6vpyunPOdhPX7zz5tKHqBd/P/r0T61giJTQ35371fnrbp/UpV+ueL825WypvbnVb5Yd C9M92ePxIq+aTpSv0RPO48/xPCJt7jjJqtZB7F+0eE9++vxdpXNbTjKHOHJ/nWZ60Nv52G+l yXppE2x6vv3lEvabfW3yb6UF0sFKLMUZiYZazEXFiQDE8Lgj+gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsVy+t/xe7rLlzXGGbybJGvRuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKD2b ovzSklSFjPziElulaEMLIz1DSws9IxNLPUNj81grI1MlfTublNSczLLUIn27BL2MGVcvMxc8 46iYdeE+cwPjTPYuRk4OCQETibMt7xhBbCGBpYwSe97ndTFyAMUlJF4/YYYoEZb4c62LDaLk M6PE59MpIDabgIbE6Y55TF2MXBwiAssZJfovt4IVCQvYSExqPgA2k0VAVaLp6REwm1fAQqL/ bQ8rxFB5idUbDoAt4BSwlDgzcSsTxIJ0icbbHUwTGHkXMDKsYhRJLS3OTc8tNtIrTswtLs1L 10vOz93ECAzHbcd+btnB2PUu+BCjAAejEg/vjK0NcUKsiWXFlbmHGCU4mJVEeNn8gUK8KYmV ValF+fFFpTmpxYcYTYGOmsgsJZqcD4yVvJJ4Q1NDcwtLQ3Njc2MzCyVx3g6BgzFAZySWpGan phakFsH0MXFwSjUwqqxq3b9w/t/lK54YfjmkGRue8MrzSa9o+PqU/PM/r3vnz7iY8cLjrLz9 19Ul8VP8Z7x6rzhxZ4qfjrDJ1qfWnbt6b04PYr19tkDEIWyZbjOPrUHTz3Cn18kb+/tPaCQ2 XnzgbeapOa28d9NzcaYy7UCvyVMPLjiuVlf+naH5Q9gKt4VT3OxuKrEUZyQaajEXFScCAL7P zU9dAgAA X-CMS-MailID: 20200330075831eucas1p22cd157c9ba83fa3b6c0fa85ba37f1bb4 X-Msg-Generator: CA X-RootMTR: 20200330075831eucas1p22cd157c9ba83fa3b6c0fa85ba37f1bb4 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200330075831eucas1p22cd157c9ba83fa3b6c0fa85ba37f1bb4 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200330075814.6857-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v8 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 Mon Mar 30 07:58:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67403 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 700F5A0562; Mon, 30 Mar 2020 09:59:02 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D58231C0B0; Mon, 30 Mar 2020 09:58:36 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id AB9B61C08E for ; Mon, 30 Mar 2020 09:58:33 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200330075833euoutp020fdd734cdf169b3fcb25b80c4eac71a1~BBfmfBFEU0192101921euoutp02Y for ; Mon, 30 Mar 2020 07:58:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200330075833euoutp020fdd734cdf169b3fcb25b80c4eac71a1~BBfmfBFEU0192101921euoutp02Y DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585555113; bh=I9YXrBYTC5W24DxEpIEmAKswyLbTsR7EIwzmiLzk6XY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=GsWt3I0Cw7i6L/GS2xtjsV42eTUuo1+lekNTiDSBvYWPE0kzks/dI2V7cc5nqAMz/ bCRLvSp2pF7LvBgLu+WEPekfP5tSf+s51l64bYWDfguMRL1pGgZd6jEuudV9eBgpv+ eCVXtrWtmxMH1CauQaaHqwto/2ruX107l4FQeJPc= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200330075833eucas1p20eb1537cf99a81f94c823cf5da9c65c3~BBfmUpc8f3250232502eucas1p2n; Mon, 30 Mar 2020 07:58:33 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 89.3B.60698.9A6A18E5; Mon, 30 Mar 2020 08:58:33 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200330075832eucas1p295cdf00368bb91a1ecec202f1cd3624a~BBfl_q4V90484204842eucas1p2K; Mon, 30 Mar 2020 07:58:32 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200330075832eusmtrp193a533817d15ff664140748981aff95c~BBfl_FWyr2774027740eusmtrp1j; Mon, 30 Mar 2020 07:58:32 +0000 (GMT) X-AuditID: cbfec7f5-a0fff7000001ed1a-c8-5e81a6a9391d Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id C4.AE.08375.8A6A18E5; Mon, 30 Mar 2020 08:58:32 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200330075832eusmtip24fa52902047046c716a798df257ef6a1~BBflctTkU0100701007eusmtip2r; Mon, 30 Mar 2020 07:58:32 +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: Mon, 30 Mar 2020 10:58:01 +0300 Message-Id: <20200330075814.6857-5-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330075814.6857-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJIsWRmVeSWpSXmKPExsWy7djP87orlzXGGcx6LmDRuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKC6b lNSczLLUIn27BK6MyVuWshb84KtYcOchYwPjcp4uRk4OCQETiUsL5rCA2EICKxglmua4djFy AdlfGCVW7f/JDuF8ZpRY9LKNGabj3tUjbBCJ5YwSN64dZoJwvjJK9PQvYgepYhPQkDjdMQ8s ISIwn1HiZM9nsHZhAUeJ30tPAxVxcLAIqErMOmEFEuYVsJC4fH4VK8QGeYnVGw6AlXMKWEqc mbgVbI6EwH02ib67B9khilwkpt2dywhhC0u8Or4FKi4jcXpyDwuEXS2xp+stO0RzB6PE14at UA32EltenwM7gllAU2L9Ln2IsKNE570dTCBhCQE+iRtvBUHCzEDmpG3TmSHCvBIdbUIQ1UoS B05eggpLSPz9DQ1RD4nOL52skCDZzSjx+8JHxgmMcrMQdi1gZFzFKJ5aWpybnlpsnJdarlec mFtcmpeul5yfu4kRmABO/zv+dQfjvj9JhxgFOBiVeHhnbG2IE2JNLCuuzD3EKMHBrCTCy+YP FOJNSaysSi3Kjy8qzUktPsQozcGiJM5rvOhlrJBAemJJanZqakFqEUyWiYNTqoFxd8uKCYe2 qkb+fNlbf3HnP+k58l9U5jVMmDH3WpfT5eY7hVMtuo44/b1RWJ81uc5FNPKWqigv16b1v9cc 8W9K/y5+sken9f4q2TtTReX2Szs5bQg96BCxIyy81vpe0at1W09fC18VvEWe+cGs7EC9Nskd V4V4XsTI75h+yruzw3ip8AQxh8TnSizFGYmGWsxFxYkAHtEAFvwCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsVy+t/xe7orljXGGSyeYGrRuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKD2b ovzSklSFjPziElulaEMLIz1DSws9IxNLPUNj81grI1MlfTublNSczLLUIn27BL2MyVuWshb8 4KtYcOchYwPjcp4uRk4OCQETiXtXj7B1MXJxCAksZZR4MO8maxcjB1BCQuL1E2aIGmGJP9e6 oGo+M0rsWvsULMEmoCFxumMeE0hCRGA5o0T/5VY2kISwgKPE76Wn2UEGsQioSsw6YQUS5hWw kLh8fhUrxFB5idUbDoDN4RSwlDgzcSsTiC0kkC7ReLuDaQIj7wJGhlWMIqmlxbnpucWGesWJ ucWleel6yfm5mxiBAbnt2M/NOxgvbQw+xCjAwajEwztja0OcEGtiWXFl7iFGCQ5mJRFeNn+g EG9KYmVValF+fFFpTmrxIUZToJsmMkuJJucDoyWvJN7Q1NDcwtLQ3Njc2MxCSZy3Q+BgDNAZ iSWp2ampBalFMH1MHJxSDYxJSr9mXGm7XL22JbZTpG3d1PlnTy86ajnzlLyLyeW0kt47axlD 3t/ZcLLcotJ0qUKl7eJnN8SiWY7xrJt8OsWn8UFgW0VXkbBA+7P9QpOOMj74+OUqm95sxWhu rZ/71S6LLqmpC1VT4FvOmvmiQaXr4Y3nvb4r+5K1bPZstsyZHr9W+swvmwolluKMREMt5qLi RABX+n2EXgIAAA== X-CMS-MailID: 20200330075832eucas1p295cdf00368bb91a1ecec202f1cd3624a X-Msg-Generator: CA X-RootMTR: 20200330075832eucas1p295cdf00368bb91a1ecec202f1cd3624a X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200330075832eucas1p295cdf00368bb91a1ecec202f1cd3624a References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200330075814.6857-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v8 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 Mon Mar 30 07:58:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67404 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 CA085A0562; Mon, 30 Mar 2020 09:59:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E141D1C0B9; Mon, 30 Mar 2020 09:58:38 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 244601C02A for ; Mon, 30 Mar 2020 09:58:35 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200330075834euoutp01230143fb231de44916bbe99b33ee099c~BBfnzdyq_2510925109euoutp01e for ; Mon, 30 Mar 2020 07:58:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200330075834euoutp01230143fb231de44916bbe99b33ee099c~BBfnzdyq_2510925109euoutp01e DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1585555114; bh=azBop3x8eIJeC0jTqFtVBghYmdWsKLcfxPp4qmB8fvM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=hplgxlNVjBKtkfVS5S+V3+g9q0A4do15nNgEOVIxb0WikdNEyZp4bxeMRpEtnzNGE tHJSuSD6LISY/MarX2wXf9dCDC2T0Oej/BipSNqK5OQ3FrxXN/EPzUNUgwXEUIn059 qH2d5/cFXCfLb3+Q6NGAjTQc+M97W0f5R9KQNBQI= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200330075834eucas1p2a626069748c4f6f62f7ad2fb85bbc9e8~BBfnjrDui0523005230eucas1p2O; Mon, 30 Mar 2020 07:58:34 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 5B.3B.60698.AA6A18E5; Mon, 30 Mar 2020 08:58:34 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200330075834eucas1p2892713fbbd1b13d9f65e5efc9d25d9a8~BBfnS9PFC0523005230eucas1p2N; Mon, 30 Mar 2020 07:58:34 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200330075834eusmtrp2cb98010418fd21775d64f2f4b52aca5a~BBfnSDvge1664516645eusmtrp2K; Mon, 30 Mar 2020 07:58:34 +0000 (GMT) X-AuditID: cbfec7f5-a29ff7000001ed1a-d1-5e81a6aa1cf2 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 26.AE.08375.AA6A18E5; Mon, 30 Mar 2020 08:58:34 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200330075833eusmtip2531ced43063a2549c0b5f96711771fbc~BBfmxGwZh3044630446eusmtip2O; Mon, 30 Mar 2020 07:58: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: Mon, 30 Mar 2020 10:58:02 +0300 Message-Id: <20200330075814.6857-6-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330075814.6857-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBIsWRmVeSWpSXmKPExsWy7djPc7qrljXGGbzfqmrRuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKC6b lNSczLLUIn27BK6Mnt0X2AqmqFSsb6hrYLwh28XIySEhYCKxqu8gaxcjF4eQwApGiSfdn5kg nC+MEi9+nWSDcD4zSlxauY4ZpmXaqo+MEInljBKNOz+zQzhfGSUOXJvFClLFJqAhcbpjHtgs EYH5jBInez6DtQsLeEic3vCHEcRmEVCV+DG3jwnE5hWwkPg3YzcbxAp5idUbDoDVcwpYSpyZ uJUJIn6bTWLagyAI20VizsduqHphiVfHt7BD2DIS/3fOh6qvltjT9RbsOgmBDkaJrw1bGSES 9hJbXp8DSnBwMAtoSqzfpQ8RdpS4/nk7I0hYQoBP4sZbQZAwM5A5adt0Zogwr0RHmxBEtZLE gZOXoMISEn9/80CYHhLTtolAQmQ3MHhap7BMYJSbhbBqASPjKkbx1NLi3PTUYuO81HK94sTc 4tK8dL3k/NxNjMD4P/3v+NcdjPv+JB1iFOBgVOLhnbG1IU6INbGsuDL3EKMEB7OSCC+bP1CI NyWxsiq1KD++qDQntfgQozQHi5I4r/Gil7FCAumJJanZqakFqUUwWSYOTqkGxgAeN7dCxZov HYHmTnuLTqRvfyYmYBw8/1xK+xGD1D0zrqZlHU/1+X1t28LTvKXpPo5vlO0Xv9NLOqhvqWDi uvWCz+Q4rYwOzscPPor0eFo+5O35H3eWo/35TwH9pk1pv3rM97q6OTKmhfRnBC86ft3gsQU3 48myNzVrYzdFJvLvu/9matYWJZbijERDLeai4kQAoOfT5/sCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsVy+t/xe7qrljXGGSw6JWjRuuMBi8W7T9uZ LGZdamK3ONa5h8Via8N/Jos/b0wtNl+cxOTA7vFrwVJWj8V7XjJ5vN93lc2jb8sqxgCWKD2b ovzSklSFjPziElulaEMLIz1DSws9IxNLPUNj81grI1MlfTublNSczLLUIn27BL2Mnt0X2Aqm qFSsb6hrYLwh28XIySEhYCIxbdVHxi5GLg4hgaWMEncnrQRyOIASEhKvnzBD1AhL/LnWxQZi Cwl8ZpRo25kBYrMJaEic7pjHBNIrIrCcUaL/citYkbCAh8TpDX8YQWwWAVWJH3P7mEBsXgEL iX8zdrNBDJWXWL3hANgCTgFLiTMTtzJBLEiXaLzdwTSBkXcBI8MqRpHU0uLc9NxiQ73ixNzi 0rx0veT83E2MwHDcduzn5h2MlzYGH2IU4GBU4uGdsbUhTog1say4MvcQowQHs5IIL5s/UIg3 JbGyKrUoP76oNCe1+BCjKdBRE5mlRJPzgbGSVxJvaGpobmFpaG5sbmxmoSTO2yFwMAbojMSS 1OzU1ILUIpg+Jg5OqQZGHpH5OfOPsbLHPlX+8ZFpfm/JJ98vgYHm6otU+PVFtZ7MX/E41coq /3Ke1XTRmTEpdbGf/DniVomJlD89zvFQsS8h79XV7VH3dhsISsXP+vpg4u49h9JV8t787uT0 VZVctDfOwSvl3YZlxr9trP7aSJyaGmRd3yx0W4DttehDV7Yklo8HWv2VWIozEg21mIuKEwFl adwCXQIAAA== X-CMS-MailID: 20200330075834eucas1p2892713fbbd1b13d9f65e5efc9d25d9a8 X-Msg-Generator: CA X-RootMTR: 20200330075834eucas1p2892713fbbd1b13d9f65e5efc9d25d9a8 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200330075834eucas1p2892713fbbd1b13d9f65e5efc9d25d9a8 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200330075814.6857-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v8 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..bd89357e4 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)); /*