On Thu, 4 Jul 2013, Rong Wang wrote: > Hi Greg, > > Thanks for your suggestion. We are trying to move to kernel-3.10. > > But I still have a question about EHCI which actually abstracts our question. > I have noticed Figure 4-14. Host Controller Queue Head Traversal State Machine > in EHCI spec. > > Simplified: > execute transaction --------------- > | | > !Active | | > | | Active (we encounter > this case, and it keeps but host controller actually receive data to > overlay and ACK device) > \|/ | > write back qTD | > | | > | | > \|/ | > follow QH horizontal pointer <-| > > The left path is normal case, but we encounter the right path and it > keeps that state. > So I wander under which case would the host controller leave Active > '1' and do not > write the overlay back to qTD, but actually it receives date and ACK the device. > and the total bytes to transfer in the overlay actually decrease. > > Could you comment on this case? I've not found a clear answer in the spec yet. This happens when the qTD contains a buffer that is longer than the endpoint's maxpacket size. After the first transaction executes, the Active bit is still set because there is still more data to receive. For example, suppose the maxpacket size is 64 bytes and the transfer size is 100 bytes. The first transaction will receive 64 bytes, and the Active bit will remain 1. Then the next transaction will receive the remaining 36 bytes, after which the Active bit will go to 0 and the overlay will be written back to the qTD. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html