Here is a patch that fixes the following problem : interval of iso urbs doesn't get set. This big is still appearing in the 2.6.O kernel. It would be good to fix it as we (the eciadsl programmers) use iso packets and it causes the driver not to work unless you patch your kernel.
Looks like the kernel is going to have to do this, since I don't see a way that userspace can pass this interval down. However:
- That epnum_to_ep_desc() result shouldn't be used without a bit more locking; else the config could change from under usbfs.
- The correct formula is "interval = (1 << (ep_desc->bInterval - 1))" for all device speeds. (For high speed devices the units will be microframes.)
I cc'd Duncan Sands, who's got a devio.c patch in the works that'll fix a bunch of such stuff.
- Dave
------------------------------------------------------------------------
#original patch by Benoit PAPILLAULT ([EMAIL PROTECTED]), fix by Antoine REVERSAT ([EMAIL PROTECTED])
--- linux-2.6.0/drivers/usb/core/devio.c 2003-12-18 21:32:47.000000000 +0100
+++ linux-2.6.0/drivers/usb/core/devio-new.c 2003-12-18 21:33:51.000000000 +0100
@@ -834,6 +834,9 @@
break;
case USBDEVFS_URB_TYPE_ISO:
+ if (!(ep_desc = usb_epnum_to_ep_desc(ps->dev, uurb.endpoint)))
+ return -ENOENT;
+ interval = ep_desc->bInterval;
/* arbitrary limit */
if (uurb.number_of_packets < 1 || uurb.number_of_packets > 128)
return -EINVAL;
------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel