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 38B47A0350; Wed, 12 Jan 2022 12:15:56 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2108C426F2; Wed, 12 Jan 2022 12:15:56 +0100 (CET) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by mails.dpdk.org (Postfix) with ESMTP id 3B20340040 for ; Wed, 12 Jan 2022 12:15:53 +0100 (CET) Received: from dggeme756-chm.china.huawei.com (unknown [172.30.72.53]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4JYlKc4tmPz8wKw; Wed, 12 Jan 2022 19:13:08 +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.20; Wed, 12 Jan 2022 19:15:50 +0800 Subject: Re: [RFC v2] ethdev: introduce ethdev dump API To: =?UTF-8?Q?Morten_Br=c3=b8rup?= , CC: , References: <20220111115437.32855-1-humin29@huawei.com> <20220112024008.25211-1-humin29@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35D86DF9@smartserver.smartshare.dk> From: "Min Hu (Connor)" Message-ID: Date: Wed, 12 Jan 2022 19:15:50 +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: <98CBD80474FA8B44BF855DF32C47DC35D86DF9@smartserver.smartshare.dk> 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 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. >> >> 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 > > . >