public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 10/30] IB/core: Add gid_type to path and rdma_id_private
@ 2015-02-19 10:20 Somnath Kotur
  0 siblings, 0 replies; 60+ messages in thread
From: Somnath Kotur @ 2015-02-19 10:20 UTC (permalink / raw)
  To: roland-DgEjT+Ai2ygdnm+yROfE0A
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, Matan Barak, Somnath Kotur

From: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

When using rdma cm, we want to take the gid_type from
the rdma_id_private. This is mandatory before adding
an API from user-space/configfs that sets
the gid_type of CM connection.

Signed-off-by: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Signed-off-by: Somnath Kotur <somnath.kotur-laKkSmNT4hbQT0dZR+AlfA@public.gmane.org>
---
 drivers/infiniband/core/cm.c              |   19 ++++++++++++++-----
 drivers/infiniband/core/cma.c             |    2 ++
 drivers/infiniband/core/sa_query.c        |    3 ++-
 drivers/infiniband/core/uverbs_marshall.c |    1 +
 include/rdma/ib_sa.h                      |    1 +
 5 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 7974e74..22dac05 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -358,9 +358,8 @@ static int cm_init_av_by_path(struct ib_sa_path_rec *path, struct cm_av *av)
 	read_lock_irqsave(&cm.device_lock, flags);
 	list_for_each_entry(cm_dev, &cm.device_list, list) {
 		if (!ib_find_cached_gid(cm_dev->ib_device, &path->sgid,
-					IB_GID_TYPE_IB, path->net,
-					path->ifindex,
-					&p, NULL)) {
+					path->gid_type, path->net,
+					path->ifindex, &p, NULL)) {
 			port = cm_dev->port[p-1];
 			break;
 		}
@@ -1521,6 +1520,8 @@ static int cm_req_handler(struct cm_work *work)
 	struct ib_cm_id *cm_id;
 	struct cm_id_private *cm_id_priv, *listen_cm_id_priv;
 	struct cm_req_msg *req_msg;
+	union ib_gid gid;
+	struct ib_gid_attr gid_attr;
 	int ret;
 
 	req_msg = (struct cm_req_msg *)work->mad_recv_wc->recv_buf.mad;
@@ -1560,11 +1561,19 @@ static int cm_req_handler(struct cm_work *work)
 	cm_format_paths_from_req(req_msg, &work->path[0], &work->path[1]);
 
 	memcpy(work->path[0].dmac, cm_id_priv->av.ah_attr.dmac, ETH_ALEN);
-	ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av);
+	ret = ib_get_cached_gid(work->port->cm_dev->ib_device,
+				work->port->port_num,
+				cm_id_priv->av.ah_attr.grh.sgid_index,
+				&gid, &gid_attr);
+	if (!ret) {
+		work->path[0].gid_type = gid_attr.gid_type;
+		ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av);
+	}
 	if (ret) {
 		ib_get_cached_gid(work->port->cm_dev->ib_device,
 				  work->port->port_num, 0, &work->path[0].sgid,
-				  NULL);
+				  &gid_attr);
+		work->path[0].gid_type = gid_attr.gid_type;
 		ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID,
 			       &work->path[0].sgid, sizeof work->path[0].sgid,
 			       NULL, 0);
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 659676c..9afa410 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -146,6 +146,7 @@ struct rdma_id_private {
 	u8			tos;
 	u8			reuseaddr;
 	u8			afonly;
+	enum ib_gid_type	gid_type;
 };
 
 struct cma_multicast {
@@ -1936,6 +1937,7 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
 		ndev = dev_get_by_index(&init_net, addr->dev_addr.bound_dev_if);
 		route->path_rec->net = &init_net;
 		route->path_rec->ifindex = addr->dev_addr.bound_dev_if;
+		route->path_rec->gid_type = id_priv->gid_type;
 	}
 	if (!ndev) {
 		ret = -ENODEV;
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index 705b6b8..f770049 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -546,7 +546,7 @@ int ib_init_ah_from_path(struct ib_device *device, u8 port_num,
 		ah_attr->ah_flags = IB_AH_GRH;
 		ah_attr->grh.dgid = rec->dgid;
 
-		ret = ib_find_cached_gid(device, &rec->sgid, IB_GID_TYPE_IB,
+		ret = ib_find_cached_gid(device, &rec->sgid, rec->gid_type,
 					 rec->net, rec->ifindex, &port_num,
 					 &gid_index);
 		if (ret)
@@ -676,6 +676,7 @@ static void ib_sa_path_rec_callback(struct ib_sa_query *sa_query,
 			  mad->data, &rec);
 		rec.net = NULL;
 		rec.ifindex = 0;
+		rec.gid_type = IB_GID_TYPE_IB;
 		memset(rec.dmac, 0, ETH_ALEN);
 		query->callback(status, &rec, query->context);
 	} else
diff --git a/drivers/infiniband/core/uverbs_marshall.c b/drivers/infiniband/core/uverbs_marshall.c
index 7d2f14c..af020f8 100644
--- a/drivers/infiniband/core/uverbs_marshall.c
+++ b/drivers/infiniband/core/uverbs_marshall.c
@@ -144,5 +144,6 @@ void ib_copy_path_rec_from_user(struct ib_sa_path_rec *dst,
 	memset(dst->dmac, 0, sizeof(dst->dmac));
 	dst->net = NULL;
 	dst->ifindex = 0;
+	dst->gid_type = IB_GID_TYPE_IB;
 }
 EXPORT_SYMBOL(ib_copy_path_rec_from_user);
diff --git a/include/rdma/ib_sa.h b/include/rdma/ib_sa.h
index eea01e6..61bc231 100644
--- a/include/rdma/ib_sa.h
+++ b/include/rdma/ib_sa.h
@@ -157,6 +157,7 @@ struct ib_sa_path_rec {
 	u8           dmac[ETH_ALEN];
 	int	     ifindex;
 	struct net  *net;
+	enum ib_gid_type gid_type;
 };
 
 #define IB_SA_MCMEMBER_REC_MGID				IB_SA_COMP_MASK( 0)
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2015-02-24  8:05 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1424383365-19337-1-git-send-email-somnath.kotur@emulex.com>
     [not found] ` <1424383365-19337-1-git-send-email-somnath.kotur-laKkSmNT4hbQT0dZR+AlfA@public.gmane.org>
2015-02-19 22:02   ` [PATCH 01/30] IB/core: Add RoCE GID cache Somnath Kotur
2015-02-19 22:02   ` [PATCH 02/30] IB/core: Add kref to IB devices Somnath Kotur
     [not found]     ` <1b381c86-9f29-49a6-b7c5-9571d4490f5c-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-19 10:57       ` Haggai Eran
     [not found]         ` <54E5C1AF.4010400-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 12:34           ` Matan Barak
2015-02-19 22:02   ` [PATCH 03/30] IB/core: Add RoCE GID population Somnath Kotur
2015-02-19 22:02   ` [PATCH 04/30] IB/core: Add default GID for RoCE GID Cache Somnath Kotur
2015-02-19 22:02   ` [PATCH 05/30] IB/core: Add RoCE cache bonding support Somnath Kotur
2015-02-19 22:02   ` [PATCH 06/30] IB/core: GID attribute should be returned from verbs API and cache API Somnath Kotur
2015-02-19 22:02   ` [PATCH 07/30] IB/core: Report gid_type and gid_ndev through sysfs Somnath Kotur
2015-02-19 22:02   ` [PATCH 08/30] IB/core: Support find sgid index using a filter function Somnath Kotur
     [not found]     ` <3f9746be-8d95-429c-945e-59b0b90a17e8-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-19 12:41       ` Haggai Eran
     [not found]         ` <54E5DA0D.4020002-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 12:48           ` Matan Barak
2015-02-19 22:02   ` [PATCH 09/30] IB/core: Modify ib_verbs and cma in order to use roce_gid_cache Somnath Kotur
     [not found]     ` <f91c8ed3-f6a4-4b63-85f9-870d9687a14f-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-19 12:52       ` Haggai Eran
     [not found]         ` <54E5DC82.1090805-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 13:22           ` Matan Barak
     [not found]             ` <54E5E381.5000105-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 14:00               ` Or Gerlitz
2015-02-19 14:37       ` Haggai Eran
     [not found]         ` <54E5F51B.8020806-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 15:24           ` Matan Barak
     [not found]             ` <54E6001F.2080304-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-22  7:37               ` Haggai Eran
2015-02-19 15:03       ` Haggai Eran
     [not found]         ` <54E5FB57.1090803-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 15:31           ` Matan Barak
     [not found]             ` <54E601B6.5000705-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-22  7:41               ` Haggai Eran
2015-02-19 15:18       ` Haggai Eran
     [not found]         ` <54E5FEDD.2080001-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 15:37           ` Matan Barak
2015-02-23  5:25       ` Devesh Sharma
     [not found]         ` <de2ee483-0c24-4951-af76-87ab3499636a-3RiH6ntJJkP8BX6JNMqfyFjyZtpTMMwT@public.gmane.org>
2015-02-23 10:17           ` Matan Barak
     [not found]             ` <54EAFE26.1070202-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-23 10:32               ` Somnath Kotur
     [not found]                 ` <df21f330-cbe1-4fc9-8611-5d781f8656a2-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-23 11:03                   ` Matan Barak
2015-02-23 16:59               ` Devesh Sharma
     [not found]                 ` <61ca6b6c-4c5b-4f75-9fd1-c24d64a6223a-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-24  8:05                   ` Matan Barak
2015-02-19 22:02   ` [PATCH 10/30] IB/core: Add gid_type to path and rdma_id_private Somnath Kotur
     [not found]     ` <0ebef7be-0586-47bf-bcc4-f3ff21ca4f3b-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-19 15:51       ` Haggai Eran
     [not found]         ` <54E60695.3050907-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-02-19 15:53           ` Matan Barak
2015-02-19 22:02   ` [PATCH 11/30] IB/core: Add rdma_network_type to wc Somnath Kotur
2015-02-19 22:02   ` [PATCH 12/30] IB/cma: Add configfs for rdma_cm Somnath Kotur
2015-02-19 22:02   ` [PATCH 13/30] IB/Core: Changes to the IB Core infrastructure for RoCEv2 support Somnath Kotur
2015-02-19 22:02   ` [PATCH] RDMA/ocrdma: Changes in driver to incorporate the moving of GID Table mgmt to IB/Core Somnath Kotur
     [not found]     ` <192c6b78-c0e3-4ca5-aa83-4ce6e9eb46be-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-19  9:01       ` Shachar Raindel
     [not found]         ` <AM3PR05MB093504D988CF6E2C0CF97A40DC2D0-LOZWmgKjnYgQouBfZGh8ttqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2015-02-19  9:05           ` Somnath Kotur
2015-02-19 22:02   ` [PATCH 15/30] RDMA/ocrdma: changes to support RoCE-v2 in UD path Somnath Kotur
     [not found]     ` <7d2d787d-b849-42af-a93f-32b13ec319ba-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-21 13:13       ` Devesh Sharma
2015-02-19 22:02   ` [PATCH 16/30] RDMA/ocrdma: changes to support RoCE-v2 in RC path Somnath Kotur
2015-02-19 22:02   ` [PATCH 17/30] RDMA/ocrdma: changes to support user AH creation Somnath Kotur
2015-02-19 22:02   ` [PATCH 18/30] IB/mlx4: Remove gid table management for RoCE Somnath Kotur
     [not found]     ` <250dc054-e0c4-40b4-8855-7315489c0f58-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-22 11:41       ` Or Gerlitz
2015-02-19 22:02   ` [PATCH 19/30] IB/mlx4: Replace spin_lock with rw_semaphore Somnath Kotur
2015-02-19 22:02   ` [PATCH 20/30] IB/mlx4: Lock with RCU instead of RTNL Somnath Kotur
2015-02-19 22:02   ` [PATCH 21/30] net/mlx4: Postpone the registration of net_device Somnath Kotur
2015-02-19 22:02   ` [PATCH 22/30] IB/mlx4: Advertise RoCE support in port capabilities Somnath Kotur
2015-02-19 22:02   ` [PATCH 23/30] IB/mlx4: Implement ib_device callback - get_netdev Somnath Kotur
2015-02-19 22:02   ` [PATCH 24/30] IB/mlx4: Implement ib_device callback - modify_gid Somnath Kotur
2015-02-19 22:02   ` [PATCH 25/30] IB/mlx4: Configure device to work in RoCEv2 Somnath Kotur
2015-02-19 22:02   ` [PATCH 26/30] IB/mlx4: Translate cache gid index to real index Somnath Kotur
2015-02-19 22:02   ` [PATCH 27/30] IB/core: Initialize UD header structure with IP and UDP headers Somnath Kotur
2015-02-19 22:02   ` [PATCH 28/30] IB/mlx4: Enable send of RoCE QP1 packets with IP/UDP headers Somnath Kotur
2015-02-19 22:02   ` [PATCH 29/30] IB/mlx4: Create and use another QP1 for RoCEv2 Somnath Kotur
     [not found]     ` <7d3158cd-5b84-4f60-a705-71fca630e04a-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-19 16:11       ` Shachar Raindel
2015-02-19 22:02   ` [PATCH 30/30] IB/cma: Join and leave multicast groups with IGMP Somnath Kotur
     [not found]     ` <91da5137-4651-4991-852e-d57faeabe6a5-3RiH6ntJJkOPfaB/Gd0HpljyZtpTMMwT@public.gmane.org>
2015-02-19 13:56       ` Shachar Raindel
2015-02-19 10:20 [PATCH 10/30] IB/core: Add gid_type to path and rdma_id_private Somnath Kotur

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox