]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: lpfc: fix lpfc_nvmet_mrq to be bound by hdw queue count
authorJames Smart <jsmart2021@gmail.com>
Fri, 18 Oct 2019 21:18:17 +0000 (14:18 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 25 Oct 2019 01:02:04 +0000 (21:02 -0400)
Currently, lpfc_nvmet_mrq is always scaled back to the min(lpfc_nvmet_mrq,
lpfc_irq_chann). There's no reason to reduce it to the number of interrupt
vectors.  Rather, it should be scaled down based on the number of hardware
queues for the system (if lower than max of 16).

Change scaling to use hardware queue count rather than interrupt vector
count.

Link: https://lore.kernel.org/r/20191018211832.7917-2-jsmart2021@gmail.com
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_init.c

index e4c89e56c63286387cf6e787d7207d5b395ceee6..266a71b01c4709f313a399bcf579649a0d4d4508 100644 (file)
@@ -7264,11 +7264,11 @@ lpfc_nvme_mod_param_dep(struct lpfc_hba *phba)
                }
 
                if (!phba->cfg_nvmet_mrq)
-                       phba->cfg_nvmet_mrq = phba->cfg_irq_chann;
+                       phba->cfg_nvmet_mrq = phba->cfg_hdw_queue;
 
                /* Adjust lpfc_nvmet_mrq to avoid running out of WQE slots */
-               if (phba->cfg_nvmet_mrq > phba->cfg_irq_chann) {
-                       phba->cfg_nvmet_mrq = phba->cfg_irq_chann;
+               if (phba->cfg_nvmet_mrq > phba->cfg_hdw_queue) {
+                       phba->cfg_nvmet_mrq = phba->cfg_hdw_queue;
                        lpfc_printf_log(phba, KERN_ERR, LOG_NVME_DISC,
                                        "6018 Adjust lpfc_nvmet_mrq to %d\n",
                                        phba->cfg_nvmet_mrq);
index a0aa7a5558118e79264634bb33af7bcac938a0d1..d2cb3b0d1849d4c6fdf15ed9d5929171ef9f02fb 100644 (file)
@@ -8630,8 +8630,8 @@ lpfc_sli4_queue_verify(struct lpfc_hba *phba)
         */
 
        if (phba->nvmet_support) {
-               if (phba->cfg_irq_chann < phba->cfg_nvmet_mrq)
-                       phba->cfg_nvmet_mrq = phba->cfg_irq_chann;
+               if (phba->cfg_hdw_queue < phba->cfg_nvmet_mrq)
+                       phba->cfg_nvmet_mrq = phba->cfg_hdw_queue;
                if (phba->cfg_nvmet_mrq > LPFC_NVMET_MRQ_MAX)
                        phba->cfg_nvmet_mrq = LPFC_NVMET_MRQ_MAX;
        }
@@ -11033,8 +11033,6 @@ lpfc_sli4_enable_msix(struct lpfc_hba *phba)
                                phba->cfg_irq_chann, vectors);
                if (phba->cfg_irq_chann > vectors)
                        phba->cfg_irq_chann = vectors;
-               if (phba->nvmet_support && (phba->cfg_nvmet_mrq > vectors))
-                       phba->cfg_nvmet_mrq = vectors;
        }
 
        return rc;