Linux-RDMA Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers
@ 2020-07-14 18:34 Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 1/7] RDMA/core: Expose pkeys sysfs files only if pkey_tbl_len is set Kamal Heib
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib

This patch set does the following:
1- Avoid exposing the pkeys sysfs entries for iwarp providers.
2- Avoid allocating the pkey cache for iwarp providers.
3- Remove the requirement by RDMA core to implement query_pkey
   by all providers.
4- Remove the implementation of query_pkey callback from iwarp providers.

v1: Patch #1: Move the free of the pkey_group to the right place.

Kamal Heib (7):
  RDMA/core: Expose pkeys sysfs files only if pkey_tbl_len is set
  RDMA/core: Allocate the pkey cache only if the pkey_tbl_len is set
  RDMA/core: Remove query_pkey from the mandatory ops
  RDMA/siw: Remove the query_pkey callback
  RDMA/cxgb4: Remove the query_pkey callback
  RDMA/i40iw: Remove the query_pkey callback
  RDMA/qedr: Remove the query_pkey callback

 drivers/infiniband/core/cache.c           | 45 ++++++++++------
 drivers/infiniband/core/device.c          |  4 +-
 drivers/infiniband/core/sysfs.c           | 64 ++++++++++++++++-------
 drivers/infiniband/hw/cxgb4/provider.c    | 11 ----
 drivers/infiniband/hw/i40iw/i40iw_verbs.c | 19 -------
 drivers/infiniband/hw/qedr/main.c         |  3 +-
 drivers/infiniband/hw/qedr/verbs.c        |  1 -
 drivers/infiniband/sw/siw/siw_main.c      |  1 -
 drivers/infiniband/sw/siw/siw_verbs.c     |  9 ----
 drivers/infiniband/sw/siw/siw_verbs.h     |  1 -
 10 files changed, 77 insertions(+), 81 deletions(-)

-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH for-next v1 1/7] RDMA/core: Expose pkeys sysfs files only if pkey_tbl_len is set
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
@ 2020-07-14 18:34 ` Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 2/7] RDMA/core: Allocate the pkey cache only if the " Kamal Heib
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib

Expose the pkeys sysfs files only if the pkey_tbl_len is set by the
providers.

Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/core/sysfs.c | 64 ++++++++++++++++++++++-----------
 1 file changed, 44 insertions(+), 20 deletions(-)

diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index defe9cd4c5ee..38507e5529ba 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -58,7 +58,7 @@ struct ib_port {
 	struct ib_device      *ibdev;
 	struct gid_attr_group *gid_attr_group;
 	struct attribute_group gid_group;
-	struct attribute_group pkey_group;
+	struct attribute_group *pkey_group;
 	struct attribute_group *pma_table;
 	struct attribute_group *hw_stats_ag;
 	struct rdma_hw_stats   *hw_stats;
@@ -681,11 +681,16 @@ static void ib_port_release(struct kobject *kobj)
 		kfree(p->gid_group.attrs);
 	}
 
-	if (p->pkey_group.attrs) {
-		for (i = 0; (a = p->pkey_group.attrs[i]); ++i)
-			kfree(a);
+	if (p->pkey_group) {
+		if (p->pkey_group->attrs) {
+			for (i = 0; (a = p->pkey_group->attrs[i]); ++i)
+				kfree(a);
+
+			kfree(p->pkey_group->attrs);
+		}
 
-		kfree(p->pkey_group.attrs);
+		kfree(p->pkey_group);
+		p->pkey_group = NULL;
 	}
 
 	kfree(p);
@@ -1118,17 +1123,26 @@ static int add_port(struct ib_core_device *coredev, int port_num)
 	if (ret)
 		goto err_free_gid_type;
 
-	p->pkey_group.name  = "pkeys";
-	p->pkey_group.attrs = alloc_group_attrs(show_port_pkey,
-						attr.pkey_tbl_len);
-	if (!p->pkey_group.attrs) {
-		ret = -ENOMEM;
-		goto err_remove_gid_type;
+	if (attr.pkey_tbl_len) {
+		p->pkey_group = kzalloc(sizeof(*p->pkey_group), GFP_KERNEL);
+		if (!p->pkey_group) {
+			ret = -ENOMEM;
+			goto err_remove_gid_type;
+		}
+
+		p->pkey_group->name  = "pkeys";
+		p->pkey_group->attrs = alloc_group_attrs(show_port_pkey,
+							 attr.pkey_tbl_len);
+		if (!p->pkey_group->attrs) {
+			ret = -ENOMEM;
+			goto err_free_pkey_group;
+		}
+
+		ret = sysfs_create_group(&p->kobj, p->pkey_group);
+		if (ret)
+			goto err_free_pkey;
 	}
 
-	ret = sysfs_create_group(&p->kobj, &p->pkey_group);
-	if (ret)
-		goto err_free_pkey;
 
 	if (device->ops.init_port && is_full_dev) {
 		ret = device->ops.init_port(device, port_num, &p->kobj);
@@ -1150,14 +1164,23 @@ static int add_port(struct ib_core_device *coredev, int port_num)
 	return 0;
 
 err_remove_pkey:
-	sysfs_remove_group(&p->kobj, &p->pkey_group);
+	if (p->pkey_group)
+		sysfs_remove_group(&p->kobj, p->pkey_group);
 
 err_free_pkey:
-	for (i = 0; i < attr.pkey_tbl_len; ++i)
-		kfree(p->pkey_group.attrs[i]);
+	if (p->pkey_group) {
+		for (i = 0; i < attr.pkey_tbl_len; ++i)
+			kfree(p->pkey_group->attrs[i]);
 
-	kfree(p->pkey_group.attrs);
-	p->pkey_group.attrs = NULL;
+		kfree(p->pkey_group->attrs);
+		p->pkey_group->attrs = NULL;
+	}
+
+err_free_pkey_group:
+	if (p->pkey_group) {
+		kfree(p->pkey_group);
+		p->pkey_group = NULL;
+	}
 
 err_remove_gid_type:
 	sysfs_remove_group(&p->gid_attr_group->kobj,
@@ -1317,7 +1340,8 @@ void ib_free_port_attrs(struct ib_core_device *coredev)
 
 		if (port->pma_table)
 			sysfs_remove_group(p, port->pma_table);
-		sysfs_remove_group(p, &port->pkey_group);
+		if (port->pkey_group)
+			sysfs_remove_group(p, port->pkey_group);
 		sysfs_remove_group(p, &port->gid_group);
 		sysfs_remove_group(&port->gid_attr_group->kobj,
 				   &port->gid_attr_group->ndev);
-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH for-next v1 2/7] RDMA/core: Allocate the pkey cache only if the pkey_tbl_len is set
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 1/7] RDMA/core: Expose pkeys sysfs files only if pkey_tbl_len is set Kamal Heib
@ 2020-07-14 18:34 ` Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 3/7] RDMA/core: Remove query_pkey from the mandatory ops Kamal Heib
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib

Allocate the pkey cache only if the pkey_tbl_len is set by the provider,
also add checks to avoid accessing the pkey cache when it not
initialized.

Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/core/cache.c | 45 +++++++++++++++++++++------------
 1 file changed, 29 insertions(+), 16 deletions(-)

diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
index a670209bbce6..ffad73bb40ff 100644
--- a/drivers/infiniband/core/cache.c
+++ b/drivers/infiniband/core/cache.c
@@ -1054,7 +1054,7 @@ int ib_get_cached_pkey(struct ib_device *device,
 
 	cache = device->port_data[port_num].cache.pkey;
 
-	if (index < 0 || index >= cache->table_len)
+	if (!cache || index < 0 || index >= cache->table_len)
 		ret = -EINVAL;
 	else
 		*pkey = cache->table[index];
@@ -1099,6 +1099,10 @@ int ib_find_cached_pkey(struct ib_device *device,
 	read_lock_irqsave(&device->cache_lock, flags);
 
 	cache = device->port_data[port_num].cache.pkey;
+	if (!cache) {
+		ret = -EINVAL;
+		goto err;
+	}
 
 	*index = -1;
 
@@ -1117,6 +1121,7 @@ int ib_find_cached_pkey(struct ib_device *device,
 		ret = 0;
 	}
 
+err:
 	read_unlock_irqrestore(&device->cache_lock, flags);
 
 	return ret;
@@ -1139,6 +1144,10 @@ int ib_find_exact_cached_pkey(struct ib_device *device,
 	read_lock_irqsave(&device->cache_lock, flags);
 
 	cache = device->port_data[port_num].cache.pkey;
+	if (!cache) {
+		ret = -EINVAL;
+		goto err;
+	}
 
 	*index = -1;
 
@@ -1149,6 +1158,7 @@ int ib_find_exact_cached_pkey(struct ib_device *device,
 			break;
 		}
 
+err:
 	read_unlock_irqrestore(&device->cache_lock, flags);
 
 	return ret;
@@ -1425,23 +1435,26 @@ ib_cache_update(struct ib_device *device, u8 port, bool enforce_security)
 			goto err;
 	}
 
-	pkey_cache = kmalloc(struct_size(pkey_cache, table,
-					 tprops->pkey_tbl_len),
-			     GFP_KERNEL);
-	if (!pkey_cache) {
-		ret = -ENOMEM;
-		goto err;
-	}
+	if (tprops->pkey_tbl_len) {
+		pkey_cache = kmalloc(struct_size(pkey_cache, table,
+						 tprops->pkey_tbl_len),
+				     GFP_KERNEL);
+		if (!pkey_cache) {
+			ret = -ENOMEM;
+			goto err;
+		}
 
-	pkey_cache->table_len = tprops->pkey_tbl_len;
+		pkey_cache->table_len = tprops->pkey_tbl_len;
 
-	for (i = 0; i < pkey_cache->table_len; ++i) {
-		ret = ib_query_pkey(device, port, i, pkey_cache->table + i);
-		if (ret) {
-			dev_warn(&device->dev,
-				 "ib_query_pkey failed (%d) for index %d\n",
-				 ret, i);
-			goto err;
+		for (i = 0; i < pkey_cache->table_len; ++i) {
+			ret = ib_query_pkey(device, port, i,
+					    pkey_cache->table + i);
+			if (ret) {
+				dev_warn(&device->dev,
+					 "ib_query_pkey failed (%d) for index %d\n",
+					 ret, i);
+				goto err;
+			}
 		}
 	}
 
-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH for-next v1 3/7] RDMA/core: Remove query_pkey from the mandatory ops
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 1/7] RDMA/core: Expose pkeys sysfs files only if pkey_tbl_len is set Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 2/7] RDMA/core: Allocate the pkey cache only if the " Kamal Heib
@ 2020-07-14 18:34 ` Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback Kamal Heib
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib

The query_pkey() isn't mandatory for the iwarp providers, so remove
this requirement from the RDMA core.

Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/core/device.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index b2d617e599a1..d293b826acbc 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -272,7 +272,6 @@ static void ib_device_check_mandatory(struct ib_device *device)
 	} mandatory_table[] = {
 		IB_MANDATORY_FUNC(query_device),
 		IB_MANDATORY_FUNC(query_port),
-		IB_MANDATORY_FUNC(query_pkey),
 		IB_MANDATORY_FUNC(alloc_pd),
 		IB_MANDATORY_FUNC(dealloc_pd),
 		IB_MANDATORY_FUNC(create_qp),
@@ -2362,6 +2361,9 @@ int ib_query_pkey(struct ib_device *device,
 	if (!rdma_is_port_valid(device, port_num))
 		return -EINVAL;
 
+	if (!device->ops.query_pkey)
+		return -EOPNOTSUPP;
+
 	return device->ops.query_pkey(device, port_num, index, pkey);
 }
 EXPORT_SYMBOL(ib_query_pkey);
-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
                   ` (2 preceding siblings ...)
  2020-07-14 18:34 ` [PATCH for-next v1 3/7] RDMA/core: Remove query_pkey from the mandatory ops Kamal Heib
@ 2020-07-14 18:34 ` Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 5/7] RDMA/cxgb4: " Kamal Heib
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib

Now that the query_pkey() isn't mandatory by the RDMA core for iwarp
providers, this callback can be removed.

Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/sw/siw/siw_main.c  | 1 -
 drivers/infiniband/sw/siw/siw_verbs.c | 9 ---------
 drivers/infiniband/sw/siw/siw_verbs.h | 1 -
 3 files changed, 11 deletions(-)

diff --git a/drivers/infiniband/sw/siw/siw_main.c b/drivers/infiniband/sw/siw/siw_main.c
index a0b8cc643c5c..18c08259157f 100644
--- a/drivers/infiniband/sw/siw/siw_main.c
+++ b/drivers/infiniband/sw/siw/siw_main.c
@@ -288,7 +288,6 @@ static const struct ib_device_ops siw_device_ops = {
 	.post_srq_recv = siw_post_srq_recv,
 	.query_device = siw_query_device,
 	.query_gid = siw_query_gid,
-	.query_pkey = siw_query_pkey,
 	.query_port = siw_query_port,
 	.query_qp = siw_query_qp,
 	.query_srq = siw_query_srq,
diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
index 0d509f7a10a6..adafa1b8bebe 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.c
+++ b/drivers/infiniband/sw/siw/siw_verbs.c
@@ -176,7 +176,6 @@ int siw_query_port(struct ib_device *base_dev, u8 port,
 	attr->active_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
 	attr->phys_state = sdev->state == IB_PORT_ACTIVE ?
 		IB_PORT_PHYS_STATE_LINK_UP : IB_PORT_PHYS_STATE_DISABLED;
-	attr->pkey_tbl_len = 1;
 	attr->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_DEVICE_MGMT_SUP;
 	attr->state = sdev->state;
 	/*
@@ -204,20 +203,12 @@ int siw_get_port_immutable(struct ib_device *base_dev, u8 port,
 	if (rv)
 		return rv;
 
-	port_immutable->pkey_tbl_len = attr.pkey_tbl_len;
 	port_immutable->gid_tbl_len = attr.gid_tbl_len;
 	port_immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
 
 	return 0;
 }
 
-int siw_query_pkey(struct ib_device *base_dev, u8 port, u16 idx, u16 *pkey)
-{
-	/* Report the default pkey */
-	*pkey = 0xffff;
-	return 0;
-}
-
 int siw_query_gid(struct ib_device *base_dev, u8 port, int idx,
 		  union ib_gid *gid)
 {
diff --git a/drivers/infiniband/sw/siw/siw_verbs.h b/drivers/infiniband/sw/siw/siw_verbs.h
index 9335c48c01de..d9572275a6b6 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.h
+++ b/drivers/infiniband/sw/siw/siw_verbs.h
@@ -46,7 +46,6 @@ int siw_create_cq(struct ib_cq *base_cq, const struct ib_cq_init_attr *attr,
 		  struct ib_udata *udata);
 int siw_query_port(struct ib_device *base_dev, u8 port,
 		   struct ib_port_attr *attr);
-int siw_query_pkey(struct ib_device *base_dev, u8 port, u16 idx, u16 *pkey);
 int siw_query_gid(struct ib_device *base_dev, u8 port, int idx,
 		  union ib_gid *gid);
 int siw_alloc_pd(struct ib_pd *base_pd, struct ib_udata *udata);
-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH for-next v1 5/7] RDMA/cxgb4: Remove the query_pkey callback
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
                   ` (3 preceding siblings ...)
  2020-07-14 18:34 ` [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback Kamal Heib
@ 2020-07-14 18:34 ` Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 6/7] RDMA/i40iw: " Kamal Heib
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib

Now that the query_pkey() isn't mandatory by the RDMA core for iwarp
providers, this callback can be removed.

Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/hw/cxgb4/provider.c | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb4/provider.c b/drivers/infiniband/hw/cxgb4/provider.c
index 1d3ff59e4060..6c579d2d3997 100644
--- a/drivers/infiniband/hw/cxgb4/provider.c
+++ b/drivers/infiniband/hw/cxgb4/provider.c
@@ -236,14 +236,6 @@ static int c4iw_allocate_pd(struct ib_pd *pd, struct ib_udata *udata)
 	return 0;
 }
 
-static int c4iw_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
-			   u16 *pkey)
-{
-	pr_debug("ibdev %p\n", ibdev);
-	*pkey = 0;
-	return 0;
-}
-
 static int c4iw_query_gid(struct ib_device *ibdev, u8 port, int index,
 			  union ib_gid *gid)
 {
@@ -317,7 +309,6 @@ static int c4iw_query_port(struct ib_device *ibdev, u8 port,
 	    IB_PORT_DEVICE_MGMT_SUP |
 	    IB_PORT_VENDOR_CLASS_SUP | IB_PORT_BOOT_MGMT_SUP;
 	props->gid_tbl_len = 1;
-	props->pkey_tbl_len = 1;
 	props->max_msg_sz = -1;
 
 	return ret;
@@ -439,7 +430,6 @@ static int c4iw_port_immutable(struct ib_device *ibdev, u8 port_num,
 	if (err)
 		return err;
 
-	immutable->pkey_tbl_len = attr.pkey_tbl_len;
 	immutable->gid_tbl_len = attr.gid_tbl_len;
 
 	return 0;
@@ -503,7 +493,6 @@ static const struct ib_device_ops c4iw_dev_ops = {
 	.post_srq_recv = c4iw_post_srq_recv,
 	.query_device = c4iw_query_device,
 	.query_gid = c4iw_query_gid,
-	.query_pkey = c4iw_query_pkey,
 	.query_port = c4iw_query_port,
 	.query_qp = c4iw_ib_query_qp,
 	.reg_user_mr = c4iw_reg_user_mr,
-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH for-next v1 6/7] RDMA/i40iw: Remove the query_pkey callback
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
                   ` (4 preceding siblings ...)
  2020-07-14 18:34 ` [PATCH for-next v1 5/7] RDMA/cxgb4: " Kamal Heib
@ 2020-07-14 18:34 ` Kamal Heib
  2020-07-14 18:34 ` [PATCH for-next v1 7/7] RDMA/qedr: " Kamal Heib
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib

Now that the query_pkey() isn't mandatory by the RDMA core for iwarp
providers, this callback can be removed.

Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/hw/i40iw/i40iw_verbs.c | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
index f9ef3ac2f4cd..6957e4f3404b 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
@@ -101,7 +101,6 @@ static int i40iw_query_port(struct ib_device *ibdev,
 	props->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_REINIT_SUP |
 		IB_PORT_VENDOR_CLASS_SUP | IB_PORT_BOOT_MGMT_SUP;
 	props->gid_tbl_len = 1;
-	props->pkey_tbl_len = 1;
 	props->active_width = IB_WIDTH_4X;
 	props->active_speed = 1;
 	props->max_msg_sz = I40IW_MAX_OUTBOUND_MESSAGE_SIZE;
@@ -2459,7 +2458,6 @@ static int i40iw_port_immutable(struct ib_device *ibdev, u8 port_num,
 	if (err)
 		return err;
 
-	immutable->pkey_tbl_len = attr.pkey_tbl_len;
 	immutable->gid_tbl_len = attr.gid_tbl_len;
 
 	return 0;
@@ -2615,22 +2613,6 @@ static int i40iw_query_gid(struct ib_device *ibdev,
 	return 0;
 }
 
-/**
- * i40iw_query_pkey - Query partition key
- * @ibdev: device pointer from stack
- * @port: port number
- * @index: index of pkey
- * @pkey: pointer to store the pkey
- */
-static int i40iw_query_pkey(struct ib_device *ibdev,
-			    u8 port,
-			    u16 index,
-			    u16 *pkey)
-{
-	*pkey = 0;
-	return 0;
-}
-
 static const struct ib_device_ops i40iw_dev_ops = {
 	.owner = THIS_MODULE,
 	.driver_id = RDMA_DRIVER_I40IW,
@@ -2670,7 +2652,6 @@ static const struct ib_device_ops i40iw_dev_ops = {
 	.post_send = i40iw_post_send,
 	.query_device = i40iw_query_device,
 	.query_gid = i40iw_query_gid,
-	.query_pkey = i40iw_query_pkey,
 	.query_port = i40iw_query_port,
 	.query_qp = i40iw_query_qp,
 	.reg_user_mr = i40iw_reg_user_mr,
-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH for-next v1 7/7] RDMA/qedr: Remove the query_pkey callback
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
                   ` (5 preceding siblings ...)
  2020-07-14 18:34 ` [PATCH for-next v1 6/7] RDMA/i40iw: " Kamal Heib
@ 2020-07-14 18:34 ` Kamal Heib
  2020-07-14 22:34 ` [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Saleem, Shiraz
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Kamal Heib @ 2020-07-14 18:34 UTC (permalink / raw)
  To: linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem, Bernard Metzler, Kamal Heib,
	Michal Kalderon

Now that the query_pkey() isn't mandatory by the RDMA core for iwarp
providers, this callback can be removed from the common ops and moved to
the RoCE only ops within the qedr driver.

Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
Acked-by: Michal Kalderon <michal.kalderon@marvell.com>
---
 drivers/infiniband/hw/qedr/main.c  | 3 +--
 drivers/infiniband/hw/qedr/verbs.c | 1 -
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c
index ccaedfd53e49..c9eeed25c662 100644
--- a/drivers/infiniband/hw/qedr/main.c
+++ b/drivers/infiniband/hw/qedr/main.c
@@ -110,7 +110,6 @@ static int qedr_iw_port_immutable(struct ib_device *ibdev, u8 port_num,
 	if (err)
 		return err;
 
-	immutable->pkey_tbl_len = 1;
 	immutable->gid_tbl_len = 1;
 	immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
 	immutable->max_mad_size = 0;
@@ -179,6 +178,7 @@ static int qedr_iw_register_device(struct qedr_dev *dev)
 
 static const struct ib_device_ops qedr_roce_dev_ops = {
 	.get_port_immutable = qedr_roce_port_immutable,
+	.query_pkey = qedr_query_pkey,
 };
 
 static void qedr_roce_register_device(struct qedr_dev *dev)
@@ -221,7 +221,6 @@ static const struct ib_device_ops qedr_dev_ops = {
 	.post_srq_recv = qedr_post_srq_recv,
 	.process_mad = qedr_process_mad,
 	.query_device = qedr_query_device,
-	.query_pkey = qedr_query_pkey,
 	.query_port = qedr_query_port,
 	.query_qp = qedr_query_qp,
 	.query_srq = qedr_query_srq,
diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
index 3d7d5617818f..63eb935a1596 100644
--- a/drivers/infiniband/hw/qedr/verbs.c
+++ b/drivers/infiniband/hw/qedr/verbs.c
@@ -239,7 +239,6 @@ int qedr_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr *attr)
 	attr->ip_gids = true;
 	if (rdma_protocol_iwarp(&dev->ibdev, 1)) {
 		attr->gid_tbl_len = 1;
-		attr->pkey_tbl_len = 1;
 	} else {
 		attr->gid_tbl_len = QEDR_MAX_SGID;
 		attr->pkey_tbl_len = QEDR_ROCE_PKEY_TABLE_LEN;
-- 
2.25.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
                   ` (6 preceding siblings ...)
  2020-07-14 18:34 ` [PATCH for-next v1 7/7] RDMA/qedr: " Kamal Heib
@ 2020-07-14 22:34 ` Saleem, Shiraz
  2020-07-15  7:29 ` [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback Bernard Metzler
  2020-07-20 19:24 ` [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Jason Gunthorpe
  9 siblings, 0 replies; 11+ messages in thread
From: Saleem, Shiraz @ 2020-07-14 22:34 UTC (permalink / raw)
  To: Kamal Heib, linux-rdma
  Cc: Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Bernard Metzler

> Subject: [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp
> providers
> 
> This patch set does the following:
> 1- Avoid exposing the pkeys sysfs entries for iwarp providers.
> 2- Avoid allocating the pkey cache for iwarp providers.
> 3- Remove the requirement by RDMA core to implement query_pkey
>    by all providers.
> 4- Remove the implementation of query_pkey callback from iwarp providers.
> 
> v1: Patch #1: Move the free of the pkey_group to the right place.
> 
[...]
>   RDMA/i40iw: Remove the query_pkey callback
 
i40iw bits look ok. Thanks!

Acked-by: Shiraz Saleem <shiraz.saleem@intel.com>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
                   ` (7 preceding siblings ...)
  2020-07-14 22:34 ` [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Saleem, Shiraz
@ 2020-07-15  7:29 ` Bernard Metzler
  2020-07-20 19:24 ` [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Jason Gunthorpe
  9 siblings, 0 replies; 11+ messages in thread
From: Bernard Metzler @ 2020-07-15  7:29 UTC (permalink / raw)
  To: Kamal Heib
  Cc: linux-rdma, Doug Ledford, Jason Gunthorpe, Michal Kalderon,
	Potnuri Bharat Teja, Shiraz Saleem

-----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----

>To: linux-rdma@vger.kernel.org
>From: "Kamal Heib" <kamalheib1@gmail.com>
>Date: 07/14/2020 08:34PM
>Cc: "Doug Ledford" <dledford@redhat.com>, "Jason Gunthorpe"
><jgg@ziepe.ca>, "Michal Kalderon" <mkalderon@marvell.com>, "Potnuri
>Bharat Teja" <bharat@chelsio.com>, "Shiraz Saleem"
><shiraz.saleem@intel.com>, "Bernard Metzler" <bmt@zurich.ibm.com>,
>"Kamal Heib" <kamalheib1@gmail.com>
>Subject: [EXTERNAL] [PATCH for-next v1 4/7] RDMA/siw: Remove the
>query_pkey callback
>
>Now that the query_pkey() isn't mandatory by the RDMA core for iwarp
>providers, this callback can be removed.
>
>Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
>---
> drivers/infiniband/sw/siw/siw_main.c  | 1 -
> drivers/infiniband/sw/siw/siw_verbs.c | 9 ---------
> drivers/infiniband/sw/siw/siw_verbs.h | 1 -
> 3 files changed, 11 deletions(-)
>
>diff --git a/drivers/infiniband/sw/siw/siw_main.c
>b/drivers/infiniband/sw/siw/siw_main.c
>index a0b8cc643c5c..18c08259157f 100644
>--- a/drivers/infiniband/sw/siw/siw_main.c
>+++ b/drivers/infiniband/sw/siw/siw_main.c
>@@ -288,7 +288,6 @@ static const struct ib_device_ops siw_device_ops
>= {
> 	.post_srq_recv = siw_post_srq_recv,
> 	.query_device = siw_query_device,
> 	.query_gid = siw_query_gid,
>-	.query_pkey = siw_query_pkey,
> 	.query_port = siw_query_port,
> 	.query_qp = siw_query_qp,
> 	.query_srq = siw_query_srq,
>diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
>b/drivers/infiniband/sw/siw/siw_verbs.c
>index 0d509f7a10a6..adafa1b8bebe 100644
>--- a/drivers/infiniband/sw/siw/siw_verbs.c
>+++ b/drivers/infiniband/sw/siw/siw_verbs.c
>@@ -176,7 +176,6 @@ int siw_query_port(struct ib_device *base_dev, u8
>port,
> 	attr->active_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
> 	attr->phys_state = sdev->state == IB_PORT_ACTIVE ?
> 		IB_PORT_PHYS_STATE_LINK_UP : IB_PORT_PHYS_STATE_DISABLED;
>-	attr->pkey_tbl_len = 1;
> 	attr->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_DEVICE_MGMT_SUP;
> 	attr->state = sdev->state;
> 	/*
>@@ -204,20 +203,12 @@ int siw_get_port_immutable(struct ib_device
>*base_dev, u8 port,
> 	if (rv)
> 		return rv;
> 
>-	port_immutable->pkey_tbl_len = attr.pkey_tbl_len;
> 	port_immutable->gid_tbl_len = attr.gid_tbl_len;
> 	port_immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
> 
> 	return 0;
> }
> 
>-int siw_query_pkey(struct ib_device *base_dev, u8 port, u16 idx, u16
>*pkey)
>-{
>-	/* Report the default pkey */
>-	*pkey = 0xffff;
>-	return 0;
>-}
>-
> int siw_query_gid(struct ib_device *base_dev, u8 port, int idx,
> 		  union ib_gid *gid)
> {
>diff --git a/drivers/infiniband/sw/siw/siw_verbs.h
>b/drivers/infiniband/sw/siw/siw_verbs.h
>index 9335c48c01de..d9572275a6b6 100644
>--- a/drivers/infiniband/sw/siw/siw_verbs.h
>+++ b/drivers/infiniband/sw/siw/siw_verbs.h
>@@ -46,7 +46,6 @@ int siw_create_cq(struct ib_cq *base_cq, const
>struct ib_cq_init_attr *attr,
> 		  struct ib_udata *udata);
> int siw_query_port(struct ib_device *base_dev, u8 port,
> 		   struct ib_port_attr *attr);
>-int siw_query_pkey(struct ib_device *base_dev, u8 port, u16 idx, u16
>*pkey);
> int siw_query_gid(struct ib_device *base_dev, u8 port, int idx,
> 		  union ib_gid *gid);
> int siw_alloc_pd(struct ib_pd *base_pd, struct ib_udata *udata);
>-- 
>2.25.4
>
>
Thanks, Kamal!

Acked-by: Bernard Metzler <bmt@zurich.ibm.com>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers
  2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
                   ` (8 preceding siblings ...)
  2020-07-15  7:29 ` [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback Bernard Metzler
@ 2020-07-20 19:24 ` Jason Gunthorpe
  9 siblings, 0 replies; 11+ messages in thread
From: Jason Gunthorpe @ 2020-07-20 19:24 UTC (permalink / raw)
  To: Kamal Heib
  Cc: linux-rdma, Doug Ledford, Michal Kalderon, Potnuri Bharat Teja,
	Shiraz Saleem, Bernard Metzler

On Tue, Jul 14, 2020 at 09:34:07PM +0300, Kamal Heib wrote:
> This patch set does the following:
> 1- Avoid exposing the pkeys sysfs entries for iwarp providers.
> 2- Avoid allocating the pkey cache for iwarp providers.
> 3- Remove the requirement by RDMA core to implement query_pkey
>    by all providers.
> 4- Remove the implementation of query_pkey callback from iwarp providers.
> 
> v1: Patch #1: Move the free of the pkey_group to the right place.
> 
> Kamal Heib (7):
>   RDMA/core: Expose pkeys sysfs files only if pkey_tbl_len is set
>   RDMA/core: Allocate the pkey cache only if the pkey_tbl_len is set
>   RDMA/core: Remove query_pkey from the mandatory ops
>   RDMA/siw: Remove the query_pkey callback
>   RDMA/cxgb4: Remove the query_pkey callback
>   RDMA/i40iw: Remove the query_pkey callback
>   RDMA/qedr: Remove the query_pkey callback

Applied to for-next, thanks

Jason

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, back to index

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-14 18:34 [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Kamal Heib
2020-07-14 18:34 ` [PATCH for-next v1 1/7] RDMA/core: Expose pkeys sysfs files only if pkey_tbl_len is set Kamal Heib
2020-07-14 18:34 ` [PATCH for-next v1 2/7] RDMA/core: Allocate the pkey cache only if the " Kamal Heib
2020-07-14 18:34 ` [PATCH for-next v1 3/7] RDMA/core: Remove query_pkey from the mandatory ops Kamal Heib
2020-07-14 18:34 ` [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback Kamal Heib
2020-07-14 18:34 ` [PATCH for-next v1 5/7] RDMA/cxgb4: " Kamal Heib
2020-07-14 18:34 ` [PATCH for-next v1 6/7] RDMA/i40iw: " Kamal Heib
2020-07-14 18:34 ` [PATCH for-next v1 7/7] RDMA/qedr: " Kamal Heib
2020-07-14 22:34 ` [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Saleem, Shiraz
2020-07-15  7:29 ` [PATCH for-next v1 4/7] RDMA/siw: Remove the query_pkey callback Bernard Metzler
2020-07-20 19:24 ` [PATCH for-next v1 0/7] RDMA: Remove query_pkey from iwarp providers Jason Gunthorpe

Linux-RDMA Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-rdma/0 linux-rdma/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-rdma linux-rdma/ https://lore.kernel.org/linux-rdma \
		linux-rdma@vger.kernel.org
	public-inbox-index linux-rdma

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-rdma


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git