OSDN Git Service

IB/mlx5: Simplify netdev unbinding
authorOr Gerlitz <ogerlitz@mellanox.com>
Tue, 11 Dec 2018 16:10:43 +0000 (18:10 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 20 Dec 2018 22:18:24 +0000 (15:18 -0700)
When dealing with netdev unregister events, we just need to know that this
is our currently bounded netdev. There's no need to do any further
checks/queries.

This patch doesn't change any functionality.

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/main.c

index 2a0526d..9b40ec7 100644 (file)
@@ -172,7 +172,6 @@ static int mlx5_netdev_event(struct notifier_block *this,
 
        switch (event) {
        case NETDEV_REGISTER:
-       case NETDEV_UNREGISTER:
                write_lock(&roce->netdev_lock);
                if (ibdev->rep) {
                        struct mlx5_eswitch *esw = ibdev->mdev->priv.eswitch;
@@ -181,15 +180,20 @@ static int mlx5_netdev_event(struct notifier_block *this,
                        rep_ndev = mlx5_ib_get_rep_netdev(esw,
                                                          ibdev->rep->vport);
                        if (rep_ndev == ndev)
-                               roce->netdev = (event == NETDEV_UNREGISTER) ?
-                                       NULL : ndev;
+                               roce->netdev = ndev;
                } else if (ndev->dev.parent == &mdev->pdev->dev) {
-                       roce->netdev = (event == NETDEV_UNREGISTER) ?
-                               NULL : ndev;
+                       roce->netdev = ndev;
                }
                write_unlock(&roce->netdev_lock);
                break;
 
+       case NETDEV_UNREGISTER:
+               write_lock(&roce->netdev_lock);
+               if (roce->netdev == ndev)
+                       roce->netdev = NULL;
+               write_unlock(&roce->netdev_lock);
+               break;
+
        case NETDEV_CHANGE:
        case NETDEV_UP:
        case NETDEV_DOWN: {