mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-05 07:08:06 -04:00
net/mlx5e: Defer channels closure to reduce interface down time
Cap bit tis_tir_td_order=1 indicates that an old firmware requirement / limitation no longer exists. When unset, the latency of several firmware commands significantly increases with the presence of high number of co-existing channels (both old and new sets). Hence, we used to close unneeded old channels before invoking those firmware commands. Today, on capable devices, this is no longer the case. Minimize the interface down time by deferring the old channels closure, after the activation of the new ones. Perf numbers: Measured the number of dropped packets in a simple ping flood test, during a configuration change operation, that switches the number of channels from 247 to 248. Before: 71 packets lost After: 15 packets lost, ~80% saving. Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Carolina Jubran <cjubran@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/1761831159-1013140-8-git-send-email-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
911e3a37b0
commit
3b88a535a8
@@ -3383,7 +3383,8 @@ static int mlx5e_switch_priv_channels(struct mlx5e_priv *priv,
|
||||
}
|
||||
}
|
||||
|
||||
mlx5e_close_channels(old_chs);
|
||||
if (!MLX5_CAP_GEN(priv->mdev, tis_tir_td_order))
|
||||
mlx5e_close_channels(old_chs);
|
||||
priv->profile->update_rx(priv);
|
||||
|
||||
mlx5e_selq_apply(&priv->selq);
|
||||
@@ -3431,6 +3432,9 @@ int mlx5e_safe_switch_params(struct mlx5e_priv *priv,
|
||||
if (err)
|
||||
goto err_close;
|
||||
|
||||
if (MLX5_CAP_GEN(priv->mdev, tis_tir_td_order))
|
||||
mlx5e_close_channels(old_chs);
|
||||
|
||||
kfree(new_chs);
|
||||
kfree(old_chs);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user