diff options
author | Salyzyn, Mark <mark_salyzyn@adaptec.com> | 2007-06-12 09:33:54 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-06-17 16:00:47 -0400 |
commit | 29c976844d0bef07d97babc8db60fa6c46788133 (patch) | |
tree | 9543cef49748d0fe7ac08a5a1780c213e0fc37bd /drivers/scsi/aacraid/aachba.c | |
parent | 1a655040c24ebf3954ad5cf8848391cb420b1ffb (diff) |
[SCSI] aacraid: add user initiated reset
Add the ability for an application to issue a hardware reset to the
adapter via sysfs. Typical uses include restarting the adapter after it
has been flashed. Bumped revision number for the driver and added a
feature to periodically check the adapter's health (check_interval),
update the adapter's concept of time (update_interval) and block
checking/resetting of the adapter (check_reset).
Signed-off-by: Mark Salyzyn <aacraid@adaptec.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/aacraid/aachba.c')
-rw-r--r-- | drivers/scsi/aacraid/aachba.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c index ef11c18d9ba4..b3081b10d0a3 100644 --- a/drivers/scsi/aacraid/aachba.c +++ b/drivers/scsi/aacraid/aachba.c | |||
@@ -169,6 +169,18 @@ int acbsize = -1; | |||
169 | module_param(acbsize, int, S_IRUGO|S_IWUSR); | 169 | module_param(acbsize, int, S_IRUGO|S_IWUSR); |
170 | MODULE_PARM_DESC(acbsize, "Request a specific adapter control block (FIB) size. Valid values are 512, 2048, 4096 and 8192. Default is to use suggestion from Firmware."); | 170 | MODULE_PARM_DESC(acbsize, "Request a specific adapter control block (FIB) size. Valid values are 512, 2048, 4096 and 8192. Default is to use suggestion from Firmware."); |
171 | 171 | ||
172 | int update_interval = 30 * 60; | ||
173 | module_param(update_interval, int, S_IRUGO|S_IWUSR); | ||
174 | MODULE_PARM_DESC(update_interval, "Interval in seconds between time sync updates issued to adapter."); | ||
175 | |||
176 | int check_interval = 24 * 60 * 60; | ||
177 | module_param(check_interval, int, S_IRUGO|S_IWUSR); | ||
178 | MODULE_PARM_DESC(check_interval, "Interval in seconds between adapter health checks."); | ||
179 | |||
180 | int check_reset = 1; | ||
181 | module_param(check_reset, int, S_IRUGO|S_IWUSR); | ||
182 | MODULE_PARM_DESC(check_reset, "If adapter fails health check, reset the adapter."); | ||
183 | |||
172 | int expose_physicals = -1; | 184 | int expose_physicals = -1; |
173 | module_param(expose_physicals, int, S_IRUGO|S_IWUSR); | 185 | module_param(expose_physicals, int, S_IRUGO|S_IWUSR); |
174 | MODULE_PARM_DESC(expose_physicals, "Expose physical components of the arrays. -1=protect 0=off, 1=on"); | 186 | MODULE_PARM_DESC(expose_physicals, "Expose physical components of the arrays. -1=protect 0=off, 1=on"); |
@@ -1197,6 +1209,12 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
1197 | (int)sizeof(dev->supplement_adapter_info.VpdInfo.Tsid), | 1209 | (int)sizeof(dev->supplement_adapter_info.VpdInfo.Tsid), |
1198 | dev->supplement_adapter_info.VpdInfo.Tsid); | 1210 | dev->supplement_adapter_info.VpdInfo.Tsid); |
1199 | } | 1211 | } |
1212 | if (!check_reset || | ||
1213 | (dev->supplement_adapter_info.SupportedOptions2 & | ||
1214 | le32_to_cpu(AAC_OPTION_IGNORE_RESET))) { | ||
1215 | printk(KERN_INFO "%s%d: Reset Adapter Ignored\n", | ||
1216 | dev->name, dev->id); | ||
1217 | } | ||
1200 | } | 1218 | } |
1201 | 1219 | ||
1202 | dev->nondasd_support = 0; | 1220 | dev->nondasd_support = 0; |