mirror of https://gitee.com/openkylin/linux.git
net/mlx5e: For TC offloads, always add new flow instead of appending the actions
When replacing a tc flower rule, flower first requests to add the new rule (new action), then deletes the old one. But currently when asked to add a new tc flower flow, we append the actions (and counters to it). This can result in a fte with two flow counters or conflicting actions (drop and encap action) which firmware complains/errs about and isn't achieving what the user aimed for. Instead, insert the flow using the new no-append flag which will add a new HW rule, the old flow and rule will be deleted later by flower Signed-off-by: Paul Blakey <paulb@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanmox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
d5634fee24
commit
42f7ad6760
|
@ -686,7 +686,7 @@ mlx5e_tc_add_nic_flow(struct mlx5e_priv *priv,
|
|||
.action = attr->action,
|
||||
.flow_tag = attr->flow_tag,
|
||||
.reformat_id = 0,
|
||||
.flags = FLOW_ACT_HAS_TAG,
|
||||
.flags = FLOW_ACT_HAS_TAG | FLOW_ACT_NO_APPEND,
|
||||
};
|
||||
struct mlx5_fc *counter = NULL;
|
||||
bool table_created = false;
|
||||
|
|
|
@ -80,8 +80,8 @@ mlx5_eswitch_add_offloaded_rule(struct mlx5_eswitch *esw,
|
|||
struct mlx5_esw_flow_attr *attr)
|
||||
{
|
||||
struct mlx5_flow_destination dest[MLX5_MAX_FLOW_FWD_VPORTS + 1] = {};
|
||||
struct mlx5_flow_act flow_act = { .flags = FLOW_ACT_NO_APPEND, };
|
||||
bool mirror = !!(attr->mirror_count);
|
||||
struct mlx5_flow_act flow_act = {0};
|
||||
struct mlx5_flow_handle *rule;
|
||||
struct mlx5_flow_table *fdb;
|
||||
int j, i = 0;
|
||||
|
@ -195,7 +195,7 @@ mlx5_eswitch_add_fwd_rule(struct mlx5_eswitch *esw,
|
|||
struct mlx5_esw_flow_attr *attr)
|
||||
{
|
||||
struct mlx5_flow_destination dest[MLX5_MAX_FLOW_FWD_VPORTS + 1] = {};
|
||||
struct mlx5_flow_act flow_act = {0};
|
||||
struct mlx5_flow_act flow_act = { .flags = FLOW_ACT_NO_APPEND, };
|
||||
struct mlx5_flow_table *fast_fdb;
|
||||
struct mlx5_flow_table *fwd_fdb;
|
||||
struct mlx5_flow_handle *rule;
|
||||
|
|
Loading…
Reference in New Issue