components/open-fabrics/librdmacm/patches/base.patch
author Boris Chiu <boris.chiu@oracle.com>
Fri, 09 May 2014 13:24:16 -0700
changeset 1887 dc9ed1510572
parent 1022 6291fa546414
child 1951 da0722ff8ee6
permissions -rw-r--r--
18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted 18422470 modify librdmacm on solaris to avoid opening device context per hca on startup 18720315 open-fabrics needs TPNOs in pkg manifest
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     1
diff -r -u /tmp/librdmacm-1.0.14.1/configure librdmacm-1.0.14.1/configure
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     2
--- /tmp/librdmacm-1.0.14.1/configure	Tue Feb 15 17:12:14 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     3
+++ librdmacm-1.0.14.1/configure	Thu Feb 24 08:39:24 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     4
@@ -7625,6 +7625,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     5
  	esac ;;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     6
       esac
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     7
       link_all_deplibs=yes
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     8
+      hardcode_libdir_flag_spec=
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
     9
       ;;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    10
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    11
     sunos4*)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    12
diff -r -u /tmp/librdmacm-1.0.14.1/Makefile.in librdmacm-1.0.14.1/Makefile.in
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    13
--- /tmp/librdmacm-1.0.14.1/Makefile.in	Tue Feb 15 17:12:13 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    14
+++ librdmacm-1.0.14.1/Makefile.in	Mon Mar 28 16:49:13 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    15
@@ -69,7 +69,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    16
 	"$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" \
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    17
 	"$(DESTDIR)$(man7dir)" "$(DESTDIR)$(infinibandincludedir)" \
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    18
 	"$(DESTDIR)$(librdmacmincludedir)"
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    19
-libLTLIBRARIES_INSTALL = $(INSTALL)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    20
+libLTLIBRARIES_INSTALL = $(INSTALL) -m 755
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    21
 LTLIBRARIES = $(lib_LTLIBRARIES)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    22
 src_librdmacm_la_LIBADD =
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    23
 am_src_librdmacm_la_OBJECTS = src_librdmacm_la-cma.lo \
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    24
@@ -76,7 +76,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    25
 	src_librdmacm_la-addrinfo.lo src_librdmacm_la-acm.lo
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    26
 src_librdmacm_la_OBJECTS = $(am_src_librdmacm_la_OBJECTS)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    27
 am__dirstamp = $(am__leading_dot)dirstamp
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    28
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    29
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -m 755
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    30
 PROGRAMS = $(bin_PROGRAMS)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    31
 am_examples_mckey_OBJECTS = mckey.$(OBJEXT)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    32
 examples_mckey_OBJECTS = $(am_examples_mckey_OBJECTS)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    33
diff -r -u /tmp/librdmacm-1.0.14.1/src/cma.h librdmacm-1.0.14.1/src/cma.h
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    34
--- /tmp/librdmacm-1.0.14.1/src/cma.h	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    35
+++ librdmacm-1.0.14.1/src/cma.h	Fri Feb 11 04:08:57 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    36
@@ -40,8 +40,10 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    37
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    38
 #include <stdlib.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    39
 #include <errno.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    40
+#if !(defined(__SVR4) && defined(__sun))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    41
 #include <endian.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    42
 #include <byteswap.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    43
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    44
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    45
 #include <rdma/rdma_cma.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    46
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    47
@@ -58,14 +60,6 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    48
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    49
 #define PFX "librdmacm: "
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    50
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    51
-#if __BYTE_ORDER == __LITTLE_ENDIAN
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    52
-static inline uint64_t htonll(uint64_t x) { return bswap_64(x); }
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    53
-static inline uint64_t ntohll(uint64_t x) { return bswap_64(x); }
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    54
-#else
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    55
-static inline uint64_t htonll(uint64_t x) { return x; }
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    56
-static inline uint64_t ntohll(uint64_t x) { return x; }
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    57
-#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    58
-
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    59
 #define min(a, b) (a < b ? a : b)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    60
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    61
 static inline int ERR(int err)
1887
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    62
@@ -74,7 +68,7 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    63
 	return -1;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    64
 }
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    65
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    66
-int ucma_init();
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    67
+int ucma_init(void);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    68
 extern int af_ib_support;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    69
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    70
 #define RAI_ROUTEONLY		0x01000000
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    71
diff -r -u /tmp/librdmacm-1.0.14.1/src/cma.c librdmacm-1.0.14.1/src/cma.c
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    72
--- /tmp/librdmacm-1.0.14.1/src/cma.c	Fri Dec 10 12:05:34 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    73
+++ librdmacm-1.0.14.1/src/cma.c	Mon Mar 28 16:44:55 2011
1022
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
    74
@@ -46,12 +46,18 @@
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    75
 #include <poll.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    76
 #include <unistd.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    77
 #include <pthread.h>
1022
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
    78
+#if defined(__SVR4) && defined(__sun)
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
    79
+#include <sys/stat.h>
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
    80
+#include <sys/mkdev.h>
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
    81
+#else
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    82
 #include <endian.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    83
 #include <byteswap.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    84
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    85
 #include <stddef.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    86
 #include <netdb.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    87
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    88
 #include "cma.h"
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    89
+#include <infiniband/arch.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    90
 #include <infiniband/driver.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    91
 #include <infiniband/marshall.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
    92
 #include <rdma/rdma_cma.h>
1887
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    93
@@ -100,6 +106,8 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    94
 	struct ibv_pd	   *pd;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    95
 	uint64_t	    guid;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    96
 	int		    port_cnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    97
+	int		    refcnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    98
+	int		    max_qpsize;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
    99
 	uint8_t		    max_initiator_depth;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   100
 	uint8_t		    max_responder_resources;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   101
 };
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   102
@@ -143,6 +151,7 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   103
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   104
 static struct cma_device *cma_dev_array;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   105
 static int cma_dev_cnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   106
+static int cma_init_cnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   107
 static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   108
 static int abi_ver = RDMA_USER_CM_MAX_ABI_VERSION;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   109
 int af_ib_support;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   110
@@ -156,12 +165,16 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   111
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   112
 	if (cma_dev_cnt) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   113
 		while (cma_dev_cnt--) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   114
-			ibv_dealloc_pd(cma_dev_array[cma_dev_cnt].pd);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   115
+			if (!cma_dev_array[cma_dev_cnt].verbs)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   116
+				continue;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   117
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   118
+			if (cma_dev_array[cma_dev_cnt].refcnt)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   119
+				ibv_dealloc_pd(cma_dev_array[cma_dev_cnt].pd);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   120
 			ibv_close_device(cma_dev_array[cma_dev_cnt].verbs);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   121
+			cma_init_cnt--;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   122
 		}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   123
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   124
 		free(cma_dev_array);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   125
-		cma_dev_cnt = 0;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   126
 	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   127
 }
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   128
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   129
@@ -228,9 +241,7 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   130
 int ucma_init(void)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   131
 {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   132
 	struct ibv_device **dev_list = NULL;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   133
-	struct cma_device *cma_dev;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   134
-	struct ibv_device_attr attr;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   135
-	int i, ret, dev_cnt, ib;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   136
+	int i, ret, dev_cnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   137
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   138
 	/* Quick check without lock to see if we're already initialized */
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   139
 	if (cma_dev_cnt)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   140
@@ -253,46 +264,20 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   141
 		goto err1;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   142
 	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   143
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   144
-	cma_dev_array = malloc(sizeof *cma_dev * dev_cnt);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   145
+	if (!dev_cnt) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   146
+		printf("CMA: no RDMA devices found\n");
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   147
+		ret = ERR(ENODEV);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   148
+		goto err2;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   149
+	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   150
+	cma_dev_array = calloc(dev_cnt, sizeof *cma_dev_array);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   151
 	if (!cma_dev_array) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   152
 		ret = ERR(ENOMEM);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   153
 		goto err2;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   154
 	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   155
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   156
-	for (i = 0, ib = 0; dev_list[i];) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   157
-		cma_dev = &cma_dev_array[i];
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   158
+	for (i = 0; dev_list[i]; i++)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   159
+		cma_dev_array[i].guid = ibv_get_device_guid(dev_list[i]);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   160
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   161
-		cma_dev->guid = ibv_get_device_guid(dev_list[i]);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   162
-		cma_dev->verbs = ibv_open_device(dev_list[i]);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   163
-		if (!cma_dev->verbs) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   164
-			printf("CMA: unable to open RDMA device\n");
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   165
-			ret = ERR(ENODEV);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   166
-			goto err3;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   167
-		}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   168
-
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   169
-		cma_dev->pd = ibv_alloc_pd(cma_dev->verbs);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   170
-		if (!cma_dev->pd) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   171
-			ibv_close_device(cma_dev->verbs);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   172
-			ret = ERR(ENOMEM);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   173
-			goto err3;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   174
-		}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   175
-
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   176
-		i++;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   177
-		ret = ibv_query_device(cma_dev->verbs, &attr);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   178
-		if (ret) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   179
-			printf("CMA: unable to query RDMA device\n");
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   180
-			ret = ERR(ret);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   181
-			goto err3;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   182
-		}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   183
-
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   184
-		cma_dev->port_cnt = attr.phys_port_cnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   185
-		cma_dev->max_initiator_depth = (uint8_t) attr.max_qp_init_rd_atom;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   186
-		cma_dev->max_responder_resources = (uint8_t) attr.max_qp_rd_atom;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   187
-		ib += (cma_dev->verbs->device->transport_type == IBV_TRANSPORT_IB);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   188
-	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   189
-
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   190
-	if (ib)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   191
-		ucma_ib_init();
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   192
 	cma_dev_cnt = dev_cnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   193
 	ucma_set_af_ib_support();
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   194
 	pthread_mutex_unlock(&mut);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   195
@@ -299,12 +284,6 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   196
 	ibv_free_device_list(dev_list);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   197
 	return 0;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   198
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   199
-err3:
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   200
-	while (i--) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   201
-		ibv_dealloc_pd(cma_dev_array[i].pd);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   202
-		ibv_close_device(cma_dev_array[i].verbs);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   203
-	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   204
-	free(cma_dev_array);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   205
 err2:
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   206
 	ibv_free_device_list(dev_list);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   207
 err1:
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   208
@@ -312,12 +291,93 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   209
 	return ret;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   210
 }
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   211
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   212
+static struct ibv_context *ucma_open_device(uint64_t guid)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   213
+{
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   214
+	struct ibv_device **dev_list;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   215
+	struct ibv_context *verbs = NULL;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   216
+	int i;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   217
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   218
+	dev_list = ibv_get_device_list(NULL);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   219
+	if (!dev_list) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   220
+		fprintf(stderr, PFX "Fatal: unable to get RDMA device list\n");
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   221
+		return NULL;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   222
+	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   223
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   224
+	for (i = 0; dev_list[i]; i++) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   225
+		if (ibv_get_device_guid(dev_list[i]) == guid) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   226
+			verbs = ibv_open_device(dev_list[i]);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   227
+			break;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   228
+		}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   229
+	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   230
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   231
+	if (!verbs)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   232
+		fprintf(stderr, PFX "Fatal: unable to open RDMA device\n");
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   233
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   234
+	ibv_free_device_list(dev_list);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   235
+	return verbs;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   236
+}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   237
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   238
+static int ucma_init_device(struct cma_device *cma_dev)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   239
+{
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   240
+	struct ibv_device_attr attr;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   241
+	int ret;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   242
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   243
+	if (cma_dev->verbs)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   244
+		return 0;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   245
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   246
+	cma_dev->verbs = ucma_open_device(cma_dev->guid);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   247
+	if (!cma_dev->verbs)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   248
+		return ERR(ENODEV);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   249
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   250
+	ret = ibv_query_device(cma_dev->verbs, &attr);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   251
+	if (ret) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   252
+		fprintf(stderr, PFX "Fatal: unable to query RDMA device\n");
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   253
+		ret = ERR(ret);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   254
+		goto err;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   255
+	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   256
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   257
+	cma_dev->port_cnt = attr.phys_port_cnt;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   258
+	cma_dev->max_qpsize = attr.max_qp_wr;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   259
+	cma_dev->max_initiator_depth = (uint8_t) attr.max_qp_init_rd_atom;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   260
+	cma_dev->max_responder_resources = (uint8_t) attr.max_qp_rd_atom;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   261
+	cma_init_cnt++;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   262
+	return 0;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   263
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   264
+err:
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   265
+	ibv_close_device(cma_dev->verbs);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   266
+	cma_dev->verbs = NULL;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   267
+	return ret;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   268
+}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   269
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   270
+static int ucma_init_all(void)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   271
+{
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   272
+	int i, ret = 0;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   273
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   274
+	if (!cma_dev_cnt) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   275
+		ret = ucma_init();
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   276
+		if (ret)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   277
+			return ret;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   278
+	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   279
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   280
+	if (cma_init_cnt == cma_dev_cnt)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   281
+		return 0;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   282
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   283
+	pthread_mutex_lock(&mut);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   284
+	for (i = 0; i < cma_dev_cnt; i++) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   285
+		ret = ucma_init_device(&cma_dev_array[i]);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   286
+		if (ret)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   287
+			break;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   288
+	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   289
+	pthread_mutex_unlock(&mut);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   290
+	return ret;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   291
+}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   292
+
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   293
 struct ibv_context **rdma_get_devices(int *num_devices)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   294
 {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   295
 	struct ibv_context **devs = NULL;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   296
 	int i;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   297
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   298
-	if (ucma_init())
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   299
+	if (ucma_init_all())
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   300
 		goto out;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   301
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   302
 	devs = malloc(sizeof *devs * (cma_dev_cnt + 1));
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   303
@@ -354,9 +414,18 @@
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   304
 	if (!channel)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   305
 		return NULL;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   306
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   307
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   308
+	channel->fd = open("/dev/infiniband/ofs/rdma_cm", O_RDWR);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   309
+#else
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   310
 	channel->fd = open("/dev/infiniband/rdma_cm", O_RDWR);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   311
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   312
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   313
 	if (channel->fd < 0) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   314
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   315
+		printf("CMA: unable to open /dev/infiniband/ofs/rdma_cm\n");
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   316
+#else
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   317
 		printf("CMA: unable to open /dev/infiniband/rdma_cm\n");
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   318
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   319
 		goto err;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   320
 	}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   321
 	return channel;
1887
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   322
@@ -374,18 +443,33 @@
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   323
 static int ucma_get_device(struct cma_id_private *id_priv, uint64_t guid)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   324
 {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   325
 	struct cma_device *cma_dev;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   326
-	int i;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   327
+	int i, ret;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   328
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   329
 	for (i = 0; i < cma_dev_cnt; i++) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   330
 		cma_dev = &cma_dev_array[i];
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   331
-		if (cma_dev->guid == guid) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   332
-			id_priv->cma_dev = cma_dev;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   333
-			id_priv->id.verbs = cma_dev->verbs;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   334
-			return 0;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   335
-		}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   336
+		if (cma_dev->guid == guid)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   337
+			goto match;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   338
 	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   339
-
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   340
+ 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   341
 	return ERR(ENODEV);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   342
+match:
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   343
+	pthread_mutex_lock(&mut);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   344
+	if ((ret = ucma_init_device(cma_dev)))
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   345
+		goto out;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   346
+ 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   347
+	if (!cma_dev->refcnt++) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   348
+		cma_dev->pd = ibv_alloc_pd(cma_dev->verbs);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   349
+		if (!cma_dev->pd) {
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   350
+			cma_dev->refcnt--;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   351
+			ret = ERR(ENOMEM);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   352
+			goto out;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   353
+		}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   354
+	}
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   355
+	id_priv->cma_dev = cma_dev;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   356
+	id_priv->id.verbs = cma_dev->verbs;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   357
+out:
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   358
+	pthread_mutex_unlock(&mut);
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   359
+	return ret;
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   360
 }
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   361
 
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   362
 static void ucma_free_id(struct cma_id_private *id_priv)
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   363
@@ -1186,6 +1270,10 @@
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   364
 	if (ret)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   365
 		return ret;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   366
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   367
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   368
+	qp_init_attr->sq_sig_all |= LIB_RDMACM_QP_BIT;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   369
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   370
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   371
 	qp = ibv_create_qp(pd, qp_init_attr);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   372
 	if (!qp) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   373
 		ret = ERR(ENOMEM);
1887
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   374
@@ -1787,6 +1875,9 @@
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   375
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   376
 	CMA_CREATE_MSG_CMD(msg, cmd, UCMA_CMD_ACCEPT, size);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   377
 	cmd->id = id_priv->handle;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   378
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   379
+	cmd->conn_param.qp_num = ((id_priv->id).qp)->qp_num;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   380
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   381
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   382
 	ret = write(id_priv->id.channel->fd, msg, size);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   383
 	if (ret != size) {
1887
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   384
@@ -2051,8 +2142,20 @@
1022
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   385
 
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   386
 	CMA_CREATE_MSG_CMD_RESP(msg, cmd, resp, UCMA_CMD_MIGRATE_ID, size);
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   387
 	cmd->id = id_priv->handle;
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   388
+
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   389
+#if !(defined(__SVR4) && defined(__sun))
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   390
 	cmd->fd = id->channel->fd;
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   391
+#else
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   392
+	{
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   393
+		struct stat	fstat_buf;
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   394
+		int		rc;
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   395
 
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   396
+		if ((rc = fstat(id->channel->fd, &fstat_buf)) != 0)
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   397
+			return (ERR(ENODATA));
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   398
+		cmd->fd = minor(fstat_buf.st_rdev);
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   399
+	}
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   400
+#endif
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   401
+
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   402
 	ret = write(channel->fd, msg, size);
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   403
 	if (ret != size)
6291fa546414 7204356 rdma_migrate_id() returns failure in ucmatose (userland changes)
Johnny Cheung <johnny.cheung@oracle.com>
parents: 369
diff changeset
   404
 		return (ret >= 0) ? ERR(ENODATA) : -1;
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   405
diff -r -u /tmp/librdmacm-1.0.14.1/man/rdma_create_id.3 librdmacm-1.0.14.1/man/rdma_create_id.3
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   406
--- /tmp/librdmacm-1.0.14.1/man/rdma_create_id.3	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   407
+++ librdmacm-1.0.14.1/man/rdma_create_id.3	Mon Mar 28 03:11:48 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   408
@@ -31,9 +31,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   409
 explicitly binding to a specified RDMA device before communication
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   410
 can occur, and most operations are asynchronous in nature.  Asynchronous
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   411
 communication events on an rdma_cm_id are reported through the associated
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   412
-event channel.  If the channel parameter is NULL, the rdma_cm_id will
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   413
-be placed into synchronous operation.  While operating synchronously,
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   414
-calls that result in an event will block until the operation completes.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   415
+event channel.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   416
 The event will be returned to the user through the rdma_cm_id structure,
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   417
 and be available for access until another rdma_cm call is made.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   418
 .P
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   419
diff -r -u /tmp/librdmacm-1.0.14.1/man/rdma_create_qp.3 librdmacm-1.0.14.1/man/rdma_create_qp.3
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   420
--- /tmp/librdmacm-1.0.14.1/man/rdma_create_qp.3	Fri Dec 10 12:05:34 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   421
+++ librdmacm-1.0.14.1/man/rdma_create_qp.3	Mon Mar 28 03:11:48 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   422
@@ -33,8 +33,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   423
 the rdma_cm_id will be created using a default protection domain.  One
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   424
 default protection domain is allocated per RDMA device.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   425
 .P
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   426
-The initial QP attributes are specified by the qp_init_attr parameter.  The
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   427
-send_cq and recv_cq fields in the ibv_qp_init_attr are optional.  If
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   428
+The initial QP attributes are specified by the qp_init_attr parameter.  If
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   429
 a send or receive completion queue is not specified, then a CQ will be
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   430
 allocated by the rdma_cm for the QP, along with corresponding completion
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   431
 channels.  Completion channels and CQ data created by the rdma_cm are
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   432
diff -r -u /tmp/librdmacm-1.0.14.1/man/rdma_cm.7 librdmacm-1.0.14.1/man/rdma_cm.7
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   433
--- /tmp/librdmacm-1.0.14.1/man/rdma_cm.7	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   434
+++ librdmacm-1.0.14.1/man/rdma_cm.7	Mon Mar 28 03:11:47 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   435
@@ -19,7 +19,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   436
 API defined by the libibverbs library.  The libibverbs library provides the
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   437
 underlying interfaces needed to send and receive data.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   438
 .P
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   439
-The RDMA CM can operate asynchronously or synchronously.  The mode of
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   440
+The RDMA CM operates asynchronously.  The mode of
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   441
 operation is controlled by the user through the use of the rdma_cm event channel
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   442
 parameter in specific calls.  If an event channel is provided, an rdma_cm identifier
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   443
 will report its event data (results of connecting, for example), on that channel.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   444
@@ -63,12 +63,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   445
 .SH "CLIENT OPERATION"
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   446
 This section provides a general overview of the basic operation for the active,
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   447
 or client, side of communication.  This flow assume asynchronous operation with
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   448
-low level call details shown.  For
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   449
-synchronous operation, calls to rdma_create_event_channel, rdma_get_cm_event,
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   450
-rdma_ack_cm_event, and rdma_destroy_event_channel
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   451
-would be eliminated.  Abstracted calls, such as rdma_create_ep encapsulate
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   452
-serveral of these calls under a single API.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   453
-Users may also refer to the example applications for
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   454
+low level call details shown.  Users may also refer to the example applications for
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   455
 code samples.  A general connection flow would be:
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   456
 .IP rdma_getaddrinfo
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   457
 retrieve address information of the destination
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   458
@@ -178,12 +173,9 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   459
 rdma_ack_cm_event(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   460
 rdma_bind_addr(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   461
 rdma_connect(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   462
-rdma_create_ep(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   463
 rdma_create_event_channel(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   464
 rdma_create_id(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   465
 rdma_create_qp(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   466
-rdma_dereg_mr(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   467
-rdma_destroy_ep(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   468
 rdma_destroy_event_channel(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   469
 rdma_destroy_id(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   470
 rdma_destroy_qp(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   471
@@ -196,27 +188,11 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   472
 rdma_get_dst_port(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   473
 rdma_get_local_addr(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   474
 rdma_get_peer_addr(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   475
-rdma_get_recv_comp(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   476
-rdma_get_request(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   477
-rdma_get_send_comp(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   478
 rdma_get_src_port(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   479
 rdma_join_multicast(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   480
 rdma_leave_multicast(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   481
 rdma_listen(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   482
-rdma_migrate_id(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   483
 rdma_notify(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   484
-rdma_post_read(3)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   485
-rdma_post_readv(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   486
-rdma_post_recv(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   487
-rdma_post_recvv(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   488
-rdma_post_send(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   489
-rdma_post_sendv(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   490
-rdma_post_ud_send(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   491
-rdma_post_write(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   492
-rdma_post_writev(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   493
-rdma_reg_msgs(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   494
-rdma_reg_read(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   495
-rdma_reg_write(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   496
 rdma_reject(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   497
 rdma_resolve_addr(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   498
 rdma_resolve_route(3),
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   499
diff -r -u /tmp/librdmacm-1.0.14.1/include/infiniband/ib.h librdmacm-1.0.14.1/include/infiniband/ib.h
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   500
--- /tmp/librdmacm-1.0.14.1/include/infiniband/ib.h	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   501
+++ librdmacm-1.0.14.1/include/infiniband/ib.h	Fri Feb 11 04:08:56 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   502
@@ -33,7 +33,11 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   503
 #if !defined(_RDMA_IB_H)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   504
 #define _RDMA_IB_H
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   505
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   506
+#if !(defined(__SVR4) && defined(__sun))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   507
 #include <linux/types.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   508
+#else
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   509
+#include <infiniband/ofa_solaris.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   510
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   511
 #include <string.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   512
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   513
 #ifndef AF_IB
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   514
diff -r -u /tmp/librdmacm-1.0.14.1/include/rdma/rdma_cma_abi.h librdmacm-1.0.14.1/include/rdma/rdma_cma_abi.h
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   515
--- /tmp/librdmacm-1.0.14.1/include/rdma/rdma_cma_abi.h	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   516
+++ librdmacm-1.0.14.1/include/rdma/rdma_cma_abi.h	Fri Feb 11 04:08:48 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   517
@@ -104,6 +104,9 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   518
 	__u64 response;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   519
 	struct sockaddr_in6 addr;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   520
 	__u32 id;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   521
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   522
+	uint32_t	reserved;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   523
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   524
 };
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   525
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   526
 struct ucma_abi_bind {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   527
@@ -243,6 +246,9 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   528
 	__u64 uid;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   529
 	struct sockaddr_in6 addr;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   530
 	__u32 id;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   531
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   532
+	uint32_t	reserved;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   533
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   534
 };
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   535
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   536
 struct ucma_abi_join_mcast {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   537
diff -r -u /tmp/librdmacm-1.0.14.1/examples/udaddy.c librdmacm-1.0.14.1/examples/udaddy.c
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   538
--- /tmp/librdmacm-1.0.14.1/examples/udaddy.c	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   539
+++ librdmacm-1.0.14.1/examples/udaddy.c	Fri Feb 11 04:08:48 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   540
@@ -40,7 +40,9 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   541
 #include <netinet/in.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   542
 #include <sys/socket.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   543
 #include <netdb.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   544
+#if !(defined(__SVR4) && defined(__sun))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   545
 #include <byteswap.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   546
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   547
 #include <getopt.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   548
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   549
 #include <rdma/rdma_cma.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   550
diff -r -u /tmp/librdmacm-1.0.14.1/examples/mckey.c librdmacm-1.0.14.1/examples/mckey.c
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   551
--- /tmp/librdmacm-1.0.14.1/examples/mckey.c	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   552
+++ librdmacm-1.0.14.1/examples/mckey.c	Fri Feb 11 04:08:48 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   553
@@ -41,7 +41,9 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   554
 #include <arpa/inet.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   555
 #include <sys/socket.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   556
 #include <netdb.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   557
+#if !(defined(__SVR4) && defined(__sun))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   558
 #include <byteswap.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   559
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   560
 #include <unistd.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   561
 #include <getopt.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   562
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   563
@@ -329,6 +331,16 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   564
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   565
 	while (1) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   566
 		ret = rdma_get_cm_event(test.channel, &event);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   567
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   568
+/* 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   569
+ * Solaris returns EBADF if we close the channel while we're waiting
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   570
+ * for any events to occur. It is safe to ignore EBADF here.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   571
+ */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   572
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   573
+		if (ret && (errno == EBADF))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   574
+			break;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   575
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   576
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   577
 		if (ret) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   578
 			perror("rdma_get_cm_event");
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   579
 			break;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   580
@@ -461,6 +473,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   581
 	return ret;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   582
 }
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   583
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   584
+#if !(defined(__SVR4) && defined(__sun))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   585
 static int get_dst_addr(char *dst, struct sockaddr *addr)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   586
 {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   587
 	struct sockaddr_ib *sib;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   588
@@ -474,6 +487,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   589
 	inet_pton(AF_INET6, dst, &sib->sib_addr);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   590
 	return 0;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   591
 }
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   592
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   593
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   594
 static int run(void)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   595
 {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   596
@@ -486,7 +500,12 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   597
 			return ret;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   598
 	}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   599
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   600
+/* Solaris does not yet support family AF_IB */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   601
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   602
+	ret = get_addr(dst_addr, (struct sockaddr *) &test.dst_in);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   603
+#else
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   604
 	ret = get_dst_addr(dst_addr, (struct sockaddr *) &test.dst_in);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   605
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   606
 	if (ret)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   607
 		return ret;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   608
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   609
diff -r -u /tmp/librdmacm-1.0.14.1/examples/cmatose.c librdmacm-1.0.14.1/examples/cmatose.c
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   610
--- /tmp/librdmacm-1.0.14.1/examples/cmatose.c	Mon Oct  4 17:00:18 2010
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   611
+++ librdmacm-1.0.14.1/examples/cmatose.c	Fri Feb 11 04:08:48 2011
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   612
@@ -40,7 +40,9 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   613
 #include <netinet/in.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   614
 #include <sys/socket.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   615
 #include <netdb.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   616
+#if !(defined(__SVR4) && defined(__sun))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   617
 #include <byteswap.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   618
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   619
 #include <getopt.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   620
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   621
 #include <rdma/rdma_cma.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   622
diff -r -u /tmp/librdmacm-1.0.14.1/examples/rping.c librdmacm-1.0.14.1/examples/rping.c
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   623
--- /tmp/librdmacm-1.0.14.1/examples/rping.c	Tue Feb 15 17:10:48 2011
1887
dc9ed1510572 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted
Boris Chiu <boris.chiu@oracle.com>
parents: 1022
diff changeset
   624
+++ librdmacm-1.0.14.1/examples/rping.c	Wed Apr 23 10:37:57 2014
369
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   625
@@ -40,11 +40,17 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   626
 #include <netinet/in.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   627
 #include <sys/socket.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   628
 #include <netdb.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   629
+#if !(defined(__SVR4) && defined(__sun))
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   630
 #include <byteswap.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   631
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   632
 #include <semaphore.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   633
 #include <arpa/inet.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   634
 #include <pthread.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   635
 #include <inttypes.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   636
+#if defined(__SVR4) && defined(__sun)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   637
+#include <unistd.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   638
+#include <libgen.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   639
+#endif
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   640
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   641
 #include <rdma/rdma_cma.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   642
 #include <infiniband/arch.h>
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   643
@@ -85,6 +91,13 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   644
 	ERROR
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   645
 };
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   646
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   647
+enum disconnect_state {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   648
+	DISCONNECT_NONE,
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   649
+	CALLING_DISCONNECT = 1,
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   650
+	DISCONNECT_CALLED,
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   651
+	DISCONNECT_DONE
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   652
+};
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   653
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   654
 struct rping_rdma_info {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   655
 	uint64_t buf;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   656
 	uint32_t rkey;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   657
@@ -143,6 +156,9 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   658
 	enum test_state state;		/* used for cond/signalling */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   659
 	sem_t sem;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   660
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   661
+	enum disconnect_state  dis_state;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   662
+	sem_t dis_sem;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   663
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   664
 	struct sockaddr_storage sin;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   665
 	uint16_t port;			/* dst port in NBO */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   666
 	int verbose;			/* verbose logging */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   667
@@ -218,6 +234,8 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   668
 		fprintf(stderr, "%s DISCONNECT EVENT...\n",
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   669
 			cb->server ? "server" : "client");
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   670
 		sem_post(&cb->sem);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   671
+		cb->dis_state = DISCONNECT_DONE;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   672
+		sem_post(&cb->dis_sem);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   673
 		break;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   674
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   675
 	case RDMA_CM_EVENT_DEVICE_REMOVAL:
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   676
@@ -285,6 +303,29 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   677
 					"cq completion failed status %d\n",
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   678
 					wc.status);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   679
 				ret = -1;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   680
+			} else {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   681
+				/*
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   682
+				 * FLUSH Error can be polled before RDMA-CM
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   683
+				 * DISCONNECT is notified. Ensure that cb_state
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   684
+				 * is set appropriately in such a case.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   685
+				 * sleep for sometime if Disconnect has not
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   686
+				 * been called. The FLUSH WR can be because
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   687
+				 * the remote end initiated the disconnect.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   688
+				 */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   689
+				if (cb->dis_state == DISCONNECT_NONE)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   690
+					sleep(2);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   691
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   692
+				if (cb->dis_state == DISCONNECT_DONE)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   693
+					return (0);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   694
+
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   695
+				/* Wait if disconnect is called. */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   696
+				if (cb->dis_state == DISCONNECT_CALLED) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   697
+					sem_wait(&cb->dis_sem);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   698
+					if (cb->dis_state == DISCONNECT_DONE)
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   699
+						return (0);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   700
+					else
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   701
+						goto error;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   702
+				}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   703
 			}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   704
 			goto error;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   705
 		}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   706
@@ -571,9 +612,15 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   707
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   708
 	while (1) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   709
 		ret = rdma_get_cm_event(cb->cm_channel, &event);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   710
-		if (ret) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   711
+		/*
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   712
+		 * If the retry of read() syscall returned EBADF, as the
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   713
+		 * file was closed on process exit. Ignore this error.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   714
+		 */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   715
+		if (ret && errno != EBADF) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   716
 			perror("rdma_get_cm_event");
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   717
 			exit(ret);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   718
+		} else if (ret && errno == EBADF) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   719
+			exit(0);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   720
 		}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   721
 		ret = rping_cma_event_handler(event->id, event);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   722
 		rdma_ack_cm_event(event);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   723
@@ -595,8 +642,14 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   724
 		pthread_testcancel();
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   725
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   726
 		ret = ibv_get_cq_event(cb->channel, &ev_cq, &ev_ctx);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   727
-		if (ret) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   728
+		/*
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   729
+		 * If the retry of write() syscall returned EBADF, as the
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   730
+		 * file was closed on process exit. Ignore this error.
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   731
+		 */
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   732
+		if (ret && errno != EBADF) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   733
 			fprintf(stderr, "Failed to get cq event!\n");
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   734
+			 pthread_exit(NULL);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   735
+		} else if (ret && errno == EBADF) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   736
 			pthread_exit(NULL);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   737
 		}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   738
 		if (ev_cq != cb->cq) {
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   739
@@ -801,11 +854,13 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   740
 	}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   741
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   742
 	rping_test_server(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   743
+	cb->dis_state = CALLING_DISCONNECT;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   744
+	sem_post(&cb->dis_sem);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   745
 	rdma_disconnect(cb->child_cm_id);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   746
-	rping_free_buffers(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   747
-	rping_free_qp(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   748
 	pthread_cancel(cb->cqthread);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   749
 	pthread_join(cb->cqthread, NULL);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   750
+	rping_free_buffers(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   751
+	rping_free_qp(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   752
 	rdma_destroy_id(cb->child_cm_id);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   753
 	free_cb(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   754
 	return NULL;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   755
@@ -889,6 +944,8 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   756
 	}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   757
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   758
 	rping_test_server(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   759
+	cb->dis_state = CALLING_DISCONNECT;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   760
+	sem_post(&cb->dis_sem);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   761
 	rdma_disconnect(cb->child_cm_id);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   762
 	rdma_destroy_id(cb->child_cm_id);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   763
 err2:
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   764
@@ -1056,6 +1113,8 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   765
 	}
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   766
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   767
 	rping_test_client(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   768
+	cb->dis_state = CALLING_DISCONNECT;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   769
+	sem_post(&cb->dis_sem);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   770
 	rdma_disconnect(cb->cm_id);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   771
 err2:
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   772
 	rping_free_buffers(cb);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   773
@@ -1123,6 +1182,7 @@
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   774
 	cb->sin.ss_family = PF_INET;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   775
 	cb->port = htons(7174);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   776
 	sem_init(&cb->sem, 0, 0);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   777
+	sem_init(&cb->dis_sem, 0, 0);
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   778
 
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   779
 	opterr = 0;
cc8c00719da9 PSARC 2011/165 OFUV update of existing components
Boris Chiu <Boris.Chiu@Sun.COM>
parents:
diff changeset
   780
 	while ((op=getopt(argc, argv, "a:Pp:C:S:t:scvVd")) != -1) {