[dpdk-dev] [PATCH v2 2/2] net/mlx5: add Rx and Tx tuning parameters

Nélio Laranjeiro nelio.laranjeiro at 6wind.com
Wed May 2 08:40:44 CEST 2018


On Tue, May 01, 2018 at 12:58:49PM +0300, Shahaf Shuler wrote:
> A new ethdev API was exposed by
> commit 3be82f5cc5e3 ("ethdev: support PMD-tuned Tx/Rx parameters")
> 
> Enabling the PMD to provide default parameters in case no strict request
> from application in order to improve the out of the box experience.
> 
> While the current API lacks the means for the PMD to provide the best
> possible value, providing the best default the PMD can guess.
> The values are based on Mellanox performance report and depends on the
> underlying NIC capabilities.
> 
> Cc: erezsc at mellanox.com
> Cc: amira at mellanox.com
> Cc: olgas at mellanox.com
> 
> Signed-off-by: Shahaf Shuler <shahafs at mellanox.com>

Acked-by: Nelio Laranjeiro <nelio.laranjeiro at 6wind.com>

> ---
> 
> On v2:
>  - refactor the code to ease the maintenance.
> 
> ---
>  drivers/net/mlx5/mlx5_ethdev.c | 40 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 40 insertions(+)
> 
> diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
> index 588d4ba627..3fad199a60 100644
> --- a/drivers/net/mlx5/mlx5_ethdev.c
> +++ b/drivers/net/mlx5/mlx5_ethdev.c
> @@ -417,6 +417,45 @@ mlx5_dev_configure(struct rte_eth_dev *dev)
>  }
>  
>  /**
> + * Sets default tuning parameters.
> + *
> + * @param dev
> + *   Pointer to Ethernet device.
> + * @param[out] info
> + *   Info structure output buffer.
> + */
> +static void
> +mlx5_set_default_params(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
> +{
> +	struct priv *priv = dev->data->dev_private;
> +
> +	/* Minimum CPU utilization. */
> +	info->default_rxportconf.ring_size = 256;
> +	info->default_txportconf.ring_size = 256;
> +	info->default_rxportconf.burst_size = 64;
> +	info->default_txportconf.burst_size = 64;
> +	if (priv->link_speed_capa & ETH_LINK_SPEED_100G) {
> +		info->default_rxportconf.nb_queues = 16;
> +		info->default_txportconf.nb_queues = 16;
> +		if (dev->data->nb_rx_queues > 2 ||
> +		    dev->data->nb_tx_queues > 2) {
> +			/* Max Throughput. */
> +			info->default_rxportconf.ring_size = 2048;
> +			info->default_txportconf.ring_size = 2048;
> +		}
> +	} else {
> +		info->default_rxportconf.nb_queues = 8;
> +		info->default_txportconf.nb_queues = 8;
> +		if (dev->data->nb_rx_queues > 2 ||
> +		    dev->data->nb_tx_queues > 2) {
> +			/* Max Throughput. */
> +			info->default_rxportconf.ring_size = 4096;
> +			info->default_txportconf.ring_size = 4096;
> +		}
> +	}
> +}
> +
> +/**
>   * DPDK callback to get information about the device.
>   *
>   * @param dev
> @@ -458,6 +497,7 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
>  	info->hash_key_size = rss_hash_default_key_len;
>  	info->speed_capa = priv->link_speed_capa;
>  	info->flow_type_rss_offloads = ~MLX5_RSS_HF_MASK;
> +	mlx5_set_default_params(dev, info);
>  }
>  
>  /**
> -- 
> 2.12.0
> 

Thanks,

-- 
Nélio Laranjeiro
6WIND


More information about the dev mailing list