On Fri, 23 Mar 2007, David Brownell wrote:

> On Friday 23 March 2007 9:11 am, Alan Stern wrote:
> 
> > We don't clear the halt because the host is never supposed to clear halts
> > on ep0.  If the halt is a "protocol stall" (the normal case) then the
> > device will clear it automatically when it receives the next SETUP packet.  
> > If the halt is a "functional stall" (discouraged by the USB spec) 
> 
> yes ...
> 
> > there 
> > is no way to clear it -- the Clear-Halt request won't get through because
> > ep0 is halted!
> 
> ... no, that's a special case.  Oddball devices that implement halt
> status on ep0 must allow clear-halt requests for it too.  See 8.5.3.4
> and (especially) the end of 9.4.5 ...

Whoops!  You're right.  Sometimes those little details fade away from my 
mind...

> Linux "should" handle such oddball devices.  Is it clear that this
> is one of those cases?

I don't see any easy way to tell.  The spec doesn't offer any good way to 
tell the difference between one type of stall and the other.  In fact, the 
only way seems to be to send another request that _should_ always succeed 
and see whether it does.

Of course, failure could simply mean that the device's firmware is hung, 
in which case sending a Clear-Halt won't do much good.  I have never (to 
my knowledge) encountered a device that actually did a functional stall.  
On the other hand, I have never tried sending a Set-Feature(halt) request 
to ep0 either.

Alan Stern


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to