aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/message/fusion
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/message/fusion')
-rw-r--r--drivers/message/fusion/mptsas.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 02a18dfcd52a..83873e3d0ce7 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -325,7 +325,6 @@ mptsas_cleanup_fw_event_q(MPT_ADAPTER *ioc)
325{ 325{
326 struct fw_event_work *fw_event, *next; 326 struct fw_event_work *fw_event, *next;
327 struct mptsas_target_reset_event *target_reset_list, *n; 327 struct mptsas_target_reset_event *target_reset_list, *n;
328 u8 flush_q;
329 MPT_SCSI_HOST *hd = shost_priv(ioc->sh); 328 MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
330 329
331 /* flush the target_reset_list */ 330 /* flush the target_reset_list */
@@ -345,15 +344,10 @@ mptsas_cleanup_fw_event_q(MPT_ADAPTER *ioc)
345 !ioc->fw_event_q || in_interrupt()) 344 !ioc->fw_event_q || in_interrupt())
346 return; 345 return;
347 346
348 flush_q = 0;
349 list_for_each_entry_safe(fw_event, next, &ioc->fw_event_list, list) { 347 list_for_each_entry_safe(fw_event, next, &ioc->fw_event_list, list) {
350 if (cancel_delayed_work(&fw_event->work)) 348 if (cancel_delayed_work(&fw_event->work))
351 mptsas_free_fw_event(ioc, fw_event); 349 mptsas_free_fw_event(ioc, fw_event);
352 else
353 flush_q = 1;
354 } 350 }
355 if (flush_q)
356 flush_workqueue(ioc->fw_event_q);
357} 351}
358 352
359 353
@@ -1279,7 +1273,6 @@ mptsas_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
1279 } 1273 }
1280 mptsas_cleanup_fw_event_q(ioc); 1274 mptsas_cleanup_fw_event_q(ioc);
1281 mptsas_queue_rescan(ioc); 1275 mptsas_queue_rescan(ioc);
1282 mptsas_fw_event_on(ioc);
1283 break; 1276 break;
1284 default: 1277 default:
1285 break; 1278 break;
@@ -1599,6 +1592,7 @@ mptsas_firmware_event_work(struct work_struct *work)
1599 mptsas_scan_sas_topology(ioc); 1592 mptsas_scan_sas_topology(ioc);
1600 ioc->in_rescan = 0; 1593 ioc->in_rescan = 0;
1601 mptsas_free_fw_event(ioc, fw_event); 1594 mptsas_free_fw_event(ioc, fw_event);
1595 mptsas_fw_event_on(ioc);
1602 return; 1596 return;
1603 } 1597 }
1604 1598