From: Shay Drory mlx5_lag_rescan_devices_locked_filter() collected the participating LAG members into a fixed-size devs[MLX5_MAX_PORTS] array only to iterate over it a second time for the rescan calls. Drop the scratch array and re-walk the members directly with mlx5_lag_for_each(). This removes another dependency on the compile-time MLX5_MAX_PORTS bound with no functional change. Signed-off-by: Shay Drory Reviewed-by: Moshe Shemesh Reviewed-by: Mark Bloch Signed-off-by: Tariq Toukan --- drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c index b873eb91fd0d..9bc4a929cef3 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c @@ -1341,9 +1341,7 @@ void mlx5_lag_rescan_dev_locked(struct mlx5_lag *ldev, static void mlx5_lag_rescan_devices_locked_filter(struct mlx5_lag *ldev, bool enable, u32 filter) { - struct mlx5_core_dev *devs[MLX5_MAX_PORTS]; struct lag_fn *fn; - int num_devs = 0; int i; mlx5_lag_assert_locked_transition(ldev, filter); @@ -1357,12 +1355,16 @@ static void mlx5_lag_rescan_devices_locked_filter(struct mlx5_lag *ldev, fn->dev->priv.flags &= ~MLX5_PRIV_FLAGS_DISABLE_IB_ADEV; else fn->dev->priv.flags |= MLX5_PRIV_FLAGS_DISABLE_IB_ADEV; - devs[num_devs++] = fn->dev; } mlx5_lag_drop_lock_for_reps(ldev, filter); - for (i = 0; i < num_devs; i++) - mlx5_rescan_drivers_locked(devs[i]); + mlx5_lag_for_each(i, 0, ldev, filter) { + fn = mlx5_lag_fn(ldev, i); + if (fn->dev->priv.flags & MLX5_PRIV_FLAGS_DISABLE_ALL_ADEV) + continue; + + mlx5_rescan_drivers_locked(fn->dev); + } mlx5_lag_retake_lock_after_reps(ldev); } -- 2.44.0