Re: [Bugme-new] [Bug 14778] New: USB (intel chipset) with external mass storage extremely slow or blocking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 15 Dec 2009, Hadmut Danisch wrote:

> >  All I can say is
> > that the usbmon trace shows that the drive you were using stopped
> > working as soon as the computer tried to do a large write.
> >   
> The pendrive works perfectly on my digital video recorder, and the flash
> cards work on my cameras. I can't believe that all my devices are broken.
> 
> 
> > Maybe the drive just can't handle transfers that are too large.  You
> > can reduce the transfer size by setting the drive's max_sectors value
> > (the file will be /sys/block/sdg/device/max_sectors, if the drive is
> > /dev/sdg).  Trying writing 64 to that file before using the drive.
> >   
> 
> Even 32 doesn't help.

Maybe the problem is that the computer sends data before the flash 
drive is ready to accept it.  You can try delaying the data transfer.

Edit drivers/usb/storage/transport.c.  In usb_stor_Bulk_transport(), 
near line 1068, you'll find this code:

	/* Some USB-IDE converter chips need a 100us delay between the
	 * command phase and the data phase.  Some devices need a little
	 * more than that, probably because of clock rate inaccuracies. */
	if (unlikely(us->fflags & US_FL_GO_SLOW))
		udelay(125);

Comment out the "if" line so that the udelay is always executed.  You
can also try increasing the duration above 125 us.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux