IB/rdmavt: Macroize override checks during driver registration
authorDennis Dalessandro <dennis.dalessandro@intel.com>
Wed, 6 Jan 2016 17:52:40 +0000 (09:52 -0800)
committerDoug Ledford <dledford@redhat.com>
Fri, 11 Mar 2016 01:37:05 +0000 (20:37 -0500)
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: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/sw/rdmavt/vt.c

index b65cde435f19cee836d53ca62ded173ca2865ec3..8bd25c310052faefc6572bb2e4aaf70ee26ac3b9 100644 (file)
@@ -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;