From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?iso-8859-1?Q?N=E9lio?= Laranjeiro Subject: Re: [PATCH v2 2/2] net/mlx5: add Rx and Tx tuning parameters Date: Wed, 2 May 2018 08:40:44 +0200 Message-ID: <20180502064044.bbsivjt3yldmyexq@laranjeiro-vm.dev.6wind.com> References: <20180429180308.85361-1-shahafs@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Cc: adrien.mazarguil@6wind.com, yskoh@mellanox.com, dev@dpdk.org, erezsc@mellanox.com, amira@mellanox.com, olgas@mellanox.com To: Shahaf Shuler Return-path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by dpdk.org (Postfix) with ESMTP id B149F2583 for ; Wed, 2 May 2018 08:39:40 +0200 (CEST) Received: by mail-wm0-f67.google.com with SMTP id a8so20778356wmg.5 for ; Tue, 01 May 2018 23:39:40 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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@mellanox.com > Cc: amira@mellanox.com > Cc: olgas@mellanox.com > > Signed-off-by: Shahaf Shuler Acked-by: Nelio Laranjeiro > --- > > 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