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 <[email protected]>
Reviewed-by: Ira Weiny <[email protected]>
Signed-off-by: Dennis Dalessandro <[email protected]>
Signed-off-by: Doug Ledford <[email protected]>
This commit is contained in:
Dennis Dalessandro 2016-01-06 09:52:19 -08:00 • committed by Doug Ledford
commit b1070a7a4d
2 changed files with 56 additions and 3 deletions

View file

@ -59,7 +59,45 @@
* Things that are driver specific, module parameters in hfi1 and qib
*/
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 */
@ -69,10 +107,25 @@ struct rvt_pd {
};
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;
/* Driver specific */
/* Driver specific properties */
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 *);
/* Internal use */