From: Shreyas Deodhar <sdeodhar@marvell.com>
Date: Wed, 8 Sep 2021 09:46:19 -0700
Subject: scsi: qla2xxx: Call process_response_queue() in Tx path
Patch-mainline: v5.16-rc1
Git-commit: 38c61709e66294f33e474eaafd6ae3be381030da
References: bsc#1190941
Process responses in Tx path if any available for better performance.
Link: https://lore.kernel.org/r/20210908164622.19240-8-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Shreyas Deodhar <sdeodhar@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Acked-by: Daniel Wagner <dwagner@suse.de>
---
drivers/scsi/qla2xxx/qla_nvme.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/drivers/scsi/qla2xxx/qla_nvme.c
+++ b/drivers/scsi/qla2xxx/qla_nvme.c
@@ -389,6 +389,7 @@ static inline int qla2x00_start_nvme_mq(
uint16_t avail_dsds;
struct dsd64 *cur_dsd;
struct req_que *req = NULL;
+ struct rsp_que *rsp = NULL;
struct scsi_qla_host *vha = sp->fcport->vha;
struct qla_hw_data *ha = vha->hw;
struct qla_qpair *qpair = sp->qpair;
@@ -400,6 +401,7 @@ static inline int qla2x00_start_nvme_mq(
/* Setup qpair pointers */
req = qpair->req;
+ rsp = qpair->rsp;
tot_dsds = fd->sg_cnt;
/* Acquire qpair specific lock */
@@ -561,6 +563,10 @@ static inline int qla2x00_start_nvme_mq(
/* Set chip new ring index. */
wrt_reg_dword(req->req_q_in, req->ring_index);
+ if (vha->flags.process_response_queue &&
+ rsp->ring_ptr->signature != RESPONSE_PROCESSED)
+ qla24xx_process_response_queue(vha, rsp);
+
queuing_error:
spin_unlock_irqrestore(&qpair->qp_lock, flags);