diff options
author | jimharris <jimharris@FreeBSD.org> | 2012-03-29 15:43:07 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2012-03-29 15:43:07 +0000 |
commit | c5537d1e1c9e449bef1c2442e941758f27d9bca9 (patch) | |
tree | 81583bd484124001408252be650002a56cf62155 /sys/dev/isci | |
parent | 6749f469aac0289072185f7a673279706ef32e3a (diff) | |
download | FreeBSD-src-c5537d1e1c9e449bef1c2442e941758f27d9bca9.zip FreeBSD-src-c5537d1e1c9e449bef1c2442e941758f27d9bca9.tar.gz |
Fix bug where isci(4) would report only 15 bytes of returned data on a
READ_CAP_16 command to a SATA target.
Sponsored by: Intel
Reviewed by: sbruno
Approved by: sbruno
MFC after: 3 days
Diffstat (limited to 'sys/dev/isci')
-rw-r--r-- | sys/dev/isci/scil/sati_read_capacity.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/isci/scil/sati_read_capacity.c b/sys/dev/isci/scil/sati_read_capacity.c index 6a73374..7607e3a 100644 --- a/sys/dev/isci/scil/sati_read_capacity.c +++ b/sys/dev/isci/scil/sati_read_capacity.c @@ -308,6 +308,10 @@ void sati_read_capacity_16_translate_data( sati_set_data_byte(sequence, scsi_io, 10, (U8)((sector_size >> 8) & 0xFF)); sati_set_data_byte(sequence, scsi_io, 11, (U8)(sector_size & 0xFF)); + //Explicitly set byte 12 to 0. SATI requires that all bytes in the data + //response be explicitly set to some value. + sati_set_data_byte(sequence, scsi_io, 12, 0); + //Check Bit 13 of ATA_IDENTIFY_DEVICE_DATA physical_logical_sector_info //(Word 106) is enabled physical_per_logical_enable_bit = (identify_device_data->physical_logical_sector_info |