When performing Asynchronous transfers at a high rate to or from a device connected to an IEEE 1394 bus, if the Microsoft 1394 stack does not receive a response to a pending Asynchronous request, the expected behavior would be for the Asynchronous request that did not receive a valid response to time out and complete with a STATUS_IO_TIMEOUT status.

However, under these conditions, the Microsoft 1394 stack may incorrectly match Asynchronous Response packets to the wrong Asynchronous Request. This results in the incorrect status and/or data being returned for Asynchronous Requests. This incorrect matching of Asynchronous Responses to Asynchronous Requests may be repeated for a number of submitted Asynchronous Requests, while the high rate of Asynchronous transfers continues.

After the rate of Asynchronous transfers is reduced, an Asynchronous Request will eventually time out, since the Response that actually matched the Request was incorrectly matched to a previous Asynchronous Request. However, when this problem occurs, the Asynchronous Request that eventually times out is not the one for which a Response was not received. The original Asynchronous Request that did not receive a response was already completed with possibly erroneous status and/or data from a different Response.

Leave a Reply