All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ray Kinsella <mdr@ashroe.eu>
To: Haiyue Wang <haiyue.wang@intel.com>,
	dev@dpdk.org, thomas@monjalon.net, jerinjacobk@gmail.com,
	ferruh.yigit@intel.com, arybchenko@solarflare.com,
	viacheslavo@mellanox.com, damarion@cisco.com,
	xiaolong.ye@intel.com, chenmin.sun@intel.com,
	ray.kinsella@intel.com, yu.y.liu@intel.com
Subject: Re: [dpdk-dev] [PATCH v2] ethdev: enhance the API for getting burst mode information
Date: Tue, 5 Nov 2019 15:51:33 +0000	[thread overview]
Message-ID: <2e748288-88f3-59f9-8617-45b3358de9a0@ashroe.eu> (raw)
In-Reply-To: <20191104103920.64907-1-haiyue.wang@intel.com>



On 04/11/2019 10:39, Haiyue Wang wrote:
> Change the type of burst mode information from bit field to free string
> data, so that each PMD can describe the Rx/Tx busrt functions flexibly.
> 
> Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
> ---
> 
> v2: - Drop the bit field for burst mode information handling.
> 
> v1: - http://patchwork.dpdk.org/patch/62289/
>     - http://patchwork.dpdk.org/patch/62290/
>     - http://patchwork.dpdk.org/patch/62291/
> 
>  app/test-pmd/config.c                    |  33 ++-----
>  doc/guides/nics/features.rst             |   3 +-
>  doc/guides/rel_notes/release_19_11.rst   |   2 -
>  drivers/net/i40e/i40e_rxtx.c             | 121 ++++++++++++-----------
>  drivers/net/ice/ice_rxtx.c               |  89 +++++++++--------
>  lib/librte_ethdev/rte_ethdev.c           |  35 -------
>  lib/librte_ethdev/rte_ethdev.h           |  43 ++------
>  lib/librte_ethdev/rte_ethdev_version.map |   1 -
>  8 files changed, 131 insertions(+), 196 deletions(-)
> 
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index efe2812a8..b6039749c 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -350,21 +350,6 @@ nic_stats_mapping_display(portid_t port_id)
>  	       nic_stats_mapping_border, nic_stats_mapping_border);
>  }
>  
> -static void
> -burst_mode_options_display(uint64_t options)
> -{
> -	int offset;
> -
> -	while (options != 0) {
> -		offset = rte_bsf64(options);
> -
> -		printf(" %s",
> -		       rte_eth_burst_mode_option_name(1ULL << offset));
> -
> -		options &= ~(1ULL << offset);
> -	}
> -}
> -
>  void
>  rx_queue_infos_display(portid_t port_id, uint16_t queue_id)
>  {
> @@ -397,10 +382,11 @@ rx_queue_infos_display(portid_t port_id, uint16_t queue_id)
>  		(qinfo.scattered_rx != 0) ? "on" : "off");
>  	printf("\nNumber of RXDs: %hu", qinfo.nb_desc);
>  
> -	if (rte_eth_rx_burst_mode_get(port_id, queue_id, &mode) == 0) {
> -		printf("\nBurst mode:");
> -		burst_mode_options_display(mode.options);
> -	}
> +	if (rte_eth_rx_burst_mode_get(port_id, queue_id, &mode) == 0)
> +		printf("\nBurst mode: %s%s",
> +		       mode.info,
> +		       mode.flags & RTE_ETH_BURST_FLAG_PER_QUEUE ?
> +				" (per queue)" : "");
>  
>  	printf("\n");
>  }
> @@ -433,10 +419,11 @@ tx_queue_infos_display(portid_t port_id, uint16_t queue_id)
>  		(qinfo.conf.tx_deferred_start != 0) ? "on" : "off");
>  	printf("\nNumber of TXDs: %hu", qinfo.nb_desc);
>  
> -	if (rte_eth_tx_burst_mode_get(port_id, queue_id, &mode) == 0) {
> -		printf("\nBurst mode:");
> -		burst_mode_options_display(mode.options);
> -	}
> +	if (rte_eth_tx_burst_mode_get(port_id, queue_id, &mode) == 0)
> +		printf("\nBurst mode: %s%s",
> +		       mode.info,
> +		       mode.flags & RTE_ETH_BURST_FLAG_PER_QUEUE ?
> +				" (per queue)" : "");
>  
>  	printf("\n");
>  }
> diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
> index d96696801..7a31cf7c8 100644
> --- a/doc/guides/nics/features.rst
> +++ b/doc/guides/nics/features.rst
> @@ -879,8 +879,7 @@ Burst mode info
>  Supports to get Rx/Tx packet burst mode information.
>  
>  * **[implements] eth_dev_ops**: ``rx_burst_mode_get``, ``tx_burst_mode_get``.
> -* **[related] API**: ``rte_eth_rx_burst_mode_get()``, ``rte_eth_tx_burst_mode_get()``,
> -  ``rte_eth_burst_mode_option_name()``.
> +* **[related] API**: ``rte_eth_rx_burst_mode_get()``, ``rte_eth_tx_burst_mode_get()``.
>  
>  .. _nic_features_other:
>  
> diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst
> index ae8e7b2f0..8fd1e7e62 100644
> --- a/doc/guides/rel_notes/release_19_11.rst
> +++ b/doc/guides/rel_notes/release_19_11.rst
> @@ -114,8 +114,6 @@ New Features
>    ``rte_eth_tx_burst_mode_get`` that allow an application
>    to retrieve the mode information about RX/TX packet burst
>    such as Scalar or Vector, and Vector technology like AVX2.
> -  Another new function ``rte_eth_burst_mode_option_name`` is
> -  provided for burst mode options stringification.
>  
>  * **Updated the Intel ice driver.**
>  
> diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
> index 6a66cec20..17dc8c78f 100644
> --- a/drivers/net/i40e/i40e_rxtx.c
> +++ b/drivers/net/i40e/i40e_rxtx.c
> @@ -3017,49 +3017,45 @@ i40e_set_rx_function(struct rte_eth_dev *dev)
>  	}
>  }
>  
> -int
> -i40e_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
> -		       struct rte_eth_burst_mode *mode)
> -{
> -	eth_rx_burst_t pkt_burst = dev->rx_pkt_burst;
> -	uint64_t options;
> -
> -	if (pkt_burst == i40e_recv_scattered_pkts)
> -		options = RTE_ETH_BURST_SCALAR | RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == i40e_recv_pkts_bulk_alloc)
> -		options = RTE_ETH_BURST_SCALAR | RTE_ETH_BURST_BULK_ALLOC;
> -	else if (pkt_burst == i40e_recv_pkts)
> -		options = RTE_ETH_BURST_SCALAR;
> +static const struct {
> +	eth_rx_burst_t pkt_burst;
> +	const char *info;
> +} i40e_rx_burst_infos[] = {
> +	{ i40e_recv_scattered_pkts,          "Scalar Scattered" },
> +	{ i40e_recv_pkts_bulk_alloc,         "Scalar Bulk Alloc" },
> +	{ i40e_recv_pkts,                    "Scalar" },
>  #ifdef RTE_ARCH_X86
> -	else if (pkt_burst == i40e_recv_scattered_pkts_vec_avx2)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_AVX2 |
> -			  RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == i40e_recv_pkts_vec_avx2)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_AVX2;
> -	else if (pkt_burst == i40e_recv_scattered_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_SSE |
> -			  RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == i40e_recv_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_SSE;
> +	{ i40e_recv_scattered_pkts_vec_avx2, "Vector AVX2 Scattered" },
> +	{ i40e_recv_pkts_vec_avx2,           "Vector AVX2" },
> +	{ i40e_recv_scattered_pkts_vec,      "Vector SSE Scattered" },
> +	{ i40e_recv_pkts_vec,                "Vector SSE" },
>  #elif defined(RTE_ARCH_ARM64)
> -	else if (pkt_burst == i40e_recv_scattered_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_NEON |
> -			  RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == i40e_recv_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_NEON;
> +	{ i40e_recv_scattered_pkts_vec,      "Vector Neon Scattered" },
> +	{ i40e_recv_pkts_vec,                "Vector Neon" },
>  #elif defined(RTE_ARCH_PPC_64)
> -	else if (pkt_burst == i40e_recv_scattered_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_ALTIVEC |
> -			  RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == i40e_recv_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_ALTIVEC;
> +	{ i40e_recv_scattered_pkts_vec,      "Vector AltiVec Scattered" },
> +	{ i40e_recv_pkts_vec,                "Vector AltiVec" },
>  #endif
> -	else
> -		options = 0;
> +};
>  
> -	mode->options = options;
> +int
> +i40e_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
> +		       struct rte_eth_burst_mode *mode)
> +{
> +	eth_rx_burst_t pkt_burst = dev->rx_pkt_burst;
> +	int ret = -EINVAL;
> +	unsigned int i;
> +
> +	for (i = 0; i < RTE_DIM(i40e_rx_burst_infos); ++i) {
> +		if (pkt_burst == i40e_rx_burst_infos[i].pkt_burst) {
> +			snprintf(mode->info, sizeof(mode->info), "%s",
> +				 i40e_rx_burst_infos[i].info);
> +			ret = 0;
> +			break;
> +		}
> +	}
>  
> -	return options != 0 ? 0 : -EINVAL;
> +	return ret;
>  }
>  
>  void __attribute__((cold))
> @@ -3155,35 +3151,40 @@ i40e_set_tx_function(struct rte_eth_dev *dev)
>  	}
>  }
>  
> -int
> -i40e_tx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
> -		       struct rte_eth_burst_mode *mode)
> -{
> -	eth_tx_burst_t pkt_burst = dev->tx_pkt_burst;
> -	uint64_t options;
> -
> -	if (pkt_burst == i40e_xmit_pkts_simple)
> -		options = RTE_ETH_BURST_SCALAR | RTE_ETH_BURST_SIMPLE;
> -	else if (pkt_burst == i40e_xmit_pkts)
> -		options = RTE_ETH_BURST_SCALAR;
> +static const struct {
> +	eth_tx_burst_t pkt_burst;
> +	const char *info;
> +} i40e_tx_burst_infos[] = {
> +	{ i40e_xmit_pkts_simple,   "Scalar Simple" },
> +	{ i40e_xmit_pkts,          "Scalar" },
>  #ifdef RTE_ARCH_X86
> -	else if (pkt_burst == i40e_xmit_pkts_vec_avx2)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_AVX2;
> -	else if (pkt_burst == i40e_xmit_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_SSE;
> +	{ i40e_xmit_pkts_vec_avx2, "Vector AVX2" },
> +	{ i40e_xmit_pkts_vec,      "Vector SSE" },
>  #elif defined(RTE_ARCH_ARM64)
> -	else if (pkt_burst == i40e_xmit_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_NEON;
> +	{ i40e_xmit_pkts_vec,      "Vector Neon" },
>  #elif defined(RTE_ARCH_PPC_64)
> -	else if (pkt_burst == i40e_xmit_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_ALTIVEC;
> +	{ i40e_xmit_pkts_vec,      "Vector AltiVec" },
>  #endif
> -	else
> -		options = 0;
> +};
>  
> -	mode->options = options;
> +int
> +i40e_tx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
> +		       struct rte_eth_burst_mode *mode)
> +{
> +	eth_tx_burst_t pkt_burst = dev->tx_pkt_burst;
> +	int ret = -EINVAL;
> +	unsigned int i;
> +
> +	for (i = 0; i < RTE_DIM(i40e_tx_burst_infos); ++i) {
> +		if (pkt_burst == i40e_tx_burst_infos[i].pkt_burst) {
> +			snprintf(mode->info, sizeof(mode->info), "%s",
> +				 i40e_tx_burst_infos[i].info);
> +			ret = 0;
> +			break;
> +		}
> +	}
>  
> -	return options != 0 ? 0 : -EINVAL;
> +	return ret;
>  }
>  
>  void __attribute__((cold))
> diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
> index 8d4820d3c..bf14d337d 100644
> --- a/drivers/net/ice/ice_rxtx.c
> +++ b/drivers/net/ice/ice_rxtx.c
> @@ -2793,37 +2793,39 @@ ice_set_rx_function(struct rte_eth_dev *dev)
>  	}
>  }
>  
> +static const struct {
> +	eth_rx_burst_t pkt_burst;
> +	const char *info;
> +} ice_rx_burst_infos[] = {
> +	{ ice_recv_scattered_pkts,          "Scalar Scattered" },
> +	{ ice_recv_pkts_bulk_alloc,         "Scalar Bulk Alloc" },
> +	{ ice_recv_pkts,                    "Scalar" },
> +#ifdef RTE_ARCH_X86
> +	{ ice_recv_scattered_pkts_vec_avx2, "Vector AVX2 Scattered" },
> +	{ ice_recv_pkts_vec_avx2,           "Vector AVX2" },
> +	{ ice_recv_scattered_pkts_vec,      "Vector SSE Scattered" },
> +	{ ice_recv_pkts_vec,                "Vector SSE" },
> +#endif
> +};
> +
>  int
>  ice_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
>  		      struct rte_eth_burst_mode *mode)
>  {
>  	eth_rx_burst_t pkt_burst = dev->rx_pkt_burst;
> -	uint64_t options;
> -
> -	if (pkt_burst == ice_recv_scattered_pkts)
> -		options = RTE_ETH_BURST_SCALAR | RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == ice_recv_pkts_bulk_alloc)
> -		options = RTE_ETH_BURST_SCALAR | RTE_ETH_BURST_BULK_ALLOC;
> -	else if (pkt_burst == ice_recv_pkts)
> -		options = RTE_ETH_BURST_SCALAR;
> -#ifdef RTE_ARCH_X86
> -	else if (pkt_burst == ice_recv_scattered_pkts_vec_avx2)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_AVX2 |
> -			  RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == ice_recv_pkts_vec_avx2)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_AVX2;
> -	else if (pkt_burst == ice_recv_scattered_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_SSE |
> -			  RTE_ETH_BURST_SCATTERED;
> -	else if (pkt_burst == ice_recv_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_SSE;
> -#endif
> -	else
> -		options = 0;
> +	int ret = -EINVAL;
> +	unsigned int i;
>  
> -	mode->options = options;
> +	for (i = 0; i < RTE_DIM(ice_rx_burst_infos); ++i) {
> +		if (pkt_burst == ice_rx_burst_infos[i].pkt_burst) {
> +			snprintf(mode->info, sizeof(mode->info), "%s",
> +				 ice_rx_burst_infos[i].info);
> +			ret = 0;
> +			break;
> +		}
> +	}
>  
> -	return options != 0 ? 0 : -EINVAL;
> +	return ret;
>  }
>  
>  void __attribute__((cold))
> @@ -2949,29 +2951,36 @@ ice_set_tx_function(struct rte_eth_dev *dev)
>  	}
>  }
>  
> +static const struct {
> +	eth_tx_burst_t pkt_burst;
> +	const char *info;
> +} ice_tx_burst_infos[] = {
> +	{ ice_xmit_pkts_simple,   "Scalar Simple" },
> +	{ ice_xmit_pkts,          "Scalar" },
> +#ifdef RTE_ARCH_X86
> +	{ ice_xmit_pkts_vec_avx2, "Vector AVX2" },
> +	{ ice_xmit_pkts_vec,      "Vector SSE" },
> +#endif
> +};
> +
>  int
>  ice_tx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
>  		      struct rte_eth_burst_mode *mode)
>  {
>  	eth_tx_burst_t pkt_burst = dev->tx_pkt_burst;
> -	uint64_t options;
> -
> -	if (pkt_burst == ice_xmit_pkts_simple)
> -		options = RTE_ETH_BURST_SCALAR | RTE_ETH_BURST_SIMPLE;
> -	else if (pkt_burst == ice_xmit_pkts)
> -		options = RTE_ETH_BURST_SCALAR;
> -#ifdef RTE_ARCH_X86
> -	else if (pkt_burst == ice_xmit_pkts_vec_avx2)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_AVX2;
> -	else if (pkt_burst == ice_xmit_pkts_vec)
> -		options = RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_SSE;
> -#endif
> -	else
> -		options = 0;
> +	int ret = -EINVAL;
> +	unsigned int i;
>  
> -	mode->options = options;
> +	for (i = 0; i < RTE_DIM(ice_tx_burst_infos); ++i) {
> +		if (pkt_burst == ice_tx_burst_infos[i].pkt_burst) {
> +			snprintf(mode->info, sizeof(mode->info), "%s",
> +				 ice_tx_burst_infos[i].info);
> +			ret = 0;
> +			break;
> +		}
> +	}
>  
> -	return options != 0 ? 0 : -EINVAL;
> +	return ret;
>  }
>  
>  /* For each value it means, datasheet of hardware can tell more details
> diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
> index 7743205d3..208362971 100644
> --- a/lib/librte_ethdev/rte_ethdev.c
> +++ b/lib/librte_ethdev/rte_ethdev.c
> @@ -166,25 +166,6 @@ static const struct {
>  
>  #undef RTE_TX_OFFLOAD_BIT2STR
>  
> -static const struct {
> -	uint64_t option;
> -	const char *name;
> -} rte_burst_option_names[] = {
> -	{ RTE_ETH_BURST_SCALAR, "Scalar" },
> -	{ RTE_ETH_BURST_VECTOR, "Vector" },
> -
> -	{ RTE_ETH_BURST_ALTIVEC, "AltiVec" },
> -	{ RTE_ETH_BURST_NEON, "Neon" },
> -	{ RTE_ETH_BURST_SSE, "SSE" },
> -	{ RTE_ETH_BURST_AVX2, "AVX2" },
> -	{ RTE_ETH_BURST_AVX512, "AVX512" },
> -
> -	{ RTE_ETH_BURST_SCATTERED, "Scattered" },
> -	{ RTE_ETH_BURST_BULK_ALLOC, "Bulk Alloc" },
> -	{ RTE_ETH_BURST_SIMPLE, "Simple" },
> -	{ RTE_ETH_BURST_PER_QUEUE, "Per Queue" },
> -};
> -
>  /**
>   * The user application callback description.
>   *
> @@ -4284,22 +4265,6 @@ rte_eth_tx_burst_mode_get(uint16_t port_id, uint16_t queue_id,
>  		       dev->dev_ops->tx_burst_mode_get(dev, queue_id, mode));
>  }
>  
> -const char *
> -rte_eth_burst_mode_option_name(uint64_t option)
> -{
> -	const char *name = "";
> -	unsigned int i;
> -
> -	for (i = 0; i < RTE_DIM(rte_burst_option_names); ++i) {
> -		if (option == rte_burst_option_names[i].option) {
> -			name = rte_burst_option_names[i].name;
> -			break;
> -		}
> -	}
> -
> -	return name;
> -}
> -
>  int
>  rte_eth_dev_set_mc_addr_list(uint16_t port_id,
>  			     struct rte_ether_addr *mc_addr_set,
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index c36c1b631..88c83c7aa 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -1248,32 +1248,23 @@ struct rte_eth_txq_info {
>  } __rte_cache_min_aligned;
>  
>  /**
> - * Burst mode types, values can be ORed to define the burst mode of a driver.
> + * Generic Burst mode flag definition, values can be ORed.
> + */
> +#define RTE_ETH_BURST_FLAG_PER_QUEUE     (1ULL << 0)
> +/**< If the queues have different burst mode description, this bit will be set
> + * by PMD, then the application can iterate to retrieve burst description for
> + * all other queues.
>   */
> -enum rte_eth_burst_mode_option {
> -	RTE_ETH_BURST_SCALAR = (1 << 0),
> -	RTE_ETH_BURST_VECTOR = (1 << 1),
> -
> -	/**< bits[15:2] are reserved for each vector type */
> -	RTE_ETH_BURST_ALTIVEC = (1 << 2),
> -	RTE_ETH_BURST_NEON = (1 << 3),
> -	RTE_ETH_BURST_SSE = (1 << 4),
> -	RTE_ETH_BURST_AVX2 = (1 << 5),
> -	RTE_ETH_BURST_AVX512 = (1 << 6),
> -
> -	RTE_ETH_BURST_SCATTERED = (1 << 16), /**< Support scattered packets */
> -	RTE_ETH_BURST_BULK_ALLOC = (1 << 17), /**< Support mbuf bulk alloc */
> -	RTE_ETH_BURST_SIMPLE = (1 << 18),
> -
> -	RTE_ETH_BURST_PER_QUEUE = (1 << 19), /**< Support per queue burst */
> -};
>  
>  /**
>   * Ethernet device RX/TX queue packet burst mode information structure.
>   * Used to retrieve information about packet burst mode setting.
>   */
>  struct rte_eth_burst_mode {
> -	uint64_t options;
> +	uint64_t flags; /**< The ORed values of RTE_ETH_BURST_FLAG_xxx */
> +
> +#define RTE_ETH_BURST_MODE_INFO_SIZE 1024 /**< Maximum size for information */
> +	char info[RTE_ETH_BURST_MODE_INFO_SIZE]; /**< burst mode information */
>  };
>  
>  /** Maximum name length for extended statistics counters */
> @@ -3706,20 +3697,6 @@ __rte_experimental
>  int rte_eth_tx_burst_mode_get(uint16_t port_id, uint16_t queue_id,
>  	struct rte_eth_burst_mode *mode);
>  
> -/**
> - * Retrieve name about burst mode option.
> - *
> - * @param option
> - *   The burst mode option of type *rte_eth_burst_mode_option*.
> - *
> - * @return
> - *   - "": Not found
> - *   - "xxx": name of the mode option.
> - */
> -__rte_experimental
> -const char *
> -rte_eth_burst_mode_option_name(uint64_t option);
> -
>  /**
>   * Retrieve device registers and register attributes (number of registers and
>   * register size)
> diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
> index e59d51648..5b00b9a40 100644
> --- a/lib/librte_ethdev/rte_ethdev_version.map
> +++ b/lib/librte_ethdev/rte_ethdev_version.map
> @@ -287,5 +287,4 @@ EXPERIMENTAL {
>  	# added in 19.11
>  	rte_eth_rx_burst_mode_get;
>  	rte_eth_tx_burst_mode_get;
> -	rte_eth_burst_mode_option_name;
>  };
> 

Acked-by: Ray Kinsella <mdr@ashroe.eu>

  reply	other threads:[~2019-11-05 15:51 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-04 10:39 [dpdk-dev] [PATCH v2] ethdev: enhance the API for getting burst mode information Haiyue Wang
2019-11-05 15:51 ` Ray Kinsella [this message]
2019-11-06  0:33 ` Thomas Monjalon
2019-11-06  1:21   ` Wang, Haiyue
2019-11-06  1:40     ` Wang, Haiyue
2019-11-06  8:19     ` Thomas Monjalon
2019-11-06  1:30 ` [dpdk-dev] [PATCH v3] " Haiyue Wang
2019-11-06  9:19   ` Thomas Monjalon
2019-11-06 10:49     ` Wang, Haiyue
2019-11-06 15:13       ` Ferruh Yigit
2019-11-06  9:36   ` Slava Ovsiienko

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=2e748288-88f3-59f9-8617-45b3358de9a0@ashroe.eu \
    --to=mdr@ashroe.eu \
    --cc=arybchenko@solarflare.com \
    --cc=chenmin.sun@intel.com \
    --cc=damarion@cisco.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=haiyue.wang@intel.com \
    --cc=jerinjacobk@gmail.com \
    --cc=ray.kinsella@intel.com \
    --cc=thomas@monjalon.net \
    --cc=viacheslavo@mellanox.com \
    --cc=xiaolong.ye@intel.com \
    --cc=yu.y.liu@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 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.