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 9DE4AA034D; Wed, 12 Jan 2022 03:40:44 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 857C2410FB; Wed, 12 Jan 2022 03:40:44 +0100 (CET) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 407CC40141 for ; Wed, 12 Jan 2022 03:40:42 +0100 (CET) Received: from dggeme756-chm.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4JYWt84JY3zZf3G; Wed, 12 Jan 2022 10:37:04 +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 10:40:40 +0800 Subject: Re: [RFC] ethdev: introduce ethdev dump API To: =?UTF-8?Q?Morten_Br=c3=b8rup?= CC: , , References: <20220111115437.32855-1-humin29@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35D86DF6@smartserver.smartshare.dk> From: "Min Hu (Connor)" Message-ID: <3e2f99dc-b7ce-8f7e-1336-9b28a8ced0da@huawei.com> Date: Wed, 12 Jan 2022 10:40:40 +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: <98CBD80474FA8B44BF855DF32C47DC35D86DF6@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: dggems703-chm.china.huawei.com (10.3.19.180) 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, Morten, thanks for your reply, all is fixed in v2. 在 2022/1/11 20:10, Morten Brørup 写道: >> From: Min Hu (Connor) [mailto:humin29@huawei.com] >> Sent: Tuesday, 11 January 2022 12.55 >> >> 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) >> --- >> doc/guides/rel_notes/release_22_03.rst | 6 ++++++ >> lib/ethdev/ethdev_driver.h | 17 +++++++++++++++++ >> lib/ethdev/rte_ethdev.c | 15 +++++++++++++++ >> lib/ethdev/rte_ethdev.h | 16 ++++++++++++++++ >> 4 files changed, 54 insertions(+) >> >> diff --git a/doc/guides/rel_notes/release_22_03.rst >> b/doc/guides/rel_notes/release_22_03.rst >> index 6d99d1eaa9..9b51da899a 100644 >> --- a/doc/guides/rel_notes/release_22_03.rst >> +++ b/doc/guides/rel_notes/release_22_03.rst >> @@ -55,6 +55,12 @@ New Features >> Also, make sure to start the actual text at the margin. >> ======================================================= >> >> + * **Added the ethdev dump API, for query private info of ethdev.** >> + >> + Added the 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..ac7fa5eae2 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. >> + * >> + * @param dev >> + * Port (ethdev) handle. >> + * @param file >> + * A pointer to a file for output. >> + * >> + * @return >> + * Negative errno value on error, positive value on success. >> + */ >> +typedef int (*eth_dev_dump_t)(struct rte_eth_dev *dev, FILE *file); >> + >> /** >> * @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_dump_t eth_dev_dump; >> }; >> >> /** >> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c >> index a1d475a292..4bbe444045 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_dump(uint16_t port_id, FILE *file) >> +{ >> + 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_dump, -ENOTSUP); >> + ret = (*dev->dev_ops->eth_dev_dump)(dev, file); >> + >> + 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..918bd3116f 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. >> + * >> + * @param port_id >> + * The port identifier of the Ethernet device. >> + * @param file >> + * A pointer to a file for output. >> + * @return >> + * Negative errno value on error, positive value on success. >> + */ >> +__rte_experimental >> +int rte_eth_dev_dump(uint16_t port_id, FILE *file); >> + >> #ifdef __cplusplus >> } >> #endif >> -- >> 2.33.0 >> > > Good idea. > > Two comments: > > 1. This function dumps private ethdev information. It should be named and described as such, e.g. eth_dev_priv_dump(). > > It should be a generic ethdev dump function, which dumps the common ethdev information, and also calls the eth_dev_priv_dump() function, if present. > > 2. Please make FILE* the first parameter, like similar dump functions. > > > . >