> On Mar 22, 2021, at 11:42 PM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote: > > From: Arun Easi <aeasi@xxxxxxxxxxx> > > Removing the response queue processing in the send path is showing IOPS > drop. Add back the process_response_queue() call in the send path. > Can you share some details of what effect this change made into IOPS? > Signed-off-by: Arun Easi <aeasi@xxxxxxxxxxx> > Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx> > --- > drivers/scsi/qla2xxx/qla_iocb.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c > index 8b41cbaf8535..f26a7a14fce9 100644 > --- a/drivers/scsi/qla2xxx/qla_iocb.c > +++ b/drivers/scsi/qla2xxx/qla_iocb.c > @@ -1600,12 +1600,14 @@ qla24xx_start_scsi(srb_t *sp) > uint16_t req_cnt; > uint16_t tot_dsds; > struct req_que *req = NULL; > + struct rsp_que *rsp; > struct scsi_cmnd *cmd = GET_CMD_SP(sp); > struct scsi_qla_host *vha = sp->vha; > struct qla_hw_data *ha = vha->hw; > > /* Setup device pointers. */ > req = vha->req; > + rsp = req->rsp; > > /* So we know we haven't pci_map'ed anything yet */ > tot_dsds = 0; > @@ -1707,6 +1709,11 @@ qla24xx_start_scsi(srb_t *sp) > /* Set chip new ring index. */ > wrt_reg_dword(req->req_q_in, req->ring_index); > > + /* Manage unprocessed RIO/ZIO commands in response queue. */ > + if (vha->flags.process_response_queue && > + rsp->ring_ptr->signature != RESPONSE_PROCESSED) > + qla24xx_process_response_queue(vha, rsp); > + > spin_unlock_irqrestore(&ha->hardware_lock, flags); > return QLA_SUCCESS; > > @@ -1897,6 +1904,11 @@ qla24xx_dif_start_scsi(srb_t *sp) > /* Set chip new ring index. */ > wrt_reg_dword(req->req_q_in, req->ring_index); > > + /* Manage unprocessed RIO/ZIO commands in response queue. */ > + if (vha->flags.process_response_queue && > + rsp->ring_ptr->signature != RESPONSE_PROCESSED) > + qla24xx_process_response_queue(vha, rsp); > + > spin_unlock_irqrestore(&ha->hardware_lock, flags); > > return QLA_SUCCESS; > @@ -1931,6 +1943,7 @@ qla2xxx_start_scsi_mq(srb_t *sp) > uint16_t req_cnt; > uint16_t tot_dsds; > struct req_que *req = NULL; > + struct rsp_que *rsp; > struct scsi_cmnd *cmd = GET_CMD_SP(sp); > struct scsi_qla_host *vha = sp->fcport->vha; > struct qla_hw_data *ha = vha->hw; > @@ -1941,6 +1954,7 @@ qla2xxx_start_scsi_mq(srb_t *sp) > > /* Setup qpair pointers */ > req = qpair->req; > + rsp = qpair->rsp; > > /* So we know we haven't pci_map'ed anything yet */ > tot_dsds = 0; > @@ -2041,6 +2055,11 @@ qla2xxx_start_scsi_mq(srb_t *sp) > /* Set chip new ring index. */ > wrt_reg_dword(req->req_q_in, req->ring_index); > > + /* Manage unprocessed RIO/ZIO commands in response queue. */ > + if (vha->flags.process_response_queue && > + rsp->ring_ptr->signature != RESPONSE_PROCESSED) > + qla24xx_process_response_queue(vha, rsp); > + > spin_unlock_irqrestore(&qpair->qp_lock, flags); > return QLA_SUCCESS; > > -- > 2.19.0.rc0 > Patch itself looks good. After you add more details in commit message you can add Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> -- Himanshu Madhani Oracle Linux Engineering