diff options
author | James Smart <james.smart@emulex.com> | 2014-04-04 13:52:02 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-06-02 12:28:47 -0400 |
commit | db55fba8dc26535d34c00a3b3256da0b48608071 (patch) | |
tree | 46253e73ba4f005889625d387c0a47d85b731e04 | |
parent | ee62021a11320e972e0218ab73a5a5196b6aa499 (diff) |
lpfc: Fix SLI4 s abort loop to process all FCP rings and under ring_lock
Fix SLI4 s abort loop to process all FCP rings and under ring_lock
Signed-off-by: James Smart <james.smart@emulex.com>
Reviewed-By: Dick Kennedy <dick.kennedy@emulex.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | drivers/scsi/lpfc/lpfc_crtn.h | 1 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_init.c | 23 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 155 |
3 files changed, 99 insertions, 80 deletions
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h index adda0bf7a244..429116a9cb7d 100644 --- a/drivers/scsi/lpfc/lpfc_crtn.h +++ b/drivers/scsi/lpfc/lpfc_crtn.h | |||
@@ -289,6 +289,7 @@ int lpfc_sli_issue_iocb(struct lpfc_hba *, uint32_t, | |||
289 | void lpfc_sli_pcimem_bcopy(void *, void *, uint32_t); | 289 | void lpfc_sli_pcimem_bcopy(void *, void *, uint32_t); |
290 | void lpfc_sli_bemem_bcopy(void *, void *, uint32_t); | 290 | void lpfc_sli_bemem_bcopy(void *, void *, uint32_t); |
291 | void lpfc_sli_abort_iocb_ring(struct lpfc_hba *, struct lpfc_sli_ring *); | 291 | void lpfc_sli_abort_iocb_ring(struct lpfc_hba *, struct lpfc_sli_ring *); |
292 | void lpfc_sli_abort_fcp_rings(struct lpfc_hba *phba); | ||
292 | void lpfc_sli_hba_iocb_abort(struct lpfc_hba *); | 293 | void lpfc_sli_hba_iocb_abort(struct lpfc_hba *); |
293 | void lpfc_sli_flush_fcp_rings(struct lpfc_hba *); | 294 | void lpfc_sli_flush_fcp_rings(struct lpfc_hba *); |
294 | int lpfc_sli_ringpostbuf_put(struct lpfc_hba *, struct lpfc_sli_ring *, | 295 | int lpfc_sli_ringpostbuf_put(struct lpfc_hba *, struct lpfc_sli_ring *, |
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index 9f3efdb9e833..02d8731eb365 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c | |||
@@ -880,8 +880,6 @@ lpfc_hba_clean_txcmplq(struct lpfc_hba *phba) | |||
880 | LIST_HEAD(completions); | 880 | LIST_HEAD(completions); |
881 | int i; | 881 | int i; |
882 | 882 | ||
883 | |||
884 | |||
885 | for (i = 0; i < psli->num_rings; i++) { | 883 | for (i = 0; i < psli->num_rings; i++) { |
886 | pring = &psli->ring[i]; | 884 | pring = &psli->ring[i]; |
887 | if (phba->sli_rev >= LPFC_SLI_REV4) | 885 | if (phba->sli_rev >= LPFC_SLI_REV4) |
@@ -892,6 +890,7 @@ lpfc_hba_clean_txcmplq(struct lpfc_hba *phba) | |||
892 | * way, nothing should be on txcmplq as it will NEVER complete. | 890 | * way, nothing should be on txcmplq as it will NEVER complete. |
893 | */ | 891 | */ |
894 | list_splice_init(&pring->txcmplq, &completions); | 892 | list_splice_init(&pring->txcmplq, &completions); |
893 | pring->txcmplq_cnt = 0; | ||
895 | 894 | ||
896 | if (phba->sli_rev >= LPFC_SLI_REV4) | 895 | if (phba->sli_rev >= LPFC_SLI_REV4) |
897 | spin_unlock_irq(&pring->ring_lock); | 896 | spin_unlock_irq(&pring->ring_lock); |
@@ -1300,7 +1299,6 @@ static void | |||
1300 | lpfc_handle_deferred_eratt(struct lpfc_hba *phba) | 1299 | lpfc_handle_deferred_eratt(struct lpfc_hba *phba) |
1301 | { | 1300 | { |
1302 | uint32_t old_host_status = phba->work_hs; | 1301 | uint32_t old_host_status = phba->work_hs; |
1303 | struct lpfc_sli_ring *pring; | ||
1304 | struct lpfc_sli *psli = &phba->sli; | 1302 | struct lpfc_sli *psli = &phba->sli; |
1305 | 1303 | ||
1306 | /* If the pci channel is offline, ignore possible errors, | 1304 | /* If the pci channel is offline, ignore possible errors, |
@@ -1329,8 +1327,7 @@ lpfc_handle_deferred_eratt(struct lpfc_hba *phba) | |||
1329 | * dropped by the firmware. Error iocb (I/O) on txcmplq and let the | 1327 | * dropped by the firmware. Error iocb (I/O) on txcmplq and let the |
1330 | * SCSI layer retry it after re-establishing link. | 1328 | * SCSI layer retry it after re-establishing link. |
1331 | */ | 1329 | */ |
1332 | pring = &psli->ring[psli->fcp_ring]; | 1330 | lpfc_sli_abort_fcp_rings(phba); |
1333 | lpfc_sli_abort_iocb_ring(phba, pring); | ||
1334 | 1331 | ||
1335 | /* | 1332 | /* |
1336 | * There was a firmware error. Take the hba offline and then | 1333 | * There was a firmware error. Take the hba offline and then |
@@ -1398,7 +1395,6 @@ lpfc_handle_eratt_s3(struct lpfc_hba *phba) | |||
1398 | { | 1395 | { |
1399 | struct lpfc_vport *vport = phba->pport; | 1396 | struct lpfc_vport *vport = phba->pport; |
1400 | struct lpfc_sli *psli = &phba->sli; | 1397 | struct lpfc_sli *psli = &phba->sli; |
1401 | struct lpfc_sli_ring *pring; | ||
1402 | uint32_t event_data; | 1398 | uint32_t event_data; |
1403 | unsigned long temperature; | 1399 | unsigned long temperature; |
1404 | struct temp_event temp_event_data; | 1400 | struct temp_event temp_event_data; |
@@ -1450,8 +1446,7 @@ lpfc_handle_eratt_s3(struct lpfc_hba *phba) | |||
1450 | * Error iocb (I/O) on txcmplq and let the SCSI layer | 1446 | * Error iocb (I/O) on txcmplq and let the SCSI layer |
1451 | * retry it after re-establishing link. | 1447 | * retry it after re-establishing link. |
1452 | */ | 1448 | */ |
1453 | pring = &psli->ring[psli->fcp_ring]; | 1449 | lpfc_sli_abort_fcp_rings(phba); |
1454 | lpfc_sli_abort_iocb_ring(phba, pring); | ||
1455 | 1450 | ||
1456 | /* | 1451 | /* |
1457 | * There was a firmware error. Take the hba offline and then | 1452 | * There was a firmware error. Take the hba offline and then |
@@ -9716,9 +9711,6 @@ lpfc_pci_resume_one_s3(struct pci_dev *pdev) | |||
9716 | static void | 9711 | static void |
9717 | lpfc_sli_prep_dev_for_recover(struct lpfc_hba *phba) | 9712 | lpfc_sli_prep_dev_for_recover(struct lpfc_hba *phba) |
9718 | { | 9713 | { |
9719 | struct lpfc_sli *psli = &phba->sli; | ||
9720 | struct lpfc_sli_ring *pring; | ||
9721 | |||
9722 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | 9714 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
9723 | "2723 PCI channel I/O abort preparing for recovery\n"); | 9715 | "2723 PCI channel I/O abort preparing for recovery\n"); |
9724 | 9716 | ||
@@ -9726,8 +9718,7 @@ lpfc_sli_prep_dev_for_recover(struct lpfc_hba *phba) | |||
9726 | * There may be errored I/Os through HBA, abort all I/Os on txcmplq | 9718 | * There may be errored I/Os through HBA, abort all I/Os on txcmplq |
9727 | * and let the SCSI mid-layer to retry them to recover. | 9719 | * and let the SCSI mid-layer to retry them to recover. |
9728 | */ | 9720 | */ |
9729 | pring = &psli->ring[psli->fcp_ring]; | 9721 | lpfc_sli_abort_fcp_rings(phba); |
9730 | lpfc_sli_abort_iocb_ring(phba, pring); | ||
9731 | } | 9722 | } |
9732 | 9723 | ||
9733 | /** | 9724 | /** |
@@ -10470,17 +10461,13 @@ lpfc_pci_resume_one_s4(struct pci_dev *pdev) | |||
10470 | static void | 10461 | static void |
10471 | lpfc_sli4_prep_dev_for_recover(struct lpfc_hba *phba) | 10462 | lpfc_sli4_prep_dev_for_recover(struct lpfc_hba *phba) |
10472 | { | 10463 | { |
10473 | struct lpfc_sli *psli = &phba->sli; | ||
10474 | struct lpfc_sli_ring *pring; | ||
10475 | |||
10476 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | 10464 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
10477 | "2828 PCI channel I/O abort preparing for recovery\n"); | 10465 | "2828 PCI channel I/O abort preparing for recovery\n"); |
10478 | /* | 10466 | /* |
10479 | * There may be errored I/Os through HBA, abort all I/Os on txcmplq | 10467 | * There may be errored I/Os through HBA, abort all I/Os on txcmplq |
10480 | * and let the SCSI mid-layer to retry them to recover. | 10468 | * and let the SCSI mid-layer to retry them to recover. |
10481 | */ | 10469 | */ |
10482 | pring = &psli->ring[psli->fcp_ring]; | 10470 | lpfc_sli_abort_fcp_rings(phba); |
10483 | lpfc_sli_abort_iocb_ring(phba, pring); | ||
10484 | } | 10471 | } |
10485 | 10472 | ||
10486 | /** | 10473 | /** |
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 393662c24df5..91e3c51f8265 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -3532,14 +3532,27 @@ lpfc_sli_abort_iocb_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) | |||
3532 | /* Error everything on txq and txcmplq | 3532 | /* Error everything on txq and txcmplq |
3533 | * First do the txq. | 3533 | * First do the txq. |
3534 | */ | 3534 | */ |
3535 | spin_lock_irq(&phba->hbalock); | 3535 | if (phba->sli_rev >= LPFC_SLI_REV4) { |
3536 | list_splice_init(&pring->txq, &completions); | 3536 | spin_lock_irq(&pring->ring_lock); |
3537 | list_splice_init(&pring->txq, &completions); | ||
3538 | pring->txq_cnt = 0; | ||
3539 | spin_unlock_irq(&pring->ring_lock); | ||
3537 | 3540 | ||
3538 | /* Next issue ABTS for everything on the txcmplq */ | 3541 | spin_lock_irq(&phba->hbalock); |
3539 | list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) | 3542 | /* Next issue ABTS for everything on the txcmplq */ |
3540 | lpfc_sli_issue_abort_iotag(phba, pring, iocb); | 3543 | list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) |
3544 | lpfc_sli_issue_abort_iotag(phba, pring, iocb); | ||
3545 | spin_unlock_irq(&phba->hbalock); | ||
3546 | } else { | ||
3547 | spin_lock_irq(&phba->hbalock); | ||
3548 | list_splice_init(&pring->txq, &completions); | ||
3549 | pring->txq_cnt = 0; | ||
3541 | 3550 | ||
3542 | spin_unlock_irq(&phba->hbalock); | 3551 | /* Next issue ABTS for everything on the txcmplq */ |
3552 | list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) | ||
3553 | lpfc_sli_issue_abort_iotag(phba, pring, iocb); | ||
3554 | spin_unlock_irq(&phba->hbalock); | ||
3555 | } | ||
3543 | 3556 | ||
3544 | /* Cancel all the IOCBs from the completions list */ | 3557 | /* Cancel all the IOCBs from the completions list */ |
3545 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, | 3558 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, |
@@ -3547,6 +3560,36 @@ lpfc_sli_abort_iocb_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) | |||
3547 | } | 3560 | } |
3548 | 3561 | ||
3549 | /** | 3562 | /** |
3563 | * lpfc_sli_abort_fcp_rings - Abort all iocbs in all FCP rings | ||
3564 | * @phba: Pointer to HBA context object. | ||
3565 | * @pring: Pointer to driver SLI ring object. | ||
3566 | * | ||
3567 | * This function aborts all iocbs in FCP rings and frees all the iocb | ||
3568 | * objects in txq. This function issues an abort iocb for all the iocb commands | ||
3569 | * in txcmplq. The iocbs in the txcmplq is not guaranteed to complete before | ||
3570 | * the return of this function. The caller is not required to hold any locks. | ||
3571 | **/ | ||
3572 | void | ||
3573 | lpfc_sli_abort_fcp_rings(struct lpfc_hba *phba) | ||
3574 | { | ||
3575 | struct lpfc_sli *psli = &phba->sli; | ||
3576 | struct lpfc_sli_ring *pring; | ||
3577 | uint32_t i; | ||
3578 | |||
3579 | /* Look on all the FCP Rings for the iotag */ | ||
3580 | if (phba->sli_rev >= LPFC_SLI_REV4) { | ||
3581 | for (i = 0; i < phba->cfg_fcp_io_channel; i++) { | ||
3582 | pring = &psli->ring[i + MAX_SLI3_CONFIGURED_RINGS]; | ||
3583 | lpfc_sli_abort_iocb_ring(phba, pring); | ||
3584 | } | ||
3585 | } else { | ||
3586 | pring = &psli->ring[psli->fcp_ring]; | ||
3587 | lpfc_sli_abort_iocb_ring(phba, pring); | ||
3588 | } | ||
3589 | } | ||
3590 | |||
3591 | |||
3592 | /** | ||
3550 | * lpfc_sli_flush_fcp_rings - flush all iocbs in the fcp ring | 3593 | * lpfc_sli_flush_fcp_rings - flush all iocbs in the fcp ring |
3551 | * @phba: Pointer to HBA context object. | 3594 | * @phba: Pointer to HBA context object. |
3552 | * | 3595 | * |
@@ -3563,28 +3606,55 @@ lpfc_sli_flush_fcp_rings(struct lpfc_hba *phba) | |||
3563 | LIST_HEAD(txcmplq); | 3606 | LIST_HEAD(txcmplq); |
3564 | struct lpfc_sli *psli = &phba->sli; | 3607 | struct lpfc_sli *psli = &phba->sli; |
3565 | struct lpfc_sli_ring *pring; | 3608 | struct lpfc_sli_ring *pring; |
3566 | 3609 | uint32_t i; | |
3567 | /* Currently, only one fcp ring */ | ||
3568 | pring = &psli->ring[psli->fcp_ring]; | ||
3569 | 3610 | ||
3570 | spin_lock_irq(&phba->hbalock); | 3611 | spin_lock_irq(&phba->hbalock); |
3571 | /* Retrieve everything on txq */ | ||
3572 | list_splice_init(&pring->txq, &txq); | ||
3573 | |||
3574 | /* Retrieve everything on the txcmplq */ | ||
3575 | list_splice_init(&pring->txcmplq, &txcmplq); | ||
3576 | |||
3577 | /* Indicate the I/O queues are flushed */ | 3612 | /* Indicate the I/O queues are flushed */ |
3578 | phba->hba_flag |= HBA_FCP_IOQ_FLUSH; | 3613 | phba->hba_flag |= HBA_FCP_IOQ_FLUSH; |
3579 | spin_unlock_irq(&phba->hbalock); | 3614 | spin_unlock_irq(&phba->hbalock); |
3580 | 3615 | ||
3581 | /* Flush the txq */ | 3616 | /* Look on all the FCP Rings for the iotag */ |
3582 | lpfc_sli_cancel_iocbs(phba, &txq, IOSTAT_LOCAL_REJECT, | 3617 | if (phba->sli_rev >= LPFC_SLI_REV4) { |
3583 | IOERR_SLI_DOWN); | 3618 | for (i = 0; i < phba->cfg_fcp_io_channel; i++) { |
3619 | pring = &psli->ring[i + MAX_SLI3_CONFIGURED_RINGS]; | ||
3620 | |||
3621 | spin_lock_irq(&pring->ring_lock); | ||
3622 | /* Retrieve everything on txq */ | ||
3623 | list_splice_init(&pring->txq, &txq); | ||
3624 | /* Retrieve everything on the txcmplq */ | ||
3625 | list_splice_init(&pring->txcmplq, &txcmplq); | ||
3626 | pring->txq_cnt = 0; | ||
3627 | pring->txcmplq_cnt = 0; | ||
3628 | spin_unlock_irq(&pring->ring_lock); | ||
3629 | |||
3630 | /* Flush the txq */ | ||
3631 | lpfc_sli_cancel_iocbs(phba, &txq, | ||
3632 | IOSTAT_LOCAL_REJECT, | ||
3633 | IOERR_SLI_DOWN); | ||
3634 | /* Flush the txcmpq */ | ||
3635 | lpfc_sli_cancel_iocbs(phba, &txcmplq, | ||
3636 | IOSTAT_LOCAL_REJECT, | ||
3637 | IOERR_SLI_DOWN); | ||
3638 | } | ||
3639 | } else { | ||
3640 | pring = &psli->ring[psli->fcp_ring]; | ||
3584 | 3641 | ||
3585 | /* Flush the txcmpq */ | 3642 | spin_lock_irq(&phba->hbalock); |
3586 | lpfc_sli_cancel_iocbs(phba, &txcmplq, IOSTAT_LOCAL_REJECT, | 3643 | /* Retrieve everything on txq */ |
3587 | IOERR_SLI_DOWN); | 3644 | list_splice_init(&pring->txq, &txq); |
3645 | /* Retrieve everything on the txcmplq */ | ||
3646 | list_splice_init(&pring->txcmplq, &txcmplq); | ||
3647 | pring->txq_cnt = 0; | ||
3648 | pring->txcmplq_cnt = 0; | ||
3649 | spin_unlock_irq(&phba->hbalock); | ||
3650 | |||
3651 | /* Flush the txq */ | ||
3652 | lpfc_sli_cancel_iocbs(phba, &txq, IOSTAT_LOCAL_REJECT, | ||
3653 | IOERR_SLI_DOWN); | ||
3654 | /* Flush the txcmpq */ | ||
3655 | lpfc_sli_cancel_iocbs(phba, &txcmplq, IOSTAT_LOCAL_REJECT, | ||
3656 | IOERR_SLI_DOWN); | ||
3657 | } | ||
3588 | } | 3658 | } |
3589 | 3659 | ||
3590 | /** | 3660 | /** |
@@ -6722,7 +6792,6 @@ lpfc_mbox_timeout_handler(struct lpfc_hba *phba) | |||
6722 | LPFC_MBOXQ_t *pmbox = phba->sli.mbox_active; | 6792 | LPFC_MBOXQ_t *pmbox = phba->sli.mbox_active; |
6723 | MAILBOX_t *mb = &pmbox->u.mb; | 6793 | MAILBOX_t *mb = &pmbox->u.mb; |
6724 | struct lpfc_sli *psli = &phba->sli; | 6794 | struct lpfc_sli *psli = &phba->sli; |
6725 | struct lpfc_sli_ring *pring; | ||
6726 | 6795 | ||
6727 | /* If the mailbox completed, process the completion and return */ | 6796 | /* If the mailbox completed, process the completion and return */ |
6728 | if (lpfc_sli4_process_missed_mbox_completions(phba)) | 6797 | if (lpfc_sli4_process_missed_mbox_completions(phba)) |
@@ -6764,8 +6833,7 @@ lpfc_mbox_timeout_handler(struct lpfc_hba *phba) | |||
6764 | psli->sli_flag &= ~LPFC_SLI_ACTIVE; | 6833 | psli->sli_flag &= ~LPFC_SLI_ACTIVE; |
6765 | spin_unlock_irq(&phba->hbalock); | 6834 | spin_unlock_irq(&phba->hbalock); |
6766 | 6835 | ||
6767 | pring = &psli->ring[psli->fcp_ring]; | 6836 | lpfc_sli_abort_fcp_rings(phba); |
6768 | lpfc_sli_abort_iocb_ring(phba, pring); | ||
6769 | 6837 | ||
6770 | lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_SLI, | 6838 | lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_SLI, |
6771 | "0345 Resetting board due to mailbox timeout\n"); | 6839 | "0345 Resetting board due to mailbox timeout\n"); |
@@ -9805,43 +9873,6 @@ abort_iotag_exit: | |||
9805 | } | 9873 | } |
9806 | 9874 | ||
9807 | /** | 9875 | /** |
9808 | * lpfc_sli_iocb_ring_abort - Unconditionally abort all iocbs on an iocb ring | ||
9809 | * @phba: Pointer to HBA context object. | ||
9810 | * @pring: Pointer to driver SLI ring object. | ||
9811 | * | ||
9812 | * This function aborts all iocbs in the given ring and frees all the iocb | ||
9813 | * objects in txq. This function issues abort iocbs unconditionally for all | ||
9814 | * the iocb commands in txcmplq. The iocbs in the txcmplq is not guaranteed | ||
9815 | * to complete before the return of this function. The caller is not required | ||
9816 | * to hold any locks. | ||
9817 | **/ | ||
9818 | static void | ||
9819 | lpfc_sli_iocb_ring_abort(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) | ||
9820 | { | ||
9821 | LIST_HEAD(completions); | ||
9822 | struct lpfc_iocbq *iocb, *next_iocb; | ||
9823 | |||
9824 | if (pring->ringno == LPFC_ELS_RING) | ||
9825 | lpfc_fabric_abort_hba(phba); | ||
9826 | |||
9827 | spin_lock_irq(&phba->hbalock); | ||
9828 | |||
9829 | /* Take off all the iocbs on txq for cancelling */ | ||
9830 | list_splice_init(&pring->txq, &completions); | ||
9831 | pring->txq_cnt = 0; | ||
9832 | |||
9833 | /* Next issue ABTS for everything on the txcmplq */ | ||
9834 | list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) | ||
9835 | lpfc_sli_abort_iotag_issue(phba, pring, iocb); | ||
9836 | |||
9837 | spin_unlock_irq(&phba->hbalock); | ||
9838 | |||
9839 | /* Cancel all the IOCBs from the completions list */ | ||
9840 | lpfc_sli_cancel_iocbs(phba, &completions, IOSTAT_LOCAL_REJECT, | ||
9841 | IOERR_SLI_ABORTED); | ||
9842 | } | ||
9843 | |||
9844 | /** | ||
9845 | * lpfc_sli_hba_iocb_abort - Abort all iocbs to an hba. | 9876 | * lpfc_sli_hba_iocb_abort - Abort all iocbs to an hba. |
9846 | * @phba: pointer to lpfc HBA data structure. | 9877 | * @phba: pointer to lpfc HBA data structure. |
9847 | * | 9878 | * |
@@ -9856,7 +9887,7 @@ lpfc_sli_hba_iocb_abort(struct lpfc_hba *phba) | |||
9856 | 9887 | ||
9857 | for (i = 0; i < psli->num_rings; i++) { | 9888 | for (i = 0; i < psli->num_rings; i++) { |
9858 | pring = &psli->ring[i]; | 9889 | pring = &psli->ring[i]; |
9859 | lpfc_sli_iocb_ring_abort(phba, pring); | 9890 | lpfc_sli_abort_iocb_ring(phba, pring); |
9860 | } | 9891 | } |
9861 | } | 9892 | } |
9862 | 9893 | ||