Alan,

I've applied your patch, and I'm running various tests against the drive
right now, including some brutal iozone benchmarks.  It hasn't broken
yet, which is promising.

Funnily enough however, with your patch, the cpu overhead seems to be
higher than with just inserting the 250 us udelay before handling the
USB command (which I confirmed also worked after switching off all the
debugging).   This is looking at the percentages of system (lower with
the udelay) and wait-for-io time (higher with the udelay), and the CPU
that the usb-storage thread consumes (much higher with your patch). 
However, this might just be a byproduct of how the CPU time is
recorded and accounted for?

Anyway, lastly, thruput is roughly the same with your patch and when
using the udelay.

Jacques


Alan Stern <[EMAIL PROTECTED]> wrote:

> Thanks for letting me know; that's very interesting and encouraging.
> 
> So if you turn usb-storage debugging off and go back to the original 
> source but just insert that single delay before calling the protocol 
> handler, does it work okay?
> 
> Does the patch below work also?  It should do about the same thing as
> your 250 microsecond delay, but with less CPU overhead.
> 
> If making this simple change will get all those broken Genesys Logic 
> interfaces to work, it would be great!
> 
> Alan Stern
> 
> 
> ===== drivers/usb/storage/usb.c 1.119 vs edited =====
> --- 1.119/drivers/usb/storage/usb.c   Sun Jun 13 16:09:07 2004
> +++ edited/drivers/usb/storage/usb.c  Fri Jun 18 11:48:08 2004
> @@ -358,6 +358,18 @@
>  
>               /* we've got a command, let's do it! */
>               else {
> +                     int frame1, frame2, count;
> +
> +                     frame1 = usb_get_current_frame_number(us->pusb_dev);
> +                     count = 0;
> +                     do {
> +                             yield();
> +                             frame2 = usb_get_current_frame_number(us->pusb_dev);
> +                             if (frame1 != frame2) {
> +                                     frame1 = frame2;
> +                                     ++count;
> +                             }
> +                     } while (count < 2);
>                       US_DEBUG(usb_stor_show_command(us->srb));
>                       us->proto_handler(us->srb, us);
>               }
> 


-------------------------------------------------------
This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to