DPDK patches and discussions
 help / color / mirror / Atom feed
From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: Ophir Munk <ophirmu@mellanox.com>
Cc: dev@dpdk.org, Thomas Monjalon <thomas@monjalon.net>,
	Olga Shern <olgas@mellanox.com>,
	Shahaf Shuler <shahafs@mellanox.com>
Subject: Re: [dpdk-dev] [PATCH v1] net/mlx4: add an RSS hash update callback
Date: Mon, 21 May 2018 18:08:25 +0200	[thread overview]
Message-ID: <20180521160825.GU6497@6wind.com> (raw)
In-Reply-To: <1526555080-19259-1-git-send-email-ophirmu@mellanox.com>

On Thu, May 17, 2018 at 11:04:40AM +0000, Ophir Munk wrote:
> Add an RSS hash update callback to eth_dev_ops.
> 
> Signed-off-by: Ophir Munk <ophirmu@mellanox.com>

This patch allows applications to configure legacy RSS past initial port
configuration, but doesn't take input parameters into account. Its purpose
is to silence errors instead of telling users it's unsupported.

For this reason, I suggest to either withdraw this patch entirely, or fully
implement legacy RSS configuration by making rss_hash_update more than a
no-op and by adding rss_hash_conf_get, reta_update and reta_query as part of
the same task for completeness.

> ---
>  drivers/net/mlx4/Makefile   |  1 +
>  drivers/net/mlx4/mlx4.c     |  1 +
>  drivers/net/mlx4/mlx4.h     |  7 ++++++
>  drivers/net/mlx4/mlx4_rss.c | 59 +++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 68 insertions(+)
>  create mode 100644 drivers/net/mlx4/mlx4_rss.c
> 
> diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile
> index 73f9d40..eb89f6b 100644
> --- a/drivers/net/mlx4/Makefile
> +++ b/drivers/net/mlx4/Makefile
> @@ -23,6 +23,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rxq.c
>  SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rxtx.c
>  SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_txq.c
>  SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_utils.c
> +SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rss.c
>  
>  ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS),y)
>  INSTALL-$(CONFIG_RTE_LIBRTE_MLX4_PMD)-lib += $(LIB_GLUE)
> diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
> index 9f8ecd0..7000511 100644
> --- a/drivers/net/mlx4/mlx4.c
> +++ b/drivers/net/mlx4/mlx4.c
> @@ -261,6 +261,7 @@ static const struct eth_dev_ops mlx4_dev_ops = {
>  	.flow_ctrl_get = mlx4_flow_ctrl_get,
>  	.flow_ctrl_set = mlx4_flow_ctrl_set,
>  	.mtu_set = mlx4_mtu_set,
> +	.rss_hash_update = mlx4_rss_hash_update,
>  	.filter_ctrl = mlx4_filter_ctrl,
>  	.rx_queue_intr_enable = mlx4_rx_intr_enable,
>  	.rx_queue_intr_disable = mlx4_rx_intr_disable,
> diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h
> index 300cb4d..6842a71 100644
> --- a/drivers/net/mlx4/mlx4.h
> +++ b/drivers/net/mlx4/mlx4.h
> @@ -50,6 +50,9 @@
>  /** Port parameter. */
>  #define MLX4_PMD_PORT_KVARG "port"
>  
> +/** Supported RSS. */
> +#define MLX4_RSS_HF_MASK (~(ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP))
> +
>  enum {
>  	PCI_VENDOR_ID_MELLANOX = 0x15b3,
>  };
> @@ -144,4 +147,8 @@ void mlx4_rxq_intr_disable(struct priv *priv);
>  int mlx4_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx);
>  int mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx);
>  
> +/* mlx4_rss.c */
> +
> +int mlx4_rss_hash_update(struct rte_eth_dev *dev,
> +			 struct rte_eth_rss_conf *rss_conf);
>  #endif /* RTE_PMD_MLX4_H_ */
> diff --git a/drivers/net/mlx4/mlx4_rss.c b/drivers/net/mlx4/mlx4_rss.c
> new file mode 100644
> index 0000000..656a00d
> --- /dev/null
> +++ b/drivers/net/mlx4/mlx4_rss.c
> @@ -0,0 +1,59 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright 2015 6WIND S.A.
> + * Copyright 2015 Mellanox Technologies, Ltd
> + */
> +
> +#include <stddef.h>
> +#include <stdint.h>
> +#include <errno.h>
> +#include <string.h>
> +
> +/* Verbs headers do not support -pedantic. */
> +/* ISO C doesn't support unnamed structs/unions, disabling -pedantic. */
> +#ifdef PEDANTIC
> +#pragma GCC diagnostic ignored "-Wpedantic"
> +#endif
> +#include <infiniband/verbs.h>
> +#ifdef PEDANTIC
> +#pragma GCC diagnostic error "-Wpedantic"
> +#endif
> +
> +#include "mlx4.h"
> +#include "mlx4_flow.h"
> +#include "mlx4_utils.h"
> +
> +/**
> + * DPDK callback to update the RSS hash configuration.
> + *
> + * @param dev
> + *   Pointer to Ethernet device structure.
> + * @param[in] rss_conf
> + *   RSS configuration data.
> + *
> + * @return
> + *   0 on success, a negative errno value otherwise and rte_errno is set.
> + */
> +int
> +mlx4_rss_hash_update(struct rte_eth_dev *dev,
> +		     struct rte_eth_rss_conf *rss_conf)
> +{
> +	/*
> +	 * limitation: MLX4 supports all of IP, UDP and TCP hash
> +	 * functions together and not in partial combinations
> +	 * Just make sure no unsupported HF is requested
> +	 */
> +	if (rss_conf->rss_hf & MLX4_RSS_HF_MASK) {
> +		rte_errno = EINVAL;
> +		return -rte_errno;
> +	}
> +	if (rss_conf->rss_key && rss_conf->rss_key_len) {
> +		/*
> +		 * Currently mlx4 RSS key cannot be updated
> +		 */
> +		ERROR("port %u RSS key cannot be updated",
> +			dev->data->port_id);
> +		rte_errno = EINVAL;
> +		return -rte_errno;
> +	}
> +	return 0;
> +}
> -- 
> 2.7.4
> 

-- 
Adrien Mazarguil
6WIND

  reply	other threads:[~2018-05-21 16:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-17 11:04 Ophir Munk
2018-05-21 16:08 ` Adrien Mazarguil [this message]
2018-05-21 18:20   ` Ophir Munk

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=20180521160825.GU6497@6wind.com \
    --to=adrien.mazarguil@6wind.com \
    --cc=dev@dpdk.org \
    --cc=olgas@mellanox.com \
    --cc=ophirmu@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=thomas@monjalon.net \
    /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;
as well as URLs for NNTP newsgroup(s).