ChangeSet 1.1608.24.31, 2004/03/01 15:58:31-08:00, [EMAIL PROTECTED]

[PATCH] USB Storage: Revision of as202, Genesys quirk patch

In the slave_configure routine it's already too late for the host's
max_sector value to affect the scsi_device.  It's necessary to set the
queue value directly.  This revised patch takes care of that.


 drivers/usb/storage/scsiglue.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletion(-)


diff -Nru a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
--- a/drivers/usb/storage/scsiglue.c    Tue Mar 16 15:04:59 2004
+++ b/drivers/usb/storage/scsiglue.c    Tue Mar 16 15:04:59 2004
@@ -64,8 +64,10 @@
        return "SCSI emulation for USB Mass Storage devices";
 }
 
-static int slave_configure (struct scsi_device *sdev)
+static int slave_configure(struct scsi_device *sdev)
 {
+       struct us_data *us = (struct us_data *) sdev->host->hostdata[0];
+
        /* Scatter-gather buffers (all but the last) must have a length
         * divisible by the bulk maxpacket size.  Otherwise a data packet
         * would end up being short, causing a premature end to the data
@@ -75,6 +77,16 @@
         * have the desired effect because, except at the beginning and
         * the end, scatter-gather buffers follow page boundaries. */
        blk_queue_dma_alignment(sdev->request_queue, (512 - 1));
+
+       /* Devices using Genesys Logic chips cause a lot of trouble for
+        * high-speed transfers; they die unpredictably when given more
+        * than 64 KB of data at a time.  If we detect such a device,
+        * reduce the maximum transfer size to 64 KB = 128 sectors. */
+
+#define USB_VENDOR_ID_GENESYS  0x05e3          // Needs a standard location
+       if (us->pusb_dev->descriptor.idVendor == USB_VENDOR_ID_GENESYS &&
+                       us->pusb_dev->speed == USB_SPEED_HIGH)
+               blk_queue_max_sectors(sdev->request_queue, 128);
 
        /* this is to satisify the compiler, tho I don't think the 
         * return code is ever checked anywhere. */



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to