]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
winverbs: save reject private data to return to user
authorshefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 15 Jan 2009 06:56:57 +0000 (06:56 +0000)
committershefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 15 Jan 2009 06:56:57 +0000 (06:56 +0000)
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@1826 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

branches/winverbs/core/winverbs/kernel/wv_ep.c

index d426a722ec9ee99ca92d9943995445c8e8336439..6b28848e4be5f56a1bb41812e284dd09d2228544 100644 (file)
@@ -360,6 +360,15 @@ static void WvEpSaveReply(WV_ENDPOINT *pEndpoint, iba_cm_rep_event *pReply)
        pEndpoint->Attributes.Param.Connect.RnrRetryCount = pReply->rep.rnr_retry_cnt;\r
 }\r
 \r
+static void WvEpSaveReject(WV_ENDPOINT *pEndpoint, iba_cm_rej_event *pReject)\r
+{\r
+       UINT8   len;\r
+\r
+       len = sizeof(pEndpoint->Attributes.Param.Connect.Data);\r
+       RtlCopyMemory(pEndpoint->Attributes.Param.Connect.Data, pReject->p_pdata, len);\r
+       pEndpoint->Attributes.Param.Connect.DataLength = len;\r
+}\r
+\r
 static NTSTATUS WvEpIbCmHandler(iba_cm_id *pId, iba_cm_event *pEvent)\r
 {\r
        WV_ENDPOINT     *ep;\r
@@ -409,8 +418,11 @@ static NTSTATUS WvEpIbCmHandler(iba_cm_id *pId, iba_cm_event *pEvent)
                break;\r
        case iba_cm_rej_received:\r
                WdfObjectAcquireLock(ep->Queue);\r
-               ep->State = WvEpDisconnected;\r
-               WvCompleteRequests(ep->Queue, STATUS_REQUEST_NOT_ACCEPTED);\r
+               if (ep->State == WvEpPassiveConnect || ep->State == WvEpActiveConnect) {\r
+                       ep->State = WvEpDisconnected;\r
+                       WvEpSaveReject(ep, &pEvent->data.rej);\r
+                       WvCompleteRequests(ep->Queue, STATUS_REQUEST_NOT_ACCEPTED);\r
+               }\r
                WdfObjectReleaseLock(ep->Queue);\r
                break;\r
        case iba_cm_mra_received:\r