Skip to content

Commit

Permalink
mlxsw: Convert existing consumers to use new API for parsing configur…
Browse files Browse the repository at this point in the history
…ation

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: Amit Cohen <amcohen@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Amit Cohen authored and David S. Miller committed Aug 22, 2021
1 parent 2d91f08 commit 0071e7c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
26 changes: 20 additions & 6 deletions drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -238,10 +238,14 @@ static int mlxsw_sp1_nve_vxlan_init(struct mlxsw_sp_nve *nve,
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
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)
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);
if (err)
goto err_config_set;
Expand All @@ -263,7 +267,9 @@ static int mlxsw_sp1_nve_vxlan_init(struct mlxsw_sp_nve *nve,
err_rtdp_set:
mlxsw_sp1_nve_vxlan_config_clear(mlxsw_sp);
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;
}

Expand All @@ -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,
config->ul_proto, &config->ul_sip);
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
Expand Down Expand Up @@ -412,10 +419,14 @@ static int mlxsw_sp2_nve_vxlan_init(struct mlxsw_sp_nve *nve,
struct mlxsw_sp *mlxsw_sp = nve->mlxsw_sp;
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)
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);
if (err)
goto err_config_set;
Expand All @@ -438,7 +449,9 @@ static int mlxsw_sp2_nve_vxlan_init(struct mlxsw_sp_nve *nve,
err_rtdp_set:
mlxsw_sp2_nve_vxlan_config_clear(mlxsw_sp);
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;
}

Expand All @@ -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,
config->ul_proto, &config->ul_sip);
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 = {
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
err = mlxsw_sp_nve_inc_parsing_depth_get(mlxsw_sp);
err = mlxsw_sp_parsing_depth_inc(mlxsw_sp);
if (err) {
netdev_err(mlxsw_sp_port->dev, "Failed to increase parsing depth");
return err;
}
}
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,
ing_types, egr_types);
Expand Down

0 comments on commit 0071e7c

Please sign in to comment.