DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: <dev@dpdk.org>, Kevin Liu <kevinx.liu@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>
Subject: Re: [PATCH v2 3/3] net/ice: do not include private headers in testpmd
Date: Thu, 15 Oct 2026 15:36:05 +0100	[thread overview]
Message-ID: <atDk1fSEoCYA8ZZd@bricha3-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <ff393eb2eef43c9ab3d27824badda9743e717a98.1792074055.git.anatoly.burakov@intel.com>

On Thu, Oct 15, 2026 at 03:21:04PM +0100, Anatoly Burakov wrote:
> Currently, the `ice_testpmd.c` file includes headers that are only
> available to driver itself, but should not be available to applications,
> including testpmd. Instead, testpmd should access them through public PMD
> specific API.
> 
> The ice driver does not have one (even though it offers a testpmd file), so
> add the public PMD-specific API header, move all function definitions
> into that file, and get rid of driver-private includes in testpmd file.
> 
> Fixes: df539aaf35cb ("net/ice: refactor flex descriptor protocol field extraction")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
>  doc/guides/nics/ice.rst                |  3 +
>  doc/guides/rel_notes/release_26_11.rst |  2 +
>  drivers/net/intel/ice/ice_diagnose.c   |  1 +
>  drivers/net/intel/ice/ice_ethdev.h     |  9 ---
>  drivers/net/intel/ice/ice_testpmd.c    |  7 ++-
>  drivers/net/intel/ice/meson.build      |  1 +
>  drivers/net/intel/ice/rte_pmd_ice.h    | 76 ++++++++++++++++++++++++++
>  7 files changed, 88 insertions(+), 11 deletions(-)
>  create mode 100644 drivers/net/intel/ice/rte_pmd_ice.h
> 

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Given where we are, this is probably a reasonable solution. However, I'm
also thinking that maybe we should have a discussion as to whether testpmd
- which is, after all, for testing PMDs - should be limited to the public
APIs. Is there not a case to be made for allowing the per-driver testpmd
files to access the internals of the driver for testing purposes?


> diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst
> index ba598742c5..e4dd87649b 100644
> --- a/doc/guides/nics/ice.rst
> +++ b/doc/guides/nics/ice.rst
> @@ -1021,6 +1021,9 @@ To start ``testpmd``, and add vlan 10 to port 0:
>  Diagnostic Utilities
>  --------------------
>  
> +The diagnostic dump functions are also available to applications through
> +the public ``rte_pmd_ice.h`` header.
> +
>  Dump DDP Package
>  ~~~~~~~~~~~~~~~~
>  
> diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst
> index a4f44e5ebd..f3c820a72a 100644
> --- a/doc/guides/rel_notes/release_26_11.rst
> +++ b/doc/guides/rel_notes/release_26_11.rst
> @@ -118,6 +118,8 @@ New Features
>      enabling QinQ tag insertion and outer IPv4/UDP checksum offloads on those paths.
>    * Added support for getting and setting link (802.3x) flow control.
>    * Added support for Tx rate limiting per queue.
> +  * Made the existing diagnostic dump functions available through
> +    the public ``rte_pmd_ice.h`` header.
>  
>  * **Updated Intel ixgbe driver.**
>  
> diff --git a/drivers/net/intel/ice/ice_diagnose.c b/drivers/net/intel/ice/ice_diagnose.c
> index 4946ace7ae..ecfcdf5559 100644
> --- a/drivers/net/intel/ice/ice_diagnose.c
> +++ b/drivers/net/intel/ice/ice_diagnose.c
> @@ -13,6 +13,7 @@
>  
>  #include "ice_ethdev.h"
>  #include "ice_rxtx.h"
> +#include "rte_pmd_ice.h"
>  
>  #define ICE_BLK_MAX_COUNT          512
>  #define ICE_BUFF_SEG_HEADER_FLAG   0x1
> diff --git a/drivers/net/intel/ice/ice_ethdev.h b/drivers/net/intel/ice/ice_ethdev.h
> index 8d5e17e2df..08c2b61519 100644
> --- a/drivers/net/intel/ice/ice_ethdev.h
> +++ b/drivers/net/intel/ice/ice_ethdev.h
> @@ -821,15 +821,6 @@ ice_align_floor(int n)
>  	((phy_type) & ICE_PHY_TYPE_HIGH_200G_AUI8_AOC_ACC) || \
>  	((phy_type) & ICE_PHY_TYPE_HIGH_200G_AUI8))
>  
> -__rte_experimental
> -int rte_pmd_ice_dump_package(uint16_t port, uint8_t **buff, uint32_t *size);
> -
> -__rte_experimental
> -int rte_pmd_ice_dump_switch(uint16_t port, uint8_t **buff, uint32_t *size);
> -
> -__rte_experimental
> -int rte_pmd_ice_dump_txsched(uint16_t port, bool detail, FILE *stream);
> -
>  int
>  ice_tm_setup_txq_node(struct ice_pf *pf, struct ice_hw *hw, uint16_t qid, uint32_t node_teid);
>  
> diff --git a/drivers/net/intel/ice/ice_testpmd.c b/drivers/net/intel/ice/ice_testpmd.c
> index 98c02d68c6..0c135d79a3 100644
> --- a/drivers/net/intel/ice/ice_testpmd.c
> +++ b/drivers/net/intel/ice/ice_testpmd.c
> @@ -2,14 +2,17 @@
>   * Copyright(c) 2022 Intel Corporation.
>   */
>  
> -#include <stdlib.h>
> +#include <errno.h>
>  #include <stdio.h>
> +#include <stdlib.h>
> +#include <string.h>
> +
> +#include <rte_pmd_ice.h>
>  
>  #include <cmdline_parse_num.h>
>  #include <cmdline_parse_string.h>
>  
>  #include "testpmd.h"
> -#include "ice_ethdev.h"
>  
>  /* Fixed size for ICE ddp runtime configure */
>  #define ICE_BUFF_SIZE	0x000c9000
> diff --git a/drivers/net/intel/ice/meson.build b/drivers/net/intel/ice/meson.build
> index 322d9597d2..00077be30a 100644
> --- a/drivers/net/intel/ice/meson.build
> +++ b/drivers/net/intel/ice/meson.build
> @@ -19,6 +19,7 @@ sources = files(
>  )
>  
>  testpmd_sources = files('ice_testpmd.c')
> +headers = files('rte_pmd_ice.h')
>  
>  deps += ['hash', 'net']
>  
> diff --git a/drivers/net/intel/ice/rte_pmd_ice.h b/drivers/net/intel/ice/rte_pmd_ice.h
> new file mode 100644
> index 0000000000..dccfdcd5f4
> --- /dev/null
> +++ b/drivers/net/intel/ice/rte_pmd_ice.h
> @@ -0,0 +1,76 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2026 Intel Corporation
> + */
> +
> +#ifndef _RTE_PMD_ICE_H_
> +#define _RTE_PMD_ICE_H_
> +
> +/**
> + * @file rte_pmd_ice.h
> + *
> + * ICE PMD specific diagnostic functions.
> + */
> +
> +#include <stdbool.h>
> +#include <stdint.h>
> +#include <stdio.h>
> +
> +#include <rte_compat.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/**
> + * Dump the runtime DDP package configuration.
> + *
> + * @param port
> + *   The port identifier of the Ethernet device.
> + * @param buff
> + *   Pointer to an allocated buffer. On success, it may be replaced by a
> + *   newly allocated buffer; the caller must free the resulting buffer.
> + * @param size
> + *   Input buffer size in bytes; receives the size of the dump on success.
> + * @return
> + *   0 on success, -ENODEV for an invalid port, -ENOTSUP for a non-ICE port,
> + *   or a negative error code on failure.
> + */
> +__rte_experimental
> +int rte_pmd_ice_dump_package(uint16_t port, uint8_t **buff, uint32_t *size);
> +
> +/**
> + * Dump the runtime switch configuration.
> + *
> + * @param port
> + *   The port identifier of the Ethernet device.
> + * @param buff
> + *   Pointer to a caller-allocated output buffer.
> + * @param size
> + *   Input buffer size in bytes; receives the size of the dump on success.
> + * @return
> + *   0 on success, -ENODEV for an invalid port, -ENOTSUP for a non-ICE port,
> + *   or a negative error code on failure.
> + */
> +__rte_experimental
> +int rte_pmd_ice_dump_switch(uint16_t port, uint8_t **buff, uint32_t *size);
> +
> +/**
> + * Dump the Tx scheduling tree to a stream in DOT format.
> + *
> + * @param port
> + *   The port identifier of the Ethernet device.
> + * @param detail
> + *   Include node configuration parameters when true.
> + * @param stream
> + *   Output stream opened by the caller.
> + * @return
> + *   0 on success, -ENODEV for an invalid port, or -ENOTSUP for a non-ICE port.
> + */
> +__rte_experimental
> +int rte_pmd_ice_dump_txsched(uint16_t port, bool detail, FILE *stream);
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif /* _RTE_PMD_ICE_H_ */
> -- 
> 2.52.0
> 

  reply	other threads:[~2026-10-15 14:36 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-14 20:34 [PATCH] net/ixgbe: avoid private driver include in testpmd Thomas Monjalon
2026-10-15  8:53 ` Burakov, Anatoly
2026-10-15  9:13   ` Thomas Monjalon
2026-10-15 10:41     ` Burakov, Anatoly
2026-10-15 11:18       ` David Marchand
2026-10-15 11:21         ` Burakov, Anatoly
2026-10-15 11:50           ` Thomas Monjalon
2026-10-15 14:01             ` Burakov, Anatoly
2026-10-15 14:21 ` [PATCH v2 1/3] " Anatoly Burakov
2026-10-15 14:21   ` [PATCH v2 2/3] net/iavf: do not include private headers " Anatoly Burakov
2026-10-15 14:33     ` Bruce Richardson
2026-10-15 14:45     ` Medvedkin, Vladimir
2026-10-15 14:21   ` [PATCH v2 3/3] net/ice: " Anatoly Burakov
2026-10-15 14:36     ` Bruce Richardson [this message]
2026-10-15 14:39       ` Bruce Richardson
2026-10-15 14:52     ` Medvedkin, Vladimir
2026-10-15 15:00       ` Burakov, Anatoly
2026-10-15 15:21         ` Bruce Richardson
2026-10-15 15:29           ` Burakov, Anatoly
2026-10-15 14:44   ` [PATCH v2 1/3] net/ixgbe: avoid private driver include " Medvedkin, Vladimir

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=atDk1fSEoCYA8ZZd@bricha3-mobl1.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=kevinx.liu@intel.com \
    --cc=qi.z.zhang@intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox