2003-11-17 23:54:20

by John Heil

[permalink] [raw]
Subject: [PATCH] [USB2] 2.6.0-test9-mm2 HiSpd Isoc 1024KB submits: -EMSGSIZE


High speed isochronous URB submits fail w -EMSGSIZE when packet
size is 1024KB (which is permitted by the USB 2.0 Std).

Max Packet Size is conveyed to the host controller via the iTD's
Buffer Pointer Page 1 field, @ offset +0x28[10:0].

drivers/usb/core/urb.c: usb_submit_urb incorrectly scales this
value w an AND mask of 0x03ff while determining the count of
packets. usb/host/ehci-sched.c repeats the error.

This fix corrects the AND mask allowing 1024K packets to flow.


[root@localhost src]# less usb2-isoc-1024.patch
diff -Nru 2.6.0-t9-mm2.orig/drivers/usb/core/urb.c
2.6.0-t9-mm2/drivers/usb/core/urb.c
--- 2.6.0-t9-mm2.orig/drivers/usb/core/urb.c 2003-10-25
14:43:54.000000000 -0400
+++ 2.6.0-t9-mm2/drivers/usb/core/urb.c 2003-11-17 13:25:32.000000000
-0500
@@ -268,7 +268,7 @@
/* "high bandwidth" mode, 1-3 packets/uframe? */
if (dev->speed == USB_SPEED_HIGH) {
int mult = 1 + ((max >> 11) & 0x03);
- max &= 0x03ff;
+ max &= 0x07ff;
max *= mult;
}

diff -Nru 2.6.0-t9-mm2.orig/drivers/usb/host/ehci-sched.c
2.6.0-t9-mm2/drivers/usb/host/ehci-sched.c
--- 2.6.0-t9-mm2.orig/drivers/usb/host/ehci-sched.c 2003-10-25
14:43:19.000000000 -0400
+++ 2.6.0-t9-mm2/drivers/usb/host/ehci-sched.c 2003-11-17
13:27:08.000000000 -0500
@@ -580,10 +580,10 @@
maxp = urb->dev->epmaxpacketout [epnum];
buf1 = 0;
}
- buf1 |= (maxp & 0x03ff);
+ buf1 |= (maxp & 0x07ff);
multi = 1;
multi += (maxp >> 11) & 0x03;
- maxp &= 0x03ff;
+ maxp &= 0x07ff;
maxp *= multi;

/* transfer can't fit in any uframe? */



-
-----------------------------------------------------------------
John Heil
South Coast Software
Custom systems software for UNIX and IBM MVS mainframes
1-714-774-6952
[email protected]
http://www.sc-software.com
-----------------------------------------------------------------



2003-11-18 00:03:14

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] [USB2] 2.6.0-test9-mm2 HiSpd Isoc 1024KB submits: -EMSGSIZE

On Mon, Nov 17, 2003 at 03:53:19PM -0800, John Heil wrote:
>
> High speed isochronous URB submits fail w -EMSGSIZE when packet
> size is 1024KB (which is permitted by the USB 2.0 Std).

Nice, what kind of usb 2.0 iso device do you have that needs this? The
linux usb developers would really like some of these so they could test
:)

Anyway, try sending this patch to the EHCI maintainer, and the
linux-usb-devel mailing list, they can better address this patch.

thanks,

greg k-h

2003-11-18 00:12:55

by John Heil

[permalink] [raw]
Subject: Re: [PATCH] [USB2] 2.6.0-test9-mm2 HiSpd Isoc 1024KB submits: -EMSGSIZE

On Mon, 17 Nov 2003, Greg KH wrote:

> Date: Mon, 17 Nov 2003 16:02:14 -0800
> From: Greg KH <[email protected]>
> To: John Heil <[email protected]>
> Cc: [email protected], [email protected],
> John Heil <[email protected]>
> Subject: Re: [PATCH] [USB2] 2.6.0-test9-mm2 HiSpd Isoc 1024KB submits:
> -EMSGSIZE
>
> On Mon, Nov 17, 2003 at 03:53:19PM -0800, John Heil wrote:
> >
> > High speed isochronous URB submits fail w -EMSGSIZE when packet
> > size is 1024KB (which is permitted by the USB 2.0 Std).
>
> Nice, what kind of usb 2.0 iso device do you have that needs this? The
> linux usb developers would really like some of these so they could test
> :)

Custom video for US Army Land Warrior system

> Anyway, try sending this patch to the EHCI maintainer, and the
> linux-usb-devel mailing list, they can better address this patch.
>
> thanks,
>
> greg k-h
>

-
-----------------------------------------------------------------
John Heil
South Coast Software
Custom systems software for UNIX and IBM MVS mainframes
1-714-774-6952
[email protected]
http://www.sc-software.com
-----------------------------------------------------------------