File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed
drivers/net/ethernet/mellanox/mlx5/core Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -769,6 +769,7 @@ static int mlx5e_rep_max_nch_limit(struct mlx5_core_dev *mdev)
769
769
770
770
static void mlx5e_build_rep_params (struct net_device * netdev )
771
771
{
772
+ const bool take_rtnl = netdev -> reg_state == NETREG_REGISTERED ;
772
773
struct mlx5e_priv * priv = netdev_priv (netdev );
773
774
struct mlx5e_rep_priv * rpriv = priv -> ppriv ;
774
775
struct mlx5_eswitch_rep * rep = rpriv -> rep ;
@@ -794,8 +795,15 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
794
795
/* RQ */
795
796
mlx5e_build_rq_params (mdev , params );
796
797
798
+ /* If netdev is already registered (e.g. move from nic profile to uplink,
799
+ * RTNL lock must be held before triggering netdev notifiers.
800
+ */
801
+ if (take_rtnl )
802
+ rtnl_lock ();
797
803
/* update XDP supported features */
798
804
mlx5e_set_xdp_feature (netdev );
805
+ if (take_rtnl )
806
+ rtnl_unlock ();
799
807
800
808
/* CQ moderation params */
801
809
params -> rx_dim_enabled = MLX5_CAP_GEN (mdev , cq_moderation );
You can’t perform that action at this time.
0 commit comments