On Wed, 6 Dec 2006, Pete Zaitcev wrote:

> On Wed, 6 Dec 2006 10:55:21 -0500 (EST), Alan Stern <[EMAIL PROTECTED]> wrote:
> 
> > [...] Some keyboards sometimes send more data than a single report in 
> > a packet, leading to EOVERFLOW errors.  The patch tries to fix things by 
> > using a transfer length at least as large as the maxpacket size.  I'm not 
> > sure if this will fully fix the problem, though -- if the device actually 
> > does stick more than one report in a single packet then the driver will 
> > need to parse them all, and the patch doesn't try to do that.
> 
> Unfortunately, they do send two reports in one packet, so I had to
> abandon my own version of it.

It shouldn't be very hard to parse more than one report per packet.

>  The situation does not happen all that
> often.

It happens quite a lot for one of the users in this bug report:

        http://bugzilla.kernel.org/show_bug.cgi?id=6584

>  We have to ignore interrupts long enough for two reports to
> batch together. In 2.6.18 at least we reset the device if it gets stuck,
> so for me this is not as urgent as it was in 2.6.9 times.

The bad behavior is triggered by a KVM (no surprise there).  Details in 
the bug report.

> The other one looks ok, although doesn't it reopens the way for that
> situation when the CPU spins and does not allow disconnect to proceed?
> It needs the parameter set for it first, but still.

Shouldn't any reasonable HID device have bInterval set to something > 1?  
That would prevent spinning.

Alternatively, when the kvm parameter is set we could invoke the 
hid_io_error() handler as we do now, but make it retry indefinitely rather 
than issue a reset after 1 second.  Perhaps that would be safer.

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