>> 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). _______________________________________________ ofw mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
