Unit attention in USB storage

Andries.Brouwer@cwi.nl
Tue, 5 Jun 2001 03:58:03 +0200 (MET DST)


Last month my CF reader read CF cards happily.
Now that I returned from Denmark, I find that it no longer works
(with the same 2.4.3 kernel). Indeed, it is not properly detected.

The reason seems to be slightly different timing at bootup -
maybe because I connected a wheelmouse this time -
and now this device comes with Unit Attention
(code 70, key 6, ASC 28, ASCQ 0: not ready to ready transit)
and this is regarded as an error return and the initial INQUIRY fails.

Thus, since this code actually occurs in real life, we should
probably add

case 0x2800: what="not ready to ready transtion (media change?)";
break;

in debug.c:usb_stor_show_sense().
I have not really thought about the proper treatment of this Unit Attention.
However, if one decides that really nothing at all is wrong when a device
tells us that it is ready now, then

if ((srb->sense_buffer[2] & 0xf) == 0x6 /* unit attention */
&& srb->sense_buffer[12] == 0x28
&& srb->sense_buffer[13] == 0 /* not ready -> ready */)
srb->result = GOOD << 1;

is perhaps not too unreasonable. (This is in usb/storage/transport.c,
usb_stor_invoke_transport(), at the end of the need autosense part.)
Anyway, with this addition (to 2.4.3) all works for me again.

Andries
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/