From c5537d1e1c9e449bef1c2442e941758f27d9bca9 Mon Sep 17 00:00:00 2001 From: jimharris Date: Thu, 29 Mar 2012 15:43:07 +0000 Subject: 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 --- sys/dev/isci/scil/sati_read_capacity.c | 4 ++++ 1 file changed, 4 insertions(+) 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 -- cgit v1.1