net/mlx5: E-Switch, fix zero num_dest in prio_tag egress vlan rule
authorYael Chemla <ychemla@nvidia.com>
Fri, 17 Jul 2026 07:33:06 +0000 (10:33 +0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 23 Jul 2026 15:21:27 +0000 (08:21 -0700)
commitd12956d083eb70f2c6d72711aebaf8c2ce21e170
tree6989fee6e977c9a74c1306e04f5e383785c9d80a
parent11c057d23465c7a5817a7284c896d19d54c0b616
net/mlx5: E-Switch, fix zero num_dest in prio_tag egress vlan rule

esw_egress_acl_vlan_create() hardcodes num_dest=0 in its
mlx5_add_flow_rules() call. When invoked from the non-bond path
fwd_dest is NULL and num_dest=0 is correct. When invoked from
esw_acl_egress_ofld_rules_create() during a bond event, fwd_dest is
non-NULL and flow_act.action carries MLX5_FLOW_CONTEXT_ACTION_FWD_DEST,
but _mlx5_add_flow_rules() rejects a non-NULL dest pointer paired with
dest_num<=0 and returns -EINVAL. The error propagates as
"configure slave vport egress fwd, err(-22)". The passive vport's egress
ACL table ends up with its flow groups allocated but no FTEs, so
prio-tagged packets are not popped and bond failover is broken on
prio_tag_required devices.

Fix by passing fwd_dest ? 1 : 0 as num_dest to match the actual number
of destinations supplied.

Fixes: bf773dc0e6d5 ("net/mlx5: E-Switch, Introduce APIs to enable egress acl forward-to-vport rule")
Signed-off-by: Yael Chemla <ychemla@nvidia.com>
Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20260717073306.1242399-1-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/helper.c