diff mbox series

[for-next,3/3] RDMA/bnxt_re: Remove unnecessary sched count

Message ID 1584102694-32544-4-git-send-email-selvin.xavier@broadcom.com (mailing list archive)
State Superseded
Headers show
Series RDMA/bnxt_re: Fixes for handling device references | expand

Commit Message

Selvin Xavier March 13, 2020, 12:31 p.m. UTC
Since the lifetime of bnxt_re_task is controlled by
the kref of device, sched_count is no longer required.
Remove it.

Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
---
 drivers/infiniband/hw/bnxt_re/bnxt_re.h | 1 -
 drivers/infiniband/hw/bnxt_re/main.c    | 7 -------
 2 files changed, 8 deletions(-)

Comments

Jason Gunthorpe March 13, 2020, 1:12 p.m. UTC | #1
On Fri, Mar 13, 2020 at 05:31:34AM -0700, Selvin Xavier wrote:
> Since the lifetime of bnxt_re_task is controlled by
> the kref of device, sched_count is no longer required.
> Remove it.
> 
> Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
>  drivers/infiniband/hw/bnxt_re/bnxt_re.h | 1 -
>  drivers/infiniband/hw/bnxt_re/main.c    | 7 -------
>  2 files changed, 8 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/bnxt_re/bnxt_re.h b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
> index c736e82..e35cc6c 100644
> +++ b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
> @@ -177,7 +177,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];
>  
> diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
> index 82062d8..4df0f8e 100644
> +++ b/drivers/infiniband/hw/bnxt_re/main.c
> @@ -1670,7 +1670,6 @@ static void bnxt_re_task(struct work_struct *work)
>  	}
>  	ib_device_put(&rdev->ibdev);
>  	smp_mb__before_atomic();
> -	atomic_dec(&rdev->sched_count);

All these smp_mb's need to be deleted too

Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/bnxt_re/bnxt_re.h b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
index c736e82..e35cc6c 100644
--- a/drivers/infiniband/hw/bnxt_re/bnxt_re.h
+++ b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
@@ -177,7 +177,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];
 
diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
index 82062d8..4df0f8e 100644
--- a/drivers/infiniband/hw/bnxt_re/main.c
+++ b/drivers/infiniband/hw/bnxt_re/main.c
@@ -1670,7 +1670,6 @@  static void bnxt_re_task(struct work_struct *work)
 	}
 	ib_device_put(&rdev->ibdev);
 	smp_mb__before_atomic();
-	atomic_dec(&rdev->sched_count);
 exit:
 	put_device(&rdev->ibdev.dev);
 	kfree(re_work);
@@ -1722,11 +1721,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;
 
@@ -1744,7 +1738,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);
 		}
 	}