From: Sean Hefty Date: Fri, 2 Apr 2010 23:31:13 +0000 (+0000) Subject: winverbs/ep: allow failed connections to be retried X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=7d4b66389e2d3bad56d68c46ddc50e8e55ba8258;p=~shefty%2Frdma-win.git winverbs/ep: allow failed connections to be retried Allow a user to retry a connection request if it fails. Report a 'success' timeout value, rather than an error timeout, reset the EP state, and allow the request to be retried from user space. Signed-off-by: Sean Hefty git-svn-id: svn://openib.tc.cornell.edu/gen1@2761 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/trunk/core/winverbs/kernel/wv_ep.c b/trunk/core/winverbs/kernel/wv_ep.c index cb897d39..f7394dc2 100644 --- a/trunk/core/winverbs/kernel/wv_ep.c +++ b/trunk/core/winverbs/kernel/wv_ep.c @@ -504,8 +504,8 @@ static NTSTATUS WvEpIbCmHandler(iba_cm_id *pId, iba_cm_event *pEvent) case iba_cm_req_error: WdfObjectAcquireLock(ep->Queue); if (ep->State == WvEpActiveConnect) { - ep->State = WvEpDisconnected; - WvCompleteRequests(ep->Queue, STATUS_IO_TIMEOUT); + ep->State = WvEpRouteResolved; + WvCompleteRequests(ep->Queue, STATUS_TIMEOUT); } WdfObjectReleaseLock(ep->Queue); break; @@ -518,7 +518,7 @@ static NTSTATUS WvEpIbCmHandler(iba_cm_id *pId, iba_cm_event *pEvent) WdfObjectReleaseLock(ep->Queue); break; case iba_cm_dreq_error: - WvEpCompleteDisconnect(ep, STATUS_IO_TIMEOUT); + WvEpCompleteDisconnect(ep, STATUS_TIMEOUT); break; case iba_cm_rep_received: WdfObjectAcquireLock(ep->Queue); @@ -1046,6 +1046,7 @@ void WvEpDisconnect(WV_PROVIDER *pProvider, WDFREQUEST Request) } } /* Fall through to passive disconnect case on failure */ + case WvEpActiveDisconnect: case WvEpPassiveDisconnect: ep->State = WvEpDisconnected; WdfObjectReleaseLock(ep->Queue);