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