[SCSI] megaraid_sas: Add resetwaittime module parameter
authoradam radford <aradford@gmail.com>
Wed, 18 Jul 2012 01:20:24 +0000 (18:20 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 24 Aug 2012 09:10:29 +0000 (13:10 +0400)
This allows a user to adjust the wait time in seconds after I/O timeout before
resetting the adapter.

Signed-off-by: Adam Radford <aradford@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/megaraid/megaraid_sas_base.c
drivers/scsi/megaraid/megaraid_sas_fusion.c

index f8f0a16..2ee7052 100644 (file)
@@ -76,6 +76,11 @@ module_param(throttlequeuedepth, int, S_IRUGO);
 MODULE_PARM_DESC(throttlequeuedepth,
        "Adapter queue depth when throttled due to I/O timeout. Default: 16");
 
+int resetwaittime = MEGASAS_RESET_WAIT_TIME;
+module_param(resetwaittime, int, S_IRUGO);
+MODULE_PARM_DESC(resetwaittime, "Wait time in seconds after I/O timeout "
+                "before resetting adapter. Default: 180");
+
 MODULE_LICENSE("GPL");
 MODULE_VERSION(MEGASAS_VERSION);
 MODULE_AUTHOR("megaraidlinux@lsi.com");
@@ -1778,7 +1783,7 @@ static int megasas_wait_for_outstanding(struct megasas_instance *instance)
                return SUCCESS;
        }
 
-       for (i = 0; i < wait_time; i++) {
+       for (i = 0; i < resetwaittime; i++) {
 
                int outstanding = atomic_read(&instance->fw_outstanding);
 
index a610cf1..788115b 100644 (file)
@@ -94,6 +94,7 @@ int megasas_transition_to_ready(struct megasas_instance *instance, int ocr);
 void megaraid_sas_kill_hba(struct megasas_instance *instance);
 
 extern u32 megasas_dbg_lvl;
+extern int resetwaittime;
 
 /**
  * megasas_enable_intr_fusion -        Enables interrupts
@@ -2063,9 +2064,9 @@ megasas_check_reset_fusion(struct megasas_instance *instance,
 int megasas_wait_for_outstanding_fusion(struct megasas_instance *instance)
 {
        int i, outstanding, retval = 0;
-       u32 fw_state, wait_time = MEGASAS_RESET_WAIT_TIME;
+       u32 fw_state;
 
-       for (i = 0; i < wait_time; i++) {
+       for (i = 0; i < resetwaittime; i++) {
                /* Check if firmware is in fault state */
                fw_state = instance->instancet->read_fw_status_reg(
                        instance->reg_set) & MFI_STATE_MASK;