On Tue, 20 Apr 2004, Aleksey Nogin wrote:
> Thanks a lot for your feedback. Unfortunately, your patch does not seem
> to affect anything.
Yes, now you come to mention it, I see there isn't any code in there to
retry the INQUIRY command after a Unit Attention! All right, try this
patch instead.
Alan Stern
===== drivers/scsi/scsi_scan.c 1.57 vs edited =====
--- 1.57/drivers/scsi/scsi_scan.c Wed Mar 17 14:05:26 2004
+++ edited/drivers/scsi/scsi_scan.c Wed Apr 21 10:40:06 2004
@@ -331,6 +331,7 @@
struct scsi_device *sdev = sreq->sr_device; /* a bit ugly */
unsigned char scsi_cmd[MAX_COMMAND_SIZE];
int possible_inq_resp_len;
+ int count = 0;
*bflags = 0;
repeat_inquiry:
@@ -351,14 +352,19 @@
SCSI_LOG_SCAN_BUS(3, printk(KERN_INFO "scsi scan: 1st INQUIRY %s with"
" code 0x%x\n", sreq->sr_result ?
"failed" : "successful", sreq->sr_result));
+ ++count;
if (sreq->sr_result) {
if ((driver_byte(sreq->sr_result) & DRIVER_SENSE) != 0 &&
(sreq->sr_sense_buffer[2] & 0xf) == UNIT_ATTENTION &&
- sreq->sr_sense_buffer[12] == 0x28 &&
+ (sreq->sr_sense_buffer[12] == 0x28 ||
+ sreq->sr_sense_buffer[12] == 0x29) &&
sreq->sr_sense_buffer[13] == 0) {
- /* not-ready to ready transition - good */
+ /* not-ready to ready transition or power-on - good */
/* dpg: bogus? INQUIRY never returns UNIT_ATTENTION */
+ /* Supposedly, but many buggy devices do so anyway */
+ if (count < 3)
+ goto repeat_inquiry;
} else
/*
* assume no peripheral if any other sort of error
-------------------------------------------------------
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_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel