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

Regards,
Maayan Kashani

> -----Original Message-----
> From: Maayan Kashani <[email protected]>
> Sent: Monday, 12 January 2026 11:25
> To: [email protected]
> Cc: Maayan Kashani <[email protected]>; Raslan Darawsheh
> <[email protected]>; [email protected]; Dariusz Sosnowski
> <[email protected]>; Slava Ovsiienko <[email protected]>; Bing
> Zhao <[email protected]>; Ori Kam <[email protected]>; Suanming Mou
> <[email protected]>; Matan Azrad <[email protected]>
> 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: [email protected]
> 
> Signed-off-by: Maayan Kashani <[email protected]>
> ---
>  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

Reply via email to