For 18.05 this path can be withdrawn. It has already been suppressed a few days ago.
Thanks, Ophir > -----Original Message----- > From: Adrien Mazarguil [mailto:adrien.mazarg...@6wind.com] > Sent: Monday, May 21, 2018 7:08 PM > To: Ophir Munk <ophi...@mellanox.com> > Cc: dev@dpdk.org; Thomas Monjalon <tho...@monjalon.net>; Olga Shern > <ol...@mellanox.com>; Shahaf Shuler <shah...@mellanox.com> > Subject: Re: [PATCH v1] net/mlx4: add an RSS hash update callback > > 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 <ophi...@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