My enclosure seems to work stable with 2.6.21.5
For the time being I didn't try Ubuntu with this kernel, but all the distros seem to carry this bug. Then recent SLAX 6 works fine with the default max_sectors.
It may have to do with the following change in kernel:
* Add stable release 2.6.21.5:
- USB: set the correct Interrupt interval in usb_bulk_msg
From <email address hidden> Mon Apr 23 14:30:35 2007
From: Alan Stern <email address hidden>
Date: Mon, 23 Apr 2007 17:30:32 -0400 (EDT)
Subject: USB: set the correct Interrupt interval in usb_bulk_msg
To: Greg Kroah-Hartman <email address hidden>
Cc: USB development list <email address hidden>
Message-ID: <email address hidden>
This patch (as902) fixes a mistake I introduced into usb_bulk_msg().
usb_fill_int_urb() already does the bit-shifting calculation for
high-speed Interrupt intervals; it shouldn't be done twice.
My enclosure seems to work stable with 2.6.21.5
For the time being I didn't try Ubuntu with this kernel, but all the distros seem to carry this bug. Then recent SLAX 6 works fine with the default max_sectors.
It may have to do with the following change in kernel:
* Add stable release 2.6.21.5:
- USB: set the correct Interrupt interval in usb_bulk_msg
From <email address hidden> Mon Apr 23 14:30:35 2007
From: Alan Stern <email address hidden>
Date: Mon, 23 Apr 2007 17:30:32 -0400 (EDT)
Subject: USB: set the correct Interrupt interval in usb_bulk_msg
To: Greg Kroah-Hartman <email address hidden>
Cc: USB development list <email address hidden>
Message-ID: <email address hidden>
This patch (as902) fixes a mistake I introduced into usb_bulk_msg().
usb_fill_int_urb() already does the bit-shifting calculation for
high-speed Interrupt intervals; it shouldn't be done twice.
Signed-off-by: Alan Stern <email address hidden>
--- usb/core/ message. c | 9 ++-------
drivers/
1 file changed, 2 insertions(+), 7 deletions(-)
--- a/drivers/ usb/core/ message. c usb/core/ message. c
+++ b/drivers/
@@ -221,15 +221,10 @@ int usb_bulk_msg(struct usb_device *usb_
if ((ep->desc. bmAttributes & USB_ENDPOINT_ XFERTYPE_ MASK) == ENDPOINT_ XFER_INT) { fill_int_ urb(urb, usb_dev, pipe, data, len, blocking_ completion, NULL, interval); blocking_ completion, NULL, bInterval) ; fill_bulk_ urb(urb, usb_dev, pipe, data, len, api_blocking_ completion, NULL)
USB_
- int interval;
-
- if (usb_dev->speed == USB_SPEED_HIGH)
- interval = 1 << min(15, ep->desc.bInterval - 1);
- else
- interval = ep->desc.bInterval;
pipe = (pipe & ~(3 << 30)) | (PIPE_INTERRUPT << 30);
usb_
- usb_api_
+ usb_api_
+ ep->desc.
} else
usb_
usb_
I'll give it a try with 2.6.20 from Feisty.