Messages in this thread Patch in this message | | | Date | Mon, 17 Nov 2003 15:53:19 -0800 (PST) | From | John Heil <> | 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 johnhscs@sc-software.com http://www.sc-software.com -----------------------------------------------------------------
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |