diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_scsi.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_scsi.c | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index 9ee2927ad82a..94458d7a8f7f 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c | |||
@@ -152,7 +152,6 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba) | |||
152 | } | 152 | } |
153 | } | 153 | } |
154 | lpfc_destroy_vport_work_array(vports); | 154 | lpfc_destroy_vport_work_array(vports); |
155 | spin_unlock_irq(&phba->hbalock); | ||
156 | atomic_set(&phba->num_rsrc_err, 0); | 155 | atomic_set(&phba->num_rsrc_err, 0); |
157 | atomic_set(&phba->num_cmd_success, 0); | 156 | atomic_set(&phba->num_cmd_success, 0); |
158 | } | 157 | } |
@@ -1195,14 +1194,12 @@ lpfc_device_reset_handler(struct scsi_cmnd *cmnd) | |||
1195 | * Unfortunately, some targets do not abide by this forcing the driver | 1194 | * Unfortunately, some targets do not abide by this forcing the driver |
1196 | * to double check. | 1195 | * to double check. |
1197 | */ | 1196 | */ |
1198 | cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], | 1197 | cnt = lpfc_sli_sum_iocb(vport, cmnd->device->id, cmnd->device->lun, |
1199 | cmnd->device->id, cmnd->device->lun, | ||
1200 | LPFC_CTX_LUN); | 1198 | LPFC_CTX_LUN); |
1201 | if (cnt) | 1199 | if (cnt) |
1202 | lpfc_sli_abort_iocb(phba, | 1200 | lpfc_sli_abort_iocb(vport, &phba->sli.ring[phba->sli.fcp_ring], |
1203 | &phba->sli.ring[phba->sli.fcp_ring], | ||
1204 | cmnd->device->id, cmnd->device->lun, | 1201 | cmnd->device->id, cmnd->device->lun, |
1205 | 0, LPFC_CTX_LUN); | 1202 | LPFC_CTX_LUN); |
1206 | loopcnt = 0; | 1203 | loopcnt = 0; |
1207 | while(cnt) { | 1204 | while(cnt) { |
1208 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); | 1205 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); |
@@ -1211,10 +1208,8 @@ lpfc_device_reset_handler(struct scsi_cmnd *cmnd) | |||
1211 | > (2 * vport->cfg_devloss_tmo)/LPFC_RESET_WAIT) | 1208 | > (2 * vport->cfg_devloss_tmo)/LPFC_RESET_WAIT) |
1212 | break; | 1209 | break; |
1213 | 1210 | ||
1214 | cnt = lpfc_sli_sum_iocb(phba, | 1211 | cnt = lpfc_sli_sum_iocb(vport, cmnd->device->id, |
1215 | &phba->sli.ring[phba->sli.fcp_ring], | 1212 | cmnd->device->lun, LPFC_CTX_LUN); |
1216 | cmnd->device->id, cmnd->device->lun, | ||
1217 | LPFC_CTX_LUN); | ||
1218 | } | 1213 | } |
1219 | 1214 | ||
1220 | if (cnt) { | 1215 | if (cnt) { |
@@ -1304,11 +1299,10 @@ lpfc_bus_reset_handler(struct scsi_cmnd *cmnd) | |||
1304 | * the targets. Unfortunately, some targets do not abide by | 1299 | * the targets. Unfortunately, some targets do not abide by |
1305 | * this forcing the driver to double check. | 1300 | * this forcing the driver to double check. |
1306 | */ | 1301 | */ |
1307 | cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], | 1302 | cnt = lpfc_sli_sum_iocb(vport, 0, 0, LPFC_CTX_HOST); |
1308 | 0, 0, LPFC_CTX_HOST); | ||
1309 | if (cnt) | 1303 | if (cnt) |
1310 | lpfc_sli_abort_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], | 1304 | lpfc_sli_abort_iocb(vport, &phba->sli.ring[phba->sli.fcp_ring], |
1311 | 0, 0, 0, LPFC_CTX_HOST); | 1305 | 0, 0, LPFC_CTX_HOST); |
1312 | loopcnt = 0; | 1306 | loopcnt = 0; |
1313 | while(cnt) { | 1307 | while(cnt) { |
1314 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); | 1308 | schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); |
@@ -1317,9 +1311,7 @@ lpfc_bus_reset_handler(struct scsi_cmnd *cmnd) | |||
1317 | > (2 * vport->cfg_devloss_tmo)/LPFC_RESET_WAIT) | 1311 | > (2 * vport->cfg_devloss_tmo)/LPFC_RESET_WAIT) |
1318 | break; | 1312 | break; |
1319 | 1313 | ||
1320 | cnt = lpfc_sli_sum_iocb(phba, | 1314 | cnt = lpfc_sli_sum_iocb(vport, 0, 0, LPFC_CTX_HOST); |
1321 | &phba->sli.ring[phba->sli.fcp_ring], | ||
1322 | 0, 0, LPFC_CTX_HOST); | ||
1323 | } | 1315 | } |
1324 | 1316 | ||
1325 | if (cnt) { | 1317 | if (cnt) { |