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 10722A00C3; Fri, 14 Jan 2022 18:56:26 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B729B4115A; Fri, 14 Jan 2022 18:56:25 +0100 (CET) Received: from mail-il1-f177.google.com (mail-il1-f177.google.com [209.85.166.177]) by mails.dpdk.org (Postfix) with ESMTP id 9291E40C35 for ; Fri, 14 Jan 2022 18:56:24 +0100 (CET) Received: by mail-il1-f177.google.com with SMTP id x10so2431932ilq.7 for ; Fri, 14 Jan 2022 09:56:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=i1QeTBwHnBIoXqjr3YynLZ+2LyPKQSUIVoDcMPmkVqw=; b=alZa9YXHqDTPlgc0kEVftlQrL2V4oHavrGsPq4AWZsdGruPJMFH9Bi5/jIXWwc67O6 06m2V9Ohq34vZxppKbJVsbngaTPLGNftHhGlGpAs7MeIA+rEnpUC8zu5sAsxHy5eY+18 WkfRWCCspDXxltD6FZb3n6F22ecoK8XkiQRd4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=i1QeTBwHnBIoXqjr3YynLZ+2LyPKQSUIVoDcMPmkVqw=; b=oBQ9wpjkiSo0HLnsWgakcni8rkGWjOWj6sjA+/jdBDm8mz9XRWYDUvaS0EjuRNnJxU PjetfYbQNGdqHI9UIRWb1gfzQkw6Lk4eX0CEMHKx/jw61OQXD8AsQ/k3a6Alj3MOZTaC /Sshpi8o37BnLz3b41uuHyyCyGX4Bp0cqnfoa5phTZVrK9Acayrx42izufbT3hFX0k8H sVn7KWx4DD2nF0yXeE5nb33pA58O9K7zw8j2G9THTPNn9gpEJyKoV7iALcnIKS+eDc1s X4CZmm9+wU2TkZDu0e72Lj8kHyeYZVTu0BE9Gh/hFrjeaTNPVSt0Fsn+8uvHxurCFlpv 26Mw== X-Gm-Message-State: AOAM531zjP+uaivM1ozjr5NcNstXbU56VANO/Um5p8ugJpKPdTiEmHsg 8R6NAuyGpEue01s3CDN0uIxI94f/XQvtHaRX3pDucA== X-Google-Smtp-Source: ABdhPJyU5AOdqPgISaZy6pwzCNE/7GTJiLfnfCbCaQIod8IALjENzYEPrzY8MjTRL0ToSaQiUFRRB6JD42HbwSIaOQ4= X-Received: by 2002:a05:6e02:1bc7:: with SMTP id x7mr3964725ilv.255.1642182983847; Fri, 14 Jan 2022 09:56:23 -0800 (PST) MIME-Version: 1.0 References: <20220111115437.32855-1-humin29@huawei.com> <20220112024008.25211-1-humin29@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35D86DF9@smartserver.smartshare.dk> In-Reply-To: From: Ajit Khaparde Date: Fri, 14 Jan 2022 09:56:07 -0800 Message-ID: Subject: Re: [RFC v2] ethdev: introduce ethdev dump API To: "Min Hu (Connor)" Cc: =?UTF-8?Q?Morten_Br=C3=B8rup?= , dpdk-dev , Ferruh Yigit , Thomas Monjalon Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 On Wed, Jan 12, 2022 at 3:15 AM Min Hu (Connor) wrote: > > Thanks Morten, fixed in v3. > > =E5=9C=A8 2022/1/12 15:20, Morten Br=C3=B8rup =E5=86=99=E9=81=93: > >> 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? > >> > >> 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. > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > >> > >> +* **Added the private ethdev dump API, for query private info of > >> ethdev.** > >> + > >> + Added the private ethdev dump API which provides functions for quer= y > >> + 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 =3D &rte_eth_devices[port_id]; > >> + > >> + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->eth_dev_priv_dump, - > >> ENOTSUP); > >> + ret =3D (*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=C3=B8rup > > > > . > >