On Wednesday 11 October 2006 13:55, Alan Stern wrote:

> > I am guessing you refer to changing the value in the static array, right?
>
> Yes, that sounds good.  Would you mind adding the "maxpacket" comment as
> well?

I am now testing this (removing the previous patch); once I am done testing,
if I can't find anything wrong and you agree, I'll submit to gregkh.

Index: linux.cg/drivers/usb/core/hub.c
===================================================================
--- linux.cg.orig/drivers/usb/core/hub.c        2006-10-11 11:25:59.000000000 
-0700
+++ linux.cg/drivers/usb/core/hub.c     2006-10-11 12:33:22.000000000 -0700
@@ -771,7 +771,12 @@
                dev_dbg(hub_dev, "%sover-current condition exists\n",
                        (hubstatus & HUB_STATUS_OVERCURRENT) ? "" : "no ");
 
-       /* set up the interrupt endpoint */
+       /* set up the interrupt endpoint
+        * We use the EP's maxpacket size instead of (PORTS+1+7)/8
+        * bytes as USB2.0[11.12.3] says because some hubs are known
+        * to send more data (and thus cause overflow). For root hubs,
+        * maxpktsize is defined in hcd.c's fake endpoint descriptors
+        * to be big enough for at least USB_MAXCHILDREN ports. */
        pipe = usb_rcvintpipe(hdev, endpoint->bEndpointAddress);
        maxp = usb_maxpacket(hdev, pipe, usb_pipeout(pipe));
 
Index: linux.cg/drivers/usb/core/hcd.c
===================================================================
--- linux.cg.orig/drivers/usb/core/hcd.c        2006-10-11 11:34:08.000000000 
-0700
+++ linux.cg/drivers/usb/core/hcd.c     2006-10-11 11:34:24.000000000 -0700
@@ -256,7 +256,9 @@
        0x05,       /*  __u8  ep_bDescriptorType; Endpoint */
        0x81,       /*  __u8  ep_bEndpointAddress; IN Endpoint 1 */
        0x03,       /*  __u8  ep_bmAttributes; Interrupt */
-       0x02, 0x00, /*  __le16 ep_wMaxPacketSize; 1 + (MAX_ROOT_PORTS / 8) */
+                   /* __le16 ep_wMaxPacketSize; 1 + (MAX_ROOT_PORTS / 8)
+                    * see hub.c:hub_configure() for details. */
+       USB_MAXCHILDREN + 1 + 7 / 8, 0x00,
        0x0c        /*  __u8  ep_bInterval; (256ms -- usb 2.0 spec) */
 };
 

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to