All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ray Kinsella <mdr@ashroe.eu>
To: "Min Hu (Connor)" <humin29@huawei.com>
Cc: dev@dpdk.org, Thomas Monjalon <thomas@monjalon.net>,
	Ferruh Yigit <ferruh.yigit@xilinx.com>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Subject: Re: [PATCH 1/4] ethdev: introduce ethdev HW desc dump PI
Date: Mon, 30 May 2022 10:17:39 +0100	[thread overview]
Message-ID: <87fskrwf8r.fsf@mdr78.vserver.site> (raw)
In-Reply-To: <20220527023351.40577-2-humin29@huawei.com>


"Min Hu (Connor)" <humin29@huawei.com> writes:

> Added the ethdev HW Rx desc dump API which provides functions for query
> HW descriptor from device. HW descriptor info differs in different NICs.
> The information demonstrates I/O process which is important for debug.
> As the information is different between NICs, the new API is introduced.
>
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
> ---
>  doc/guides/rel_notes/release_22_07.rst |  6 ++++
>  lib/ethdev/ethdev_driver.h             | 42 ++++++++++++++++++++++++
>  lib/ethdev/rte_ethdev.c                | 44 ++++++++++++++++++++++++++
>  lib/ethdev/rte_ethdev.h                | 44 ++++++++++++++++++++++++++
>  lib/ethdev/version.map                 |  2 ++
>  5 files changed, 138 insertions(+)
>
> diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst
> index 0ed4f92820..cfb9117dd3 100644
> --- a/doc/guides/rel_notes/release_22_07.rst
> +++ b/doc/guides/rel_notes/release_22_07.rst
> @@ -95,6 +95,12 @@ New Features
>    * Added AH mode support in lookaside protocol (IPsec) for CN9K & CN10K.
>    * Added AES-GMAC support in lookaside protocol (IPsec) for CN9K & CN10K.
>  
> +* **Added ethdev HW desc dump API, to dump Rx/Tx HW desc info from device.**
> +
> +  Added the ethdev HW Rx desc dump API which provides functions for query
> +  HW descriptor from device. HW descriptor info differs in different NICs.
> +  The information demonstrates I/O process which is important for debug.
> +  As the information is different between NICs, the new API is introduced.
>  
>  Removed Items
>  -------------
> diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h
> index 69d9dc21d8..89512ab360 100644
> --- a/lib/ethdev/ethdev_driver.h
> +++ b/lib/ethdev/ethdev_driver.h
> @@ -1073,6 +1073,42 @@ typedef int (*eth_ip_reassembly_conf_set_t)(struct rte_eth_dev *dev,
>   */
>  typedef int (*eth_dev_priv_dump_t)(struct rte_eth_dev *dev, FILE *file);
>  
> +/**
> + * @internal
> + * Dump ethdev Rx descriptor info to a file.
> + *
> + * @param file
> + *   A pointer to a file for output.
> + * @param dev
> + *   Port (ethdev) handle.
> + * @param queue_id
> + *   The selected queue.
> + * @param desc_id
> + *   The selected descriptor.
> + * @return
> + *   Negative errno value on error, zero on success.
> + */
> +typedef int (*eth_rx_hw_desc_dump_t)(FILE *file, struct rte_eth_dev *dev,
> +				       uint16_t queue_id, uint16_t desc_id);
> +
> +/**
> + * @internal
> + * Dump ethdev Tx descriptor info to a file.
> + *
> + * @param file
> + *   A pointer to a file for output.
> + * @param dev
> + *   Port (ethdev) handle.
> + * @param queue_id
> + *   The selected queue.
> + * @param desc_id
> + *   The selected descriptor.
> + * @return
> + *   Negative errno value on error, zero on success.
> + */
> +typedef int (*eth_tx_hw_desc_dump_t)(FILE *file, struct rte_eth_dev *dev,
> +				       uint16_t queue_id, uint16_t desc_id);
> +
>  /**
>   * @internal A structure containing the functions exported by an Ethernet driver.
>   */
> @@ -1283,6 +1319,12 @@ struct eth_dev_ops {
>  
>  	/** Dump private info from device */
>  	eth_dev_priv_dump_t eth_dev_priv_dump;
> +
> +	/** Dump ethdev Rx descriptor info */
> +	eth_rx_hw_desc_dump_t eth_rx_hw_desc_dump;
> +
> +	/** Dump ethdev Tx descriptor info */
> +	eth_tx_hw_desc_dump_t eth_tx_hw_desc_dump;
>  };
>  
>  /**
> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
> index a175867651..09abee6345 100644
> --- a/lib/ethdev/rte_ethdev.c
> +++ b/lib/ethdev/rte_ethdev.c
> @@ -5874,6 +5874,50 @@ rte_eth_dev_priv_dump(uint16_t port_id, FILE *file)
>  	return eth_err(port_id, (*dev->dev_ops->eth_dev_priv_dump)(dev, file));
>  }
>  
> +int
> +rte_eth_rx_hw_desc_dump(FILE *file, uint16_t port_id, uint16_t queue_id,
> +			uint16_t desc_id)
> +{
> +	struct rte_eth_dev *dev;
> +	int ret;
> +
> +	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
> +	dev = &rte_eth_devices[port_id];
> +
> +	if (queue_id >= dev->data->nb_rx_queues) {
> +		RTE_ETHDEV_LOG(ERR, "Invalid Rx queue_id=%u\n", queue_id);
> +		return -EINVAL;
> +	}
> +
> +	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->eth_rx_hw_desc_dump, -ENOTSUP);
> +	ret = (*dev->dev_ops->eth_rx_hw_desc_dump)(file, dev, queue_id,
> +						   desc_id);
> +
> +	return ret;
> +}
> +
> +int
> +rte_eth_tx_hw_desc_dump(FILE *file, uint16_t port_id, uint16_t queue_id,
> +			uint16_t desc_id)
> +{
> +	struct rte_eth_dev *dev;
> +	int ret;
> +
> +	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
> +	dev = &rte_eth_devices[port_id];
> +
> +	if (queue_id >= dev->data->nb_tx_queues) {
> +		RTE_ETHDEV_LOG(ERR, "Invalid Tx queue_id=%u\n", queue_id);
> +		return -EINVAL;
> +	}
> +
> +	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->eth_tx_hw_desc_dump, -ENOTSUP);
> +	ret = (*dev->dev_ops->eth_tx_hw_desc_dump)(file, dev, queue_id,
> +						   desc_id);
> +
> +	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 02df65d923..56ae630209 100644
> --- a/lib/ethdev/rte_ethdev.h
> +++ b/lib/ethdev/rte_ethdev.h
> @@ -5456,6 +5456,50 @@ typedef struct {
>  __rte_experimental
>  int rte_eth_dev_priv_dump(uint16_t port_id, FILE *file);
>  
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
> + *
> + * Dump ethdev Rx descriptor info to a file.
> + *
> + * @param file
> + *   A pointer to a file for output.
> + * @param dev
> + *   Port (ethdev) handle.
> + * @param queue_id
> + *   The selected queue.
> + * @param desc_id
> + *   The selected descriptor.
> + * @return
> + *   - On success, zero.
> + *   - On failure, a negative value.
> + */
> +__rte_experimental
> +int rte_eth_rx_hw_desc_dump(FILE *file, uint16_t port_id, uint16_t queue_id,
> +			    uint16_t desc_id);
> +
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
> + *
> + * Dump ethdev Tx descriptor info to a file.
> + *
> + * @param file
> + *   A pointer to a file for output.
> + * @param dev
> + *   Port (ethdev) handle.
> + * @param queue_id
> + *   The selected queue.
> + * @param desc_id
> + *   The selected descriptor.
> + * @return
> + *   - On success, zero.
> + *   - On failure, a negative value.
> + */
> +__rte_experimental
> +int rte_eth_tx_hw_desc_dump(FILE *file, uint16_t port_id, uint16_t queue_id,
> +			    uint16_t desc_id);
> +
>  #include <rte_ethdev_core.h>
>  
>  /**
> diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
> index daca7851f2..109f4ea818 100644
> --- a/lib/ethdev/version.map
> +++ b/lib/ethdev/version.map
> @@ -285,6 +285,8 @@ EXPERIMENTAL {
>  	rte_mtr_color_in_protocol_priority_get;
>  	rte_mtr_color_in_protocol_set;
>  	rte_mtr_meter_vlan_table_update;

Please annotate with a comment indicating in which release the symbols
have been added. 

> +	rte_eth_rx_hw_desc_dump;
> +	rte_eth_tx_hw_desc_dump;
>  };
>  
>  INTERNAL {


-- 
Regards, Ray K

  parent reply	other threads:[~2022-05-30  9:18 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-27  2:33 [PATCH 0/4] support HW Rx/Tx descriptor dump Min Hu (Connor)
2022-05-27  2:33 ` [PATCH 1/4] ethdev: introduce ethdev HW desc dump PI Min Hu (Connor)
2022-05-27 15:34   ` Stephen Hemminger
2022-05-28  2:21     ` Min Hu (Connor)
2022-05-30  9:17   ` Ray Kinsella [this message]
2022-05-30 11:00     ` Min Hu (Connor)
2022-05-30 11:15       ` Ray Kinsella
2022-05-27  2:33 ` [PATCH 2/4] net/hns3: rename hns3 dump files Min Hu (Connor)
2022-05-27  2:33 ` [PATCH 3/4] net/hns3: support Rx/Tx bd dump Min Hu (Connor)
2022-05-27 15:36   ` Stephen Hemminger
2022-05-28  1:47     ` Min Hu (Connor)
2022-05-27  2:33 ` [PATCH 4/4] app/procinfo: support descriptor dump Min Hu (Connor)
2022-05-28  2:19 ` [PATCH v2 0/4] support HW Rx/Tx " Min Hu (Connor)
2022-05-28  2:19   ` [PATCH v2 1/4] ethdev: introduce ethdev HW desc dump PI Min Hu (Connor)
2022-05-28  2:19   ` [PATCH v2 2/4] net/hns3: rename hns3 dump files Min Hu (Connor)
2022-05-28  2:19   ` [PATCH v2 3/4] net/hns3: support Rx/Tx bd dump Min Hu (Connor)
2022-05-28  2:19   ` [PATCH v2 4/4] app/procinfo: support descriptor dump Min Hu (Connor)
2022-06-01  7:49 ` [PATCH v3 0/4] support HW Rx/Tx " Min Hu (Connor)
2022-06-01  7:49   ` [PATCH v3 1/4] ethdev: introduce ethdev HW desc dump PI Min Hu (Connor)
2022-06-01 19:53     ` Andrew Rybchenko
2022-06-07 13:59       ` Dongdong Liu
2022-06-08 10:09         ` Andrew Rybchenko
2022-06-11  9:04           ` Dongdong Liu
2022-06-01  7:49   ` [PATCH v3 2/4] net/hns3: rename hns3 dump files Min Hu (Connor)
2022-06-01  7:49   ` [PATCH v3 3/4] net/hns3: support Rx/Tx bd dump Min Hu (Connor)
2022-06-01  7:49   ` [PATCH v3 4/4] app/procinfo: support descriptor dump Min Hu (Connor)
2022-06-01 18:26   ` [PATCH v3 0/4] support HW Rx/Tx " Andrew Rybchenko
2022-06-01 18:48     ` Ray Kinsella
2022-06-07 14:02       ` Dongdong Liu
2022-06-02 13:27     ` Andrew Rybchenko
2022-06-07 14:01     ` Dongdong Liu
2022-09-23  7:43 ` [PATCH v4 0/3] support ethdev " Dongdong Liu
2022-09-23  7:43   ` [PATCH v4 1/3] ethdev: introduce ethdev desc dump API Dongdong Liu
2022-10-03 22:40     ` Ferruh Yigit
2022-10-04  7:05       ` Andrew Rybchenko
2022-10-06  8:26       ` Dongdong Liu
2022-10-06 17:13         ` Stephen Hemminger
2022-10-07 11:24           ` Ferruh Yigit
2022-09-23  7:43   ` [PATCH v4 2/3] net/hns3: support Rx/Tx bd dump Dongdong Liu
2022-09-23  7:43   ` [PATCH v4 3/3] app/procinfo: support descriptor dump Dongdong Liu
2022-09-23 12:18     ` Pattan, Reshma
2022-09-24  8:41       ` Dongdong Liu
2022-10-06 12:05 ` [PATCH v5 0/3] support ethdev Rx/Tx " Dongdong Liu
2022-10-06 12:05   ` [PATCH v5 1/3] ethdev: introduce ethdev desc dump API Dongdong Liu
2022-10-06 16:39     ` Ferruh Yigit
2022-10-06 12:05   ` [PATCH v5 2/3] net/hns3: support Rx/Tx bd dump Dongdong Liu
2022-10-06 16:40     ` Ferruh Yigit
2022-10-06 12:05   ` [PATCH v5 3/3] app/procinfo: support descriptor dump Dongdong Liu
2022-10-07 14:43     ` Pattan, Reshma
2022-10-08  9:46       ` Dongdong Liu
2022-10-06 16:42   ` [PATCH v5 0/3] support ethdev Rx/Tx " Ferruh Yigit
2022-10-08 11:11     ` Dongdong Liu

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=87fskrwf8r.fsf@mdr78.vserver.site \
    --to=mdr@ashroe.eu \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@xilinx.com \
    --cc=humin29@huawei.com \
    --cc=thomas@monjalon.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.