[ofw] [WOF2-2] [PATCH v2 4/4] winverbs: allow WV:Disconnect() to be retried

Sean Hefty sean.hefty at intel.com
Wed Mar 10 07:53:08 PST 2010


>> 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.
>
>In my experience all the ioctls should be returned as SUCCESS (or pending). In
>the returned buffer have a variable that is the real status. This will allow
>you to pass data from the kernel to the user without having to deal with
>windows way of reporting errors ...

This is referring to the status of the completed IRP.  The disconnect IOCTL
itself usually returns status pending, which is a 'failed' status, gurgle...
The status_timeout or status_io_timeout is what gets reported to the user for
the overlapped structure, which the user can check without calling into the ND
provider library.

In the case of ndping, it expects and checks for status_timeout.  If it sees
status_io_timeout, it reports an error on the test.  I tried to map the status
values in the winverbs ND library, and that works for ndping, but it apparently
breaks MS-MPI, which can't handle an overlapped operation completing with a
'failed' status (status_io_timeout), but ND:GetOverlappedResult reporting a
'success' status (status_timeout).




More information about the ofw mailing list