linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/25 v2] rdma/cm: define native IB address
@ 2011-12-20 21:44 ` Hefty, Sean
       [not found]   ` <1828884A29C6694DAF28B7E6B8A8237325661ADD-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Hefty, Sean @ 2011-12-20 21:44 UTC (permalink / raw)
  To: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	Roland Dreier
  Cc: Hefty, Sean

Define AF_IB and sockaddr_ib to allow the rdma_cm to use native IB
addressing.

Signed-off-by: Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 include/linux/socket.h |    2 +
 include/rdma/ib.h      |   89 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+), 0 deletions(-)
 create mode 100644 include/rdma/ib.h

diff --git a/include/linux/socket.h b/include/linux/socket.h
index d0e77f6..c2c7687 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -184,6 +184,7 @@ struct ucred {
 #define AF_PPPOX	24	/* PPPoX sockets		*/
 #define AF_WANPIPE	25	/* Wanpipe API Sockets */
 #define AF_LLC		26	/* Linux LLC			*/
+#define AF_IB		27	/* Native InfiniBand address	*/
 #define AF_CAN		29	/* Controller Area Network      */
 #define AF_TIPC		30	/* TIPC sockets			*/
 #define AF_BLUETOOTH	31	/* Bluetooth sockets 		*/
@@ -227,6 +228,7 @@ struct ucred {
 #define PF_PPPOX	AF_PPPOX
 #define PF_WANPIPE	AF_WANPIPE
 #define PF_LLC		AF_LLC
+#define PF_IB		AF_IB
 #define PF_CAN		AF_CAN
 #define PF_TIPC		AF_TIPC
 #define PF_BLUETOOTH	AF_BLUETOOTH
diff --git a/include/rdma/ib.h b/include/rdma/ib.h
new file mode 100644
index 0000000..cf8f9e7
--- /dev/null
+++ b/include/rdma/ib.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2010 Intel Corporation.  All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#if !defined(_RDMA_IB_H)
+#define _RDMA_IB_H
+
+#include <linux/types.h>
+
+struct ib_addr {
+	union {
+		__u8		uib_addr8[16];
+		__be16		uib_addr16[8];
+		__be32		uib_addr32[4];
+		__be64		uib_addr64[2];
+	} ib_u;
+#define sib_addr8		ib_u.uib_addr8
+#define sib_addr16		ib_u.uib_addr16
+#define sib_addr32		ib_u.uib_addr32
+#define sib_addr64		ib_u.uib_addr64
+#define sib_raw			ib_u.uib_addr8
+#define sib_subnet_prefix	ib_u.uib_addr64[0]
+#define sib_interface_id	ib_u.uib_addr64[1]
+};
+
+static inline int ib_addr_any(const struct ib_addr *a)
+{
+	return ((a->sib_addr64[0] | a->sib_addr64[1]) == 0);
+}
+
+static inline int ib_addr_loopback(const struct ib_addr *a)
+{
+	return ((a->sib_addr32[0] | a->sib_addr32[1] |
+		 a->sib_addr32[2] | (a->sib_addr32[3] ^ htonl(1))) == 0);
+}
+
+static inline void ib_addr_set(struct ib_addr *addr,
+			       __be32 w1, __be32 w2, __be32 w3, __be32 w4)
+{
+	addr->sib_addr32[0] = w1;
+	addr->sib_addr32[1] = w2;
+	addr->sib_addr32[2] = w3;
+	addr->sib_addr32[3] = w4;
+}
+
+static inline int ib_addr_cmp(const struct ib_addr *a1, const struct ib_addr *a2)
+{
+	return memcmp(a1, a2, sizeof(struct ib_addr));
+}
+
+struct sockaddr_ib {
+	unsigned short int	sib_family;	/* AF_IB */
+	__be16			sib_pkey;
+	__be32			sib_flowinfo;
+	struct ib_addr		sib_addr;
+	__be64			sib_sid;
+	__be64			sib_sid_mask;
+	__u64			sib_scope_id;
+};
+
+#endif /* _RDMA_IB_H */


--
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] 6+ messages in thread

* Re: [PATCH 1/25 v2] rdma/cm: define native IB address
       [not found]   ` <1828884A29C6694DAF28B7E6B8A8237325661ADD-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2012-02-27 22:07     ` Roland Dreier
       [not found]       ` <CAL1RGDUu9sUbeWgBwivnAeXf+OWX_m5MRrizfzP4ni-FOGxiTQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Roland Dreier @ 2012-02-27 22:07 UTC (permalink / raw)
  To: Hefty, Sean
  Cc: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	netdev-u79uwXL29TY76Z2rM5mHXA, David Miller

On Tue, Dec 20, 2011 at 1:44 PM, Hefty, Sean <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
> Define AF_IB and sockaddr_ib to allow the rdma_cm to use native IB
> addressing.
>
> Signed-off-by: Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> ---
>  include/linux/socket.h |    2 +
>  include/rdma/ib.h      |   89 ++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 91 insertions(+), 0 deletions(-)
>  create mode 100644 include/rdma/ib.h
>
> diff --git a/include/linux/socket.h b/include/linux/socket.h
> index d0e77f6..c2c7687 100644
> --- a/include/linux/socket.h
> +++ b/include/linux/socket.h
> @@ -184,6 +184,7 @@ struct ucred {
>  #define AF_PPPOX       24      /* PPPoX sockets                */
>  #define AF_WANPIPE     25      /* Wanpipe API Sockets */
>  #define AF_LLC         26      /* Linux LLC                    */
> +#define AF_IB          27      /* Native InfiniBand address    */
>  #define AF_CAN         29      /* Controller Area Network      */
>  #define AF_TIPC                30      /* TIPC sockets                 */
>  #define AF_BLUETOOTH   31      /* Bluetooth sockets            */
> @@ -227,6 +228,7 @@ struct ucred {
>  #define PF_PPPOX       AF_PPPOX
>  #define PF_WANPIPE     AF_WANPIPE
>  #define PF_LLC         AF_LLC
> +#define PF_IB          AF_IB
>  #define PF_CAN         AF_CAN
>  #define PF_TIPC                AF_TIPC
>  #define PF_BLUETOOTH   AF_BLUETOOTH

Has this been run by the networking community?  Are they OK with this
assignment?

 - R.
--
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	[flat|nested] 6+ messages in thread

* RE: [PATCH 1/25 v2] rdma/cm: define native IB address
       [not found]       ` <CAL1RGDUu9sUbeWgBwivnAeXf+OWX_m5MRrizfzP4ni-FOGxiTQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2012-02-27 22:22         ` Hefty, Sean
       [not found]           ` <1828884A29C6694DAF28B7E6B8A82373374F1A64-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Hefty, Sean @ 2012-02-27 22:22 UTC (permalink / raw)
  To: Roland Dreier
  Cc: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, David Miller

> > diff --git a/include/linux/socket.h b/include/linux/socket.h
> > index d0e77f6..c2c7687 100644
> > --- a/include/linux/socket.h
> > +++ b/include/linux/socket.h
> > @@ -184,6 +184,7 @@ struct ucred {
> >  #define AF_PPPOX       24      /* PPPoX sockets                */
> >  #define AF_WANPIPE     25      /* Wanpipe API Sockets */
> >  #define AF_LLC         26      /* Linux LLC                    */
> > +#define AF_IB          27      /* Native InfiniBand address    */
> >  #define AF_CAN         29      /* Controller Area Network      */
> >  #define AF_TIPC                30      /* TIPC sockets                 */
> >  #define AF_BLUETOOTH   31      /* Bluetooth sockets            */
> > @@ -227,6 +228,7 @@ struct ucred {
> >  #define PF_PPPOX       AF_PPPOX
> >  #define PF_WANPIPE     AF_WANPIPE
> >  #define PF_LLC         AF_LLC
> > +#define PF_IB          AF_IB
> >  #define PF_CAN         AF_CAN
> >  #define PF_TIPC                AF_TIPC
> >  #define PF_BLUETOOTH   AF_BLUETOOTH
> 
> Has this been run by the networking community?  Are they OK with this
> assignment?

I did copy netdev on the original submissions, but I don't remember any explicit ack or nack.

- Sean
--
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	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/25 v2] rdma/cm: define native IB address
       [not found]           ` <1828884A29C6694DAF28B7E6B8A82373374F1A64-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2012-03-05 20:34             ` Roland Dreier
       [not found]               ` <CAL1RGDV-oYkNwQQUkAuUEHTH=HbmLk6Kv7JRnJ3XxN1DMNzLNQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Roland Dreier @ 2012-03-05 20:34 UTC (permalink / raw)
  To: Hefty, Sean, David Miller
  Cc: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

On Mon, Feb 27, 2012 at 2:22 PM, Hefty, Sean <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
>> > --- a/include/linux/socket.h
>> > +++ b/include/linux/socket.h
>> > @@ -184,6 +184,7 @@ struct ucred {
>> >  #define AF_PPPOX       24      /* PPPoX sockets                */
>> >  #define AF_WANPIPE     25      /* Wanpipe API Sockets */
>> >  #define AF_LLC         26      /* Linux LLC                    */
>> > +#define AF_IB          27      /* Native InfiniBand address    */
>> >  #define AF_CAN         29      /* Controller Area Network      */
>> >  #define AF_TIPC                30      /* TIPC sockets                 */
>> >  #define AF_BLUETOOTH   31      /* Bluetooth sockets            */
>> > @@ -227,6 +228,7 @@ struct ucred {
>> >  #define PF_PPPOX       AF_PPPOX
>> >  #define PF_WANPIPE     AF_WANPIPE
>> >  #define PF_LLC         AF_LLC
>> > +#define PF_IB          AF_IB
>> >  #define PF_CAN         AF_CAN
>> >  #define PF_TIPC                AF_TIPC
>> >  #define PF_BLUETOOTH   AF_BLUETOOTH
>>
>> Has this been run by the networking community?  Are they OK with this
>> assignment?
>
> I did copy netdev on the original submissions, but I don't remember any explicit ack or nack.

David, any feeling yay or nay about adding these?

Is the kernel the final arbiter of AF_xxx / PF_xxx assignments, or
is there anything else we have to worry about?

Thanks,
  Roland
--
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	[flat|nested] 6+ messages in thread

* RE: [PATCH 1/25 v2] rdma/cm: define native IB address
       [not found]               ` <CAL1RGDV-oYkNwQQUkAuUEHTH=HbmLk6Kv7JRnJ3XxN1DMNzLNQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2012-03-07 17:45                 ` Hefty, Sean
       [not found]                   ` <1828884A29C6694DAF28B7E6B8A823733B7669D7-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Hefty, Sean @ 2012-03-07 17:45 UTC (permalink / raw)
  To: Roland Dreier, David Miller
  Cc: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

> On Mon, Feb 27, 2012 at 2:22 PM, Hefty, Sean <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
> >> > --- a/include/linux/socket.h
> >> > +++ b/include/linux/socket.h
> >> > @@ -184,6 +184,7 @@ struct ucred {
> >> >  #define AF_PPPOX       24      /* PPPoX sockets                */
> >> >  #define AF_WANPIPE     25      /* Wanpipe API Sockets */
> >> >  #define AF_LLC         26      /* Linux LLC                    */
> >> > +#define AF_IB          27      /* Native InfiniBand address    */
> >> >  #define AF_CAN         29      /* Controller Area Network      */
> >> >  #define AF_TIPC                30      /* TIPC
> sockets                 */
> >> >  #define AF_BLUETOOTH   31      /* Bluetooth sockets            */
> >> > @@ -227,6 +228,7 @@ struct ucred {
> >> >  #define PF_PPPOX       AF_PPPOX
> >> >  #define PF_WANPIPE     AF_WANPIPE
> >> >  #define PF_LLC         AF_LLC
> >> > +#define PF_IB          AF_IB
> >> >  #define PF_CAN         AF_CAN
> >> >  #define PF_TIPC                AF_TIPC
> >> >  #define PF_BLUETOOTH   AF_BLUETOOTH
> >>
> >> Has this been run by the networking community?  Are they OK with this
> >> assignment?
> >
> > I did copy netdev on the original submissions, but I don't remember any
> explicit ack or nack.
> 
> David, any feeling yay or nay about adding these?
> 
> Is the kernel the final arbiter of AF_xxx / PF_xxx assignments, or
> is there anything else we have to worry about?

To clarify the intent of this change:

The RDMA CM allows users to specify addresses using struct sockaddr.  Today, only INET/6 are supported.  The intent is to allow a user to specify native InfiniBand addresses through that interface.  In the more immediate, this helps to solve InfiniBand scaling issues.  Longer term, this can also be used to control path failover.

- Sean
--
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	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/25 v2] rdma/cm: define native IB address
       [not found]                   ` <1828884A29C6694DAF28B7E6B8A823733B7669D7-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2012-05-31 15:53                     ` Hal Rosenstock
  0 siblings, 0 replies; 6+ messages in thread
From: Hal Rosenstock @ 2012-05-31 15:53 UTC (permalink / raw)
  To: Hefty, Sean
  Cc: Roland Dreier, David Miller,
	linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

On 3/7/2012 12:45 PM, Hefty, Sean wrote:
>> On Mon, Feb 27, 2012 at 2:22 PM, Hefty, Sean <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
>>>>> --- a/include/linux/socket.h
>>>>> +++ b/include/linux/socket.h
>>>>> @@ -184,6 +184,7 @@ struct ucred {
>>>>>  #define AF_PPPOX       24      /* PPPoX sockets                */
>>>>>  #define AF_WANPIPE     25      /* Wanpipe API Sockets */
>>>>>  #define AF_LLC         26      /* Linux LLC                    */
>>>>> +#define AF_IB          27      /* Native InfiniBand address    */
>>>>>  #define AF_CAN         29      /* Controller Area Network      */
>>>>>  #define AF_TIPC                30      /* TIPC
>> sockets                 */
>>>>>  #define AF_BLUETOOTH   31      /* Bluetooth sockets            */
>>>>> @@ -227,6 +228,7 @@ struct ucred {
>>>>>  #define PF_PPPOX       AF_PPPOX
>>>>>  #define PF_WANPIPE     AF_WANPIPE
>>>>>  #define PF_LLC         AF_LLC
>>>>> +#define PF_IB          AF_IB
>>>>>  #define PF_CAN         AF_CAN
>>>>>  #define PF_TIPC                AF_TIPC
>>>>>  #define PF_BLUETOOTH   AF_BLUETOOTH
>>>>
>>>> Has this been run by the networking community?  Are they OK with this
>>>> assignment?
>>>
>>> I did copy netdev on the original submissions, but I don't remember any
>> explicit ack or nack.
>>
>> David, any feeling yay or nay about adding these?
>>
>> Is the kernel the final arbiter of AF_xxx / PF_xxx assignments, or
>> is there anything else we have to worry about?
> 
> To clarify the intent of this change:
> 
> The RDMA CM allows users to specify addresses using struct sockaddr.  Today, only INET/6 are supported.  
> The intent is to allow a user to specify native InfiniBand addresses through that interface.  
> In the more immediate, this helps to solve InfiniBand scaling issues.

Yes, this is key for InfiniBand scaling.

> Longer term, this can also be used to control path failover.

This AF_IB patch series appears to be stalled unless I missed something
on the list. What needs to be done to revive it/move it along ?

Thanks.

-- Hal

> 
> - Sean
> --
> 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
> 

--
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	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-05-31 15:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <Acy/UbLfE8J2OYoiRYW93MzjgJGL8Q==>
2011-12-20 21:44 ` [PATCH 1/25 v2] rdma/cm: define native IB address Hefty, Sean
     [not found]   ` <1828884A29C6694DAF28B7E6B8A8237325661ADD-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2012-02-27 22:07     ` Roland Dreier
     [not found]       ` <CAL1RGDUu9sUbeWgBwivnAeXf+OWX_m5MRrizfzP4ni-FOGxiTQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-02-27 22:22         ` Hefty, Sean
     [not found]           ` <1828884A29C6694DAF28B7E6B8A82373374F1A64-P5GAC/sN6hlcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2012-03-05 20:34             ` Roland Dreier
     [not found]               ` <CAL1RGDV-oYkNwQQUkAuUEHTH=HbmLk6Kv7JRnJ3XxN1DMNzLNQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-07 17:45                 ` Hefty, Sean
     [not found]                   ` <1828884A29C6694DAF28B7E6B8A823733B7669D7-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2012-05-31 15:53                     ` Hal Rosenstock

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).