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

Commit b9560a41 authored by Jason Gunthorpe's avatar Jason Gunthorpe
Browse files

RDMA: Move driver_id into struct ib_device_ops



No reason for every driver to emit code to set this, just make it part of
the driver's existing static const ops structure.

Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Reviewed-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent a1a8e4a8
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -373,7 +373,7 @@ struct ib_device *ib_device_get_by_name(const char *name,
	down_read(&devices_rwsem);
	device = __ib_device_get_by_name(name);
	if (device && driver_id != RDMA_DRIVER_UNKNOWN &&
	    device->driver_id != driver_id)
	    device->ops.driver_id != driver_id)
		device = NULL;

	if (device) {
@@ -1456,7 +1456,7 @@ void ib_unregister_driver(enum rdma_driver_id driver_id)

	down_read(&devices_rwsem);
	xa_for_each (&devices, index, ib_dev) {
		if (ib_dev->driver_id != driver_id)
		if (ib_dev->ops.driver_id != driver_id)
			continue;

		get_device(&ib_dev->dev);
@@ -2013,7 +2013,7 @@ struct ib_device *ib_device_get_by_netdev(struct net_device *ndev,
				    (uintptr_t)ndev) {
		if (rcu_access_pointer(cur->netdev) == ndev &&
		    (driver_id == RDMA_DRIVER_UNKNOWN ||
		     cur->ib_dev->driver_id == driver_id) &&
		     cur->ib_dev->ops.driver_id == driver_id) &&
		    ib_device_try_get(cur->ib_dev)) {
			res = cur->ib_dev;
			break;
@@ -2318,6 +2318,12 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)

#define SET_OBJ_SIZE(ptr, name) SET_DEVICE_OP(ptr, size_##name)

	if (ops->driver_id != RDMA_DRIVER_UNKNOWN) {
		WARN_ON(dev_ops->driver_id != RDMA_DRIVER_UNKNOWN &&
			dev_ops->driver_id != ops->driver_id);
		dev_ops->driver_id = ops->driver_id;
	}

	SET_DEVICE_OP(dev_ops, add_gid);
	SET_DEVICE_OP(dev_ops, advise_mr);
	SET_DEVICE_OP(dev_ops, alloc_dm);
+1 −1
Original line number Diff line number Diff line
@@ -647,7 +647,7 @@ struct uverbs_api *uverbs_alloc_api(struct ib_device *ibdev)
		return ERR_PTR(-ENOMEM);

	INIT_RADIX_TREE(&uapi->radix, GFP_KERNEL);
	uapi->driver_id = ibdev->driver_id;
	uapi->driver_id = ibdev->ops.driver_id;

	rc = uapi_merge_def(uapi, ibdev, uverbs_core_api, false);
	if (rc)
+2 −1
Original line number Diff line number Diff line
@@ -596,6 +596,8 @@ static void bnxt_re_unregister_ib(struct bnxt_re_dev *rdev)
}

static const struct ib_device_ops bnxt_re_dev_ops = {
	.driver_id = RDMA_DRIVER_BNXT_RE,

	.add_gid = bnxt_re_add_gid,
	.alloc_hw_stats = bnxt_re_ib_alloc_hw_stats,
	.alloc_mr = bnxt_re_alloc_mr,
@@ -691,7 +693,6 @@ static int bnxt_re_register_ib(struct bnxt_re_dev *rdev)


	rdma_set_device_sysfs_group(ibdev, &bnxt_re_dev_attr_group);
	ibdev->driver_id = RDMA_DRIVER_BNXT_RE;
	ib_set_device_ops(ibdev, &bnxt_re_dev_ops);
	ret = ib_device_set_netdev(&rdev->ibdev, rdev->netdev, 1);
	if (ret)
+2 −1
Original line number Diff line number Diff line
@@ -1236,6 +1236,8 @@ static void get_dev_fw_ver_str(struct ib_device *ibdev, char *str)
}

static const struct ib_device_ops iwch_dev_ops = {
	.driver_id = RDMA_DRIVER_CXGB3,

	.alloc_hw_stats	= iwch_alloc_stats,
	.alloc_mr = iwch_alloc_mr,
	.alloc_mw = iwch_alloc_mw,
@@ -1319,7 +1321,6 @@ int iwch_register_device(struct iwch_dev *dev)
	memcpy(dev->ibdev.iw_ifname, dev->rdev.t3cdev_p->lldev->name,
	       sizeof(dev->ibdev.iw_ifname));

	dev->ibdev.driver_id = RDMA_DRIVER_CXGB3;
	rdma_set_device_sysfs_group(&dev->ibdev, &iwch_attr_group);
	ib_set_device_ops(&dev->ibdev, &iwch_dev_ops);
	return ib_register_device(&dev->ibdev, "cxgb3_%d");
+2 −1
Original line number Diff line number Diff line
@@ -489,6 +489,8 @@ static int fill_res_entry(struct sk_buff *msg, struct rdma_restrack_entry *res)
}

static const struct ib_device_ops c4iw_dev_ops = {
	.driver_id = RDMA_DRIVER_CXGB4,

	.alloc_hw_stats = c4iw_alloc_stats,
	.alloc_mr = c4iw_alloc_mr,
	.alloc_mw = c4iw_alloc_mw,
@@ -599,7 +601,6 @@ void c4iw_register_device(struct work_struct *work)
	       sizeof(dev->ibdev.iw_ifname));

	rdma_set_device_sysfs_group(&dev->ibdev, &c4iw_attr_group);
	dev->ibdev.driver_id = RDMA_DRIVER_CXGB4;
	ib_set_device_ops(&dev->ibdev, &c4iw_dev_ops);
	ret = set_netdevs(&dev->ibdev, &dev->rdev);
	if (ret)
Loading