FAILED: patch "[PATCH] net/mlx5e: Use preactivate hook to set the indirection table" failed to apply to 5.6-stable tree
[email protected]
maintainerThe patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From fe867cac9e1967c553e4ac2aece5fc8675258010 Mon Sep 17 00:00:00 2001
From: Maxim Mikityanskiy <[email protected]>
Date: Mon, 4 Nov 2019 12:02:14 +0200
Subject: [PATCH] net/mlx5e: Use preactivate hook to set the indirection table
mlx5e_ethtool_set_channels updates the indirection table before switching to the new channels. If the switch fails, the indirection table is new, but the channels are old, which is wrong. Fix it by using the preactivate hook of mlx5e_safe_switch_channels to update the indirection table at the stage when nothing can fail anymore.
As the code that updates the indirection table is now encapsulated into a new function, use that function in the attach flow when the driver has to reduce the number of channels, and prepare the code for the next commit.
drivers/net/ethernet/mellanox/mlx5/core/en.h +1 -0
@@ -1043,6 +1043,7 @@ int mlx5e_safe_reopen_channels(struct mlx5e_priv *priv);int mlx5e_safe_switch_channels (struct mlx5e_priv *priv,struct mlx5e_channels *new_chs,mlx5e_fp_preactivate preactivate); +int mlx5e_num_channels_changed (struct mlx5e_priv *priv);void mlx5e_activate_priv_channels (struct mlx5e_priv *priv);void mlx5e_deactivate_priv_channels (struct mlx5e_priv *priv);
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +2 -8
@@ -432,9 +432,7 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,if (!test_bit (MLX5E_STATE_OPENED , &priv->state)) { *cur_params = new_channels.params; -if (!netif_is_rxfh_configured (priv->netdev)) -mlx5e_build_default_indir_rqt (priv->rss_params.indirection_rqt, -MLX5E_INDIR_RQT_SIZE , count); +mlx5e_num_channels_changed (priv); goto out; }
@@ -442,12 +440,8 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,if (arfs_enabled)mlx5e_arfs_disable (priv); -if (!netif_is_rxfh_configured (priv->netdev)) -mlx5e_build_default_indir_rqt (priv->rss_params.indirection_rqt, -MLX5E_INDIR_RQT_SIZE , count); -/* Switch to new channels, set new parameters and close old ones */ - err =mlx5e_safe_switch_channels (priv, &new_channels,NULL ); + err =mlx5e_safe_switch_channels (priv, &new_channels, mlx5e_num_channels_changed);if (arfs_enabled) {int err2 =mlx5e_arfs_enable (priv);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +14 -2
@@ -2880,6 +2880,17 @@ static void mlx5e_update_netdev_queues(struct mlx5e_priv *priv)netif_set_real_num_rx_queues (netdev, num_rxqs); } +int mlx5e_num_channels_changed (struct mlx5e_priv *priv) +{ +u16 count = priv->channels.params.num_channels; + +if (!netif_is_rxfh_configured (priv->netdev)) +mlx5e_build_default_indir_rqt (priv->rss_params.indirection_rqt, +MLX5E_INDIR_RQT_SIZE , count); + +return 0 ; +} +static void mlx5e_build_txq_maps (struct mlx5e_priv *priv) {int i, ch;
@@ -5288,9 +5299,10 @@ int mlx5e_attach_netdev(struct mlx5e_priv *priv) max_nch =mlx5e_get_max_num_channels (priv->mdev);if (priv->channels.params.num_channels > max_nch) {mlx5_core_warn (priv->mdev,"MLX5E: Reducing number of channels to %d\n" , max_nch); +/* Reducing the number of channels - RXFH has to be reset. */ + priv->netdev->priv_flags &= ~IFF_RXFH_CONFIGURED ; priv->channels.params.num_channels = max_nch; -mlx5e_build_default_indir_rqt (priv->rss_params.indirection_rqt, -MLX5E_INDIR_RQT_SIZE , max_nch); +mlx5e_num_channels_changed (priv); } err = profile->init_tx (priv);
Sasha Levin
maintainerQuoted 28 lines · On Sat, Apr 18, 2020 at 12:12:10PM +0200, [email protected] wrote:
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
fe867cac9e1967c553e4ac2aece5fc8675258010Mon Sep 17 00:00:00 2001
From: Maxim Mikityanskiy <[email protected]>
Date: Mon, 4 Nov 2019 12:02:14 +0200
Subject: [PATCH] net/mlx5e: Use preactivate hook to set the indirection table
mlx5e_ethtool_set_channelsupdates the indirection table before switching to the new channels. If the switch fails, the indirection table is new, but the channels are old, which is wrong. Fix it by using the preactivate hook ofmlx5e_safe_switch_channelsto update the indirection table at the stage when nothing can fail anymore.As the code that updates the indirection table is now encapsulated into a new function, use that function in the attach flow when the driver has to reduce the number of channels, and prepare the code for the next commit.
Quoted 4 lines
Fixes 85082dba0a ("net/mlx5e: Correctly handle RSS indirection table when changing number of channels")Signed-off-by Maxim Mikityanskiy <[email protected]>Reviewed-by Tariq Toukan <[email protected]>Signed-off-by Saeed Mahameed <[email protected]>
I've grabbed these two dependencies for 5.6, 5.5, 5.4:
dca147b3dce5 ("net/mlx5e: Rename hw_modify to preactivate") c2c95271f9f3 ("net/mlx5e: Encapsulate updating netdev queues into a function")
Older branches were more complex and still need a backport.
Signature · 2 lines
Thanks, Sasha