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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.