Commit 58eaffe5 authored by Raghava Aditya Renukunta's avatar Raghava Aditya Renukunta Committed by Martin K. Petersen

scsi: aacraid: Set correct Queue Depth for HBA1000 RAW disks

The default queue depth for non NATIVE RAW disks is calculated from the
number of fibs and number of disks or a max of 256. This causes poor disk
IO performance.

The fix is to set default qd based on the type of disks
(SATA -32 and SAS -64)
Signed-off-by: default avatarRaghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Reviewed-by: default avatarDavid Carroll <david.carroll@microsemi.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent d58129c9
...@@ -405,17 +405,23 @@ static int aac_slave_configure(struct scsi_device *sdev) ...@@ -405,17 +405,23 @@ static int aac_slave_configure(struct scsi_device *sdev)
int chn, tid; int chn, tid;
unsigned int depth = 0; unsigned int depth = 0;
unsigned int set_timeout = 0; unsigned int set_timeout = 0;
bool set_qd_dev_type = false;
u8 devtype = 0;
chn = aac_logical_to_phys(sdev_channel(sdev)); chn = aac_logical_to_phys(sdev_channel(sdev));
tid = sdev_id(sdev); tid = sdev_id(sdev);
if (chn < AAC_MAX_BUSES && tid < AAC_MAX_TARGETS && if (chn < AAC_MAX_BUSES && tid < AAC_MAX_TARGETS && aac->sa_firmware) {
aac->hba_map[chn][tid].devtype == AAC_DEVTYPE_NATIVE_RAW) { devtype = aac->hba_map[chn][tid].devtype;
if (devtype == AAC_DEVTYPE_NATIVE_RAW)
depth = aac->hba_map[chn][tid].qd_limit; depth = aac->hba_map[chn][tid].qd_limit;
else if (devtype == AAC_DEVTYPE_ARC_RAW)
set_qd_dev_type = true;
set_timeout = 1; set_timeout = 1;
goto common_config; goto common_config;
} }
if (aac->jbod && (sdev->type == TYPE_DISK)) if (aac->jbod && (sdev->type == TYPE_DISK))
sdev->removable = 1; sdev->removable = 1;
...@@ -470,16 +476,22 @@ static int aac_slave_configure(struct scsi_device *sdev) ...@@ -470,16 +476,22 @@ static int aac_slave_configure(struct scsi_device *sdev)
if (sdev_channel(sdev) != NATIVE_CHANNEL) if (sdev_channel(sdev) != NATIVE_CHANNEL)
goto common_config; goto common_config;
set_qd_dev_type = true;
}
common_config:
/* /*
* Check if SATA drive * Check if SATA drive
*/ */
if (set_qd_dev_type) {
if (strncmp(sdev->vendor, "ATA", 3) == 0) if (strncmp(sdev->vendor, "ATA", 3) == 0)
depth = 32; depth = 32;
else else
depth = 64; depth = 64;
} }
common_config:
/* /*
* Firmware has an individual device recovery time typically * Firmware has an individual device recovery time typically
* of 35 seconds, give us a margin. * of 35 seconds, give us a margin.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment