From patchwork Mon Apr 6 08: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: 67857 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 AC68BA0577; Mon, 6 Apr 2020 10:59:21 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C4CE31BEE3; Mon, 6 Apr 2020 10:59:16 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id A97151BEE1 for ; Mon, 6 Apr 2020 10:59:15 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200406085915euoutp02fcbe0e14ea0b67ab514a4157945889dc~DL1l4I8rj1702017020euoutp02A for ; Mon, 6 Apr 2020 08:59:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200406085915euoutp02fcbe0e14ea0b67ab514a4157945889dc~DL1l4I8rj1702017020euoutp02A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1586163555; bh=mHhQ03gcfc8lc4HgXNspAnL6+ptFrufucmW+PD+kjK4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=kfCo4/GCuHzudWxeisYIBp9itdRvEKj4RdaYZ0l62ecV/8mIx6VmtVzyg0KOcVrIF ZWJJGEfjKe7ZUMn5aZeqmLuhSKiBW+JL7mACpmrrdWv6TsUpH8bFY6kvXZAEdN9W/1 8H5hWP+tGwxvnM8DHCx7CxqGkxiFdHpjsoL6y7z4= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200406085914eucas1p2d28fbdf29191ebdccb922064cce5dbfc~DL1lqM9LR2195221952eucas1p2T; Mon, 6 Apr 2020 08:59:14 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 7F.27.61286.26FEA8E5; Mon, 6 Apr 2020 09:59:14 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200406085914eucas1p2e20a40d2cf7a3536fff12f44a75164bb~DL1lSUGnm2043520435eucas1p2a; Mon, 6 Apr 2020 08:59:14 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200406085914eusmtrp1756c345d2fc51ed13520a9146cf521a0~DL1lRtNH51258512585eusmtrp1A; Mon, 6 Apr 2020 08:59:14 +0000 (GMT) X-AuditID: cbfec7f2-f0bff7000001ef66-c1-5e8aef62ce71 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 9A.FC.08375.26FEA8E5; Mon, 6 Apr 2020 09:59:14 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200406085913eusmtip2c9a583456d7f1fcac0ff8b0c6a3ad991~DL1kve0qN3064030640eusmtip2b; Mon, 6 Apr 2020 08:59:13 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, v.kuramshin@samsung.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com, mb@smartsharesystems.com Date: Mon, 6 Apr 2020 11:57:59 +0300 Message-Id: <20200406085855.25773-2-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200406085855.25773-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrAIsWRmVeSWpSXmKPExsWy7djP87pJ77viDDa/N7Ro3fGAxeLdp+1M FrMuNbFbHOvcw2LR9+sqo8Xpm5vZLf68MbXYfHESkwOHx68FS1k9Fu95yeTxft9VNo++LasY PU496mYOYI3isklJzcksSy3St0vgynhz4DdjwXLBitY1P9kaGBv5uhg5OSQETCReLznIBGIL CaxglFh1kRHC/sIocWBuYRcjF5D9mVHi7vUFQEUcYA37jvNDxJczSpy+0sUG4XxllFjbOo0N pJtNQEPidMc8sKkiAnsZJY6dKQBpFhawkXg+VwskzCKgKnH480t2EJtXwFJizYMmNoiD5CVW bzjADGJzClhJTNnzlwVkvoTAazaJ53/+skIUuUi0Xp7HDmELS7w6vgXKlpE4PbmHBcKultjT 9ZYdormDUeJrw1ZGiIS9xJbX59hBDmIW0JRYv0sfIuwoMe/KAjaIJ/kkbrwVBAkzA5mTtk1n hgjzSnS0CUFUK0kcOHkJKiwh8fc3D0TYQ+Jy2zoWSIjsYZSYe/cu2wRGuVkIuxYwMq5iFE8t Lc5NTy02zEst1ytOzC0uzUvXS87P3cQITAen/x3/tIPx66WkQ4wCHIxKPLwMtzvjhFgTy4or cw8xSnAwK4nwSvUChXhTEiurUovy44tKc1KLDzFKc7AoifMaL3oZKySQnliSmp2aWpBaBJNl 4uCUamDsOBpc8UWsdJa9QgWH2vzfk47ZbN/5ca7PZ4H6X7tkOGc6iK2cabc8kPH4/ZKTMhtz 1ocdzro3+ziv98J65vdcyr9mr9wsU/6TSeJwwHn9Peeef/AwKEieOEsoNzMruFs29PZBg6s9 PDt110XO+TLdVuLj7YXzKx3uhdhLr+S2aFgkuOh22u3bSizFGYmGWsxFxYkAmiesSwMDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMLMWRmVeSWpSXmKPExsVy+t/xe7pJ77viDFqnSlq07njAYvHu03Ym i1mXmtgtjnXuYbHo+3WV0eL0zc3sFn/emFpsvjiJyYHD49eCpawei/e8ZPJ4v+8qm0ffllWM HqcedTMHsEbp2RTll5akKmTkF5fYKkUbWhjpGVpa6BmZWOoZGpvHWhmZKunb2aSk5mSWpRbp 2yXoZbw58JuxYLlgReuan2wNjI18XYwcHBICJhL7jvN3MXJxCAksZZQ4P3EfI0RcQuL1E+Yu Rk4gU1jiz7UuNoiaz4wSu87MZQdJsAloSJzumMcEkhAROM4o0TvrPxNIs7CAjcTzuVogNSwC qhKHP78Eq+cVsJRY86CJDWKovMTqDQfAFnAKWElM2fOXBaRVSCBDYuPDvAmMvAsYGVYxiqSW Fuem5xYb6hUn5haX5qXrJefnbmIEBui2Yz8372C8tDH4EKMAB6MSDy/D7c44IdbEsuLK3EOM EhzMSiK8Ur1AId6UxMqq1KL8+KLSnNTiQ4ymQDdNZJYSTc4HRk9eSbyhqaG5haWhubG5sZmF kjhvh8DBGCGB9MSS1OzU1ILUIpg+Jg5OqQZG7TU29a/NvSx/qfKmXlTIfXZqcs4JYyO5dRP+ WDAafL5dv0np5Fn79M1beW7czf9iklA2daXFi0NulrtuqGjvPKb52GST7I4n8Ul2P+VYNd4X r5X8fFZ05R6Z60tdigLF5jBsay04bW/Lef++2R93u2B2x57bV+Q5LvC+/NCV7+Iie2PhTcWl SizFGYmGWsxFxYkAwWVrn2YCAAA= X-CMS-MailID: 20200406085914eucas1p2e20a40d2cf7a3536fff12f44a75164bb X-Msg-Generator: CA X-RootMTR: 20200406085914eucas1p2e20a40d2cf7a3536fff12f44a75164bb X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200406085914eucas1p2e20a40d2cf7a3536fff12f44a75164bb References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200406085855.25773-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v9 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 Reviewed-by: Maxime Coquelin --- 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 Apr 6 08: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: 67858 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 711F7A0577; Mon, 6 Apr 2020 10:59:30 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ECD981BEE1; Mon, 6 Apr 2020 10:59:19 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 092D2F12 for ; Mon, 6 Apr 2020 10:59:18 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200406085917euoutp01bedbf78b28eadb33a99d171afa134791~DL1oKbSCb2568625686euoutp01n for ; Mon, 6 Apr 2020 08:59:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200406085917euoutp01bedbf78b28eadb33a99d171afa134791~DL1oKbSCb2568625686euoutp01n DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1586163557; bh=kjCql4u9252iZaMyyvDdJSv8maEhw1BXsfy/eMO+iD0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=LlOtVcmou7ZUxxCmMgHVcvC1TOIX046LlrrYBYtwAhFWthJ+miPaB23gw7mFoaRwo oYIv5Y9WeWqFMhROGMgi6O57Z/feqfBfbj4h4yzyJLx7TwFol6haHcXslOgkTYYiDf oefCYDYnEx0cMiuHXhKQBTsO/U4Oli8bRoqW947M= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200406085917eucas1p2d19aa95ae67bd87941b9b66b04ab134c~DL1n1t4rg3059930599eucas1p2B; Mon, 6 Apr 2020 08:59:17 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 14.56.60698.56FEA8E5; Mon, 6 Apr 2020 09:59:17 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200406085916eucas1p1e4b9a43f89e63e71aa877adca6046dc4~DL1nOTwM31458014580eucas1p1N; Mon, 6 Apr 2020 08:59:16 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200406085916eusmtrp141172e0006755435036d54bc9315ed27~DL1nNmLus1258512585eusmtrp1B; Mon, 6 Apr 2020 08:59:16 +0000 (GMT) X-AuditID: cbfec7f5-a29ff7000001ed1a-b0-5e8aef65dfd6 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 6B.FC.08375.46FEA8E5; Mon, 6 Apr 2020 09:59:16 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200406085915eusmtip21cb8f17e54c97864652b8d617f0a3841~DL1mr6Bl_2530225302eusmtip2W; Mon, 6 Apr 2020 08:59:15 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, v.kuramshin@samsung.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com, mb@smartsharesystems.com Date: Mon, 6 Apr 2020 11:58:00 +0300 Message-Id: <20200406085855.25773-3-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200406085855.25773-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrPIsWRmVeSWpSXmKPExsWy7djP87qp77viDLrPM1u07njAYvHu03Ym i1mXmtgtjnXuYbHo+3WV0eL0zc3sFn/emFpsvjiJyYHD49eCpawei/e8ZPJ4v+8qm0ffllWM HqcedTMHsEZx2aSk5mSWpRbp2yVwZSy/c5a1YJ5lxby/MxgbGLfodTFyckgImEh8vXKSrYuR i0NIYAWjRNOLi4wQzhdGiUefXrGDVAkJfGaU+HDXF6Zj0t8l7BBFy4HiC9uYIJyvjBK96zsZ QarYBDQkTnfMYwKxRQT2MkocO1PQxcjOISxgKTHXGCTKIqAqcXTRJVYQmxcoevN5KxPEfHmJ 1RsOMIPYnAJWElP2/GUBGS8h8J5N4uiqZqgiF4lnnxayQtjCEq+Ob2GHsGUkTk/uYYGwqyX2 dL1lh2juYJT42rCVESJhL7Hl9TmgBAcHs4CmxPpd+iCmhICjxJlTThAmn8SNt4IgxcxA5qRt 05khwrwSHW1CEDOUJA6cvAQVlpD4+5sHIuwh8XvRXiZIoO1hlJh9x2QCo9wshE0LGBlXMYqn lhbnpqcWG+ellusVJ+YWl+al6yXn525iBCaD0/+Of93BuO9P0iFGAQ5GJR5ehtudcUKsiWXF lbmHGCU4mJVEeKV6gUK8KYmVValF+fFFpTmpxYcYpTlYlMR5jRe9jBUSSE8sSc1OTS1ILYLJ MnFwSjUwxq9m09Q9LGots9Ju78TGQ6KBLu2ba4wnHla5yDHfTz/Z2t2o+WDlkicvLpzkypL7 /VVK6dqdWZdP9qyquJra1XAiqilC13x5YNSmuzyLvNO27F6RYrQ7nX1/lEqh9xrhiZ1SD7/L 7ah7v06lUFVqX2Ft3t8PFVFeE2T3Bt3PYO26fe/a5wtJSizFGYmGWsxFxYkAKp8kkQIDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrELMWRmVeSWpSXmKPExsVy+t/xe7op77viDBrWyFm07njAYvHu03Ym i1mXmtgtjnXuYbHo+3WV0eL0zc3sFn/emFpsvjiJyYHD49eCpawei/e8ZPJ4v+8qm0ffllWM HqcedTMHsEbp2RTll5akKmTkF5fYKkUbWhjpGVpa6BmZWOoZGpvHWhmZKunb2aSk5mSWpRbp 2yXoZSy/c5a1YJ5lxby/MxgbGLfodTFyckgImEhM+ruEvYuRi0NIYCmjxMV/Dxi7GDmAEhIS r58wQ9QIS/y51sUGYgsJfGaU6H4qAWKzCWhInO6YxwTSKyJwnFGid9Z/IIedQ1jAUmKuMUgJ i4CqxNFFl1hBbF6g6M3nrUwQI+UlVm84ADaeU8BKYsqevywgW4UEMiQ2PsybwMi7gJFhFaNI amlxbnpusaFecWJucWleul5yfu4mRmB4bjv2c/MOxksbgw8xCnAwKvHwMtzujBNiTSwrrsw9 xCjBwawkwivVCxTiTUmsrEotyo8vKs1JLT7EaAp000RmKdHkfGDs5JXEG5oamltYGpobmxub WSiJ83YIHIwREkhPLEnNTk0tSC2C6WPi4JRqYGzrX8NxP7RYaobJi1tXV3TYT/xg9m356SXZ 7fEG51cYXLrTKX7lklfe5PNxfPUvzRO1TD4sOnfO4LEvx/LZD5P1xdNklryZ9uPa5HN57teC 3tyxlz2zrO63n5vSQuX3L7eWbmzx/MJ51nb+Ut7wbvnyy6+iHtleCl2osbFLkzGpQfuYUvDH GjElluKMREMt5qLiRADfmTIhZQIAAA== X-CMS-MailID: 20200406085916eucas1p1e4b9a43f89e63e71aa877adca6046dc4 X-Msg-Generator: CA X-RootMTR: 20200406085916eucas1p1e4b9a43f89e63e71aa877adca6046dc4 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200406085916eucas1p1e4b9a43f89e63e71aa877adca6046dc4 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200406085855.25773-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v9 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 Reviewed-by: Maxime Coquelin --- doc/guides/nics/virtio.rst | 7 ++ drivers/net/virtio/virtio_ethdev.c | 108 ++++++++++++++++++++++++----- drivers/net/virtio/virtio_pci.h | 1 + 3 files changed, 100 insertions(+), 16 deletions(-) diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst index d1f5fb898..e579c6aa9 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, in units of 1Mb. + 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..eb46a5a11 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,100 @@ static int vdpa_check_handler(__rte_unused const char *key, return 0; } + +static uint32_t +virtio_dev_speed_capa_get(uint32_t speed) +{ + struct speed_caps { + uint32_t min_speed; + uint32_t speed_capa; + }; + struct speed_caps caps[] = { + {ETH_SPEED_NUM_10M, ETH_LINK_SPEED_10M}, + {ETH_SPEED_NUM_100M, ETH_LINK_SPEED_100M}, + {ETH_SPEED_NUM_1G, ETH_LINK_SPEED_1G}, + {ETH_SPEED_NUM_2_5G, ETH_LINK_SPEED_2_5G}, + {ETH_SPEED_NUM_5G, ETH_LINK_SPEED_5G}, + {ETH_SPEED_NUM_10G, ETH_LINK_SPEED_10G}, + {ETH_SPEED_NUM_20G, ETH_LINK_SPEED_20G}, + {ETH_SPEED_NUM_25G, ETH_LINK_SPEED_25G}, + {ETH_SPEED_NUM_40G, ETH_LINK_SPEED_40G}, + {ETH_SPEED_NUM_50G, ETH_LINK_SPEED_50G}, + {ETH_SPEED_NUM_56G, ETH_LINK_SPEED_56G}, + {ETH_SPEED_NUM_100G, ETH_LINK_SPEED_100G} + }; + const uint32_t caps_size = sizeof(caps) / sizeof(struct speed_caps); + uint32_t speed_capa = ETH_LINK_SPEED_AUTONEG; + if (speed != ETH_SPEED_NUM_UNKNOWN) { + /* find maximum suitable speed capability */ + for (uint32_t i = 0; i < caps_size; i++) { + if (speed >= caps[i].min_speed) + speed_capa = caps[i].speed_capa; + } + } + return speed_capa; +} + + +#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; + errno = 0; + val = strtoul(value, NULL, 0); + /* validate input */ + if (errno != 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 +2083,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 +2462,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 +2517,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 Apr 6 08: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: 67859 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 D5872A0577; Mon, 6 Apr 2020 10:59:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 296631BF4F; Mon, 6 Apr 2020 10:59:21 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 98F42F12 for ; Mon, 6 Apr 2020 10:59:19 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200406085919euoutp029a4871532bd8a64e75e66c38b57f235a~DL1ppRn0j1785017850euoutp02T for ; Mon, 6 Apr 2020 08:59:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200406085919euoutp029a4871532bd8a64e75e66c38b57f235a~DL1ppRn0j1785017850euoutp02T DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1586163559; bh=5tV+PUkbyK8uGKqGJo6atUhkYthNNopDlr81QODeU7I=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ib1ls7H+/N8Yxy19az2QrsHrJWtuSgGh6kn+3PUVSRKWWP10kMmdxdAN8+RuMfJ2l SftXqFnaa5WSPV2XW/gQ5Ec+jnjty30NiLpXIhnmOcpep+N42Xc7doVecv8yWnNdUu pkP5l5DD9hkmE1QohAXVAdu/tSBV920RllQwdf0k= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200406085918eucas1p19a28e06bc80d1dc40e1eb1c2b9a2c387~DL1paoyBV1458014580eucas1p1P; Mon, 6 Apr 2020 08:59:18 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id E4.56.60698.66FEA8E5; Mon, 6 Apr 2020 09:59:18 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200406085918eucas1p200d058b72ac3e35b61dd1a119b9fcb55~DL1pGpNi61986919869eucas1p2x; Mon, 6 Apr 2020 08:59:18 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200406085918eusmtrp12ef9649904ec251c403b1994ab4aa9e6~DL1pGFtaB1258512585eusmtrp1C; Mon, 6 Apr 2020 08:59:18 +0000 (GMT) X-AuditID: cbfec7f5-a0fff7000001ed1a-b3-5e8aef66f06e Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 6C.FC.08375.66FEA8E5; Mon, 6 Apr 2020 09:59:18 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200406085917eusmtip231ed9b9da99bac7f49b5440fba4d1080~DL1ohsBCY2530225302eusmtip2X; Mon, 6 Apr 2020 08:59:17 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, v.kuramshin@samsung.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com, mb@smartsharesystems.com Date: Mon, 6 Apr 2020 11:58:01 +0300 Message-Id: <20200406085855.25773-4-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200406085855.25773-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrEIsWRmVeSWpSXmKPExsWy7djP87pp77viDH480rNo3fGAxeLdp+1M FrMuNbFbHOvcw2LR9+sqo8Xpm5vZLf68MbXYfHESkwOHx68FS1k9Fu95yeTxft9VNo++LasY PU496mYOYI3isklJzcksSy3St0vgyphx9TJzwTOOilkX7jM3MM5k72Lk5JAQMJGY0LYeyObi EBJYwShx/8ZqNgjnC6PEmpddjBDOZ0aJmzPuMcO0bHnzDyqxnFFid8crqJavjBJLm7aCDWYT 0JA43TGPCcQWEdjLKHHsTAGILSxgI/H53Xmgbg4OFgFViR8N/iBhXgFLibNT57BCLJCXWL3h ANgyTgEriSl7/rKAzJcQeM8m0X1tFtQVLhJHPi2DsoUlXh3fAvWQjMTpyT0sEHa1xJ6ut+wQ zR2MEl8btjJCJOwltrw+xw5yBLOApsT6XfoQYUeJ3Wd3MYGEJQT4JG68FQQJMwOZk7ZNZ4YI 80p0tAlBVCtJHDh5CSosIfH3Nw9E2EOi791isMeFBPYwSnxcwDKBUW4WwqoFjIyrGMVTS4tz 01OLjfNSy/WKE3OLS/PS9ZLzczcxAlPC6X/Hv+5g3Pcn6RCjAAejEg8vw+3OOCHWxLLiytxD jBIczEoivFK9QCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8xotexgoJpCeWpGanphakFsFkmTg4 pRoYuThtf2ZKaRWxq+9Zv9g15+RuQ81UrqSFjnP9Z/0M1I2a8t0k3L4rVHYy2/GDk0v4z9XN 3XtfQ0LV4E/Hx82FFbc5OcSy/u6d8XZRTA1rpyDbQp5bNqbftwqdKF0Qej5Y7sLZ4PUnZkZV fY8T+P24THIXS8/rsxEWeTO46pvCDNmlZ8/rZXJSYinOSDTUYi4qTgQAHb6SkgUDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCLMWRmVeSWpSXmKPExsVy+t/xe7pp77viDA7Pk7do3fGAxeLdp+1M FrMuNbFbHOvcw2LR9+sqo8Xpm5vZLf68MbXYfHESkwOHx68FS1k9Fu95yeTxft9VNo++LasY PU496mYOYI3SsynKLy1JVcjILy6xVYo2tDDSM7S00DMysdQzNDaPtTIyVdK3s0lJzcksSy3S t0vQy5hx9TJzwTOOilkX7jM3MM5k72Lk5JAQMJHY8uYfYxcjF4eQwFJGiQ/LlrN0MXIAJSQk Xj9hhqgRlvhzrYsNouYzo8SO6adYQRJsAhoSpzvmMYEkRASOM0r0zvrPBJIQFrCR+PzuPCPI IBYBVYkfDf4gYV4BS4mzU+ewQgyVl1i94QDYAk4BK4kpe/6C7RUSyJDY+DBvAiPvAkaGVYwi qaXFuem5xYZ6xYm5xaV56XrJ+bmbGIEhuu3Yz807GC9tDD7EKMDBqMTDy3C7M06INbGsuDL3 EKMEB7OSCK9UL1CINyWxsiq1KD++qDQntfgQoynQSROZpUST84Hxk1cSb2hqaG5haWhubG5s ZqEkztshcDBGSCA9sSQ1OzW1ILUIpo+Jg1OqgbFCWyMh8G79moNfgk/YH3i7yeG/y5uKt1vW rL1tauVa8vCgm8fM2t9uEZK9KgJNDxtX9UWe/bfRhSdq5jklgxQH3eKZ0zhqbmRxh1X8++uU aqjXWPLU16lj1WX+fWZen1tOpb67p7SIK0vMLCj+6W3jy8Kaey78Ovf/5r/Vq3s5nD+zKTnN eKDEUpyRaKjFXFScCACgWi+7ZwIAAA== X-CMS-MailID: 20200406085918eucas1p200d058b72ac3e35b61dd1a119b9fcb55 X-Msg-Generator: CA X-RootMTR: 20200406085918eucas1p200d058b72ac3e35b61dd1a119b9fcb55 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200406085918eucas1p200d058b72ac3e35b61dd1a119b9fcb55 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200406085855.25773-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v9 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 Reviewed-by: Maxime Coquelin --- 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 Apr 6 08: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: 67860 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 37455A0577; Mon, 6 Apr 2020 10:59:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CC6411BF92; Mon, 6 Apr 2020 10:59:22 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 2C10B1BF54 for ; Mon, 6 Apr 2020 10:59:21 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200406085920euoutp01f8adf8533d2168bc2a2bc8fe6521396f~DL1rWDAfH2609826098euoutp01T for ; Mon, 6 Apr 2020 08:59:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200406085920euoutp01f8adf8533d2168bc2a2bc8fe6521396f~DL1rWDAfH2609826098euoutp01T DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1586163560; bh=bXLo0J2tbNTVhA8KB4IwELBQ/GJ3UOXK5RMDs62/MQE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=QNdF0ObV603npJRX3HlkWQQH8vd2R+TwRWQCqtSu3loJxtu84dyFNyfImLgLeOK/M 970Ev8tR1HFGLlflCkAua/Z0VWNVT4/xrDX8N4iz7HlTOn64TMkstIfvVLBq+T81m8 u0ByFhFW6cBN0Hvtb8ucFtkUjHM+KkC1pgmFZW+s= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200406085920eucas1p272ce14d6e3fe717f547cfde70c4a119b~DL1rF7zX52187321873eucas1p2r; Mon, 6 Apr 2020 08:59:20 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id A6.56.60698.86FEA8E5; Mon, 6 Apr 2020 09:59:20 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200406085920eucas1p12f4a35578c4c741ee3d933120d25348e~DL1qx3t661458414584eucas1p1R; Mon, 6 Apr 2020 08:59:20 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200406085920eusmtrp231cf6e01331ede8b06fd07b4bf53eb2f~DL1qxNGoz1429014290eusmtrp2j; Mon, 6 Apr 2020 08:59:20 +0000 (GMT) X-AuditID: cbfec7f5-a0fff7000001ed1a-bb-5e8aef681a55 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 03.BB.07950.86FEA8E5; Mon, 6 Apr 2020 09:59:20 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200406085919eusmtip251e2d32fb457fc6e2add65f170acf78f~DL1qMhD3C2530225302eusmtip2Y; Mon, 6 Apr 2020 08:59:19 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, v.kuramshin@samsung.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com, mb@smartsharesystems.com Date: Mon, 6 Apr 2020 11:58:02 +0300 Message-Id: <20200406085855.25773-5-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200406085855.25773-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrMIsWRmVeSWpSXmKPExsWy7djP87oZ77viDJ6sVbFo3fGAxeLdp+1M FrMuNbFbHOvcw2LR9+sqo8Xpm5vZLf68MbXYfHESkwOHx68FS1k9Fu95yeTxft9VNo++LasY PU496mYOYI3isklJzcksSy3St0vgynj+6jtTQSd/xbujGg2MW3i6GDk5JARMJN4sbmfvYuTi EBJYwSjR37KVEcL5wihxbeJTFgjnM6PEqX+XWWBaLnctZINILGeUmLC+B8r5yihx8ek8VpAq NgENidMd85hAbBGBvYwSx84UgNjCAo4SJ7eeZgSxWQRUJV6t2QVWzytgKXH65Xo2iA3yEqs3 HGAGsTkFrCSm7PkLdoaEwGs2iY59fcwQRS4SM09tYoewhSVeHd8CZctI/N85nwnCrpbY0/WW HaK5g1Hia8NWRoiEvcSW1+eAEhwczAKaEut36UOEHSU6Dr5kBQlLCPBJ3HgrCBJmBjInbZvO DBHmlehoE4KoVpI4cPISVFhC4u9vaJB6SPz4vpoJEiR7GCWu/37IOIFRbhbCrgWMjKsYxVNL i3PTU4uN81LL9YoTc4tL89L1kvNzNzECk8Lpf8e/7mDc9yfpEKMAB6MSDy/D7c44IdbEsuLK 3EOMEhzMSiK8Ur1AId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rzGi17GCgmkJ5akZqemFqQWwWSZ ODilGhhVQizPOvEcbJ99+Val+8lJ7uwx/AX7Tdn638rcUS33/KxrYMV/T1NztvaFdAU1hw0z up6qe2vsuvF3ikXhkZdz7sl/sVnw7oqxw5+gN/k3v3PffaUe5R8ZbMYmJabfx7tx+9/tT/1S VGMjH+RHZ5cuFpPXniyauVnt+WmfiDkuOvOilvwwMVFiKc5INNRiLipOBADu14V8BgMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCLMWRmVeSWpSXmKPExsVy+t/xe7oZ77viDNbNF7Bo3fGAxeLdp+1M FrMuNbFbHOvcw2LR9+sqo8Xpm5vZLf68MbXYfHESkwOHx68FS1k9Fu95yeTxft9VNo++LasY PU496mYOYI3SsynKLy1JVcjILy6xVYo2tDDSM7S00DMysdQzNDaPtTIyVdK3s0lJzcksSy3S t0vQy3j+6jtTQSd/xbujGg2MW3i6GDk5JARMJC53LWTrYuTiEBJYyijxfMEsxi5GDqCEhMTr J8wQNcISf651QdV8ZpQ4cXk5O0iCTUBD4nTHPCaQhIjAcUaJ3ln/mUASwgKOEie3nmYEsVkE VCVerdnFCmLzClhKnH65ng1iqrzE6g0HwDZwClhJTNnzlwVksZBAhsTGh3kTGHkXMDKsYhRJ LS3OTc8tNtIrTswtLs1L10vOz93ECAzRbcd+btnB2PUu+BCjAAejEg8vw+3OOCHWxLLiytxD jBIczEoivFK9QCHelMTKqtSi/Pii0pzU4kOMpkA3TWSWEk3OB8ZPXkm8oamhuYWlobmxubGZ hZI4b4fAwRghgfTEktTs1NSC1CKYPiYOTqkGxk1zWtJOp7YvE/D3WJkllpb/4MUerrzlVvYi bDOcFr5a/boi5dvmyOhU2Yg5l57ZCbksPNjX0/B9u7LdtTt255kOL3KYsif9oFrBnL5ka6UQ s2Miz1eVxRW/fHula3FlgfxJXqlC73Wepu43zgasPbZZccd3W85rUsvucItEuBU+WFDHaxqz U4mlOCPRUIu5qDgRAMz9YL9nAgAA X-CMS-MailID: 20200406085920eucas1p12f4a35578c4c741ee3d933120d25348e X-Msg-Generator: CA X-RootMTR: 20200406085920eucas1p12f4a35578c4c741ee3d933120d25348e X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200406085920eucas1p12f4a35578c4c741ee3d933120d25348e References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200406085855.25773-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v9 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 Reviewed-by: Maxime Coquelin --- 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 e579c6aa9..e70b6653b 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, in units of 1Mb. + 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 Apr 6 08:58:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Dyukov X-Patchwork-Id: 67861 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 E84F0A0577; Mon, 6 Apr 2020 10:59:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1C0EE1BF6C; Mon, 6 Apr 2020 10:59:25 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 2C7DC1BF9B for ; Mon, 6 Apr 2020 10:59:23 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200406085922euoutp02a0c4ae1a20a355bfe6f440bb14a32ece~DL1tNL8EQ1784717847euoutp02Y for ; Mon, 6 Apr 2020 08:59:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200406085922euoutp02a0c4ae1a20a355bfe6f440bb14a32ece~DL1tNL8EQ1784717847euoutp02Y DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1586163562; bh=0yV+ZZ6G+EJERFTpOP5JQNSOJC3qr5I3MXagyXr1fVw=; h=From:To:Subject:Date:In-Reply-To:References:From; b=c3Q3p1duIG1z+AmprtxoTUpsn23KT96VLfgSVHdzSD8aRkJhyjUn75LzmueyLxfp0 HuF4OoSoNDrWR+YefhR6oaSla33F18Wfg1/pNpTQHUwtwtQrc9WDgmJUOAp3b5O81R gbd7u1lKEucB7klkLbR78105TydCMkqT+LG9aSF0= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200406085922eucas1p196b6d46e9faa3fddf6ae1ea6b63397cc~DL1s3QKco1225812258eucas1p1d; Mon, 6 Apr 2020 08:59:22 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 57.56.60698.A6FEA8E5; Mon, 6 Apr 2020 09:59:22 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200406085922eucas1p2e1d78ccf211ba26ced03d466970b9b70~DL1sg7i2r2925429254eucas1p2P; Mon, 6 Apr 2020 08:59:22 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200406085922eusmtrp215a1b77fe1502d26f187f23dc45d8815~DL1scjEZt1429014290eusmtrp2l; Mon, 6 Apr 2020 08:59:22 +0000 (GMT) X-AuditID: cbfec7f5-a0fff7000001ed1a-bf-5e8aef6af6df Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 14.BB.07950.A6FEA8E5; Mon, 6 Apr 2020 09:59:22 +0100 (BST) Received: from idyukov.rnd.samsung.ru (unknown [106.109.129.29]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200406085921eusmtip2e0d922aabb3282bf134540eaec1a1ac2~DL1r245YL3064030640eusmtip2h; Mon, 6 Apr 2020 08:59:21 +0000 (GMT) From: Ivan Dyukov To: dev@dpdk.org, maxime.coquelin@redhat.com, i.dyukov@samsung.com, v.kuramshin@samsung.com, amorenoz@redhat.com, zhihong.wang@intel.com, xiaolong.ye@intel.com, mb@smartsharesystems.com Date: Mon, 6 Apr 2020 11:58:03 +0300 Message-Id: <20200406085855.25773-6-i.dyukov@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200406085855.25773-1-i.dyukov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrMIsWRmVeSWpSXmKPExsWy7djP87pZ77viDFYdUbBo3fGAxeLdp+1M FrMuNbFbHOvcw2LR9+sqo8Xpm5vZLf68MbXYfHESkwOHx68FS1k9Fu95yeTxft9VNo++LasY PU496mYOYI3isklJzcksSy3St0vgyrh/bQVLwUbjijNXW5kbGF9qdDFyckgImEhMPzKFsYuR i0NIYAWjxLUXy1ggnC+MEvue7oXKfGaUaFlwhh2mZe75E8wQieWMEtNXtkK1fGWUaJh+hgWk ik1AQ+J0xzwmEFtEYC+jxLEzBSC2sICHxO2JNxlBbBYBVYm9E1eCTeUVsJT4+fYsM8QGeYnV Gw6A2ZwCVhJT9vxlgYi/ZpPY80kKwnaR6L3SAVUvLPHq+Bao62Qk/u+czwRhV0vs6XrLDnKc hEAHo8TXhq2MEAl7iS2vzwElODiYBTQl1u/Shwg7Sjzf/Y0JJCwhwCdx460gSJgZyJy0bToz RJhXoqNNCKJaSeLAyUtQYQmJv795IMIeErs7f7BCQmQPo8T+zi2MExjlZiHsWsDIuIpRPLW0 ODc9tdg4L7Vcrzgxt7g0L10vOT93EyMwKZz+d/zrDsZ9f5IOMQpwMCrx8DLc7owTYk0sK67M PcQowcGsJMIr1QsU4k1JrKxKLcqPLyrNSS0+xCjNwaIkzmu86GWskEB6YklqdmpqQWoRTJaJ g1OqgXHpnp8vC/kdH65Kja7+XNuv+ZutTi35AmfOpeLo2+/jwu+dXuQ39e75YlnbXctX+8T6 i/yO4OBu3CI0YV5qyrQvJWydM/uM9Dkncmo3pTk+fh7AKv/O8tYci6vqssfuRW1+w77gpUls mbB06GrJ3Oz/MZdsHobwlYc9Y+6Zn8D2/VpJ+uv4+0osxRmJhlrMRcWJAJmj6bcGAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRmVeSWpSXmKPExsVy+t/xe7pZ77viDObMZ7Zo3fGAxeLdp+1M FrMuNbFbHOvcw2LR9+sqo8Xpm5vZLf68MbXYfHESkwOHx68FS1k9Fu95yeTxft9VNo++LasY PU496mYOYI3SsynKLy1JVcjILy6xVYo2tDDSM7S00DMysdQzNDaPtTIyVdK3s0lJzcksSy3S t0vQy7h/bQVLwUbjijNXW5kbGF9qdDFyckgImEjMPX+CuYuRi0NIYCmjxJ1n04EcDqCEhMTr J8wQNcISf651sUHUfGaU6PwD4nBysAloSJzumMcEkhAROM4o0TvrPxNIQljAQ+L2xJuMIDaL gKrE3okr2UFsXgFLiZ9vz0JNlZdYveEAmM0pYCUxZc9fFpDFQgIZEhsf5k1g5F3AyLCKUSS1 tDg3PbfYSK84Mbe4NC9dLzk/dxMjMEi3Hfu5ZQdj17vgQ4wCHIxKPLwMtzvjhFgTy4orcw8x SnAwK4nwSvUChXhTEiurUovy44tKc1KLDzGaAt00kVlKNDkfGEF5JfGGpobmFpaG5sbmxmYW SuK8HQIHY4QE0hNLUrNTUwtSi2D6mDg4pRoYZVXX+78qEb9888/ytw1v6lI59+w4uvHfxbOq Ef8PexyQ4q6pj/LRnFt1IC7t6r4/R/nLHHKPrkpWjq9+wqYcZRN99/shNt+Yy9NSHLKylVnt fM3/9sxp6Tf3idqYJ3l4+dQaBwZtZYG6P8usBa7VPtM0z1yQqvvvMT+bbf2rJa7cyYZTo7SV WIozEg21mIuKEwFbb/71aAIAAA== X-CMS-MailID: 20200406085922eucas1p2e1d78ccf211ba26ced03d466970b9b70 X-Msg-Generator: CA X-RootMTR: 20200406085922eucas1p2e1d78ccf211ba26ced03d466970b9b70 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200406085922eucas1p2e1d78ccf211ba26ced03d466970b9b70 References: <20191212085012.9170-1-i.dyukov@samsung.com> <20200406085855.25773-1-i.dyukov@samsung.com> Subject: [dpdk-dev] [PATCH v9 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. Set default speed to 0xffffffff and default duplex to 0xff 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 --- doc/guides/nics/virtio.rst | 4 ++-- drivers/net/virtio/virtio_ethdev.c | 16 +++++++++++++++- drivers/net/virtio/virtio_ethdev.h | 3 ++- drivers/net/virtio/virtio_pci.h | 15 +++++++++++++++ lib/librte_ethdev/rte_ethdev.h | 27 ++++++++++++++------------- 5 files changed, 48 insertions(+), 17 deletions(-) diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst index e70b6653b..06c7a19aa 100644 --- a/doc/guides/nics/virtio.rst +++ b/doc/guides/nics/virtio.rst @@ -361,7 +361,7 @@ Below devargs are supported by the PCI virtio driver: It is used to specify link speed of virtio device, in units of 1Mb. 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)) + (Default: 0xffffffff (unknown)) Below devargs are supported by the virtio-user vdev: @@ -415,7 +415,7 @@ Below devargs are supported by the virtio-user vdev: It is used to specify link speed of virtio device, in units of 1Mb. 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)) + (Default: 0xffffffff (unknown)) Virtio paths Selection and Usage diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index eb46a5a11..0137efcc5 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1718,6 +1718,20 @@ 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 (vtpci_with_feature(hw, VIRTIO_NET_F_SPEED_DUPLEX)) { + config = &local_config; + /* if speed is not specified in devargs */ + if (hw->speed == ETH_SPEED_NUM_UNKNOWN) { + vtpci_read_dev_config(hw, + offsetof(struct virtio_net_config, speed), + &config->speed, sizeof(config->speed)); + hw->speed = config->speed; + } + } + + PMD_INIT_LOG(DEBUG, "link speed = %u%s", + hw->speed, hw->speed == ETH_SPEED_NUM_UNKNOWN ? + "(UNKNOWN)" : ""); if (vtpci_with_feature(hw, VIRTIO_NET_F_CTRL_VQ)) { config = &local_config; @@ -1865,7 +1879,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 = ETH_SPEED_NUM_UNKNOWN; int ret; if (sizeof(struct virtio_net_hdr_mrg_rxbuf) > RTE_PKTMBUF_HEADROOM) { 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..2948760ab 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 @@ -306,6 +309,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)); /* diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index d1a593ad1..a15ea572e 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -287,19 +287,20 @@ struct rte_eth_stats { /** * Ethernet numeric link speeds in Mbps */ -#define ETH_SPEED_NUM_NONE 0 /**< Not defined */ -#define ETH_SPEED_NUM_10M 10 /**< 10 Mbps */ -#define ETH_SPEED_NUM_100M 100 /**< 100 Mbps */ -#define ETH_SPEED_NUM_1G 1000 /**< 1 Gbps */ -#define ETH_SPEED_NUM_2_5G 2500 /**< 2.5 Gbps */ -#define ETH_SPEED_NUM_5G 5000 /**< 5 Gbps */ -#define ETH_SPEED_NUM_10G 10000 /**< 10 Gbps */ -#define ETH_SPEED_NUM_20G 20000 /**< 20 Gbps */ -#define ETH_SPEED_NUM_25G 25000 /**< 25 Gbps */ -#define ETH_SPEED_NUM_40G 40000 /**< 40 Gbps */ -#define ETH_SPEED_NUM_50G 50000 /**< 50 Gbps */ -#define ETH_SPEED_NUM_56G 56000 /**< 56 Gbps */ -#define ETH_SPEED_NUM_100G 100000 /**< 100 Gbps */ +#define ETH_SPEED_NUM_NONE 0 /**< Not defined */ +#define ETH_SPEED_NUM_10M 10 /**< 10 Mbps */ +#define ETH_SPEED_NUM_100M 100 /**< 100 Mbps */ +#define ETH_SPEED_NUM_1G 1000 /**< 1 Gbps */ +#define ETH_SPEED_NUM_2_5G 2500 /**< 2.5 Gbps */ +#define ETH_SPEED_NUM_5G 5000 /**< 5 Gbps */ +#define ETH_SPEED_NUM_10G 10000 /**< 10 Gbps */ +#define ETH_SPEED_NUM_20G 20000 /**< 20 Gbps */ +#define ETH_SPEED_NUM_25G 25000 /**< 25 Gbps */ +#define ETH_SPEED_NUM_40G 40000 /**< 40 Gbps */ +#define ETH_SPEED_NUM_50G 50000 /**< 50 Gbps */ +#define ETH_SPEED_NUM_56G 56000 /**< 56 Gbps */ +#define ETH_SPEED_NUM_100G 100000 /**< 100 Gbps */ +#define ETH_SPEED_NUM_UNKNOWN 0xffffffff /**< Unknown */ /** * A structure used to retrieve link-level information of an Ethernet port.