On Thu, 29 Oct 2015, Peter Chen wrote: > > > [In practice it's not feasible to wait for an active QH to become > > > inactive before removing it, for several reasons. For one, the QH may > > > _never_ become inactive (if the endpoint NAKs indefinitely). For > > > another, the procedure given in the spec (deactivate the qTDs on the > > > queue) is racy, since the controller can perform a new overlay or > > > writeback at any time.] > > > > > Alan, one question, what will happen if we never remove an active QH from > async list? You mean, what would happen if the driver simply left the QH in the async list instead of removing it? There would be two consequences. First, the controller would continue to perform DMA reads of the QH. These unnecessary reads would consume both PCI (or whatever bus the controller is on) and memory bandwidth. Second, when you unlinked an active URB, the controller would not stop the transfer. It would continue even after the URB was unlinked, until the the transfer was complete, an error occurred, or the controller was shut down. Basically, it would be impossible to unlink an active URB. 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