This function was searching all interface alternate settings, when it
should only search the active alternate setting.
The same endpoint (number) can exist on multiple alternate settings, with
a different descriptor for each. Only the active alternate setting's
endpoint descriptor is valid.
The only place currently using it is devio.c in proc_submiturb (for async
control xfers).
--- 2.4.4-clean/drivers/usb/usb.c Wed Apr 25 17:10:47 2001
+++ linux/drivers/usb/usb.c Sat May 12 15:47:58 2001
@@ -202,11 +202,12 @@
{
int i, j, k;
- for (i = 0; i < dev->actconfig->bNumInterfaces; i++)
- for (j = 0; j < dev->actconfig->interface[i].num_altsetting; j++)
- for (k = 0; k <
dev->actconfig->interface[i].altsetting[j].bNumEndpoints; k++)
- if (epnum ==
dev->actconfig->interface[i].altsetting[j].endpoint[k].bEndpointAddress)
- return
&dev->actconfig->interface[i].altsetting[j].endpoint[k];
+ for (i = 0; i < dev->actconfig->bNumInterfaces; i++) {
+ j = dev->actconfig->interface[i].act_altsetting;
+ for (k = 0; k <
+dev->actconfig->interface[i].altsetting[j].bNumEndpoints; k++)
+ if (epnum ==
+dev->actconfig->interface[i].altsetting[j].endpoint[k].bEndpointAddress)
+ return
+&dev->actconfig->interface[i].altsetting[j].endpoint[k];
+ }
return NULL;
}
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel