On Wed, 4 Dec 2002, Dan Streetman wrote:

> I was under the impression that the HCD would notice (during the next
> frame) that those TDs (or EDs) have a target device that's no longer
> connected, and finish them with an error.  If not, then how can the
> host controller execute that TD/ED?  The device isn't there...

  ...

> It just seems strange to me to be aborting URBs for a device that no
> longer exists...seems like the HCD would just clean them out during
> the next frame.  Especially since it would be easier (more
> centralized) to do it in the HCD, while doing it in the drivers is
> more work...


I agree, and I have suggested this in the past.  Unfortunately, it may be
impossible (for some kinds of urb anyway) for the HCD to realize that the
target device isn't connected.  I believe, as a result of a somewhat hasty
perusal of the USB spec, that it is legal under some circumstances for a
device to fail to reply at all to a USB transaction for an extended period
of time.  For instance, if several isochronous OUT transfers in a row get
corrupted, the device is not obliged to transmit a handshake or any other
kind of reply.  Unless the HCD includes some provision for timing out a
TD/ED, it would not notice anything wrong.

Alan Stern



-------------------------------------------------------
This SF.net email is sponsored by: Microsoft Visual Studio.NET 
comprehensive development tool, built to increase your 
productivity. Try a free online hosted session at:
http://ads.sourceforge.net/cgi-bin/redirect.pl?micr0003en
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to