The information in this article applies to:
SYMPTOMSUnder the Universal Serial Bus (USB) Supplement for OSR 2 (OSR 2.1), it is possible that a short or aborted USB transfer for a bulk or interrupt endpoint may cause a subsequent transfer to either fail, or to discard the first data packet of the transfer. This problem is caused by a data toggle synchronization problem between the endpoint on the USB device and the driver (UHCD.SYS) for the UHCI (Universal Host Controller Interface) USB host controller. CAUSE
This problem arises because the UHCI driver computes the data toggle for an
endpoint based upon the number of transfer descriptors built for the
transfer, rather than the number of transfer descriptors actually used. If
a transfer turns out to be short or aborted, it is possible that the data
toggle state maintained by the UHCI driver will not be synchronized with
the data toggle state maintained by the USB device itself. Subsequent
attempts to transfer data on the endpoint may fail due to the incorrect
data toggle. It is also possible that a subsequent transfer request will
succeed if the USBD_SHORT_TRANSFER_OK flag is set, but will discard the
first data packet of the transfer due to the mismatched data toggle.
RESOLUTION
On all short or aborted transfers, a Windows Driver Model (WDM) driver must
reset the data toggle states maintained by both the UHCI driver and the USB
device itself. To do so, the following sequence must be followed when the
short or aborted transfer occurs:
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available. REFERENCESUniversal Serial Bus Specification, version 1.0 Additional query words: USB OSR 2.1 data toggle short transfer bulk WDM UHCI
Keywords : |
Last Reviewed: October 12, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |