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.
winverbs: allow WV:Disconnect() to be retried
ND for some odd reason wants a successful return code for
a failed disconnect call. If a Disconnect() call fails,
allow it to be retried. Return STATUS_TIMEOUT - a 'successful'
failure, rather than STATUS_IO_TIMEOUT, which is a 'failed' failure.
(I love Windows, really, I do.) A subsequent call to EP:
Disconnect() after a timeout will force the QP into the error
state and force the EP into the disconnected state.
This change is needed to prevent ndping and other ND tests from
reporting a failure. They only allow disconnect calls to fail
'successfully' with STATUS_TIMEOUT. With the status mapping
removed from the user space WV ND library, we need to return the
desired value directly from the kernel.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2728
ad392aa1-c5ef-ae45-8dd8-
e69d62a5ef86
case iba_cm_req_error:\r
WdfObjectAcquireLock(ep->Queue);\r
if (ep->State == WvEpActiveConnect) {\r
- ep->State = WvEpDisconnected;\r
- WvCompleteRequests(ep->Queue, STATUS_IO_TIMEOUT);\r
+ ep->State = WvEpRouteResolved;\r
+ WvCompleteRequests(ep->Queue, STATUS_TIMEOUT);\r
}\r
WdfObjectReleaseLock(ep->Queue);\r
break;\r
WdfObjectReleaseLock(ep->Queue);\r
break;\r
case iba_cm_dreq_error:\r
- WvEpCompleteDisconnect(ep, STATUS_IO_TIMEOUT);\r
+ WvEpCompleteDisconnect(ep, STATUS_TIMEOUT);\r
break;\r
case iba_cm_rep_received:\r
WdfObjectAcquireLock(ep->Queue);\r
}\r
}\r
/* Fall through to passive disconnect case on failure */\r
+ case WvEpActiveDisconnect:\r
case WvEpPassiveDisconnect:\r
ep->State = WvEpDisconnected;\r
WdfObjectReleaseLock(ep->Queue);\r