cm.c\r
\r
INCLUDES = ..\include;..\openib_common;..\common;windows;..\..\dat\include;\\r
- ..\..\dat\udat\windows;..\udapl\windows;\\r
+ ..\..\dat\udat\windows;..\udapl\windows;..\..\..\..\inc\user\linux;\\r
..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\libibverbs\include;\\r
..\..\..\librdmacm\include\r
\r
cm.c\r
\r
INCLUDES = ..\include;..\openib_common\;..\common;windows;..\..\dat\include;\\r
- ..\..\dat\udat\windows;..\udapl\windows;\\r
+ ..\..\dat\udat\windows;..\udapl\windows;..\..\..\..\inc\user\linux;\\r
..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\libibverbs\include\r
\r
DAPL_OPTS = -DEXPORT_DAPL_SYMBOLS -DDAT_EXTENSIONS -DSOCK_CM -DOPENIB -DCQ_WAIT_OBJECT\r
asyncwatch.rc \\r
asyncwatch.c\r
\r
-INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\r
+INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\\r
+ ..\..\..\..\inc\user\linux\r
\r
TARGETLIBS = \\r
$(SDK_LIB_PATH)\kernel32.lib \\r
rc_pingpong.rc \\r
rc_pingpong.c\r
\r
-INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\r
+INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\\r
+ ..\..\..\..\inc\user\linux\r
\r
TARGETLIBS = \\r
$(SDK_LIB_PATH)\kernel32.lib \\r
uc_pingpong.rc \\r
uc_pingpong.c\r
\r
-INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\r
+INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\\r
+ ..\..\..\..\inc\user\linux\r
\r
TARGETLIBS = \\r
$(SDK_LIB_PATH)\kernel32.lib \\r
ud_pingpong.rc \\r
ud_pingpong.c\r
\r
-INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\r
+INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\\r
+ ..\..\..\..\inc\user\linux\r
\r
TARGETLIBS = \\r
$(SDK_LIB_PATH)\kernel32.lib \\r
void ibvw_release_windata(struct ibvw_windata *windata, int version);\r
\r
__declspec(dllexport)\r
-int ibvw_errno(HRSULT hr);\r
+int ibvw_wv_errno(HRESULT hr);\r
\r
#ifdef __cplusplus\r
}\r
ibv_event_type_str\r
ibvw_get_windata\r
ibvw_release_windata\r
-ibvw_errno\r
+ibvw_wv_errno\r
#endif\r
*/\r
\r
#include <windows.h>\r
+#include <rdma/wvstatus.h>\r
+#include <_errno.h>\r
\r
extern CRITICAL_SECTION lock;\r
HANDLE heap;\r
\r
return TRUE;\r
}\r
-\r
-__declspec(dllexport)\r
-int ibvw_wv_errno(HRSULT hr)\r
-{\r
- switch (hr) {\r
- case WV_SUCCESS: return 0;\r
- case WV_PENDING: _set_errno(EINPROGRESS); break;\r
- case WV_IO_PENDING: _set_errno(EINPROGRESS); break;\r
- case WV_TIMEOUT: _set_errno(ETIMEDOUT); break;\r
- case WV_BUFFER_OVERFLOW: _set_errno(EOVERFLOW); break;\r
- case WV_DEVICE_BUSY: _set_errno(EBUSY); break;\r
- case WV_ACCESS_VIOLATION: _set_errno(EACCES); break;\r
- case WV_INVALID_HANDLE: _set_errno(EINVAL); break;\r
- case WV_INVALID_PARAMETER: _set_errno(EINVAL); break;\r
- case WV_NO_MEMORY: _set_errno(ENOMEM); break;\r
- case WV_INSUFFICIENT_RESOURCES: _set_errno(ENOSPC); break;\r
- case WV_IO_TIMEOUT: _set_errno(ETIMEDOUT); break;\r
- case WV_NOT_SUPPORTED: _set_errno(ENOSYS); break;\r
- case WV_CANCELLED: _set_errno(ECANCELED); break\r
- case WV_INVALID_ADDRESS: _set_errno(EADDRNOTAVAIL); break;\r
- case WV_ADDRESS_ALREADY_EXISTS: _set_errno(EADDRINUSE); break;\r
- case WV_CONNECTION_REFUSED: _set_errno(ECONNREFUSED); break;\r
- case WV_CONNECTION_INVALID: _set_errno(ENOTCONN); break;\r
- case WV_CONNECTION_ACTIVE: _set_errno(EISCONN); break;\r
- case WV_HOST_UNREACHABLE: _set_errno(ENETUNREACH); break;\r
- case WV_CONNECTION_ABORTED: _set_errno(ECONNABORTED); break;\r
- case WV_REMOTE_OP_ERROR: _set_errno(EREMOTEIO); break;\r
- case WV_UNKNOWN_ERROR: _set_errno(EIO); break;\r
- }\r
- return -1;\r
-}\r
\r
hr = context->cmd_if->Query(&attr);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
sprintf(device_attr->fw_ver, "0x%I64x", attr.FwVersion);\r
\r
hr = context->cmd_if->QueryPort(port_num, &attr);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
port_attr->state = (enum ibv_port_state) attr.State;\r
int ibv_query_gid(struct ibv_context *context, uint8_t port_num,\r
int index, union ibv_gid *gid)\r
{\r
- return ibvw_errno(context->cmd_if->QueryGid(port_num, index, (WV_GID *) gid));\r
+ return ibvw_wv_errno(context->cmd_if->QueryGid(port_num, index, (WV_GID *) gid));\r
}\r
\r
__declspec(dllexport)\r
int ibv_query_pkey(struct ibv_context *context, uint8_t port_num,\r
int index, uint16_t *pkey)\r
{\r
- return ibvw_errno(context->cmd_if->QueryPkey(port_num, (UINT16) index, pkey));\r
+ return ibvw_wv_errno(context->cmd_if->QueryPkey(port_num, (UINT16) index, pkey));\r
}\r
\r
__declspec(dllexport)\r
if (SUCCEEDED(hr)) {\r
delete mr;\r
}\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
__declspec(dllexport)\r
if (SUCCEEDED(hr)) {\r
cq->cqe = (int) entries;\r
}\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
__declspec(dllexport)\r
} else {\r
hr = 0;\r
}\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
__declspec(dllexport)\r
attr.srq_limit = srq_attr->srq_limit;\r
}\r
\r
- return ibvw_errno(srq->handle->Modify(attr.max_wr, attr.srq_limit));\r
+ return ibvw_wv_errno(srq->handle->Modify(attr.max_wr, attr.srq_limit));\r
}\r
\r
__declspec(dllexport)\r
(WV_SGE *) (*bad_recv_wr)->sg_list,\r
(*bad_recv_wr)->num_sge);\r
}\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
__declspec(dllexport)\r
\r
hr = srq->handle->Query(&max_wr, &max_sge, &srq_limit);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
srq_attr->max_wr = (uint32_t) max_wr;\r
\r
hr = qp->handle->Query(&wv_attr);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
/* ibv_qp exposes qp_num. Save qp_num from query. */\r
qp->state = attr->qp_state;\r
}\r
\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
__declspec(dllexport)\r
struct ibv_ah *ah;\r
\r
if ((qp->qp_type == IBV_QPT_UD) && (wr->next != NULL))\r
- return ibvw_errno(WV_NOT_SUPPORTED);\r
+ return ibvw_wv_errno(WV_NOT_SUPPORTED);\r
\r
for (cur_wr = wr; cur_wr != NULL; cur_wr = cur_wr->next) {\r
if (qp->qp_type == IBV_QPT_UD) {\r
}\r
}\r
\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
__declspec(dllexport)\r
hr = qp->handle->PostReceive((*bad_wr)->wr_id, (WV_SGE *) (*bad_wr)->sg_list,\r
(*bad_wr)->num_sge);\r
}\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
__declspec(dllexport)\r
__declspec(dllexport)\r
int ibv_attach_mcast(struct ibv_qp *qp, union ibv_gid *gid, uint16_t lid)\r
{\r
- return ibvw_errno(qp->ud_handle->AttachMulticast((WV_GID *) gid, lid, NULL));\r
+ return ibvw_wv_errno(qp->ud_handle->AttachMulticast((WV_GID *) gid, lid, NULL));\r
}\r
\r
__declspec(dllexport)\r
int ibv_detach_mcast(struct ibv_qp *qp, union ibv_gid *gid, uint16_t lid)\r
{\r
- return ibvw_errno(qp->ud_handle->DetachMulticast((WV_GID *) gid, lid, NULL));\r
+ return ibvw_wv_errno(qp->ud_handle->DetachMulticast((WV_GID *) gid, lid, NULL));\r
+}\r
+\r
+__declspec(dllexport)\r
+int ibvw_wv_errno(HRESULT hr)\r
+{\r
+ switch (hr) {\r
+ case WV_SUCCESS: return 0;\r
+ case WV_PENDING: _set_errno(EINPROGRESS); break;\r
+ case WV_IO_PENDING: _set_errno(EINPROGRESS); break;\r
+ case WV_TIMEOUT: _set_errno(ETIMEDOUT); break;\r
+ case WV_BUFFER_OVERFLOW: _set_errno(EOVERFLOW); break;\r
+ case WV_DEVICE_BUSY: _set_errno(EBUSY); break;\r
+ case WV_ACCESS_VIOLATION: _set_errno(EACCES); break;\r
+ case WV_INVALID_HANDLE: _set_errno(EINVAL); break;\r
+ case WV_INVALID_PARAMETER: _set_errno(EINVAL); break;\r
+ case WV_NO_MEMORY: _set_errno(ENOMEM); break;\r
+ case WV_INSUFFICIENT_RESOURCES: _set_errno(ENOSPC); break;\r
+ case WV_IO_TIMEOUT: _set_errno(ETIMEDOUT); break;\r
+ case WV_NOT_SUPPORTED: _set_errno(ENOSYS); break;\r
+ case WV_CANCELLED: _set_errno(ECANCELED); break;\r
+ case WV_INVALID_ADDRESS: _set_errno(EADDRNOTAVAIL); break;\r
+ case WV_ADDRESS_ALREADY_EXISTS: _set_errno(EADDRINUSE); break;\r
+ case WV_CONNECTION_REFUSED: _set_errno(ECONNREFUSED); break;\r
+ case WV_CONNECTION_INVALID: _set_errno(ENOTCONN); break;\r
+ case WV_CONNECTION_ACTIVE: _set_errno(EISCONN); break;\r
+ case WV_HOST_UNREACHABLE: _set_errno(ENETUNREACH); break;\r
+ case WV_CONNECTION_ABORTED: _set_errno(ECONNABORTED); break;\r
+ case WV_UNKNOWN_ERROR: _set_errno(EIO); break;\r
+ }\r
+ return -1;\r
}\r
\r
SOURCES = cmatose.c\r
\r
-INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;..\..\..\libibverbs\include;\r
+INCLUDES = ..;..\..\include;..\..\..\..\inc;..\..\..\..\inc\user;\\r
+ ..\..\..\libibverbs\include;..\..\..\..\inc\user\linux;\r
\r
TARGETLIBS = \\r
$(SDK_LIB_PATH)\kernel32.lib \\r
cma_main.cpp \\r
cma.cpp\r
\r
-INCLUDES = ..\include;..\..\..\inc;..\..\..\inc\user;..\..\libibverbs\include\r
+INCLUDES = ..\include;..\..\..\inc;..\..\..\inc\user;..\..\libibverbs\include;\\r
+ ..\..\..\inc\user\linux;\r
\r
USER_C_FLAGS = $(USER_C_FLAGS) -DEXPORT_CMA_SYMBOLS\r
\r
hr = windata.prov->CreateDatagramEndpoint(&id_priv->id.ep.datagram);\r
}\r
if (FAILED(hr)) {\r
- ret = ibvw_errno(hr);\r
+ ret = ibvw_wv_errno(hr);\r
goto err2;\r
}\r
\r
id_priv = CONTAINING_RECORD(id, struct cma_id_private, id);\r
hr = id->ep.connect->Query(&attr);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
RtlCopyMemory(&id->route.addr.src_addr, &attr.LocalAddress,\r
if (SUCCEEDED(hr)) {\r
ret = ucma_query_connect(id, NULL);\r
} else {\r
- ret = ibvw_errno(hr);\r
+ ret = ibvw_wv_errno(hr);\r
}\r
} else {\r
hr = id->ep.datagram->BindAddress(addr);\r
if (SUCCEEDED(hr)) {\r
ret = ucma_query_datagram(id, NULL);\r
} else {\r
- ret = ibvw_errno(hr);\r
+ ret = ibvw_wv_errno(hr);\r
}\r
}\r
\r
hr = IBAT::ResolvePath(&id->route.addr.src_addr, &id->route.addr.dst_addr,\r
&path, timeout_ms);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
hr = (id->ps == RDMA_PS_TCP) ?\r
id->ep.connect->Modify(WV_EP_OPTION_ROUTE, &path, sizeof path) :\r
id->ep.datagram->Modify(WV_EP_OPTION_ROUTE, &path, sizeof path);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
id_priv = CONTAINING_RECORD(id, struct cma_id_private, id);\r
id_priv->id.route.addr.addr.ibaddr.pkey,\r
&index);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
qp_attr.pkey_index = index;\r
id_priv->refcnt--;\r
id->comp_entry.Busy = 0;\r
id_priv->state = cma_route_resolve;\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
return 0;\r
\r
EnterCriticalSection(&lock);\r
if (listen->state != cma_listening) {\r
- ret = ibvw_errno(WV_INVALID_PARAMETER);\r
+ ret = ibvw_wv_errno(WV_INVALID_PARAMETER);\r
goto err1;\r
}\r
\r
&id_priv->id.comp_entry.Overlap);\r
}\r
if (FAILED(hr) && hr != WV_IO_PENDING) {\r
- ret = ibvw_errno(hr);\r
+ ret = ibvw_wv_errno(hr);\r
id_priv->id.comp_entry.Busy = 0;\r
id_priv->refcnt--;\r
goto err2;\r
hr = (id->ps == RDMA_PS_TCP) ?\r
id->ep.connect->Listen(backlog) : id->ep.datagram->Listen(backlog);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
for (i = 0; i < backlog; i++) {\r
id_priv->refcnt--;\r
id->comp_entry.Busy = 0;\r
id_priv->state = cma_disconnected;\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
return 0;\r
id_priv->state = cma_disconnected;\r
hr = id->ep.connect->Reject(private_data, private_data_len);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
return 0;\r
}\r
}\r
hr = id->ep.connect->Disconnect(NULL);\r
if (FAILED(hr)) {\r
- return ibvw_errno(hr);\r
+ return ibvw_wv_errno(hr);\r
}\r
\r
return 0;\r
listen = (struct cma_id_private *) id_priv->id.context;\r
if (listen->state != cma_listening) {\r
InterlockedDecrement(&id_priv->refcnt);\r
- ret = ECANCELLED;\r
+ ret = ECANCELED;\r
break;\r
}\r
\r
break;\r
default:\r
InterlockedDecrement(&id_priv->refcnt);\r
- ret = ECANCELLED;\r
+ ret = ECANCELED;\r
}\r
LeaveCriticalSection(&lock);\r
\r
id->channel = channel;\r
return 0;\r
}\r
+\r
+__declspec(dllexport)\r
+int rdmaw_wsa_errno(int wsa_err)\r
+{\r
+ switch (wsa_err) {\r
+ case 0: return 0;\r
+ case WSAEWOULDBLOCK: _set_errno(EWOULDBLOCK); break;\r
+ case WSAEINPROGRESS: _set_errno(EINPROGRESS); break;\r
+ case WSAEALREADY: _set_errno(EALREADY); break;\r
+ case WSAENOTSOCK: _set_errno(ENOTSOCK); break;\r
+ case WSAEDESTADDRREQ: _set_errno(EDESTADDRREQ); break;\r
+ case WSAEMSGSIZE: _set_errno(EMSGSIZE); break;\r
+ case WSAEPROTOTYPE: _set_errno(EPROTOTYPE); break;\r
+ case WSAENOPROTOOPT: _set_errno(ENOPROTOOPT); break;\r
+ case WSAEPROTONOSUPPORT:_set_errno(EPROTONOSUPPORT); break;\r
+ case WSAEOPNOTSUPP: _set_errno(EOPNOTSUPP); break;\r
+ case WSAEAFNOSUPPORT: _set_errno(EAFNOSUPPORT); break;\r
+ case WSAEADDRINUSE: _set_errno(EADDRINUSE); break;\r
+ case WSAEADDRNOTAVAIL: _set_errno(EADDRNOTAVAIL); break;\r
+ case WSAENETDOWN: _set_errno(ENETDOWN); break;\r
+ case WSAENETUNREACH: _set_errno(ENETUNREACH); break;\r
+ case WSAENETRESET: _set_errno(ENETRESET); break;\r
+ case WSAECONNABORTED: _set_errno(ECONNABORTED); break;\r
+ case WSAECONNRESET: _set_errno(ECONNRESET); break;\r
+ case WSAENOBUFS: _set_errno(ENOBUFS); break;\r
+ case WSAEISCONN: _set_errno(EISCONN); break;\r
+ case WSAENOTCONN: _set_errno(ENOTCONN); break;\r
+ case WSAETIMEDOUT: _set_errno(ETIMEDOUT); break;\r
+ case WSAECONNREFUSED: _set_errno(ECONNREFUSED); break;\r
+ case WSAELOOP: _set_errno(ELOOP); break;\r
+ case WSAENAMETOOLONG: _set_errno(ENAMETOOLONG); break;\r
+ case WSAEHOSTUNREACH: _set_errno(EHOSTUNREACH); break;\r
+ case WSAENOTEMPTY: _set_errno(ENOTEMPTY); break;\r
+ }\r
+ return -1;\r
+}\r
\r
return TRUE;\r
}\r
-\r
-__declspec(dllexport)\r
-int rdmaw_wsa_errno(int wsa_err)\r
-{\r
- switch (wsa_err) {\r
- case 0: return 0;\r
- case WSAEWOULDBLOCK _set_errno(EWOULDBLOCK); break;\r
- case WSAEINPROGRESS _set_errno(EINPROGRESS); break;\r
- case WSAEALREADY _set_errno(EALREADY); break;\r
- case WSAENOTSOCK _set_errno(ENOTSOCK); break;\r
- case WSAEDESTADDRREQ _set_errno(EDESTADDRREQ); break;\r
- case WSAEMSGSIZE _set_errno(EMSGSIZE); break;\r
- case WSAEPROTOTYPE _set_errno(EPROTOTYPE); break;\r
- case WSAENOPROTOOPT _set_errno(ENOPROTOOPT); break;\r
- case WSAEPROTONOSUPPORT _set_errno(EPROTONOSUPPORT); break;\r
- case WSAESOCKTNOSUPPORT _set_errno(ESOCKTNOSUPPORT); break;\r
- case WSAEOPNOTSUPP _set_errno(EOPNOTSUPP); break;\r
- case WSAEPFNOSUPPORT _set_errno(EPFNOSUPPORT); break;\r
- case WSAEAFNOSUPPORT _set_errno(EAFNOSUPPORT); break;\r
- case WSAEADDRINUSE _set_errno(EADDRINUSE); break;\r
- case WSAEADDRNOTAVAIL _set_errno(EADDRNOTAVAIL); break;\r
- case WSAENETDOWN _set_errno(ENETDOWN); break;\r
- case WSAENETUNREACH _set_errno(ENETUNREACH); break;\r
- case WSAENETRESET _set_errno(ENETRESET); break;\r
- case WSAECONNABORTED _set_errno(ECONNABORTED); break;\r
- case WSAECONNRESET _set_errno(ECONNRESET); break;\r
- case WSAENOBUFS _set_errno(ENOBUFS); break;\r
- case WSAEISCONN _set_errno(EISCONN); break;\r
- case WSAENOTCONN _set_errno(ENOTCONN); break;\r
- case WSAESHUTDOWN _set_errno(ESHUTDOWN); break;\r
- case WSAETOOMANYREFS _set_errno(ETOOMANYREFS); break;\r
- case WSAETIMEDOUT _set_errno(ETIMEDOUT); break;\r
- case WSAECONNREFUSED _set_errno(ECONNREFUSED); break;\r
- case WSAELOOP _set_errno(ELOOP); break;\r
- case WSAENAMETOOLONG _set_errno(ENAMETOOLONG); break;\r
- case WSAEHOSTDOWN _set_errno(EHOSTDOWN); break;\r
- case WSAEHOSTUNREACH _set_errno(EHOSTUNREACH); break;\r
- case WSAENOTEMPTY _set_errno(ENOTEMPTY); break;\r
- case WSAEPROCLIM _set_errno(EPROCLIM); break;\r
- case WSAEUSERS _set_errno(EUSERS); break;\r
- case WSAEDQUOT _set_errno(EDQUOT); break;\r
- case WSAESTALE _set_errno(ESTALE); break;\r
- case WSAEREMOTE _set_errno(EREMOTE); break;\r
- }\r
- return -1;\r
-}\r