Re: [dpdk-dev] [PATCH v5 02/11] net/mlx4: fix ignored RSS hash types

2018-04-17 Thread Nélio Laranjeiro
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


[dpdk-dev] [PATCH v5 02/11] net/mlx4: fix ignored RSS hash types

2018-04-16 Thread Adrien Mazarguil
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 
---
 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