[PATCH net-next 09/15] net/mlx5: LAG, drop MLX5_MAX_PORTS scratch array from device rescan
From: Tariq Toukan
Date: Tue Nov 03 2026 - 12:39:18 EST
From: Shay Drory <shayd@xxxxxxxxxx>
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 <shayd@xxxxxxxxxx>
Reviewed-by: Moshe Shemesh <moshe@xxxxxxxxxx>
Reviewed-by: Mark Bloch <mbloch@xxxxxxxxxx>
Signed-off-by: Tariq Toukan <tariqt@xxxxxxxxxx>
---
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