From: shefty Date: Thu, 15 Jan 2009 06:56:57 +0000 (+0000) Subject: winverbs: save reject private data to return to user X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=4144a4b62e7b7a7db7ba93dbb395fdd7c8af1b99;p=~shefty%2Frdma-win.git winverbs: save reject private data to return to user Signed-off-by: Sean Hefty git-svn-id: svn://openib.tc.cornell.edu/gen1@1826 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/branches/winverbs/core/winverbs/kernel/wv_ep.c b/branches/winverbs/core/winverbs/kernel/wv_ep.c index d426a722..6b28848e 100644 --- a/branches/winverbs/core/winverbs/kernel/wv_ep.c +++ b/branches/winverbs/core/winverbs/kernel/wv_ep.c @@ -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; } +static void WvEpSaveReject(WV_ENDPOINT *pEndpoint, iba_cm_rej_event *pReject) +{ + UINT8 len; + + len = sizeof(pEndpoint->Attributes.Param.Connect.Data); + RtlCopyMemory(pEndpoint->Attributes.Param.Connect.Data, pReject->p_pdata, len); + pEndpoint->Attributes.Param.Connect.DataLength = len; +} + static NTSTATUS WvEpIbCmHandler(iba_cm_id *pId, iba_cm_event *pEvent) { WV_ENDPOINT *ep; @@ -409,8 +418,11 @@ static NTSTATUS WvEpIbCmHandler(iba_cm_id *pId, iba_cm_event *pEvent) break; case iba_cm_rej_received: WdfObjectAcquireLock(ep->Queue); - ep->State = WvEpDisconnected; - WvCompleteRequests(ep->Queue, STATUS_REQUEST_NOT_ACCEPTED); + if (ep->State == WvEpPassiveConnect || ep->State == WvEpActiveConnect) { + ep->State = WvEpDisconnected; + WvEpSaveReject(ep, &pEvent->data.rej); + WvCompleteRequests(ep->Queue, STATUS_REQUEST_NOT_ACCEPTED); + } WdfObjectReleaseLock(ep->Queue); break; case iba_cm_mra_received: