On Sat, 1 Jan 2011, vichy wrote: > after tracing the source code, I found usb_hcd_giveback_urb will be > called in ehci_urb_done when interrupt happen and that is the normal > path. Yes. > But what makes me confuse is when timeout happen such as > wait_for_completion_timeout in usb_start_wait_urb, which function will > call usb_hcd_giveback_urb and bring -2 to it originally I guess maybe > the ehci_watchdog, but I think it is not, because the function has no > idea of the time out parameter, right? No, not ehci_watchdog. It's the same function as above, ehci_urb_done. > BTW, under what circumstance the status of urb will be -150? > I grep include/linux and didn't find amy error number which is -150. > appreciate your kind help :) include/linux is not the right directory. You should be looking in arch/*/include/asm and include/asm-generic/errno*.h. If you are using an x86 architecture then the URB status should never be -150. But if you are using a MIPS architecture then -150 is the same as -EINPROGRESS. 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