IB/rdmavt: Move driver helper functions to a common structure

Drivers are going to need to provide multiple functions for rdmavt to
call in to. We already have one, so go ahead and push this into a
data structure designated for driver supplied functions.

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>
This commit is contained in:
Dennis Dalessandro 2016-01-06 10:02:52 -08:00 committed by Doug Ledford
parent ca889e8ad3
commit aec5778775
2 changed files with 20 additions and 8 deletions

View File

@ -280,8 +280,12 @@ int rvt_register_device(struct rvt_dev_info *rdi)
spin_lock_init(&rdi->n_pds_lock);
rdi->n_pds_allocated = 0;
/* Validate that drivers have provided the right functions */
if (!rdi->driver_f.port_callback)
return -EINVAL;
/* We are now good to announce we exist */
return ib_register_device(&rdi->ibdev, rdi->port_callback);
return ib_register_device(&rdi->ibdev, rdi->driver_f.port_callback);
}
EXPORT_SYMBOL(rvt_register_device);

View File

@ -383,6 +383,19 @@ struct rvt_driver_params {
*/
};
/*
* Functions that drivers are required to support
*/
struct rvt_driver_provided {
/*
* The work to create port files in /sys/class Infiniband is different
* depending on the driver. This should not be extracted away and
* instead drivers are responsible for setting the correct callback for
* this.
*/
int (*port_callback)(struct ib_device *, u8, struct kobject *);
};
/* Protection domain */
struct rvt_pd {
struct ib_pd ibpd;
@ -407,13 +420,8 @@ struct rvt_dev_info {
/* PKey Table goes here */
/*
* The work to create port files in /sys/class Infiniband is different
* depending on the driver. This should not be extracted away and
* instead drivers are responsible for setting the correct callback for
* this.
*/
int (*port_callback)(struct ib_device *, u8, struct kobject *);
/* Driver specific helper functions */
struct rvt_driver_provided driver_f;
/* Internal use */
int n_pds_allocated;