Commit 31108d14 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Saeed Mahameed

net/mlx5: Fix some error handling paths in 'mlx5e_tc_add_fdb_flow()'

All the error handling paths of 'mlx5e_tc_add_fdb_flow()' end to 'err_out'
where 'flow_flag_set(flow, FAILED);' is called.

All but the new error handling paths added by the commits given in the
Fixes tag below.

Fix these error handling paths and branch to 'err_out'.

Fixes: 166f431e ("net/mlx5e: Add indirect tc offload of ovs internal port")
Fixes: b16eb3c8 ("net/mlx5: Support internal port as decap route device")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent baf5c001
...@@ -1441,7 +1441,7 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv, ...@@ -1441,7 +1441,7 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
MLX5_FLOW_NAMESPACE_FDB, VPORT_TO_REG, MLX5_FLOW_NAMESPACE_FDB, VPORT_TO_REG,
metadata); metadata);
if (err) if (err)
return err; goto err_out;
} }
} }
...@@ -1457,13 +1457,15 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv, ...@@ -1457,13 +1457,15 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
if (attr->chain) { if (attr->chain) {
NL_SET_ERR_MSG_MOD(extack, NL_SET_ERR_MSG_MOD(extack,
"Internal port rule is only supported on chain 0"); "Internal port rule is only supported on chain 0");
return -EOPNOTSUPP; err = -EOPNOTSUPP;
goto err_out;
} }
if (attr->dest_chain) { if (attr->dest_chain) {
NL_SET_ERR_MSG_MOD(extack, NL_SET_ERR_MSG_MOD(extack,
"Internal port rule offload doesn't support goto action"); "Internal port rule offload doesn't support goto action");
return -EOPNOTSUPP; err = -EOPNOTSUPP;
goto err_out;
} }
int_port = mlx5e_tc_int_port_get(mlx5e_get_int_port_priv(priv), int_port = mlx5e_tc_int_port_get(mlx5e_get_int_port_priv(priv),
...@@ -1471,8 +1473,10 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv, ...@@ -1471,8 +1473,10 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
flow_flag_test(flow, EGRESS) ? flow_flag_test(flow, EGRESS) ?
MLX5E_TC_INT_PORT_EGRESS : MLX5E_TC_INT_PORT_EGRESS :
MLX5E_TC_INT_PORT_INGRESS); MLX5E_TC_INT_PORT_INGRESS);
if (IS_ERR(int_port)) if (IS_ERR(int_port)) {
return PTR_ERR(int_port); err = PTR_ERR(int_port);
goto err_out;
}
esw_attr->int_port = int_port; esw_attr->int_port = int_port;
} }
......
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