diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index f4d5a6b00fde..14fe6b000b59 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -395,6 +395,14 @@ lpfc_sli_submit_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, | |||
395 | */ | 395 | */ |
396 | nextiocb->iocb.ulpIoTag = (nextiocb->iocb_cmpl) ? nextiocb->iotag : 0; | 396 | nextiocb->iocb.ulpIoTag = (nextiocb->iocb_cmpl) ? nextiocb->iotag : 0; |
397 | 397 | ||
398 | if (pring->ringno == LPFC_ELS_RING) { | ||
399 | lpfc_debugfs_slow_ring_trc(phba, | ||
400 | "IOCB cmd ring: wd4:x%08x wd6:x%08x wd7:x%08x", | ||
401 | *(((uint32_t *) &nextiocb->iocb) + 4), | ||
402 | *(((uint32_t *) &nextiocb->iocb) + 6), | ||
403 | *(((uint32_t *) &nextiocb->iocb) + 7)); | ||
404 | } | ||
405 | |||
398 | /* | 406 | /* |
399 | * Issue iocb command to adapter | 407 | * Issue iocb command to adapter |
400 | */ | 408 | */ |
@@ -1542,6 +1550,14 @@ lpfc_sli_handle_slow_ring_event(struct lpfc_hba *phba, | |||
1542 | if (++pring->rspidx >= portRspMax) | 1550 | if (++pring->rspidx >= portRspMax) |
1543 | pring->rspidx = 0; | 1551 | pring->rspidx = 0; |
1544 | 1552 | ||
1553 | if (pring->ringno == LPFC_ELS_RING) { | ||
1554 | lpfc_debugfs_slow_ring_trc(phba, | ||
1555 | "IOCB rsp ring: wd4:x%08x wd6:x%08x wd7:x%08x", | ||
1556 | *(((uint32_t *) irsp) + 4), | ||
1557 | *(((uint32_t *) irsp) + 6), | ||
1558 | *(((uint32_t *) irsp) + 7)); | ||
1559 | } | ||
1560 | |||
1545 | writel(pring->rspidx, &phba->host_gp[pring->ringno].rspGetInx); | 1561 | writel(pring->rspidx, &phba->host_gp[pring->ringno].rspGetInx); |
1546 | 1562 | ||
1547 | if (list_empty(&(pring->iocb_continueq))) { | 1563 | if (list_empty(&(pring->iocb_continueq))) { |
@@ -3850,12 +3866,33 @@ lpfc_intr_handler(int irq, void *dev_id) | |||
3850 | if (status & HA_RXMASK) { | 3866 | if (status & HA_RXMASK) { |
3851 | spin_lock(&phba->hbalock); | 3867 | spin_lock(&phba->hbalock); |
3852 | control = readl(phba->HCregaddr); | 3868 | control = readl(phba->HCregaddr); |
3869 | |||
3870 | lpfc_debugfs_slow_ring_trc(phba, | ||
3871 | "ISR slow ring: ctl:x%x stat:x%x isrcnt:x%x", | ||
3872 | control, status, | ||
3873 | (uint32_t)phba->sli.slistat.sli_intr); | ||
3874 | |||
3853 | if (control & (HC_R0INT_ENA << LPFC_ELS_RING)) { | 3875 | if (control & (HC_R0INT_ENA << LPFC_ELS_RING)) { |
3876 | lpfc_debugfs_slow_ring_trc(phba, | ||
3877 | "ISR Disable ring:" | ||
3878 | "pwork:x%x hawork:x%x wait:x%x", | ||
3879 | phba->work_ha, work_ha_copy, | ||
3880 | (uint32_t)((unsigned long) | ||
3881 | phba->work_wait)); | ||
3882 | |||
3854 | control &= | 3883 | control &= |
3855 | ~(HC_R0INT_ENA << LPFC_ELS_RING); | 3884 | ~(HC_R0INT_ENA << LPFC_ELS_RING); |
3856 | writel(control, phba->HCregaddr); | 3885 | writel(control, phba->HCregaddr); |
3857 | readl(phba->HCregaddr); /* flush */ | 3886 | readl(phba->HCregaddr); /* flush */ |
3858 | } | 3887 | } |
3888 | else { | ||
3889 | lpfc_debugfs_slow_ring_trc(phba, | ||
3890 | "ISR slow ring: pwork:" | ||
3891 | "x%x hawork:x%x wait:x%x", | ||
3892 | phba->work_ha, work_ha_copy, | ||
3893 | (uint32_t)((unsigned long) | ||
3894 | phba->work_wait)); | ||
3895 | } | ||
3859 | spin_unlock(&phba->hbalock); | 3896 | spin_unlock(&phba->hbalock); |
3860 | } | 3897 | } |
3861 | } | 3898 | } |