Commit e2fd90dd authored by Balsundar P's avatar Balsundar P Committed by Martin K. Petersen
Browse files

scsi: aacraid: setting different timeout for src and thor

Set 180 second timeout for thor and 60 seconds for src controllers.

Link: https://lore.kernel.org/r/1571120524-6037-5-git-send-email-balsundar.p@microsemi.com


Signed-off-by: default avatarBalsundar P <balsundar.p@microsemi.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent c02a3342
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1477,6 +1477,7 @@ static struct aac_srb * aac_scsi_common(struct fib * fib, struct scsi_cmnd * cmd
	struct aac_srb * srbcmd;
	u32 flag;
	u32 timeout;
	struct aac_dev *dev = fib->dev;

	aac_fib_init(fib);
	switch(cmd->sc_data_direction){
@@ -1503,7 +1504,7 @@ static struct aac_srb * aac_scsi_common(struct fib * fib, struct scsi_cmnd * cmd
	srbcmd->flags    = cpu_to_le32(flag);
	timeout = cmd->request->timeout/HZ;
	if (timeout == 0)
		timeout = 1;
		timeout = (dev->sa_firmware ? AAC_SA_TIMEOUT : AAC_ARC_TIMEOUT);
	srbcmd->timeout  = cpu_to_le32(timeout);  // timeout in seconds
	srbcmd->retry_limit = 0; /* Obsolete parameter */
	srbcmd->cdb_size = cpu_to_le32(cmd->cmd_len);
+2 −0
Original line number Diff line number Diff line
@@ -108,6 +108,8 @@ enum {
#define AAC_BUS_TARGET_LOOP		(AAC_MAX_BUSES * AAC_MAX_TARGETS)
#define AAC_MAX_NATIVE_SIZE		2048
#define FW_ERROR_BUFFER_SIZE		512
#define AAC_SA_TIMEOUT			180
#define AAC_ARC_TIMEOUT			60

#define get_bus_number(x)	(x/AAC_MAX_TARGETS)
#define get_target_number(x)	(x%AAC_MAX_TARGETS)
+7 −3
Original line number Diff line number Diff line
@@ -391,6 +391,7 @@ static int aac_slave_configure(struct scsi_device *sdev)
	int chn, tid;
	unsigned int depth = 0;
	unsigned int set_timeout = 0;
	int timeout = 0;
	bool set_qd_dev_type = false;
	u8 devtype = 0;

@@ -483,10 +484,13 @@ common_config:

	/*
	 * Firmware has an individual device recovery time typically
	 * of 35 seconds, give us a margin.
	 * of 35 seconds, give us a margin. Thor devices can take longer in
	 * error recovery, hence different value.
	 */
	if (set_timeout && sdev->request_queue->rq_timeout < (45 * HZ))
		blk_queue_rq_timeout(sdev->request_queue, 45*HZ);
	if (set_timeout) {
		timeout = aac->sa_firmware ? AAC_SA_TIMEOUT : AAC_ARC_TIMEOUT;
		blk_queue_rq_timeout(sdev->request_queue, timeout * HZ);
	}

	if (depth > 256)
		depth = 256;