From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0950FA00C5; Sat, 15 Jan 2022 01:24:56 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 71B6740DFD; Sat, 15 Jan 2022 01:24:56 +0100 (CET) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id 1CB1A40042 for ; Sat, 15 Jan 2022 01:24:54 +0100 (CET) Received: from dggeme756-chm.china.huawei.com (unknown [172.30.72.56]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4JbJk10C1gz1FCZG; Sat, 15 Jan 2022 08:21:13 +0800 (CST) Received: from [10.67.103.128] (10.67.103.128) by dggeme756-chm.china.huawei.com (10.3.19.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.21; Sat, 15 Jan 2022 08:24:52 +0800 Subject: Re: [RFC v2] ethdev: introduce ethdev dump API To: Ajit Khaparde CC: =?UTF-8?Q?Morten_Br=c3=b8rup?= , dpdk-dev , Ferruh Yigit , Thomas Monjalon References: <20220111115437.32855-1-humin29@huawei.com> <20220112024008.25211-1-humin29@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35D86DF9@smartserver.smartshare.dk> From: "Min Hu (Connor)" Message-ID: <63d4f76f-56ca-6b19-1d60-38145be44369@huawei.com> Date: Sat, 15 Jan 2022 08:24:52 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.103.128] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggeme756-chm.china.huawei.com (10.3.19.102) X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Hi, Ajit, 在 2022/1/15 1:56, Ajit Khaparde 写道: > On Wed, Jan 12, 2022 at 3:15 AM Min Hu (Connor) wrote: >> >> Thanks Morten, fixed in v3. >> >> 在 2022/1/12 15:20, Morten Brørup 写道: >>>> From: Min Hu (Connor) [mailto:humin29@huawei.com] >>>> Sent: Wednesday, 12 January 2022 03.40 >>>> >>>> Added the ethdev dump API which provides functions for query private >>>> info >>>> from device. There exists many private properties in different PMD >>>> drivers, >>>> such as adapter state, Rx/Tx func algorithm in hns3 PMD. The >>>> information of >>>> these properties is important for debug. As the information is private, >>>> the new API is introduced. > Do you have any changes to testpmd to use this API? > No changes to testpmd. BTW, I will add some options for proc-info to use this API, and this is my next-step plan. >>>> >>>> Signed-off-by: Min Hu (Connor) >>>> --- >>>> v2: >>>> * fix dump API name >>>> * adjust description in doc. >>>> --- >>>> doc/guides/rel_notes/release_22_03.rst | 7 +++++++ >>>> lib/ethdev/ethdev_driver.h | 17 +++++++++++++++++ >>>> lib/ethdev/rte_ethdev.c | 15 +++++++++++++++ >>>> lib/ethdev/rte_ethdev.h | 16 ++++++++++++++++ >>>> 4 files changed, 55 insertions(+) >>>> >>>> diff --git a/doc/guides/rel_notes/release_22_03.rst >>>> b/doc/guides/rel_notes/release_22_03.rst >>>> index 6d99d1eaa9..4f97df942d 100644 >>>> --- a/doc/guides/rel_notes/release_22_03.rst >>>> +++ b/doc/guides/rel_notes/release_22_03.rst >>>> @@ -55,6 +55,13 @@ New Features >>>> Also, make sure to start the actual text at the margin. >>>> ======================================================= >>>> >>>> +* **Added the private ethdev dump API, for query private info of >>>> ethdev.** >>>> + >>>> + Added the private ethdev dump API which provides functions for query >>>> + private info from device. There exists many private properties in >>>> + different PMD drivers. The information of these properties is >>>> important >>>> + for debug. As the information is private, the new API is introduced. >>>> + >>>> >>>> Removed Items >>>> ------------- >>>> diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h >>>> index d95605a355..e75ff3f15b 100644 >>>> --- a/lib/ethdev/ethdev_driver.h >>>> +++ b/lib/ethdev/ethdev_driver.h >>>> @@ -990,6 +990,20 @@ typedef int (*eth_representor_info_get_t)(struct >>>> rte_eth_dev *dev, >>>> typedef int (*eth_rx_metadata_negotiate_t)(struct rte_eth_dev *dev, >>>> uint64_t *features); >>>> >>>> +/** >>>> + * @internal >>>> + * Get ethdev private info. >>> >>> Suggestion: Dump ethdev private info to a file. >>> >>>> + * >>>> + * @param file >>>> + * A pointer to a file for output. >>>> + * @param dev >>>> + * Port (ethdev) handle. >>>> + * >>>> + * @return >>>> + * Negative errno value on error, positive value on success. >>>> + */ >>>> +typedef int (*eth_dev_priv_dump_t)(FILE *file, struct rte_eth_dev >>>> *dev); >>>> + >>>> /** >>>> * @internal A structure containing the functions exported by an >>>> Ethernet driver. >>>> */ >>>> @@ -1186,6 +1200,9 @@ struct eth_dev_ops { >>>> * kinds of metadata to the PMD >>>> */ >>>> eth_rx_metadata_negotiate_t rx_metadata_negotiate; >>>> + >>>> + /** Dump ethdev private info */ >>>> + eth_dev_priv_dump_t eth_dev_priv_dump; >>>> }; >>>> >>>> /** >>>> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c >>>> index a1d475a292..9fc6d91d76 100644 >>>> --- a/lib/ethdev/rte_ethdev.c >>>> +++ b/lib/ethdev/rte_ethdev.c >>>> @@ -6472,6 +6472,21 @@ rte_eth_rx_metadata_negotiate(uint16_t port_id, >>>> uint64_t *features) >>>> (*dev->dev_ops->rx_metadata_negotiate)(dev, >>>> features)); >>>> } >>>> >>>> +int >>>> +rte_eth_dev_priv_dump(FILE *file, uint16_t port_id) >>>> +{ >>>> + struct rte_eth_dev *dev; >>>> + int ret; >>>> + >>>> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); >>>> + dev = &rte_eth_devices[port_id]; >>>> + >>>> + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->eth_dev_priv_dump, - >>>> ENOTSUP); >>>> + ret = (*dev->dev_ops->eth_dev_priv_dump)(file, dev); >>>> + >>>> + return ret; >>>> +} >>>> + >>>> RTE_LOG_REGISTER_DEFAULT(rte_eth_dev_logtype, INFO); >>>> >>>> RTE_INIT(ethdev_init_telemetry) >>>> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h >>>> index fa299c8ad7..8e33e6927f 100644 >>>> --- a/lib/ethdev/rte_ethdev.h >>>> +++ b/lib/ethdev/rte_ethdev.h >>>> @@ -5888,6 +5888,22 @@ rte_eth_tx_buffer(uint16_t port_id, uint16_t >>>> queue_id, >>>> return rte_eth_tx_buffer_flush(port_id, queue_id, buffer); >>>> } >>>> >>>> +/** >>>> + * @warning >>>> + * @b EXPERIMENTAL: this API may change, or be removed, without prior >>>> notice >>>> + * >>>> + * Get ethdev private info. >>> >>> Suggestion: Dump ethdev private info to a file. >>> >>>> + * >>>> + * @param file >>>> + * A pointer to a file for output. >>>> + * @param port_id >>>> + * The port identifier of the Ethernet device. >>>> + * @return >>>> + * Negative errno value on error, positive value on success. >>>> + */ >>>> +__rte_experimental >>>> +int rte_eth_dev_priv_dump(FILE *file, uint16_t port_id); >>>> + >>>> #ifdef __cplusplus >>>> } >>>> #endif >>>> -- >>>> 2.33.0 >>>> >>> >>> You should probably also add rte_eth_dev_priv_dump to the EXPERIMENTAL section of the version.map file. >>> >>> Acked-by: Morten Brørup >>> >>> . >>> > . >