]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5e: Allow to match on MPLS parameters only for MPLS over UDP
authorAlaa Hleihel <alaa@nvidia.com>
Wed, 10 Mar 2021 15:01:46 +0000 (17:01 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Mon, 22 Mar 2021 20:16:40 +0000 (13:16 -0700)
Currently, we support hardware offload only for MPLS over UDP.
However, rules matching on MPLS parameters are now wrongly offloaded
for regular MPLS, without actually taking the parameters into
consideration when doing the offload.
Fix it by rejecting such unsupported rules.

Fixes: 72046a91d134 ("net/mlx5e: Allow to match on mpls parameters")
Signed-off-by: Alaa Hleihel <alaa@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c

index 0cacf46dc9502b6446be1defeb49ab184dbc3156..3359098c51d4e161116701fe96d10c9828275b28 100644 (file)
@@ -2296,6 +2296,16 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
                        *match_level = MLX5_MATCH_L4;
        }
 
+       /* Currenlty supported only for MPLS over UDP */
+       if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS) &&
+           !netif_is_bareudp(filter_dev)) {
+               NL_SET_ERR_MSG_MOD(extack,
+                                  "Matching on MPLS is supported only for MPLS over UDP");
+               netdev_err(priv->netdev,
+                          "Matching on MPLS is supported only for MPLS over UDP\n");
+               return -EOPNOTSUPP;
+       }
+
        return 0;
 }