diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 8 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 2 |
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; |
