mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
IB/rdmavt: Add ib core device attributes to rvt driver params list
Instead of trying to handle each parameter separately, add ib_device_attr to rvt_driver_params. This means drivers will fill this in and pass to the rvt registration function. 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:
parent
8afd32eb58
commit
b1070a7a4d
2 changed files with 56 additions and 3 deletions
|
@ -69,7 +69,7 @@ struct ib_pd *rvt_alloc_pd(struct ib_device *ibdev,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
spin_lock(&dev->n_pds_lock);
|
spin_lock(&dev->n_pds_lock);
|
||||||
if (dev->n_pds_allocated == dev->dparms.max_pds) {
|
if (dev->n_pds_allocated == dev->dparms.props.max_pd) {
|
||||||
spin_unlock(&dev->n_pds_lock);
|
spin_unlock(&dev->n_pds_lock);
|
||||||
kfree(pd);
|
kfree(pd);
|
||||||
ret = ERR_PTR(-ENOMEM);
|
ret = ERR_PTR(-ENOMEM);
|
||||||
|
|
|
@ -59,7 +59,45 @@
|
||||||
* Things that are driver specific, module parameters in hfi1 and qib
|
* Things that are driver specific, module parameters in hfi1 and qib
|
||||||
*/
|
*/
|
||||||
struct rvt_driver_params {
|
struct rvt_driver_params {
|
||||||
int max_pds;
|
/*
|
||||||
|
* driver required fields:
|
||||||
|
* node_guid
|
||||||
|
* phys_port_cnt
|
||||||
|
* dma_device
|
||||||
|
* owner
|
||||||
|
* driver optional fields (rvt will provide generic value if blank):
|
||||||
|
* name
|
||||||
|
* node_desc
|
||||||
|
* rvt fields, driver value ignored:
|
||||||
|
* uverbs_abi_ver
|
||||||
|
* node_type
|
||||||
|
* num_comp_vectors
|
||||||
|
* uverbs_cmd_mask
|
||||||
|
*/
|
||||||
|
struct ib_device_attr props;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Drivers will need to support a number of notifications to rvt in
|
||||||
|
* accordance with certain events. This structure should contain a mask
|
||||||
|
* of the supported events. Such events that the rvt may need to know
|
||||||
|
* about include:
|
||||||
|
* port errors
|
||||||
|
* port active
|
||||||
|
* lid change
|
||||||
|
* sm change
|
||||||
|
* client reregister
|
||||||
|
* pkey change
|
||||||
|
*
|
||||||
|
* There may also be other events that the rvt layers needs to know
|
||||||
|
* about this is not an exhaustive list. Some events though rvt does not
|
||||||
|
* need to rely on the driver for such as completion queue error.
|
||||||
|
*/
|
||||||
|
int rvt_signal_supported;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Anything driver specific that is not covered by props
|
||||||
|
* For instance special module parameters. Goes here.
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Protection domain */
|
/* Protection domain */
|
||||||
|
@ -69,10 +107,25 @@ struct rvt_pd {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rvt_dev_info {
|
struct rvt_dev_info {
|
||||||
|
/*
|
||||||
|
* Prior to calling for registration the driver will be responsible for
|
||||||
|
* allocating space for this structure.
|
||||||
|
*
|
||||||
|
* The driver will also be responsible for filling in certain members of
|
||||||
|
* dparms.props
|
||||||
|
*/
|
||||||
|
|
||||||
struct ib_device ibdev;
|
struct ib_device ibdev;
|
||||||
|
|
||||||
/* Driver specific */
|
/* Driver specific properties */
|
||||||
struct rvt_driver_params dparms;
|
struct rvt_driver_params dparms;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 *);
|
int (*port_callback)(struct ib_device *, u8, struct kobject *);
|
||||||
|
|
||||||
/* Internal use */
|
/* Internal use */
|
||||||
|
|
Loading…
Add table
Reference in a new issue