areversat wrote:
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

Reply via email to