On Mon, Apr 16, 2018 at 06:21:50PM +0200, Adrien Mazarguil wrote:
> When an unsupported hash type is part of a RSS configuration structure, it
> is silently ignored instead of triggering an error. This may lead
> applications to assume that such types are accepted, while they are in fact
> not part of the resulting flow rules.
>
> Fixes: 078b8b452e6b ("net/mlx4: add RSS flow rule action support")
> Cc: sta...@dpdk.org
>
> Signed-off-by: Adrien Mazarguil
> Cc: Shahaf Shuler
Acked-by: Nelio Laranjeiro
> ---
> drivers/net/mlx4/mlx4_flow.c | 12 +---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
> index 2b4bf7094..67fd568bc 100644
> --- a/drivers/net/mlx4/mlx4_flow.c
> +++ b/drivers/net/mlx4/mlx4_flow.c
> @@ -706,6 +706,7 @@ mlx4_flow_prepare(struct priv *priv,
> const struct rte_flow_action_queue *queue;
> const struct rte_flow_action_rss *rss;
> const struct rte_eth_rss_conf *rss_conf;
> + uint64_t fields;
> unsigned int i;
>
> case RTE_FLOW_ACTION_TYPE_VOID:
> @@ -780,10 +781,15 @@ mlx4_flow_prepare(struct priv *priv,
> " of the context size";
> goto exit_action_not_supported;
> }
> + rte_errno = 0;
> + fields = mlx4_conv_rss_hf(priv, rss_conf->rss_hf);
> + if (fields == (uint64_t)-1 && rte_errno) {
> + msg = "unsupported RSS hash type requested";
> + goto exit_action_not_supported;
> + }
> flow->rss = mlx4_rss_get
> - (priv,
> - mlx4_conv_rss_hf(priv, rss_conf->rss_hf),
> - rss_conf->rss_key, rss->num, rss->queue);
> + (priv, fields, rss_conf->rss_key, rss->num,
> + rss->queue);
> if (!flow->rss) {
> msg = "either invalid parameters or not enough"
> " resources for additional multi-queue"
> --
> 2.11.0
--
Nélio Laranjeiro
6WIND