net/mlx5: E-Switch, Change vhca id valid bool field to bit flag
authorEli Britstein <elibr@mellanox.com>
Mon, 10 Dec 2018 21:15:15 +0000 (13:15 -0800)
committerSaeed Mahameed <saeedm@mellanox.com>
Mon, 10 Dec 2018 22:00:08 +0000 (14:00 -0800)
Change the driver flow destination struct to use bit flags with the vhca
id valid being the 1st one. The flags field is more extendable and will
be used in downstream patch.

Signed-off-by: Eli Britstein <elibr@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Oz Shlomo <ozsh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
include/linux/mlx5/fs.h

index 9eac137790f5aa2222522344139395c5bc5aed11..4d7b65df32efcdb2a4eeff538f7a92405b2565c8 100644 (file)
@@ -125,8 +125,9 @@ mlx5_eswitch_add_offloaded_rule(struct mlx5_eswitch *esw,
                                dest[i].vport.num = attr->out_rep[j]->vport;
                                dest[i].vport.vhca_id =
                                        MLX5_CAP_GEN(attr->out_mdev[j], vhca_id);
-                               dest[i].vport.vhca_id_valid =
-                                       !!MLX5_CAP_ESW(esw->dev, merged_eswitch);
+                               if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+                                       dest[i].vport.flags |=
+                                               MLX5_FLOW_DEST_VPORT_VHCA_ID;
                                i++;
                        }
                }
@@ -220,7 +221,8 @@ mlx5_eswitch_add_fwd_rule(struct mlx5_eswitch *esw,
                dest[i].vport.num = attr->out_rep[i]->vport;
                dest[i].vport.vhca_id =
                        MLX5_CAP_GEN(attr->out_mdev[i], vhca_id);
-               dest[i].vport.vhca_id_valid = !!MLX5_CAP_ESW(esw->dev, merged_eswitch);
+               if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+                       dest[i].vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID;
        }
        dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
        dest[i].ft = fwd_fdb,
index 08a891f9aadea2af6abbd61a8ca328e43d4d8c1b..dda63dedaa49ecf0d0aebfda0eb79b668817a76f 100644 (file)
@@ -387,7 +387,8 @@ static int mlx5_cmd_set_fte(struct mlx5_core_dev *dev,
                                id = dst->dest_attr.vport.num;
                                MLX5_SET(dest_format_struct, in_dests,
                                         destination_eswitch_owner_vhca_id_valid,
-                                        dst->dest_attr.vport.vhca_id_valid);
+                                        !!(dst->dest_attr.vport.flags &
+                                           MLX5_FLOW_DEST_VPORT_VHCA_ID));
                                MLX5_SET(dest_format_struct, in_dests,
                                         destination_eswitch_owner_vhca_id,
                                         dst->dest_attr.vport.vhca_id);
index 5660f07d3be00082c58cb1df64ba8a273a675d3d..25ffd8018b7214875a13cc032456555e399a8d7f 100644 (file)
@@ -86,6 +86,10 @@ struct mlx5_flow_spec {
        u32  match_value[MLX5_ST_SZ_DW(fte_match_param)];
 };
 
+enum {
+       MLX5_FLOW_DEST_VPORT_VHCA_ID      = BIT(0),
+};
+
 struct mlx5_flow_destination {
        enum mlx5_flow_destination_type type;
        union {
@@ -96,7 +100,7 @@ struct mlx5_flow_destination {
                struct {
                        u16             num;
                        u16             vhca_id;
-                       bool            vhca_id_valid;
+                       u8              flags;
                } vport;
        };
 };