All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitri Kassatkine <dmitri.kassatkine@nokia.com>
To: linux-kernel@vger.kernel.org
Cc: "Kassatkine Dmitri (NRC/Helsinki)" <dmitri.kassatkine@nokia.com>
Subject: usb.c patch -> successfuly read usb descriptors on some USB device
Date: Tue, 15 Jan 2002 11:47:21 +0200	[thread overview]
Message-ID: <3C43FAA9.3070600@nokia.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 641 bytes --]

Hi,

Sometimes USB subsystem cannot get USB descriptor.

Jan 15 10:44:21 selma kernel: hub.c: USB new device connect on bus1/1, 
assign
ed device number 25
Jan 15 10:44:21 selma kernel: usb.c: couldn't get all of config descriptors
Jan 15 10:44:21 selma kernel: usb.c: unable to get device 25 
configuration (e
rror=-110)


Here is patch how to fix it for 2.4.17. It works for 2.4.16 as well.
 It necassary to read descriptor at once, not first 8 byte first.

It works well now for NSM USB Bluetooth dongle.

br, DMitri

-- 
 Dmitri Kassatkine
 Nokia Research Center / Helsinki
 Mobile: +358 50 4836365
 E-Mail: dmitri.kassatkine@nokia.com


[-- Attachment #2: usb.c.patch-2.4.17 --]
[-- Type: text/plain, Size: 1840 bytes --]

--- usb.c.orig	Wed Nov 21 19:59:11 2001
+++ usb.c	Tue Jan 15 11:38:35 2002
@@ -2041,7 +2041,7 @@
 		return -ENOMEM;
 	}
 
-	buffer = kmalloc(8, GFP_KERNEL);
+	buffer = kmalloc(255, GFP_KERNEL);
 	if (!buffer) {
 		err("unable to allocate memory for configuration descriptors");
 		return -ENOMEM;
@@ -2049,9 +2049,9 @@
 	desc = (struct usb_config_descriptor *)buffer;
 
 	for (cfgno = 0; cfgno < dev->descriptor.bNumConfigurations; cfgno++) {
-		/* We grab the first 8 bytes so we know how long the whole */
+		/* We grab the first 255 bytes so we know how long the whole */
 		/*  configuration is */
-		result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, 8);
+		result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, 255);
 		if (result < 8) {
 			if (result < 0)
 				err("unable to get descriptor");
@@ -2072,19 +2072,24 @@
 			goto err;
 		}
 
-		/* Now that we know the length, get the whole thing */
-		result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, bigbuffer, length);
-		if (result < 0) {
-			err("couldn't get all of config descriptors");
-			kfree(bigbuffer);
-			goto err;
-		}	
+		if (length > 255) {
+			/* Now that we know the length, get the whole thing */
+			result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, bigbuffer, length);
+			if (result < 0) {
+				err("couldn't get all of config descriptors");
+				kfree(bigbuffer);
+				goto err;
+			}	
 	
-		if (result < length) {
-			err("config descriptor too short (expected %i, got %i)", length, result);
-			result = -EINVAL;
-			kfree(bigbuffer);
-			goto err;
+			if (result < length) {
+				err("config descriptor too short (expected %i, got %i)", length, result);
+				result = -EINVAL;
+				kfree(bigbuffer);
+				goto err;
+			}
+		}
+		else {
+			memcpy(bigbuffer, buffer, length);
 		}
 
 		dev->rawdescriptors[cfgno] = bigbuffer;

             reply	other threads:[~2002-01-15  9:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-15  9:47 Dmitri Kassatkine [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-01-15  9:59 usb.c patch -> successfuly read usb descriptors on some USB device Dmitri Kassatkine
2002-01-15 18:38 ` Greg KH

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=3C43FAA9.3070600@nokia.com \
    --to=dmitri.kassatkine@nokia.com \
    --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.