RDMA/bnxt_re: Remove unnecessary sched count
authorSelvin Xavier <selvin.xavier@broadcom.com>
Fri, 13 Mar 2020 16:33:27 +0000 (09:33 -0700)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 17 Mar 2020 23:15:03 +0000 (20:15 -0300)
Since the lifetime of bnxt_re_task is controlled by the kref of device,
sched_count is no longer required.  Remove it.

Link: https://lore.kernel.org/r/1584117207-2664-4-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/bnxt_re/bnxt_re.h
drivers/infiniband/hw/bnxt_re/main.c

index 407141e..a300588 100644 (file)
@@ -176,7 +176,6 @@ struct bnxt_re_dev {
        atomic_t                        srq_count;
        atomic_t                        mr_count;
        atomic_t                        mw_count;
-       atomic_t                        sched_count;
        /* Max of 2 lossless traffic class supported per port */
        u16                             cosq[2];
 
index c494e11..4a8fb1a 100644 (file)
@@ -1667,8 +1667,6 @@ static void bnxt_re_task(struct work_struct *work)
                break;
        }
        ib_device_put(&rdev->ibdev);
-       smp_mb__before_atomic();
-       atomic_dec(&rdev->sched_count);
 exit:
        put_device(&rdev->ibdev.dev);
        kfree(re_work);
@@ -1720,11 +1718,6 @@ static int bnxt_re_netdev_event(struct notifier_block *notifier,
                break;
 
        case NETDEV_UNREGISTER:
-               /* netdev notifier will call NETDEV_UNREGISTER again later since
-                * we are still holding the reference to the netdev
-                */
-               if (atomic_read(&rdev->sched_count) > 0)
-                       goto exit;
                ib_unregister_device_queued(&rdev->ibdev);
                break;
 
@@ -1742,7 +1735,6 @@ static int bnxt_re_netdev_event(struct notifier_block *notifier,
                        re_work->vlan_dev = (real_dev == netdev ?
                                             NULL : netdev);
                        INIT_WORK(&re_work->work, bnxt_re_task);
-                       atomic_inc(&rdev->sched_count);
                        queue_work(bnxt_re_wq, &re_work->work);
                }
        }