[dpdk-dev] [PATCH v2] net/mlx5: fix the RSS consistency check of meter policy

Ferruh Yigit ferruh.yigit at intel.com
Wed Nov 10 17:16:54 CET 2021


On 10/18/2021 3:43 PM, Bing Zhao wrote:
> After yellow color actions in the metering policy were supported,
> the RSS could be used for both green and yellow colors and only the
> queues attribute could be different.
> 
> When specifying the attributes of a RSS, some fields can be ignored
> and some default values will be used in PMD. For example, there is a
> default RSS key in the PMD and it will be used to create the TIR if
> nothing is provided by the application.
> 
> The default value cases were missed in the current implementation
> and it would cause some false positives or crashes.
> 
> The comparison function should be adjusted to take all cases into
> consideration when RSS is used for both green and yellow colors.
> 
> Fixes: 4b7bf3ffb473 ("net/mlx5: support yellow in meter policy validation")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Bing Zhao <bingz at nvidia.com>
> ---
> v2: remove unnecessary parenthesis
> ---
>   drivers/net/mlx5/mlx5_flow_dv.c | 18 ++++++++++++++----
>   1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
> index 609ab43fb6..94b70bd10a 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -17412,12 +17412,22 @@ static inline int
>   flow_dv_mtr_policy_rss_compare(const struct rte_flow_action_rss *r1,
>   			       const struct rte_flow_action_rss *r2)
>   {
> -	if (!r1 || !r2)
> +	if (r1 == NULL || r2 == NULL)
>   		return 0;
> -	if (r1->func != r2->func || r1->level != r2->level ||
> -	    r1->types != r2->types || r1->key_len != r2->key_len ||
> -	    memcmp(r1->key, r2->key, r1->key_len))
> +	if (!(r1->level <= 1 && r2->level <= 1) &&
> +	    !(r1->level > 1 && r2->level > 1))
>   		return 1;
> +	if (r1->types != r2->types &&
> +	    !((r1->types == 0 || r1->types == ETH_RSS_IP) &&
> +	      (r2->types == 0 || r2->types == ETH_RSS_IP)))

Need to use renamed macro: RTE_ETH_RSS_IP

Will update in the next-net.


More information about the dev mailing list