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 DDDC8A09F6; Fri, 18 Dec 2020 08:06:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ABB3DCA2A; Fri, 18 Dec 2020 08:06:53 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by dpdk.org (Postfix) with ESMTP id 7A214CA24 for ; Fri, 18 Dec 2020 08:06:52 +0100 (CET) Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4Cy0JR1H9fzks43 for ; Fri, 18 Dec 2020 15:05:59 +0800 (CST) Received: from [10.67.103.119] (10.67.103.119) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.498.0; Fri, 18 Dec 2020 15:06:42 +0800 To: Ferruh Yigit CC: , References: <1607846585-2381-1-git-send-email-oulijun@huawei.com> <1607846585-2381-3-git-send-email-oulijun@huawei.com> <397115ae-a4be-6025-41dc-5bda358013cf@intel.com> From: oulijun Message-ID: <6b53dd9b-3132-e92e-f375-09c258f75865@huawei.com> Date: Fri, 18 Dec 2020 15:06:38 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 MIME-Version: 1.0 In-Reply-To: <397115ae-a4be-6025-41dc-5bda358013cf@intel.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.103.119] X-CFilter-Loop: Reflected Subject: Re: [dpdk-dev] [PATCH 2/7] net/hns3: fix xstats statistics with id 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" 在 2020/12/17 23:20, Ferruh Yigit 写道: > On 12/13/2020 8:03 AM, Lijun Ou wrote: >> From: Huisong Li >> >> Number of xstats item in rte_eth_xstats_get_by_id is obtained >> by the eth_dev_get_xstats_count API, and the xstats_get_by_id >> ops of the driver only needs to report the corresponding stats >> item result. >> However, a redundant code for reporting the number of stats items >> in the hns3_dev_xstats_get_by_id API causes a problem. Namely, if >> the ID range of the xstats stats item does not include the basic >> stats item, the app can not obtain the corresponding xstats >> statistics in hns3_dev_xstats_get_by_id. >> >> Fixes: 8839c5e202f3 ("net/hns3: support device stats") >> Cc: stable@dpdk.org >> >> Signed-off-by: Huisong Li >> Signed-off-by: Lijun Ou >> --- >> drivers/net/hns3/hns3_stats.c | 3 --- >> 1 file changed, 3 deletions(-) >> >> diff --git a/drivers/net/hns3/hns3_stats.c >> b/drivers/net/hns3/hns3_stats.c >> index 91168ac..b43143b 100644 >> --- a/drivers/net/hns3/hns3_stats.c >> +++ b/drivers/net/hns3/hns3_stats.c >> @@ -933,9 +933,6 @@ hns3_dev_xstats_get_by_id(struct rte_eth_dev *dev, >> const uint64_t *ids, >> uint32_t i; >> int ret; >> - if (ids == NULL || size < cnt_stats) >> - return cnt_stats; >> - > > Hi Lijun, > > Above check seems wrong, but just removing it also wrong. > > Following checks should be there: > ids==NULL && values==NULL ? return cnt_stats > ids==NULL ? return all values > > Also 'hns3_dev_xstats_get_names_by_id()' seems wrong in that manner. > Thanks for your reviews. It should be deleted with the check in hns3_dev_xstats_get_by_id. Because the check have done in the API layer. for example For rte_eth_xstats_get_by_id implementation: if ids == NULL and values == NULL, it returns the result of eth_dev_get_xstats_count and not run the hns3_dev_xstats_get_by_id if ids == NULL, it will not be able to run the hns3_dev_xstats_get_by_id. However, Maybe the hns3_dev_xstats_get_names_by_id seems wrong and needs to fix it as flows: diff --git a/drivers/net/hns3/hns3_stats.c b/drivers/net/hns3/hns3_stats.c index 1d1f706..789ff6e 100644 --- a/drivers/net/hns3/hns3_stats.c +++ b/drivers/net/hns3/hns3_stats.c @@ -987,8 +987,8 @@ hns3_dev_xstats_get_names_by_id(struct rte_eth_dev *dev, uint64_t len; uint32_t i; - if (ids == NULL || xstats_names == NULL) - return cnt_stats; + if (ids == NULL) + return hns3_dev_xstats_get_names(dev, xstats_names, cnt_stats); len = cnt_stats * sizeof(struct rte_eth_xstat_name); names_copy = rte_zmalloc("hns3_xstats_names", len, 0); What do you think? > . >