> int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
> ...
> /*
> * If SCSI-2 or lower, store the LUN value in cmnd.
> */
> if (cmd->device->scsi_level <= SCSI_2) {
> cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) |
> (cmd->device->lun << 5 & 0xe0);
> }
>
> hm. now what .... ? If scsi-2 requires this, and the device is scsi-2.
actually, the scsi-level reported by the device is *not* 2.
it is set to 2 by "slave_configure" from drivers/usb/storage/scsiglue.c:
static int slave_configure(struct scsi_device *sdev)
{
...
/* Set the SCSI level to at least 2. We'll leave it at 3 if that's
* what is originally reported. We need this to avoid confusing
* the SCSI layer with devices that report 0 or 1, but need 10-byte
* commands (ala ATAPI devices behind certain bridges, or devices
^^^^^^^^^^^^^^^
the CY7C68310 is exactly that.
* which simply have broken INQUIRY data).
...
if (sdev->scsi_level < SCSI_2)
sdev->scsi_level = sdev->sdev_target->scsi_level = SCSI_2;
kind regards,
h.rosmanith
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]