All of lore.kernel.org
 help / color / mirror / 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 related	[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 related	[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 related	[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 related	[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 related	[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 related	[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 related	[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, other threads:[~2020-07-20 19:24 UTC | newest]

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.