aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaeed Mahameed <saeedm@mellanox.com>2016-12-28 07:58:42 -0500
committerDavid S. Miller <davem@davemloft.net>2016-12-28 14:36:53 -0500
commit37f304d10030bb425c19099e7b955d9c3ec4cba3 (patch)
tree9697826bbafa4b6c068fbe188b47986180b77b99
parent610e89e05c3f28a7394935aa6b91f99548c4fd3c (diff)
net/mlx5e: Disable netdev after close
Disable netdev should come after it was closed, although no harm of doing it before -hence the MLX5E_STATE_DESTROYING bit- but it is more natural this way. Fixes: 26e59d8077a3 ("net/mlx5e: Implement mlx5e interface attach/detach callbacks") Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reviewed-by: Mohamad Haj Yahia <mohamad@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_main.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index cf270f6c90e8..1236b27b1493 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -3947,10 +3947,6 @@ void mlx5e_detach_netdev(struct mlx5_core_dev *mdev, struct net_device *netdev)
3947 const struct mlx5e_profile *profile = priv->profile; 3947 const struct mlx5e_profile *profile = priv->profile;
3948 3948
3949 set_bit(MLX5E_STATE_DESTROYING, &priv->state); 3949 set_bit(MLX5E_STATE_DESTROYING, &priv->state);
3950 if (profile->disable)
3951 profile->disable(priv);
3952
3953 flush_workqueue(priv->wq);
3954 3950
3955 rtnl_lock(); 3951 rtnl_lock();
3956 if (netif_running(netdev)) 3952 if (netif_running(netdev))
@@ -3958,6 +3954,10 @@ void mlx5e_detach_netdev(struct mlx5_core_dev *mdev, struct net_device *netdev)
3958 netif_device_detach(netdev); 3954 netif_device_detach(netdev);
3959 rtnl_unlock(); 3955 rtnl_unlock();
3960 3956
3957 if (profile->disable)
3958 profile->disable(priv);
3959 flush_workqueue(priv->wq);
3960
3961 mlx5e_destroy_q_counter(priv); 3961 mlx5e_destroy_q_counter(priv);
3962 profile->cleanup_rx(priv); 3962 profile->cleanup_rx(priv);
3963 mlx5e_close_drop_rq(priv); 3963 mlx5e_close_drop_rq(priv);