Commit 0071e7cd authored by Amit Cohen's avatar Amit Cohen Committed by David S. Miller

mlxsw: Convert existing consumers to use new API for parsing configuration

Convert VxLAN and PTP modules to increase parsing depth using new API
that was added in the previous patch.

Separate MPRS register's configuration to VxLAN related configuration
and parsing depth configuration. Handle each one using the appropriate
API.
Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2d91f080
...@@ -238,10 +238,14 @@ static int mlxsw_sp1_nve_vxlan_init(struct mlxsw_sp_nve *nve, ...@@ -238,10 +238,14 @@ static int mlxsw_sp1_nve_vxlan_init(struct mlxsw_sp_nve *nve,
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp; struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
int err; int err;
err = __mlxsw_sp_nve_inc_parsing_depth_get(mlxsw_sp, config->udp_dport); err = mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, config->udp_dport);
if (err) if (err)
return err; return err;
err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
if (err)
goto err_parsing_depth_inc;
err = mlxsw_sp1_nve_vxlan_config_set(mlxsw_sp, config); err = mlxsw_sp1_nve_vxlan_config_set(mlxsw_sp, config);
if (err) if (err)
goto err_config_set; goto err_config_set;
...@@ -263,7 +267,9 @@ static int mlxsw_sp1_nve_vxlan_init(struct mlxsw_sp_nve *nve, ...@@ -263,7 +267,9 @@ static int mlxsw_sp1_nve_vxlan_init(struct mlxsw_sp_nve *nve,
err_rtdp_set: err_rtdp_set:
mlxsw_sp1_nve_vxlan_config_clear(mlxsw_sp); mlxsw_sp1_nve_vxlan_config_clear(mlxsw_sp);
err_config_set: err_config_set:
__mlxsw_sp_nve_inc_parsing_depth_put(mlxsw_sp, 0); mlxsw_sp_parsing_depth_dec(mlxsw_sp);
err_parsing_depth_inc:
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
return err; return err;
} }
...@@ -275,7 +281,8 @@ static void mlxsw_sp1_nve_vxlan_fini(struct mlxsw_sp_nve *nve) ...@@ -275,7 +281,8 @@ static void mlxsw_sp1_nve_vxlan_fini(struct mlxsw_sp_nve *nve)
mlxsw_sp_router_nve_demote_decap(mlxsw_sp, config->ul_tb_id, mlxsw_sp_router_nve_demote_decap(mlxsw_sp, config->ul_tb_id,
config->ul_proto, &config->ul_sip); config->ul_proto, &config->ul_sip);
mlxsw_sp1_nve_vxlan_config_clear(mlxsw_sp); mlxsw_sp1_nve_vxlan_config_clear(mlxsw_sp);
__mlxsw_sp_nve_inc_parsing_depth_put(mlxsw_sp, 0); mlxsw_sp_parsing_depth_dec(mlxsw_sp);
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
} }
static int static int
...@@ -412,10 +419,14 @@ static int mlxsw_sp2_nve_vxlan_init(struct mlxsw_sp_nve *nve, ...@@ -412,10 +419,14 @@ static int mlxsw_sp2_nve_vxlan_init(struct mlxsw_sp_nve *nve,
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp; struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
int err; int err;
err = __mlxsw_sp_nve_inc_parsing_depth_get(mlxsw_sp, config->udp_dport); err = mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, config->udp_dport);
if (err) if (err)
return err; return err;
err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
if (err)
goto err_parsing_depth_inc;
err = mlxsw_sp2_nve_vxlan_config_set(mlxsw_sp, config); err = mlxsw_sp2_nve_vxlan_config_set(mlxsw_sp, config);
if (err) if (err)
goto err_config_set; goto err_config_set;
...@@ -438,7 +449,9 @@ static int mlxsw_sp2_nve_vxlan_init(struct mlxsw_sp_nve *nve, ...@@ -438,7 +449,9 @@ static int mlxsw_sp2_nve_vxlan_init(struct mlxsw_sp_nve *nve,
err_rtdp_set: err_rtdp_set:
mlxsw_sp2_nve_vxlan_config_clear(mlxsw_sp); mlxsw_sp2_nve_vxlan_config_clear(mlxsw_sp);
err_config_set: err_config_set:
__mlxsw_sp_nve_inc_parsing_depth_put(mlxsw_sp, 0); mlxsw_sp_parsing_depth_dec(mlxsw_sp);
err_parsing_depth_inc:
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
return err; return err;
} }
...@@ -450,7 +463,8 @@ static void mlxsw_sp2_nve_vxlan_fini(struct mlxsw_sp_nve *nve) ...@@ -450,7 +463,8 @@ static void mlxsw_sp2_nve_vxlan_fini(struct mlxsw_sp_nve *nve)
mlxsw_sp_router_nve_demote_decap(mlxsw_sp, config->ul_tb_id, mlxsw_sp_router_nve_demote_decap(mlxsw_sp, config->ul_tb_id,
config->ul_proto, &config->ul_sip); config->ul_proto, &config->ul_sip);
mlxsw_sp2_nve_vxlan_config_clear(mlxsw_sp); mlxsw_sp2_nve_vxlan_config_clear(mlxsw_sp);
__mlxsw_sp_nve_inc_parsing_depth_put(mlxsw_sp, 0); mlxsw_sp_parsing_depth_dec(mlxsw_sp);
mlxsw_sp_parsing_vxlan_udp_dport_set(mlxsw_sp, 0);
} }
const struct mlxsw_sp_nve_ops mlxsw_sp2_nve_vxlan_ops = { const struct mlxsw_sp_nve_ops mlxsw_sp2_nve_vxlan_ops = {
......
...@@ -975,14 +975,14 @@ static int mlxsw_sp1_ptp_mtpppc_update(struct mlxsw_sp_port *mlxsw_sp_port, ...@@ -975,14 +975,14 @@ static int mlxsw_sp1_ptp_mtpppc_update(struct mlxsw_sp_port *mlxsw_sp_port,
} }
if ((ing_types || egr_types) && !(orig_ing_types || orig_egr_types)) { if ((ing_types || egr_types) && !(orig_ing_types || orig_egr_types)) {
err = mlxsw_sp_nve_inc_parsing_depth_get(mlxsw_sp); err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
if (err) { if (err) {
netdev_err(mlxsw_sp_port->dev, "Failed to increase parsing depth"); netdev_err(mlxsw_sp_port->dev, "Failed to increase parsing depth");
return err; return err;
} }
} }
if (!(ing_types || egr_types) && (orig_ing_types || orig_egr_types)) if (!(ing_types || egr_types) && (orig_ing_types || orig_egr_types))
mlxsw_sp_nve_inc_parsing_depth_put(mlxsw_sp); mlxsw_sp_parsing_depth_dec(mlxsw_sp);
return mlxsw_sp1_ptp_mtpppc_set(mlxsw_sp_port->mlxsw_sp, return mlxsw_sp1_ptp_mtpppc_set(mlxsw_sp_port->mlxsw_sp,
ing_types, egr_types); ing_types, egr_types);
......
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