On Mon, 24 Oct 2011, Matthew Dharm wrote: > Alan / Simon -- > > If you look at the device descriptors, it reports itself as an > SFF-8020i device. This kicks-in code to force all commands to > 12-byte, as (I think) required by 8020i. Of course, for a large > device like this, you might need 16-byte commands. > > This probably needs a protocol override to force it back to > transparent SCSI mode. Either that, or someone needs to take a longer > look at the 8020 spec, 8020 devices, and see if there is a way to make > it work without an override... Ooh, you're right. I never noticed. I don't know if 8020i is restricted to <= 12 bytes. MMC isn't. But we may as well accept larger commands too, without padding. (Or maybe they'll need to be padded to 16 bytes.) And we may as well treat UFI devices the same way. Simon, this patch ought to do the trick. Let us know what happens. Alan Stern Index: usb-3.1/drivers/usb/storage/protocol.c =================================================================== --- usb-3.1.orig/drivers/usb/storage/protocol.c +++ usb-3.1/drivers/usb/storage/protocol.c @@ -66,9 +66,6 @@ void usb_stor_pad12_command(struct scsi_ for (; srb->cmd_len<12; srb->cmd_len++) srb->cmnd[srb->cmd_len] = 0; - /* set command length to 12 bytes */ - srb->cmd_len = 12; - /* send the command to the transport layer */ usb_stor_invoke_transport(srb, us); } @@ -86,9 +83,6 @@ void usb_stor_ufi_command(struct scsi_cm for (; srb->cmd_len<12; srb->cmd_len++) srb->cmnd[srb->cmd_len] = 0; - /* set command length to 12 bytes (this affects the transport layer) */ - srb->cmd_len = 12; - /* XXX We should be constantly re-evaluating the need for these */ /* determine the correct data length for these commands */ -- 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