]> git.baikalelectronics.ru Git - kernel.git/commitdiff
scsi: qla2xxx: Call process_response_queue() in Tx path
authorShreyas Deodhar <sdeodhar@marvell.com>
Wed, 8 Sep 2021 16:46:19 +0000 (09:46 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 15 Sep 2021 03:33:20 +0000 (23:33 -0400)
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>
drivers/scsi/qla2xxx/qla_nvme.c

index 877b2b625020471abfbd8e846bbd4caa61ed7f2b..0ae1e081cb03579fea1f97c51162818b92f28bc0 100644 (file)
@@ -399,6 +399,7 @@ static inline int qla2x00_start_nvme_mq(srb_t *sp)
        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;
@@ -410,6 +411,7 @@ static inline int qla2x00_start_nvme_mq(srb_t *sp)
 
        /* Setup qpair pointers */
        req = qpair->req;
+       rsp = qpair->rsp;
        tot_dsds = fd->sg_cnt;
 
        /* Acquire qpair specific lock */
@@ -571,6 +573,10 @@ static inline int qla2x00_start_nvme_mq(srb_t *sp)
        /* 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);