Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -405,17 +405,23 @@ static int aac_slave_configure(struct scsi_device *sdev)
	int chn, tid;
	unsigned int depth = 0;
	unsigned int set_timeout = 0;
	bool set_qd_dev_type = false;
	u8 devtype = 0;

	chn = aac_logical_to_phys(sdev_channel(sdev));
	tid = sdev_id(sdev);
	if (chn < AAC_MAX_BUSES && tid < AAC_MAX_TARGETS &&
		aac->hba_map[chn][tid].devtype == AAC_DEVTYPE_NATIVE_RAW) {
	if (chn < AAC_MAX_BUSES && tid < AAC_MAX_TARGETS && aac->sa_firmware) {
		devtype = aac->hba_map[chn][tid].devtype;

		if (devtype == AAC_DEVTYPE_NATIVE_RAW)
			depth = aac->hba_map[chn][tid].qd_limit;
		else if (devtype == AAC_DEVTYPE_ARC_RAW)
			set_qd_dev_type = true;

		set_timeout = 1;
		goto common_config;
	}


	if (aac->jbod && (sdev->type == TYPE_DISK))
		sdev->removable = 1;

@@ -470,16 +476,22 @@ static int aac_slave_configure(struct scsi_device *sdev)
		if (sdev_channel(sdev) != NATIVE_CHANNEL)
			goto common_config;

		set_qd_dev_type = true;

	}

common_config:

	/*
	 * Check if SATA drive
	 */
	if (set_qd_dev_type) {
		if (strncmp(sdev->vendor, "ATA", 3) == 0)
			depth = 32;
		else
			depth = 64;
	}

common_config:
	/*
	 * Firmware has an individual device recovery time typically
	 * of 35 seconds, give us a margin.