aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_sli.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c37
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 }