aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIdo Schimmel <idosch@mellanox.com>2016-08-17 10:39:35 -0400
committerDavid S. Miller <davem@davemloft.net>2016-08-17 19:18:27 -0400
commit0583272d91f0f4e21f1eb666786286863185be7e (patch)
treebb9e50be5423c1126f9258c2e3d963d5308e8cc5
parent0e7df1a290abbcf3ecf697bbbbd4549c9a113db0 (diff)
mlxsw: spectrum: Add missing rollbacks in error path
While going over the code I noticed we are missing two rollbacks in the port's creation error path. Add them and adjust the place of one of them in the port's removal sequence so that both are symmetric. Fixes: 56ade8fe3fe1 ("mlxsw: spectrum: Add initial support for Spectrum ASIC") Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 8137daadb25b..1fe9fbdc9102 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -2206,6 +2206,7 @@ err_core_port_init:
2206 unregister_netdev(dev); 2206 unregister_netdev(dev);
2207err_register_netdev: 2207err_register_netdev:
2208 mlxsw_sp->ports[local_port] = NULL; 2208 mlxsw_sp->ports[local_port] = NULL;
2209 mlxsw_sp_port_switchdev_fini(mlxsw_sp_port);
2209 mlxsw_sp_port_pvid_vport_destroy(mlxsw_sp_port); 2210 mlxsw_sp_port_pvid_vport_destroy(mlxsw_sp_port);
2210err_port_pvid_vport_create: 2211err_port_pvid_vport_create:
2211 mlxsw_sp_port_dcb_fini(mlxsw_sp_port); 2212 mlxsw_sp_port_dcb_fini(mlxsw_sp_port);
@@ -2215,6 +2216,7 @@ err_port_buffers_init:
2215err_port_admin_status_set: 2216err_port_admin_status_set:
2216err_port_mtu_set: 2217err_port_mtu_set:
2217err_port_speed_by_width_set: 2218err_port_speed_by_width_set:
2219 mlxsw_sp_port_swid_set(mlxsw_sp_port, MLXSW_PORT_SWID_DISABLED_PORT);
2218err_port_swid_set: 2220err_port_swid_set:
2219err_port_system_port_mapping_set: 2221err_port_system_port_mapping_set:
2220err_dev_addr_init: 2222err_dev_addr_init:
@@ -2237,9 +2239,9 @@ static void mlxsw_sp_port_remove(struct mlxsw_sp *mlxsw_sp, u8 local_port)
2237 mlxsw_core_port_fini(&mlxsw_sp_port->core_port); 2239 mlxsw_core_port_fini(&mlxsw_sp_port->core_port);
2238 unregister_netdev(mlxsw_sp_port->dev); /* This calls ndo_stop */ 2240 unregister_netdev(mlxsw_sp_port->dev); /* This calls ndo_stop */
2239 mlxsw_sp->ports[local_port] = NULL; 2241 mlxsw_sp->ports[local_port] = NULL;
2242 mlxsw_sp_port_switchdev_fini(mlxsw_sp_port);
2240 mlxsw_sp_port_pvid_vport_destroy(mlxsw_sp_port); 2243 mlxsw_sp_port_pvid_vport_destroy(mlxsw_sp_port);
2241 mlxsw_sp_port_dcb_fini(mlxsw_sp_port); 2244 mlxsw_sp_port_dcb_fini(mlxsw_sp_port);
2242 mlxsw_sp_port_switchdev_fini(mlxsw_sp_port);
2243 mlxsw_sp_port_swid_set(mlxsw_sp_port, MLXSW_PORT_SWID_DISABLED_PORT); 2245 mlxsw_sp_port_swid_set(mlxsw_sp_port, MLXSW_PORT_SWID_DISABLED_PORT);
2244 mlxsw_sp_port_module_unmap(mlxsw_sp, mlxsw_sp_port->local_port); 2246 mlxsw_sp_port_module_unmap(mlxsw_sp, mlxsw_sp_port->local_port);
2245 free_percpu(mlxsw_sp_port->pcpu_stats); 2247 free_percpu(mlxsw_sp_port->pcpu_stats);