All of lore.kernel.org
 help / color / mirror / Atom feed
From: sean.hefty@intel.com
To: linux-rdma@vger.kernel.org, netdev@vger.kernel.org
Cc: Sean Hefty <sean.hefty@intel.com>
Subject: [PATCH v4 5/9] rdma/cm: Allow user to specify AF_IB when binding
Date: Tue, 22 Jan 2013 13:56:33 -0800	[thread overview]
Message-ID: <1358891797-14625-6-git-send-email-sean.hefty@intel.com> (raw)
In-Reply-To: <1358891797-14625-1-git-send-email-sean.hefty@intel.com>

From: Sean Hefty <sean.hefty@intel.com>

Modify rdma_bind_addr to allow the user to specify AF_IB when
binding to a device.  AF_IB indicates that the user is not
mapping an IP address to the native IB addressing.  (The mapping
may have already been done, or is not needed.)

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
---
 drivers/infiniband/core/cma.c |   34 ++++++++++++++++++++++++++++------
 1 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 7eed4ee..caea4ef3 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -359,6 +359,27 @@ static int find_gid_port(struct ib_device *device, union ib_gid *gid, u8 port_nu
 	return -EADDRNOTAVAIL;
 }
 
+static void cma_translate_ib(struct sockaddr_ib *sib, struct rdma_dev_addr *dev_addr)
+{
+	dev_addr->dev_type = ARPHRD_INFINIBAND;
+	rdma_addr_set_sgid(dev_addr, (union ib_gid *) &sib->sib_addr);
+	ib_addr_set_pkey(dev_addr, ntohs(sib->sib_pkey));
+}
+
+static int cma_translate_addr(struct sockaddr *addr, struct rdma_dev_addr *dev_addr)
+{
+	int ret;
+
+	if (addr->sa_family != AF_IB) {
+		ret = rdma_translate_ip(addr, dev_addr);
+	} else {
+		cma_translate_ib((struct sockaddr_ib *) addr, dev_addr);
+		ret = 0;
+	}
+
+	return ret;
+}
+
 static int cma_acquire_dev(struct rdma_id_private *id_priv)
 {
 	struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
@@ -1136,8 +1157,8 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
 		rdma_addr_set_sgid(&rt->addr.dev_addr, &rt->path_rec[0].sgid);
 		ib_addr_set_pkey(&rt->addr.dev_addr, be16_to_cpu(rt->path_rec[0].pkey));
 	} else {
-		ret = rdma_translate_ip((struct sockaddr *) &rt->addr.src_addr,
-					&rt->addr.dev_addr);
+		ret = cma_translate_addr((struct sockaddr *) &rt->addr.src_addr,
+					 &rt->addr.dev_addr);
 		if (ret)
 			goto err;
 	}
@@ -1176,8 +1197,8 @@ static struct rdma_id_private *cma_new_udp_id(struct rdma_cm_id *listen_id,
 			  ip_ver, port, src, dst);
 
 	if (!cma_any_addr((struct sockaddr *) &id->route.addr.src_addr)) {
-		ret = rdma_translate_ip((struct sockaddr *) &id->route.addr.src_addr,
-					&id->route.addr.dev_addr);
+		ret = cma_translate_addr((struct sockaddr *) &id->route.addr.src_addr,
+					 &id->route.addr.dev_addr);
 		if (ret)
 			goto err;
 	}
@@ -2454,7 +2475,8 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr)
 	struct rdma_id_private *id_priv;
 	int ret;
 
-	if (addr->sa_family != AF_INET && addr->sa_family != AF_INET6)
+	if (addr->sa_family != AF_INET && addr->sa_family != AF_INET6 &&
+	    addr->sa_family != AF_IB)
 		return -EAFNOSUPPORT;
 
 	id_priv = container_of(id, struct rdma_id_private, id);
@@ -2466,7 +2488,7 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr)
 		goto err1;
 
 	if (!cma_any_addr(addr)) {
-		ret = rdma_translate_ip(addr, &id->route.addr.dev_addr);
+		ret = cma_translate_addr(addr, &id->route.addr.dev_addr);
 		if (ret)
 			goto err1;
 
-- 
1.7.3

  parent reply	other threads:[~2013-01-22 21:56 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-22 21:56 [PATCH v4 0/9] rdma/cm: Add support for native Infiniband addressing sean.hefty-ral2JQCrhuEAvxtiuMwx3w
2013-01-22 21:56 ` [PATCH v4 3/9] ib/addr: Add AF_IB support to ip_addr_size sean.hefty
2013-01-22 21:56 ` sean.hefty [this message]
     [not found] ` <1358891797-14625-1-git-send-email-sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-01-22 21:56   ` [PATCH v4 1/9] rdma/cm: define native IB address sean.hefty-ral2JQCrhuEAvxtiuMwx3w
2013-02-11 18:02     ` Hefty, Sean
2013-02-13 12:51       ` Or Gerlitz
     [not found]       ` <1828884A29C6694DAF28B7E6B8A8237368B99D59-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-03-01  3:49         ` Hefty, Sean
     [not found]           ` <1828884A29C6694DAF28B7E6B8A823736F35600F-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-03-06 15:40             ` Qperf and APM Suresh Shelvapille
     [not found]               ` <82EBBE0B04D4427381C29144BE078F2B-+IkoAhRkys/CbFgIbBqbbjGjJy/sRE9J@public.gmane.org>
2013-03-06 18:51                 ` Luick, Dean
     [not found]                   ` <4AF12E8016D2BF46BCDFCE8FAA77A3580394D479-96pTJSsuoYQd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-03-06 18:59                     ` Suresh Shelvapille
     [not found]                       ` <58D79FF01489431AB6D87CD4977F2E45-+IkoAhRkys/CbFgIbBqbbjGjJy/sRE9J@public.gmane.org>
2013-03-06 20:56                         ` Luick, Dean
     [not found]                           ` <4AF12E8016D2BF46BCDFCE8FAA77A3580394D4FB-96pTJSsuoYQd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-03-06 22:24                             ` Suresh Shelvapille
     [not found]                               ` <8AF67C8E913E4EE49D65CABA83E3DEBF-+IkoAhRkys/CbFgIbBqbbjGjJy/sRE9J@public.gmane.org>
2013-03-13 22:25                                 ` Luick, Dean
     [not found]                                   ` <4AF12E8016D2BF46BCDFCE8FAA77A3580394F46B-96pTJSsuoYQd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-03-13 22:43                                     ` Suresh Shelvapille
2013-02-13 12:56     ` [PATCH v4 1/9] rdma/cm: define native IB address Or Gerlitz
2013-02-13 12:56       ` Or Gerlitz
2013-01-22 21:56   ` [PATCH v4 2/9] rdma/cm: Include AF_IB in loopback and any address checks sean.hefty-ral2JQCrhuEAvxtiuMwx3w
2013-01-22 21:56   ` [PATCH v4 4/9] rdma/cm: Update port reservation to support AF_IB sean.hefty-ral2JQCrhuEAvxtiuMwx3w
     [not found]     ` <1358891797-14625-5-git-send-email-sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-02-13 11:09       ` Or Gerlitz
2013-02-13 11:09         ` Or Gerlitz
     [not found]         ` <511B7474.3040201-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2013-02-13 17:44           ` Hefty, Sean
2013-02-13 18:10             ` Jason Gunthorpe
2013-02-13 18:19               ` Hefty, Sean
     [not found]                 ` <1828884A29C6694DAF28B7E6B8A8237368B9A432-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-02-13 18:26                   ` Jason Gunthorpe
2013-02-13 18:37                     ` Hefty, Sean
2013-01-22 21:56   ` [PATCH v4 6/9] rdma/cm: Do not modify sa_family when setting loopback address sean.hefty-ral2JQCrhuEAvxtiuMwx3w
2013-01-22 21:56   ` [PATCH v4 7/9] rdma/cm: Add helper functions to return id address information sean.hefty-ral2JQCrhuEAvxtiuMwx3w
2013-02-13 12:44     ` Or Gerlitz
2013-02-13 12:44       ` Or Gerlitz
2013-01-22 21:56   ` [PATCH v4 8/9] rdma/cm: Restrict AF_IB loopback to binding to IB devices only sean.hefty-ral2JQCrhuEAvxtiuMwx3w
2013-01-22 21:56   ` [PATCH v4 9/9] rdma/cm: Verify that source and dest sa_family are the same sean.hefty-ral2JQCrhuEAvxtiuMwx3w

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1358891797-14625-6-git-send-email-sean.hefty@intel.com \
    --to=sean.hefty@intel.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.