DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: oulijun <oulijun@huawei.com>
Cc: dev@dpdk.org, linuxarm@huawei.com
Subject: Re: [dpdk-dev] [PATCH 2/7] net/hns3: fix xstats statistics with id
Date: Fri, 18 Dec 2020 13:34:01 +0000	[thread overview]
Message-ID: <5dc88619-f26b-8f59-5cca-324856c427d8@intel.com> (raw)
In-Reply-To: <6b53dd9b-3132-e92e-f375-09c258f75865@huawei.com>

On 12/18/2020 7:06 AM, oulijun wrote:
> 
> 
> 在 2020/12/17 23:20, Ferruh Yigit 写道:
>> On 12/13/2020 8:03 AM, Lijun Ou wrote:
>>> From: Huisong Li <lihuisong@huawei.com>
>>>
>>> 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 <lihuisong@huawei.com>
>>> Signed-off-by: Lijun Ou <oulijun@huawei.com>
>>> ---
>>>   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
> 

For the case "ids==NULL && values==NULL",
yes 'rte_eth_xstats_get_by_id()' is the wrapper of this dev_ops and it has the 
checks, but the dev_ops can be called from somewhere else, like being in 
'eth_dev_get_xstats_count()', currently 'xstats_get_names_by_id()' is used there 
but 'xstats_get_by_id()' may be used as well, please check how it is used in 
that function. dev_ops gets, "NULL, NULL, 0" arguments and it should be supported.

And for the "ids==NULL" case, it is not covered at all in 
'hns3_dev_xstats_get_names_by_id()' but it should, that is a valid usecase.
When dev_ops gets, "ids==NULL", that means all xstat values are requested.

>    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?

I think both 'xstats_names' & 'ids' should be checked, please check above 
comment, like:

if (xstats_names == NULL)
	return cnt_stats;

if (ids == NULL)
	return hns3_dev_xstats_get_names(dev, xstats_names, cnt_stats);

  reply	other threads:[~2020-12-18 13:34 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-13  8:02 [dpdk-dev] [PATCH 0/7] some bugfixes for hns3 Lijun Ou
2020-12-13  8:02 ` [dpdk-dev] [PATCH 1/7] net/hns3: fix incorrect interception with filter director Lijun Ou
2020-12-13  8:03 ` [dpdk-dev] [PATCH 2/7] net/hns3: fix xstats statistics with id Lijun Ou
2020-12-17 15:20   ` Ferruh Yigit
2020-12-18  7:06     ` oulijun
2020-12-18 13:34       ` Ferruh Yigit [this message]
2020-12-13  8:03 ` [dpdk-dev] [PATCH 3/7] net/hns3: fix abnormal return value in xstats Lijun Ou
2020-12-13  8:03 ` [dpdk-dev] [PATCH 4/7] net/hns3: fix Rx/Tx abnormal errors stats Lijun Ou
2020-12-13  8:03 ` [dpdk-dev] [PATCH 5/7] net/hns3: fix location of saving ethdev Lijun Ou
2020-12-18 14:11   ` Ferruh Yigit
2020-12-13  8:03 ` [dpdk-dev] [PATCH 6/7] net/hns3: fix directly access with rte device Lijun Ou
2020-12-13  8:03 ` [dpdk-dev] [PATCH 7/7] net/hns3: remove unnecessary memset Lijun Ou
2021-01-06  3:46 ` [dpdk-dev] [PATCH v2 0/6] some bugfixes for hns3 Lijun Ou
2021-01-06  3:46   ` [dpdk-dev] [PATCH v2 1/6] net/hns3: fix incorrect interception with filter director Lijun Ou
2021-01-19 21:27     ` Thomas Monjalon
2021-01-06  3:46   ` [dpdk-dev] [PATCH v2 2/6] net/hns3: fix xstats statistics with id and names Lijun Ou
2021-01-06  3:46   ` [dpdk-dev] [PATCH v2 3/6] net/hns3: fix abnormal return value in xstats Lijun Ou
2021-01-06  3:46   ` [dpdk-dev] [PATCH v2 4/6] net/hns3: fix Rx/Tx abnormal errors stats Lijun Ou
2021-01-06  3:46   ` [dpdk-dev] [PATCH v2 5/6] net/hns3: fix crash with multi-process Lijun Ou
2021-01-06  3:46   ` [dpdk-dev] [PATCH v2 6/6] net/hns3: remove unnecessary memset Lijun Ou
2021-01-14 23:34   ` [dpdk-dev] [PATCH v2 0/6] some bugfixes for hns3 Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5dc88619-f26b-8f59-5cca-324856c427d8@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=dev@dpdk.org \
    --cc=linuxarm@huawei.com \
    --cc=oulijun@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).