From: Nico Huber <nico.h@gmx.de>
To: linux-kernel@vger.kernel.org
Subject: Logitech Cordeless Desktop Keyboard fails to report class descriptor
Date: Fri, 28 Jan 2005 00:23:00 +0100 [thread overview]
Message-ID: <41F977D4.7030103@gmx.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 897 bytes --]
The receiver of my Logitech Cordeless Desktop fails to report the
keyboard's class descriptor most times I insert the usb-hid module
since I changed to linux 2.6. The modell of the receiver is C-BD9-DUAL
REV C.
The request seems not to fail but the count of received characters is zero.
As I said it only fails most times, I worked around making the following
changes in drivers/usb/input/hid-core.c from linux-2.6.11-rc2:
Following the good example of drivers/usb/core/message.c line 575, I
initialized the buffer in hid_get_class_descriptor() to zero.
In the loop of hid_get_class_descriptor() not waiting for any result but
waiting for a result wich is lower the requested size of the class
descriptor (line 1290).
usb_hid_configure() should not try to parse the expected length but the
received (line 1653).
attached is a patch to linux-2.6.11-rc2 with these changes
Nico Huber
.
[-- Attachment #2: linux-2.6.11-rc2-hid-class-descriptor.patch --]
[-- Type: text/plain, Size: 829 bytes --]
--- a/drivers/usb/input/hid-core.c 2005-01-27 23:59:52.000000000 +0100
+++ b/drivers/usb/input/hid-core.c 2005-01-28 00:06:31.000000000 +0100
@@ -1282,12 +1282,15 @@
unsigned char type, void *buf, int size)
{
int result, retries = 4;
+
+ memset(buf,0,size); // Make sure we parse really received data
+
do {
result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
USB_REQ_GET_DESCRIPTOR, USB_RECIP_INTERFACE | USB_DIR_IN,
(type << 8), ifnum, buf, size, HZ * USB_CTRL_GET_TIMEOUT);
retries--;
- } while (result < 0 && retries);
+ } while (result < size && retries);
return result;
}
@@ -1650,7 +1653,7 @@
printk("\n");
#endif
- if (!(hid = hid_parse_report(rdesc, rsize))) {
+ if (!(hid = hid_parse_report(rdesc, n))) {
dbg("parsing report descriptor failed");
kfree(rdesc);
return NULL;
reply other threads:[~2005-01-27 23:26 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=41F977D4.7030103@gmx.de \
--to=nico.h@gmx.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox