[PATCH 4/4] net/mlx5: fix redundant control rules in promiscuous mode

Maayan Kashani mkashani at nvidia.com
Sun Jan 18 12:40:18 CET 2026


Recheck-request: rebase=next-net-mlx, iol-compile-arm64-testing

Regards,
Maayan Kashani

> -----Original Message-----
> From: Maayan Kashani <mkashani at nvidia.com>
> Sent: Monday, 12 January 2026 11:25
> To: dev at dpdk.org
> Cc: Maayan Kashani <mkashani at nvidia.com>; Raslan Darawsheh
> <rasland at nvidia.com>; stable at dpdk.org; Dariusz Sosnowski
> <dsosnowski at nvidia.com>; Slava Ovsiienko <viacheslavo at nvidia.com>; Bing
> Zhao <bingz at nvidia.com>; Ori Kam <orika at nvidia.com>; Suanming Mou
> <suanmingm at nvidia.com>; Matan Azrad <matan at nvidia.com>
> Subject: [PATCH 4/4] net/mlx5: fix redundant control rules in promiscuous
> mode
> 
> When promiscuous mode is enabled, the device receives all traffic regardless
> of destination MAC address. Previously, the code was setting both the
> promiscuous flag AND the DMAC/multicast control flow rules, which is
> redundant.
> 
> This patch makes the DMAC and multicast/broadcast control flow rules
> conditional on NOT being in promiscuous mode. When promiscuous mode is
> enabled, only the MLX5_CTRL_PROMISCUOUS flag is set.
> 
> Fixes: 9fa7c1cddb85 ("net/mlx5: create control flow rules with HWS")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Maayan Kashani <mkashani at nvidia.com>
> ---
>  drivers/net/mlx5/mlx5_trigger.c | 16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_trigger.c
> b/drivers/net/mlx5/mlx5_trigger.c index 028844e45d6..b38ba9022ea 100644
> --- a/drivers/net/mlx5/mlx5_trigger.c
> +++ b/drivers/net/mlx5/mlx5_trigger.c
> @@ -1682,13 +1682,17 @@ mlx5_traffic_enable_hws(struct rte_eth_dev
> *dev)
>  			dev->data->port_id, -ret);
>  		goto error;
>  	}
> -	if (dev->data->promiscuous)
> +	if (dev->data->promiscuous) {
>  		flags |= MLX5_CTRL_PROMISCUOUS;
> -	if (dev->data->all_multicast)
> -		flags |= MLX5_CTRL_ALL_MULTICAST;
> -	else
> -		flags |= MLX5_CTRL_BROADCAST |
> MLX5_CTRL_IPV4_MULTICAST | MLX5_CTRL_IPV6_MULTICAST;
> -	flags |= MLX5_CTRL_DMAC;
> +	} else {
> +		if (dev->data->all_multicast)
> +			flags |= MLX5_CTRL_ALL_MULTICAST;
> +		else
> +			flags |= (MLX5_CTRL_BROADCAST |
> +				  MLX5_CTRL_IPV4_MULTICAST |
> +				  MLX5_CTRL_IPV6_MULTICAST);
> +		flags |= MLX5_CTRL_DMAC;
> +	}
>  	if (priv->vlan_filter_n)
>  		flags |= MLX5_CTRL_VLAN_FILTER;
>  	return mlx5_flow_hw_ctrl_flows(dev, flags);
> --
> 2.21.0



More information about the stable mailing list