Commit 61444b45 authored by Mark Bloch's avatar Mark Bloch Committed by Leon Romanovsky

net/mlx5: Break encap/decap into two separated flow table creation flags

Today we are able to attach encap and decap actions only to the FDB. In
preparation to enable those actions on the NIC flow tables, break the
single flag into two. Those flags control whatever a decap or encap
operations can be attached to the flow table created. For FDB, if
encapsulation is required, we set both of them.
Signed-off-by: default avatarMark Bloch <markb@mellanox.com>
Reviewed-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
parent c3c062f8
...@@ -529,7 +529,8 @@ static int esw_create_offloads_fast_fdb_table(struct mlx5_eswitch *esw) ...@@ -529,7 +529,8 @@ static int esw_create_offloads_fast_fdb_table(struct mlx5_eswitch *esw)
esw_size >>= 1; esw_size >>= 1;
if (esw->offloads.encap != DEVLINK_ESWITCH_ENCAP_MODE_NONE) if (esw->offloads.encap != DEVLINK_ESWITCH_ENCAP_MODE_NONE)
flags |= MLX5_FLOW_TABLE_TUNNEL_EN; flags |= (MLX5_FLOW_TABLE_TUNNEL_EN_ENCAP |
MLX5_FLOW_TABLE_TUNNEL_EN_DECAP);
fdb = mlx5_create_auto_grouped_flow_table(root_ns, FDB_FAST_PATH, fdb = mlx5_create_auto_grouped_flow_table(root_ns, FDB_FAST_PATH,
esw_size, esw_size,
......
...@@ -152,7 +152,8 @@ static int mlx5_cmd_create_flow_table(struct mlx5_core_dev *dev, ...@@ -152,7 +152,8 @@ static int mlx5_cmd_create_flow_table(struct mlx5_core_dev *dev,
struct mlx5_flow_table *next_ft, struct mlx5_flow_table *next_ft,
unsigned int *table_id, u32 flags) unsigned int *table_id, u32 flags)
{ {
int en_encap_decap = !!(flags & MLX5_FLOW_TABLE_TUNNEL_EN); int en_encap = !!(flags & MLX5_FLOW_TABLE_TUNNEL_EN_ENCAP);
int en_decap = !!(flags & MLX5_FLOW_TABLE_TUNNEL_EN_DECAP);
u32 out[MLX5_ST_SZ_DW(create_flow_table_out)] = {0}; u32 out[MLX5_ST_SZ_DW(create_flow_table_out)] = {0};
u32 in[MLX5_ST_SZ_DW(create_flow_table_in)] = {0}; u32 in[MLX5_ST_SZ_DW(create_flow_table_in)] = {0};
int err; int err;
...@@ -169,9 +170,9 @@ static int mlx5_cmd_create_flow_table(struct mlx5_core_dev *dev, ...@@ -169,9 +170,9 @@ static int mlx5_cmd_create_flow_table(struct mlx5_core_dev *dev,
} }
MLX5_SET(create_flow_table_in, in, flow_table_context.decap_en, MLX5_SET(create_flow_table_in, in, flow_table_context.decap_en,
en_encap_decap); en_decap);
MLX5_SET(create_flow_table_in, in, flow_table_context.encap_en, MLX5_SET(create_flow_table_in, in, flow_table_context.encap_en,
en_encap_decap); en_encap);
switch (op_mod) { switch (op_mod) {
case FS_FT_OP_MOD_NORMAL: case FS_FT_OP_MOD_NORMAL:
......
...@@ -45,7 +45,8 @@ enum { ...@@ -45,7 +45,8 @@ enum {
}; };
enum { enum {
MLX5_FLOW_TABLE_TUNNEL_EN = BIT(0), MLX5_FLOW_TABLE_TUNNEL_EN_ENCAP = BIT(0),
MLX5_FLOW_TABLE_TUNNEL_EN_DECAP = BIT(1),
}; };
#define LEFTOVERS_RULE_NUM 2 #define LEFTOVERS_RULE_NUM 2
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment