]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5e: Fix trust state reset in reload
authorMoshe Tal <moshet@nvidia.com>
Wed, 9 Feb 2022 17:23:56 +0000 (19:23 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 4 May 2022 07:00:06 +0000 (00:00 -0700)
Setting dscp2prio during the driver reload can cause dcb ieee app list to
be not empty after the reload finish and as a result to a conflict between
the priority trust state reported by the app and the state in the device
register.

Reset the dcb ieee app list on initialization in case this is
conflicting with the register status.

Fixes: 830f5c61f42d ("net/mlx5e: Add dcbnl dscp to priority support")
Signed-off-by: Moshe Tal <moshet@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c

index d659fe07d46452b563fc0fdc2ac59821fb04e495..8ead2c82a52aaa41706fb26f3b3b8727d9db8d6a 100644 (file)
@@ -1200,6 +1200,16 @@ static int mlx5e_trust_initialize(struct mlx5e_priv *priv)
                return err;
        WRITE_ONCE(priv->dcbx_dp.trust_state, trust_state);
 
+       if (priv->dcbx_dp.trust_state == MLX5_QPTS_TRUST_PCP && priv->dcbx.dscp_app_cnt) {
+               /*
+                * Align the driver state with the register state.
+                * Temporary state change is required to enable the app list reset.
+                */
+               priv->dcbx_dp.trust_state = MLX5_QPTS_TRUST_DSCP;
+               mlx5e_dcbnl_delete_app(priv);
+               priv->dcbx_dp.trust_state = MLX5_QPTS_TRUST_PCP;
+       }
+
        mlx5e_params_calc_trust_tx_min_inline_mode(priv->mdev, &priv->channels.params,
                                                   priv->dcbx_dp.trust_state);