Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1070a7a authored by Dennis Dalessandro's avatar Dennis Dalessandro Committed by Doug Ledford
Browse files

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: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 8afd32eb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ struct ib_pd *rvt_alloc_pd(struct ib_device *ibdev,
	 */

	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);
		kfree(pd);
		ret = ERR_PTR(-ENOMEM);
+55 −2
Original line number Diff line number Diff line
@@ -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 */