[PATCH v2 3/3] net/ice: do not include private headers in testpmd

Burakov, Anatoly anatoly.burakov at intel.com
Thu Oct 15 17:00:38 CEST 2026


On 10/15/2026 4:52 PM, Medvedkin, Vladimir wrote:
> Hi Anatoly,
> 
> One nit: the buffer must be allocated with malloc, could you please 
> reflect this information in doxygen comments?

@Bruce

Perhaps this can be fixed on apply?

diff --git a/drivers/net/intel/ice/rte_pmd_ice.h 
b/drivers/net/intel/ice/rte_pmd_ice.h
index dccfdcd5f4..881dc4cc56 100644
--- a/drivers/net/intel/ice/rte_pmd_ice.h
+++ b/drivers/net/intel/ice/rte_pmd_ice.h
@@ -27,8 +27,9 @@ extern "C" {
   * @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.
+ *   Pointer to a `malloc()`-allocated buffer. On success, it will be 
freed by
+ *   `free()` and replaced by a newly `malloc()`-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


> 
> Apart from this,
> 
> Acked-by: Vladimir Medvedkin <vladimir.medvedkin at intel.com>
> 
> On 10/15/2026 3:21 PM, 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 at dpdk.org
>>
>> Signed-off-by: Anatoly Burakov <anatoly.burakov at 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
>>
>> 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_ */
> 


-- 
Thanks,
Anatoly


More information about the dev mailing list