aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.c8
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.h2
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 2d46ec84ebdf..2d0897b7d860 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -3142,13 +3142,17 @@ static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)
3142 if (!mlxsw_sp->ports) 3142 if (!mlxsw_sp->ports)
3143 return -ENOMEM; 3143 return -ENOMEM;
3144 3144
3145 mlxsw_sp->port_to_module = kcalloc(max_ports, sizeof(u8), GFP_KERNEL); 3145 mlxsw_sp->port_to_module = kmalloc_array(max_ports, sizeof(int),
3146 GFP_KERNEL);
3146 if (!mlxsw_sp->port_to_module) { 3147 if (!mlxsw_sp->port_to_module) {
3147 err = -ENOMEM; 3148 err = -ENOMEM;
3148 goto err_port_to_module_alloc; 3149 goto err_port_to_module_alloc;
3149 } 3150 }
3150 3151
3151 for (i = 1; i < max_ports; i++) { 3152 for (i = 1; i < max_ports; i++) {
3153 /* Mark as invalid */
3154 mlxsw_sp->port_to_module[i] = -1;
3155
3152 err = mlxsw_sp_port_module_info_get(mlxsw_sp, i, &module, 3156 err = mlxsw_sp_port_module_info_get(mlxsw_sp, i, &module,
3153 &width, &lane); 3157 &width, &lane);
3154 if (err) 3158 if (err)
@@ -3216,6 +3220,8 @@ static void mlxsw_sp_port_unsplit_create(struct mlxsw_sp *mlxsw_sp,
3216 3220
3217 for (i = 0; i < count; i++) { 3221 for (i = 0; i < count; i++) {
3218 local_port = base_port + i * 2; 3222 local_port = base_port + i * 2;
3223 if (mlxsw_sp->port_to_module[local_port] < 0)
3224 continue;
3219 module = mlxsw_sp->port_to_module[local_port]; 3225 module = mlxsw_sp->port_to_module[local_port];
3220 3226
3221 mlxsw_sp_port_create(mlxsw_sp, local_port, false, module, 3227 mlxsw_sp_port_create(mlxsw_sp, local_port, false, module,
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
index 58cf222fb985..432ab9b12b7f 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
@@ -152,7 +152,7 @@ struct mlxsw_sp {
152 const struct mlxsw_bus_info *bus_info; 152 const struct mlxsw_bus_info *bus_info;
153 unsigned char base_mac[ETH_ALEN]; 153 unsigned char base_mac[ETH_ALEN];
154 struct mlxsw_sp_upper *lags; 154 struct mlxsw_sp_upper *lags;
155 u8 *port_to_module; 155 int *port_to_module;
156 struct mlxsw_sp_sb *sb; 156 struct mlxsw_sp_sb *sb;
157 struct mlxsw_sp_bridge *bridge; 157 struct mlxsw_sp_bridge *bridge;
158 struct mlxsw_sp_router *router; 158 struct mlxsw_sp_router *router;