diff options
author | Saeed Mahameed <saeedm@mellanox.com> | 2016-12-28 07:58:42 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-12-28 14:36:53 -0500 |
commit | 37f304d10030bb425c19099e7b955d9c3ec4cba3 (patch) | |
tree | 9697826bbafa4b6c068fbe188b47986180b77b99 | |
parent | 610e89e05c3f28a7394935aa6b91f99548c4fd3c (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.c | 8 |
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); |