diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index d157d1b9cad6..b7c1c91d7abd 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -1942,23 +1942,25 @@ static int mlx5e_flower_parse_meta(struct net_device *filter_dev, return 0; flow_rule_match_meta(rule, &match); - if (match.mask->ingress_ifindex != 0xFFFFFFFF) { - NL_SET_ERR_MSG_MOD(extack, "Unsupported ingress ifindex mask"); - return -EOPNOTSUPP; - } + if (match.mask->ingress_ifindex) { + if (match.mask->ingress_ifindex != 0xFFFFFFFF) { + NL_SET_ERR_MSG_MOD(extack, "Unsupported ingress ifindex mask"); + return -EOPNOTSUPP; + } - ingress_dev = __dev_get_by_index(dev_net(filter_dev), - match.key->ingress_ifindex); - if (!ingress_dev) { - NL_SET_ERR_MSG_MOD(extack, - "Can't find the ingress port to match on"); - return -ENOENT; - } + ingress_dev = __dev_get_by_index(dev_net(filter_dev), + match.key->ingress_ifindex); + if (!ingress_dev) { + NL_SET_ERR_MSG_MOD(extack, + "Can't find the ingress port to match on"); + return -ENOENT; + } - if (ingress_dev != filter_dev) { - NL_SET_ERR_MSG_MOD(extack, - "Can't match on the ingress filter port"); - return -EOPNOTSUPP; + if (ingress_dev != filter_dev) { + NL_SET_ERR_MSG_MOD(extack, + "Can't match on the ingress filter port"); + return -EOPNOTSUPP; + } } return 0;