Message ID | 20210908072846.10011-8-njavali@marvell.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | qla2xxx driver bug fixes | expand |
> On Sep 8, 2021, at 2:28 AM, Nilesh Javali <njavali@marvell.com> wrote: > > From: Shreyas Deodhar <sdeodhar@marvell.com> > > Process responses in Tx path if any available for better performance. > I’ll let you decide if you want to add this to all stable or not, but if you decide this needs to go into stable then add Fixes: e84067d743010 ("scsi: qla2xxx: Add FC-NVMe F/W initialization and transport registration”) Cc: stable@vger.kernel.org > Signed-off-by: Shreyas Deodhar<sdeodhar@marvell.com> > Signed-off-by: Nilesh Javali <njavali@marvell.com> > --- > drivers/scsi/qla2xxx/qla_nvme.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c > index 877b2b625020..0ae1e081cb03 100644 > --- a/drivers/scsi/qla2xxx/qla_nvme.c > +++ b/drivers/scsi/qla2xxx/qla_nvme.c > @@ -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); > > -- > 2.19.0.rc0 > Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> -- Himanshu Madhani Oracle Linux Engineering
diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c index 877b2b625020..0ae1e081cb03 100644 --- a/drivers/scsi/qla2xxx/qla_nvme.c +++ b/drivers/scsi/qla2xxx/qla_nvme.c @@ -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);