diff options
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 01d0efa9c5c7..9e494a446b7e 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | |||
@@ -1172,7 +1172,8 @@ static int mlxsw_sp_nexthop_mac_update(struct mlxsw_sp *mlxsw_sp, u32 adj_index, | |||
1172 | 1172 | ||
1173 | static int | 1173 | static int |
1174 | mlxsw_sp_nexthop_group_mac_update(struct mlxsw_sp *mlxsw_sp, | 1174 | mlxsw_sp_nexthop_group_mac_update(struct mlxsw_sp *mlxsw_sp, |
1175 | struct mlxsw_sp_nexthop_group *nh_grp) | 1175 | struct mlxsw_sp_nexthop_group *nh_grp, |
1176 | bool reallocate) | ||
1176 | { | 1177 | { |
1177 | u32 adj_index = nh_grp->adj_index; /* base */ | 1178 | u32 adj_index = nh_grp->adj_index; /* base */ |
1178 | struct mlxsw_sp_nexthop *nh; | 1179 | struct mlxsw_sp_nexthop *nh; |
@@ -1187,7 +1188,7 @@ mlxsw_sp_nexthop_group_mac_update(struct mlxsw_sp *mlxsw_sp, | |||
1187 | continue; | 1188 | continue; |
1188 | } | 1189 | } |
1189 | 1190 | ||
1190 | if (nh->update) { | 1191 | if (nh->update || reallocate) { |
1191 | err = mlxsw_sp_nexthop_mac_update(mlxsw_sp, | 1192 | err = mlxsw_sp_nexthop_mac_update(mlxsw_sp, |
1192 | adj_index, nh); | 1193 | adj_index, nh); |
1193 | if (err) | 1194 | if (err) |
@@ -1248,7 +1249,8 @@ mlxsw_sp_nexthop_group_refresh(struct mlxsw_sp *mlxsw_sp, | |||
1248 | /* Nothing was added or removed, so no need to reallocate. Just | 1249 | /* Nothing was added or removed, so no need to reallocate. Just |
1249 | * update MAC on existing adjacency indexes. | 1250 | * update MAC on existing adjacency indexes. |
1250 | */ | 1251 | */ |
1251 | err = mlxsw_sp_nexthop_group_mac_update(mlxsw_sp, nh_grp); | 1252 | err = mlxsw_sp_nexthop_group_mac_update(mlxsw_sp, nh_grp, |
1253 | false); | ||
1252 | if (err) { | 1254 | if (err) { |
1253 | dev_warn(mlxsw_sp->bus_info->dev, "Failed to update neigh MAC in adjacency table.\n"); | 1255 | dev_warn(mlxsw_sp->bus_info->dev, "Failed to update neigh MAC in adjacency table.\n"); |
1254 | goto set_trap; | 1256 | goto set_trap; |
@@ -1276,7 +1278,7 @@ mlxsw_sp_nexthop_group_refresh(struct mlxsw_sp *mlxsw_sp, | |||
1276 | nh_grp->adj_index_valid = 1; | 1278 | nh_grp->adj_index_valid = 1; |
1277 | nh_grp->adj_index = adj_index; | 1279 | nh_grp->adj_index = adj_index; |
1278 | nh_grp->ecmp_size = ecmp_size; | 1280 | nh_grp->ecmp_size = ecmp_size; |
1279 | err = mlxsw_sp_nexthop_group_mac_update(mlxsw_sp, nh_grp); | 1281 | err = mlxsw_sp_nexthop_group_mac_update(mlxsw_sp, nh_grp, true); |
1280 | if (err) { | 1282 | if (err) { |
1281 | dev_warn(mlxsw_sp->bus_info->dev, "Failed to update neigh MAC in adjacency table.\n"); | 1283 | dev_warn(mlxsw_sp->bus_info->dev, "Failed to update neigh MAC in adjacency table.\n"); |
1282 | goto set_trap; | 1284 | goto set_trap; |