scsi: lpfc: Correct invalid EQ doorbell write on if_type=6
authorJames Smart <jsmart2021@gmail.com>
Mon, 10 Sep 2018 17:30:47 +0000 (10:30 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 12 Sep 2018 00:37:33 +0000 (20:37 -0400)
During attachment, the driver writes the EQ doorbell to disable potential
interrupts from an EQ. The current EQ doorbell format used for clearing the
interrupt is incorrect and uses an if_type=2 format, making the operation act
on the wrong EQ.

Correct the code to use the proper if_type=6 EQ doorbell format.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_sli.c

index 495de99ed82d507e556f888c1471bf9ac717adc7..99fddd05667567c9beffcfa5fe17277c8be32425 100644 (file)
@@ -392,11 +392,7 @@ lpfc_sli4_if6_eq_clr_intr(struct lpfc_queue *q)
        struct lpfc_register doorbell;
 
        doorbell.word0 = 0;
-       bf_set(lpfc_eqcq_doorbell_eqci, &doorbell, 1);
-       bf_set(lpfc_eqcq_doorbell_qt, &doorbell, LPFC_QUEUE_TYPE_EVENT);
-       bf_set(lpfc_eqcq_doorbell_eqid_hi, &doorbell,
-               (q->queue_id >> LPFC_EQID_HI_FIELD_SHIFT));
-       bf_set(lpfc_eqcq_doorbell_eqid_lo, &doorbell, q->queue_id);
+       bf_set(lpfc_if6_eq_doorbell_eqid, &doorbell, q->queue_id);
        writel(doorbell.word0, q->phba->sli4_hba.EQDBregaddr);
 }