60 |
60 |
61 static inline int ERR(int err) |
61 static inline int ERR(int err) |
62 diff -r -u /tmp/librdmacm-1.0.14.1/src/cma.c librdmacm-1.0.14.1/src/cma.c |
62 diff -r -u /tmp/librdmacm-1.0.14.1/src/cma.c librdmacm-1.0.14.1/src/cma.c |
63 --- /tmp/librdmacm-1.0.14.1/src/cma.c Fri Dec 10 12:05:34 2010 |
63 --- /tmp/librdmacm-1.0.14.1/src/cma.c Fri Dec 10 12:05:34 2010 |
64 +++ librdmacm-1.0.14.1/src/cma.c Mon Mar 28 16:44:55 2011 |
64 +++ librdmacm-1.0.14.1/src/cma.c Mon Mar 28 16:44:55 2011 |
65 @@ -46,12 +46,15 @@ |
65 @@ -46,12 +46,18 @@ |
66 #include <poll.h> |
66 #include <poll.h> |
67 #include <unistd.h> |
67 #include <unistd.h> |
68 #include <pthread.h> |
68 #include <pthread.h> |
69 +#if !(defined(__SVR4) && defined(__sun)) |
69 +#if defined(__SVR4) && defined(__sun) |
|
70 +#include <sys/stat.h> |
|
71 +#include <sys/mkdev.h> |
|
72 +#else |
70 #include <endian.h> |
73 #include <endian.h> |
71 #include <byteswap.h> |
74 #include <byteswap.h> |
72 +#endif |
75 +#endif |
73 #include <stddef.h> |
76 #include <stddef.h> |
74 #include <netdb.h> |
77 #include <netdb.h> |
76 #include "cma.h" |
79 #include "cma.h" |
77 +#include <infiniband/arch.h> |
80 +#include <infiniband/arch.h> |
78 #include <infiniband/driver.h> |
81 #include <infiniband/driver.h> |
79 #include <infiniband/marshall.h> |
82 #include <infiniband/marshall.h> |
80 #include <rdma/rdma_cma.h> |
83 #include <rdma/rdma_cma.h> |
81 @@ -354,9 +357,18 @@ |
84 @@ -354,9 +360,18 @@ |
82 if (!channel) |
85 if (!channel) |
83 return NULL; |
86 return NULL; |
84 |
87 |
85 +#if defined(__SVR4) && defined(__sun) |
88 +#if defined(__SVR4) && defined(__sun) |
86 + channel->fd = open("/dev/infiniband/ofs/rdma_cm", O_RDWR); |
89 + channel->fd = open("/dev/infiniband/ofs/rdma_cm", O_RDWR); |
95 printf("CMA: unable to open /dev/infiniband/rdma_cm\n"); |
98 printf("CMA: unable to open /dev/infiniband/rdma_cm\n"); |
96 +#endif |
99 +#endif |
97 goto err; |
100 goto err; |
98 } |
101 } |
99 return channel; |
102 return channel; |
100 @@ -1186,6 +1198,10 @@ |
103 @@ -1186,6 +1201,10 @@ |
101 if (ret) |
104 if (ret) |
102 return ret; |
105 return ret; |
103 |
106 |
104 +#if defined(__SVR4) && defined(__sun) |
107 +#if defined(__SVR4) && defined(__sun) |
105 + qp_init_attr->sq_sig_all |= LIB_RDMACM_QP_BIT; |
108 + qp_init_attr->sq_sig_all |= LIB_RDMACM_QP_BIT; |
106 +#endif |
109 +#endif |
107 + |
110 + |
108 qp = ibv_create_qp(pd, qp_init_attr); |
111 qp = ibv_create_qp(pd, qp_init_attr); |
109 if (!qp) { |
112 if (!qp) { |
110 ret = ERR(ENOMEM); |
113 ret = ERR(ENOMEM); |
111 @@ -1787,6 +1803,9 @@ |
114 @@ -1787,6 +1806,9 @@ |
112 |
115 |
113 CMA_CREATE_MSG_CMD(msg, cmd, UCMA_CMD_ACCEPT, size); |
116 CMA_CREATE_MSG_CMD(msg, cmd, UCMA_CMD_ACCEPT, size); |
114 cmd->id = id_priv->handle; |
117 cmd->id = id_priv->handle; |
115 +#if defined(__SVR4) && defined(__sun) |
118 +#if defined(__SVR4) && defined(__sun) |
116 + cmd->conn_param.qp_num = ((id_priv->id).qp)->qp_num; |
119 + cmd->conn_param.qp_num = ((id_priv->id).qp)->qp_num; |
117 +#endif |
120 +#endif |
118 |
121 |
119 ret = write(id_priv->id.channel->fd, msg, size); |
122 ret = write(id_priv->id.channel->fd, msg, size); |
120 if (ret != size) { |
123 if (ret != size) { |
|
124 @@ -2051,8 +2073,20 @@ |
|
125 |
|
126 CMA_CREATE_MSG_CMD_RESP(msg, cmd, resp, UCMA_CMD_MIGRATE_ID, size); |
|
127 cmd->id = id_priv->handle; |
|
128 + |
|
129 +#if !(defined(__SVR4) && defined(__sun)) |
|
130 cmd->fd = id->channel->fd; |
|
131 +#else |
|
132 + { |
|
133 + struct stat fstat_buf; |
|
134 + int rc; |
|
135 |
|
136 + if ((rc = fstat(id->channel->fd, &fstat_buf)) != 0) |
|
137 + return (ERR(ENODATA)); |
|
138 + cmd->fd = minor(fstat_buf.st_rdev); |
|
139 + } |
|
140 +#endif |
|
141 + |
|
142 ret = write(channel->fd, msg, size); |
|
143 if (ret != size) |
|
144 return (ret >= 0) ? ERR(ENODATA) : -1; |
121 diff -r -u /tmp/librdmacm-1.0.14.1/man/rdma_create_id.3 librdmacm-1.0.14.1/man/rdma_create_id.3 |
145 diff -r -u /tmp/librdmacm-1.0.14.1/man/rdma_create_id.3 librdmacm-1.0.14.1/man/rdma_create_id.3 |
122 --- /tmp/librdmacm-1.0.14.1/man/rdma_create_id.3 Mon Oct 4 17:00:18 2010 |
146 --- /tmp/librdmacm-1.0.14.1/man/rdma_create_id.3 Mon Oct 4 17:00:18 2010 |
123 +++ librdmacm-1.0.14.1/man/rdma_create_id.3 Mon Mar 28 03:11:48 2011 |
147 +++ librdmacm-1.0.14.1/man/rdma_create_id.3 Mon Mar 28 03:11:48 2011 |
124 @@ -31,9 +31,7 @@ |
148 @@ -31,9 +31,7 @@ |
125 explicitly binding to a specified RDMA device before communication |
149 explicitly binding to a specified RDMA device before communication |