From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 98591A046B for ; Fri, 23 Aug 2019 11:44:52 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8F2531BF4C; Fri, 23 Aug 2019 11:44:52 +0200 (CEST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 17E391BF9B for ; Fri, 23 Aug 2019 11:44:49 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8D2C080038D; Fri, 23 Aug 2019 09:44:48 +0000 (UTC) Received: from rh.redhat.com (ovpn-116-48.ams2.redhat.com [10.36.116.48]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6ADDC5F9D3; Fri, 23 Aug 2019 09:44:47 +0000 (UTC) From: Kevin Traynor To: Stephen Hemminger Cc: dpdk stable Date: Fri, 23 Aug 2019 10:43:13 +0100 Message-Id: <20190823094336.12078-23-ktraynor@redhat.com> In-Reply-To: <20190823094336.12078-1-ktraynor@redhat.com> References: <20190823094336.12078-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.67]); Fri, 23 Aug 2019 09:44:48 +0000 (UTC) Subject: [dpdk-stable] patch 'net/netvsc: fix xstats for VF device' has been queued to LTS release 18.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to LTS release 18.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 08/28/19. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/a8a965216c4bf161974ddd265c85534a99f8a566 Thanks. Kevin Traynor --- >From a8a965216c4bf161974ddd265c85534a99f8a566 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 20 Jun 2019 15:09:24 -0700 Subject: [PATCH] net/netvsc: fix xstats for VF device [ upstream commit cc9271f9e7ee5723677e57f2d49720d3828b51b6 ] The id values for VF stats were not being offset correctly. And getting xstats for VF device only worked if VF device supported it; it did not support the generic stats. Fixes: dc7680e8597c ("net/netvsc: support integrated VF") Signed-off-by: Stephen Hemminger --- drivers/net/netvsc/hn_ethdev.c | 2 +- drivers/net/netvsc/hn_var.h | 2 +- drivers/net/netvsc/hn_vf.c | 26 ++++++++++++++++++-------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index cf03972fd..c2cf0afc8 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -594,5 +594,5 @@ hn_dev_xstats_get(struct rte_eth_dev *dev, } - ret = hn_vf_xstats_get(dev, xstats + count, n - count); + ret = hn_vf_xstats_get(dev, xstats, count, n); if (ret < 0) return ret; diff --git a/drivers/net/netvsc/hn_var.h b/drivers/net/netvsc/hn_var.h index b31563435..d10e164e6 100644 --- a/drivers/net/netvsc/hn_var.h +++ b/drivers/net/netvsc/hn_var.h @@ -236,4 +236,4 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, int hn_vf_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, - unsigned int n); + unsigned int offset, unsigned int n); void hn_vf_xstats_reset(struct rte_eth_dev *dev); diff --git a/drivers/net/netvsc/hn_vf.c b/drivers/net/netvsc/hn_vf.c index 4127e411f..50f92a00a 100644 --- a/drivers/net/netvsc/hn_vf.c +++ b/drivers/net/netvsc/hn_vf.c @@ -501,10 +501,10 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, struct rte_eth_dev *vf_dev; int i, count = 0; - char tmp[RTE_ETH_XSTATS_NAME_SIZE]; rte_spinlock_lock(&hv->vf_lock); vf_dev = hn_get_vf_dev(hv); - if (vf_dev && vf_dev->dev_ops->xstats_get_names) - count = vf_dev->dev_ops->xstats_get_names(vf_dev, names, n); + if (vf_dev) + count = rte_eth_xstats_get_names(vf_dev->data->port_id, + names, n); rte_spinlock_unlock(&hv->vf_lock); @@ -512,4 +512,6 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, if (names) { for (i = 0; i < count; i++) { + char tmp[RTE_ETH_XSTATS_NAME_SIZE]; + snprintf(tmp, sizeof(tmp), "vf_%s", names[i].name); strlcpy(names[i].name, tmp, sizeof(names[i].name)); @@ -522,16 +524,24 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, int hn_vf_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, + unsigned int offset, unsigned int n) { struct hn_data *hv = dev->data->dev_private; struct rte_eth_dev *vf_dev; - int count = 0; + int i, count = 0; rte_spinlock_lock(&hv->vf_lock); vf_dev = hn_get_vf_dev(hv); - if (vf_dev && vf_dev->dev_ops->xstats_get) - count = vf_dev->dev_ops->xstats_get(vf_dev, xstats, n); + if (vf_dev) + count = rte_eth_xstats_get(vf_dev->data->port_id, + xstats + offset, n - offset); rte_spinlock_unlock(&hv->vf_lock); + /* Offset id's for VF stats */ + if (count > 0) { + for (i = 0; i < count; i++) + xstats[i + offset].id += offset; + } + return count; } @@ -544,6 +554,6 @@ void hn_vf_xstats_reset(struct rte_eth_dev *dev) rte_spinlock_lock(&hv->vf_lock); vf_dev = hn_get_vf_dev(hv); - if (vf_dev && vf_dev->dev_ops->xstats_reset) - vf_dev->dev_ops->xstats_reset(vf_dev); + if (vf_dev) + rte_eth_xstats_reset(vf_dev->data->port_id); rte_spinlock_unlock(&hv->vf_lock); } -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2019-08-22 19:38:21.965337644 +0100 +++ 0023-net-netvsc-fix-xstats-for-VF-device.patch 2019-08-22 19:38:20.444026713 +0100 @@ -1 +1 @@ -From cc9271f9e7ee5723677e57f2d49720d3828b51b6 Mon Sep 17 00:00:00 2001 +From a8a965216c4bf161974ddd265c85534a99f8a566 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit cc9271f9e7ee5723677e57f2d49720d3828b51b6 ] + @@ -11 +12,0 @@ -Cc: stable@dpdk.org @@ -21 +22 @@ -index 69cf5d1d9..2a90d674e 100644 +index cf03972fd..c2cf0afc8 100644 @@ -24 +25 @@ -@@ -764,5 +764,5 @@ hn_dev_xstats_get(struct rte_eth_dev *dev, +@@ -594,5 +594,5 @@ hn_dev_xstats_get(struct rte_eth_dev *dev, @@ -32 +33 @@ -index 1756615a3..3f5e8dfa7 100644 +index b31563435..d10e164e6 100644 @@ -35 +36 @@ -@@ -242,5 +242,5 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, +@@ -236,4 +236,4 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, @@ -41 +41,0 @@ - int hn_vf_rss_hash_update(struct rte_eth_dev *dev, @@ -43 +43 @@ -index 764cf844c..03f855b94 100644 +index 4127e411f..50f92a00a 100644 @@ -46 +46 @@ -@@ -507,10 +507,10 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, +@@ -501,10 +501,10 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, @@ -60 +60 @@ -@@ -518,4 +518,6 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, +@@ -512,4 +512,6 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, @@ -67 +67 @@ -@@ -528,16 +530,24 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, +@@ -522,16 +524,24 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, @@ -95 +95 @@ -@@ -550,6 +560,6 @@ void hn_vf_xstats_reset(struct rte_eth_dev *dev) +@@ -544,6 +554,6 @@ void hn_vf_xstats_reset(struct rte_eth_dev *dev)