mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: John Heil <kerndev@sc-software.com>
To: <linux-kernel@vger.kernel.org>, <torvalds@osdl.org>
Cc: John Heil <johnhscs@scsoftware.sc-software.com>
Subject: [PATCH] [USB2] 2.6.0-test9-mm2 HiSpd Isoc 1024KB submits: -EMSGSIZE
Date: Mon, 17 Nov 2003 15:53:19 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.33.0311171529030.5878-100000@scsoftware.sc-software.com> (raw)


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
-----------------------------------------------------------------



             reply	other threads:[~2003-11-17 23:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-17 23:53 John Heil [this message]
2003-11-18  0:02 ` Greg KH
2003-11-18  0:12   ` John Heil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.33.0311171529030.5878-100000@scsoftware.sc-software.com \
    --to=kerndev@sc-software.com \
    --cc=johnhscs@scsoftware.sc-software.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®