|
@@ -3142,13 +3142,17 @@ static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)
|
|
if (!mlxsw_sp->ports)
|
|
if (!mlxsw_sp->ports)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
- mlxsw_sp->port_to_module = kcalloc(max_ports, sizeof(u8), GFP_KERNEL);
|
|
|
|
|
|
+ mlxsw_sp->port_to_module = kmalloc_array(max_ports, sizeof(int),
|
|
|
|
+ GFP_KERNEL);
|
|
if (!mlxsw_sp->port_to_module) {
|
|
if (!mlxsw_sp->port_to_module) {
|
|
err = -ENOMEM;
|
|
err = -ENOMEM;
|
|
goto err_port_to_module_alloc;
|
|
goto err_port_to_module_alloc;
|
|
}
|
|
}
|
|
|
|
|
|
for (i = 1; i < max_ports; i++) {
|
|
for (i = 1; i < max_ports; i++) {
|
|
|
|
+ /* Mark as invalid */
|
|
|
|
+ mlxsw_sp->port_to_module[i] = -1;
|
|
|
|
+
|
|
err = mlxsw_sp_port_module_info_get(mlxsw_sp, i, &module,
|
|
err = mlxsw_sp_port_module_info_get(mlxsw_sp, i, &module,
|
|
&width, &lane);
|
|
&width, &lane);
|
|
if (err)
|
|
if (err)
|
|
@@ -3216,6 +3220,8 @@ static void mlxsw_sp_port_unsplit_create(struct mlxsw_sp *mlxsw_sp,
|
|
|
|
|
|
for (i = 0; i < count; i++) {
|
|
for (i = 0; i < count; i++) {
|
|
local_port = base_port + i * 2;
|
|
local_port = base_port + i * 2;
|
|
|
|
+ if (mlxsw_sp->port_to_module[local_port] < 0)
|
|
|
|
+ continue;
|
|
module = mlxsw_sp->port_to_module[local_port];
|
|
module = mlxsw_sp->port_to_module[local_port];
|
|
|
|
|
|
mlxsw_sp_port_create(mlxsw_sp, local_port, false, module,
|
|
mlxsw_sp_port_create(mlxsw_sp, local_port, false, module,
|