Sean Hefty [Tue, 9 Mar 2010 01:53:21 +0000 (17:53 -0800)]
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.
Sean Hefty [Tue, 9 Mar 2010 01:53:21 +0000 (17:53 -0800)]
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.
Sean Hefty [Fri, 5 Mar 2010 18:53:35 +0000 (10:53 -0800)]
winverbs/nd: do not convert wv_io_timeout to nd_timeout
wv_io_timeout is an error value, but nd_timeout is a
success value. This means that an overlapped request
can be completed in error, but GetOverlappedResult can
return a success value. Instead, if a timeout is fatal,
report the status as wv_io_timeout, but if the timeout
can be retried, then report the status as wv_timeout.
Sean Hefty [Fri, 5 Mar 2010 18:53:35 +0000 (10:53 -0800)]
winverbs/nd: do not convert wv_io_timeout to nd_timeout
wv_io_timeout is an error value, but nd_timeout is a
success value. This means that an overlapped request
can be completed in error, but GetOverlappedResult can
return a success value. Instead, if a timeout is fatal,
report the status as wv_io_timeout, but if the timeout
can be retried, then report the status as wv_timeout.
Sean Hefty [Fri, 5 Mar 2010 17:26:50 +0000 (09:26 -0800)]
winverbs/ep: allow failed connection requests 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.
Sean Hefty [Thu, 4 Mar 2010 22:54:46 +0000 (14:54 -0800)]
dapl: fix ring buffer synchronization
The dapl ring buffer implementation is not thread safe and requires
the user to provide all synchronization. Since the user must provide
synchronization, replace atomic definitions with simple ints to
improve performance and make the code more self-documenting that
no synchronization is provided.
Sean Hefty [Fri, 5 Mar 2010 18:53:35 +0000 (10:53 -0800)]
winverbs/nd: do not convert wv_io_timeout to nd_timeout
wv_io_timeout is an error value, but nd_timeout is a
success value. This means that an overlapped request
can be completed in error, but GetOverlappedResult can
return a success value. Instead, if a timeout is fatal,
report the status as wv_io_timeout, but if the timeout
can be retried, then report the status as wv_timeout.
Sean Hefty [Fri, 5 Mar 2010 18:53:35 +0000 (10:53 -0800)]
winverbs/nd: do not convert wv_io_timeout to nd_timeout
wv_io_timeout is an error value, but nd_timeout is a
success value. This means that an overlapped request
can be completed in error, but GetOverlappedResult can
return a success value. Instead, if a timeout is fatal,
report the status as wv_io_timeout, but if the timeout
can be retried, then report the status as wv_timeout.
Sean Hefty [Fri, 5 Mar 2010 17:26:50 +0000 (09:26 -0800)]
winverbs/ep: allow failed connection requests 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.