On Thu, 23 Jul 2009, Alan Stern wrote: > The case you just raised shows that rescanning has to be implemented in > qh_completions(), not scan_async(). This is because a halted QH with > queued URBs gets restarted before qh_completions() returns, and we want > the rescanning to occur before the restart. Whoops! That's not right. A halted QH gets unlinked before qh_completions returns. It helps to look at the code instead of relying on a faulty memory... Still, as rescanning might be needed regardless of where qh_completions is called from, it makes sense to implement it in qh_completions rather than unlink_async. BTW, qh_link_async does an apparently unnecessary check that qh->qh_state == QH_STATE_IDLE. Is there any reason for this? It would be a bug if the state weren't IDLE. 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