net/mlx5: E-Switch, Add support for offloading rules with no in_port
authorPaul Blakey <paulb@mellanox.com>
Thu, 12 Mar 2020 10:23:11 +0000 (12:23 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Mar 2020 22:00:39 +0000 (15:00 -0700)
FTEs in global tables may match on packets from multiple in_ports.
Provide the capability to omit the in_port match condition.

Signed-off-by: Paul Blakey <paulb@mellanox.com>
Reviewed-by: Oz Shlomo <ozsh@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

index dae0f3e..6254bb6 100644 (file)
@@ -391,6 +391,7 @@ enum {
 enum {
        MLX5_ESW_ATTR_FLAG_VLAN_HANDLED  = BIT(0),
        MLX5_ESW_ATTR_FLAG_SLOW_PATH     = BIT(1),
+       MLX5_ESW_ATTR_FLAG_NO_IN_PORT    = BIT(2),
 };
 
 struct mlx5_esw_flow_attr {
index 0c4bf69..c36185e 100644 (file)
@@ -388,7 +388,9 @@ mlx5_eswitch_add_offloaded_rule(struct mlx5_eswitch *esw,
                                                        attr->prio, 0);
                else
                        fdb = attr->fdb;
-               mlx5_eswitch_set_rule_source_port(esw, spec, attr);
+
+               if (!(attr->flags & MLX5_ESW_ATTR_FLAG_NO_IN_PORT))
+                       mlx5_eswitch_set_rule_source_port(esw, spec, attr);
        }
        if (IS_ERR(fdb)) {
                rule = ERR_CAST(fdb);