|
@@ -2608,19 +2608,19 @@ int mlx5e_configure_flower(struct mlx5e_priv *priv,
|
|
|
if (err != -EAGAIN)
|
|
|
flow->flags |= MLX5E_TC_FLOW_OFFLOADED;
|
|
|
|
|
|
+ if (!(flow->flags & MLX5E_TC_FLOW_ESWITCH) ||
|
|
|
+ !(flow->esw_attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP))
|
|
|
+ kvfree(parse_attr);
|
|
|
+
|
|
|
err = rhashtable_insert_fast(&tc->ht, &flow->node,
|
|
|
tc->ht_params);
|
|
|
- if (err)
|
|
|
- goto err_del_rule;
|
|
|
+ if (err) {
|
|
|
+ mlx5e_tc_del_flow(priv, flow);
|
|
|
+ kfree(flow);
|
|
|
+ }
|
|
|
|
|
|
- if (flow->flags & MLX5E_TC_FLOW_ESWITCH &&
|
|
|
- !(flow->esw_attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP))
|
|
|
- kvfree(parse_attr);
|
|
|
return err;
|
|
|
|
|
|
-err_del_rule:
|
|
|
- mlx5e_tc_del_flow(priv, flow);
|
|
|
-
|
|
|
err_free:
|
|
|
kvfree(parse_attr);
|
|
|
kfree(flow);
|