summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDennis Dalessandro <dennis.dalessandro@intel.com>2016-01-06 09:52:19 -0800
committerDoug Ledford <dledford@redhat.com>2016-03-10 20:37:05 -0500
commitb1070a7a4d304e680eb6c1158d76645cf5a923f1 (patch)
tree11adfa647735a45ad269ed32c6bb059a5054c3c0 /include
parent8afd32eb58b6885fc3e268c69b1b1b627aa2afaf (diff)
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>
Diffstat (limited to 'include')
-rw-r--r--include/rdma/rdma_vt.h57
1 files changed, 55 insertions, 2 deletions
diff --git a/include/rdma/rdma_vt.h b/include/rdma/rdma_vt.h
index 6bf5fd40081d..2990e03bdd9e 100644
--- a/include/rdma/rdma_vt.h
+++ b/include/rdma/rdma_vt.h
@@ -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 */