On Tuesday 31 May 2005 5:12 pm, Adam Kropelin wrote:
> ...
> 
> Problem
> After some period of time (minutes to hours), the BackUPS CS 650 and
> BackUPS BR 800 models cease to respond to control transfers. Based on
> HID debug I can see that a control transfer is sent by apcupsd but a
> response never comes back. hid-core.c complains "timeout waiting for
> ctrl or out queue to clear". After that, no further control transfers go
> thru, instead the timeout error repeats. Interrupt transfers continue to
> be processed every 6 seconds as expected. (See dmesg log snippet below).
> Eventually, the timeout error is joined by a "control queue full" error
> as well.

The HID core has its own control queueing scheme.  That was needed
back on 2.4 kernels where the HCDs couldn't be relied on to handle
such queueing, but someone should rip that out for 2.6 kernels.
For synchronous calls the HCD queue can be used directly; and for
async ones, urb->urb_list.

For UPS devices, with relatively huge numbers of reports, this
queue mechanism causes HID devices to allocate huge amounts of
runtime space ... pages per device, not bytes, just so that the
hid_init_reports() routine won't block hid_probe() for several
seconds while a low speed UPS initializes everything.

But you're using "hiddev", and it looked to me as if for some
quirky devices hid_submit_report() needs to return a "no, I could
not ask for that report" error ... which it isn't.  That looks
unlikely in your case (no quirks obviously listed for APC).

It just looks fishy to see what's fundamentally a synchronous
control request get morhped into an async one to use the HID
layer's queueing logic, rather than staying synchronous and
using the HCD's more-completely-tested queueing logic ... and
then it gets errors from that HID queueing, indicative of that
queue not getting properly cleaned out after faults.

- Dave



-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
_______________________________________________
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