Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4997870a authored by Dennis Dalessandro's avatar Dennis Dalessandro Committed by Doug Ledford
Browse files

IB/rdmavt: Macroize override checks during driver registration



Add a macro to cut down on writing the same lines over and over again for
what will be a large number of functions that will be supported.

Reviewed-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent b1070a7a
Loading
Loading
Loading
Loading
+9 −13
Original line number Diff line number Diff line
@@ -64,29 +64,25 @@ static void rvt_cleanup(void)
}
module_exit(rvt_cleanup);

/*
 * Check driver override. If driver passes a value use it, otherwise we use our
 * own value.
 */
#define CHECK_DRIVER_OVERRIDE(rdi, x) \
	rdi->ibdev.x = rdi->ibdev.x ? : rvt_ ##x

int rvt_register_device(struct rvt_dev_info *rdi)
{
	if (!rdi)
		return -EINVAL;

	/*
	 * Drivers have the option to override anything in the ibdev that they
	 * want to specifically handle. VT needs to check for things it supports
	 * and if the driver wants to handle that functionality let it. We may
	 * come up with a better mechanism that simplifies the code at some
	 * point.
	 */

	/* DMA Operations */
	rdi->ibdev.dma_ops =
		rdi->ibdev.dma_ops ? : &rvt_default_dma_mapping_ops;

	/* Protection Domain */
	rdi->ibdev.alloc_pd =
		rdi->ibdev.alloc_pd ? : rvt_alloc_pd;
	rdi->ibdev.dealloc_pd =
		rdi->ibdev.dealloc_pd ? : rvt_dealloc_pd;

	CHECK_DRIVER_OVERRIDE(rdi, alloc_pd);
	CHECK_DRIVER_OVERRIDE(rdi, dealloc_pd);
	spin_lock_init(&rdi->n_pds_lock);
	rdi->n_pds_allocated = 0;