diff options
-rw-r--r-- | drivers/scsi/aacraid/commsup.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index 0fd462a876f9..4893a6d06a33 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c | |||
@@ -1102,6 +1102,20 @@ static int _aac_reset_adapter(struct aac_dev *aac) | |||
1102 | goto out; | 1102 | goto out; |
1103 | } | 1103 | } |
1104 | 1104 | ||
1105 | /* | ||
1106 | * Loop through the fibs, close the synchronous FIBS | ||
1107 | */ | ||
1108 | for (index = 0; index < (aac->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB); index++) { | ||
1109 | struct fib *fib = &aac->fibs[index]; | ||
1110 | if (!(fib->hw_fib->header.XferState & cpu_to_le32(NoResponseExpected | Async)) && | ||
1111 | (fib->hw_fib->header.XferState & cpu_to_le32(ResponseExpected))) { | ||
1112 | unsigned long flagv; | ||
1113 | spin_lock_irqsave(&fib->event_lock, flagv); | ||
1114 | up(&fib->event_wait); | ||
1115 | spin_unlock_irqrestore(&fib->event_lock, flagv); | ||
1116 | schedule(); | ||
1117 | } | ||
1118 | } | ||
1105 | index = aac->cardtype; | 1119 | index = aac->cardtype; |
1106 | 1120 | ||
1107 | /* | 1121 | /* |