diff options
Diffstat (limited to 'drivers/infiniband/hw/mlx5')
| -rw-r--r-- | drivers/infiniband/hw/mlx5/mr.c | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c index 956f8e875daa..32ef67e9a6a7 100644 --- a/drivers/infiniband/hw/mlx5/mr.c +++ b/drivers/infiniband/hw/mlx5/mr.c @@ -574,8 +574,10 @@ static void __cache_work_func(struct mlx5_cache_ent *ent)  		spin_lock_irq(&ent->lock);  		if (ent->disabled)  			goto out; -		if (need_delay) +		if (need_delay) {  			queue_delayed_work(cache->wq, &ent->dwork, 300 * HZ); +			goto out; +		}  		remove_cache_mr_locked(ent);  		queue_adjust_cache_locked(ent);  	} @@ -625,6 +627,7 @@ static void mlx5_mr_cache_free(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr)  {  	struct mlx5_cache_ent *ent = mr->cache_ent; +	WRITE_ONCE(dev->cache.last_add, jiffies);  	spin_lock_irq(&ent->lock);  	list_add_tail(&mr->list, &ent->head);  	ent->available_mrs++; |