Bottom: fa748f1c52b43305bedd9af43719f0863bbecab5
-Top: 99fd1b0da6fbee8b9db50e535e592788c9eb9113
+Top: 387b7f5f1602203485c10762ab1e083ed5ad08f6
Author: U-AMR\MSHEFTY <MSHEFTY@mshefty-MOBL2.amr.corp.intel.com>
Date: 2010-01-06 10:08:50 -0800
---
diff --git a/trunk/core/al/kernel/al_cm.c b/trunk/core/al/kernel/al_cm.c
-index 177bb9e..1af5bb9 100644
+index 177bb9e..d22901f 100644
--- a/trunk/core/al/kernel/al_cm.c
+++ b/trunk/core/al/kernel/al_cm.c
@@ -99,36 +99,44 @@ cm_cep_handler(const ib_al_handle_t h_al, const net32_t cid)
- while (al_cep_poll(h_al, cid, &context, &new_cid, &mad) == IB_SUCCESS) {\r
-\r
- listen_id = (iba_cm_id *) context;\r
-+ status = al_cep_poll(gh_al, p_listen_id->cid, &context, &new_cid, &mad);\r
++ ib_status = al_cep_poll(gh_al, p_listen_id->cid, &context, &new_cid, &mad);\r
+ if (ib_status != IB_SUCCESS) {\r
+ return ib_to_ntstatus(ib_status);\r
+ }\r
p_ifc->send_rep = cm_send_rep;\r
p_ifc->send_rtu = cm_send_rtu;\r
diff --git a/trunk/core/winverbs/kernel/wv_ep.c b/trunk/core/winverbs/kernel/wv_ep.c
-index 3d5c6ce..3a303fe 100644
+index 3d5c6ce..874f3d1 100644
--- a/trunk/core/winverbs/kernel/wv_ep.c
+++ b/trunk/core/winverbs/kernel/wv_ep.c
@@ -1110,28 +1110,34 @@ complete:
NTSTATUS status;\r
IB_CMA_HEADER *hdr;\r
+ iba_cm_id *id;\r
-+ iba_cm_event *event;\r
++ iba_cm_event event;\r
\r
- listen = ((iba_cm_id *) pId->context)->context;\r
+ WdfObjectAcquireLock(pListen->Queue);\r
- status = WdfIoQueueRetrieveNextRequest(listen->Queue, &request);\r
+ status = IbCmInterface.CM.get_request(pListen->pIbCmId, &id, &event);\r
if (!NT_SUCCESS(status)) {\r
-+ WdfIoRequestRequeue(request);\r
++ WdfRequestRequeue(request);\r
goto release;\r
}\r
\r
if ((hdr->IpVersion >> 4) == 4) {\r
ep->Attributes.LocalAddress.SockAddr.In.SinFamily = WV_AF_INET;\r
ep->Attributes.LocalAddress.SockAddr.In.SinAddr = hdr->DstAddress.Ip4.Address;\r
-@@ -1145,27 +1151,85 @@ static NTSTATUS WvEpIbListenHandler(iba_cm_id *pId, iba_cm_event *pEvent)
+@@ -1145,25 +1151,82 @@ static NTSTATUS WvEpIbListenHandler(iba_cm_id *pId, iba_cm_event *pEvent)
RtlCopyMemory(ep->Attributes.PeerAddress.SockAddr.In6.Sin6Addr,\r
hdr->SrcAddress.Ip6Address, 16);\r
}\r
WdfRequestComplete(request, STATUS_SUCCESS);\r
release:\r
- WdfObjectReleaseLock(listen->Queue);\r
+- return status;\r
+ WdfObjectReleaseLock(pListen->Queue);\r
- return status;\r
- }\r
- \r
++}\r
++\r
+static NTSTATUS WvEpIbListenHandler(iba_cm_id *pId, iba_cm_event *pEvent)\r
+{\r
+ WV_ENDPOINT *listen;\r
+//release:\r
+// WdfObjectReleaseLock(listen->Queue);\r
+// return status;\r
-+}\r
-+\r
+ }\r
+ \r
void WvEpListen(WV_PROVIDER *pProvider, WDFREQUEST Request)\r
- {\r
- WV_ENDPOINT *ep;\r
-@@ -1235,24 +1299,24 @@ void WvEpGetRequest(WV_PROVIDER *pProvider, WDFREQUEST Request)
+@@ -1235,24 +1298,24 @@ void WvEpGetRequest(WV_PROVIDER *pProvider, WDFREQUEST Request)
status = WdfRequestRetrieveInputBuffer(Request, sizeof(WV_IO_EP_GET_REQUEST),\r
&req, NULL);\r
if (!NT_SUCCESS(status)) {\r
}\r
\r
WdfObjectAcquireLock(ep->Queue);\r
-@@ -1262,9 +1326,8 @@ void WvEpGetRequest(WV_PROVIDER *pProvider, WDFREQUEST Request)
+@@ -1262,9 +1325,8 @@ void WvEpGetRequest(WV_PROVIDER *pProvider, WDFREQUEST Request)
status = STATUS_CONNECTION_IN_USE;\r
}\r
WdfObjectReleaseLock(ep->Queue);\r
}\r
\r
WdfObjectAcquireLock(listen->Queue);\r
-@@ -1274,15 +1337,21 @@ void WvEpGetRequest(WV_PROVIDER *pProvider, WDFREQUEST Request)
+@@ -1274,15 +1336,21 @@ void WvEpGetRequest(WV_PROVIDER *pProvider, WDFREQUEST Request)
WvEpGet(ep);\r
}\r
WdfObjectReleaseLock(listen->Queue);\r
+++ /dev/null
-Bottom: 99fd1b0da6fbee8b9db50e535e592788c9eb9113
-Top: 387b7f5f1602203485c10762ab1e083ed5ad08f6
-Author: U-AMR\MSHEFTY <MSHEFTY@mshefty-MOBL2.amr.corp.intel.com>
-Date: 2010-01-06 15:52:11 -0800
-
-Refresh of cm_poll
-
----
-
-diff --git a/trunk/core/al/kernel/al_cm.c b/trunk/core/al/kernel/al_cm.c
-index 1af5bb9..d22901f 100644
---- a/trunk/core/al/kernel/al_cm.c
-+++ b/trunk/core/al/kernel/al_cm.c
-@@ -117,7 +117,7 @@ cm_get_request(iba_cm_id *p_listen_id, iba_cm_id **pp_id, iba_cm_event *p_event)
- ib_api_status_t ib_status;\r
- NTSTATUS status;\r
- \r
-- status = al_cep_poll(gh_al, p_listen_id->cid, &context, &new_cid, &mad);\r
-+ ib_status = al_cep_poll(gh_al, p_listen_id->cid, &context, &new_cid, &mad);\r
- if (ib_status != IB_SUCCESS) {\r
- return ib_to_ntstatus(ib_status);\r
- }\r
-diff --git a/trunk/core/winverbs/kernel/wv_ep.c b/trunk/core/winverbs/kernel/wv_ep.c
-index 3a303fe..874f3d1 100644
---- a/trunk/core/winverbs/kernel/wv_ep.c
-+++ b/trunk/core/winverbs/kernel/wv_ep.c
-@@ -1117,7 +1117,7 @@ static void WvEpGetIbRequest(WV_ENDPOINT *pListen)
- NTSTATUS status;\r
- IB_CMA_HEADER *hdr;\r
- iba_cm_id *id;\r
-- iba_cm_event *event;\r
-+ iba_cm_event event;\r
- \r
- WdfObjectAcquireLock(pListen->Queue);\r
- status = WdfIoQueueRetrieveNextRequest(pListen->Queue, &request);\r
-@@ -1127,7 +1127,7 @@ static void WvEpGetIbRequest(WV_ENDPOINT *pListen)
- \r
- status = IbCmInterface.CM.get_request(pListen->pIbCmId, &id, &event);\r
- if (!NT_SUCCESS(status)) {\r
-- WdfIoRequestRequeue(request);\r
-+ WdfRequestRequeue(request);\r
- goto release;\r
- }\r
- \r
-@@ -1169,7 +1169,6 @@ static void WvEpGetIbRequest(WV_ENDPOINT *pListen)
- WdfRequestComplete(request, STATUS_SUCCESS);\r
- release:\r
- WdfObjectReleaseLock(pListen->Queue);\r
-- return status;\r
- }\r
- \r
- static NTSTATUS WvEpIbListenHandler(iba_cm_id *pId, iba_cm_event *pEvent)