mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-22 00:09:45 +07:00
scsi: lpfc: Slight fast-path performance optimizations
Slightly rework some error check code paths for better streamlining. Added compiler unlikely hints to allow slightly better optimization of the fast-path. Removed a few pointer checks that were obviously already valid. Link: https://lore.kernel.org/r/20191018211832.7917-9-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>
This commit is contained in:
parent
f84f8f93f0
commit
22770cbabf
@ -2093,7 +2093,7 @@ lpfc_release_nvme_buf(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_ncmd)
|
|||||||
lpfc_ncmd->flags &= ~LPFC_SBUF_BUMP_QDEPTH;
|
lpfc_ncmd->flags &= ~LPFC_SBUF_BUMP_QDEPTH;
|
||||||
|
|
||||||
qp = lpfc_ncmd->hdwq;
|
qp = lpfc_ncmd->hdwq;
|
||||||
if (lpfc_ncmd->flags & LPFC_SBUF_XBUSY) {
|
if (unlikely(lpfc_ncmd->flags & LPFC_SBUF_XBUSY)) {
|
||||||
lpfc_printf_log(phba, KERN_INFO, LOG_NVME_ABTS,
|
lpfc_printf_log(phba, KERN_INFO, LOG_NVME_ABTS,
|
||||||
"6310 XB release deferred for "
|
"6310 XB release deferred for "
|
||||||
"ox_id x%x on reqtag x%x\n",
|
"ox_id x%x on reqtag x%x\n",
|
||||||
|
@ -611,7 +611,7 @@ lpfc_get_scsi_buf_s3(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp,
|
|||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&phba->scsi_buf_list_get_lock, iflag);
|
spin_unlock_irqrestore(&phba->scsi_buf_list_get_lock, iflag);
|
||||||
|
|
||||||
if (lpfc_ndlp_check_qdepth(phba, ndlp) && lpfc_cmd) {
|
if (lpfc_ndlp_check_qdepth(phba, ndlp)) {
|
||||||
atomic_inc(&ndlp->cmd_pending);
|
atomic_inc(&ndlp->cmd_pending);
|
||||||
lpfc_cmd->flags |= LPFC_SBUF_BUMP_QDEPTH;
|
lpfc_cmd->flags |= LPFC_SBUF_BUMP_QDEPTH;
|
||||||
}
|
}
|
||||||
@ -3826,7 +3826,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
|
|||||||
phba->sli4_hba.hdwq[idx].scsi_cstat.io_cmpls++;
|
phba->sli4_hba.hdwq[idx].scsi_cstat.io_cmpls++;
|
||||||
|
|
||||||
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
|
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
|
||||||
if (phba->cpucheck_on & LPFC_CHECK_SCSI_IO) {
|
if (unlikely(phba->cpucheck_on & LPFC_CHECK_SCSI_IO)) {
|
||||||
cpu = raw_smp_processor_id();
|
cpu = raw_smp_processor_id();
|
||||||
if (cpu < LPFC_CHECK_CPU_CNT && phba->sli4_hba.hdwq)
|
if (cpu < LPFC_CHECK_CPU_CNT && phba->sli4_hba.hdwq)
|
||||||
phba->sli4_hba.hdwq[idx].cpucheck_cmpl_io[cpu]++;
|
phba->sli4_hba.hdwq[idx].cpucheck_cmpl_io[cpu]++;
|
||||||
@ -3874,7 +3874,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (lpfc_cmd->status) {
|
if (unlikely(lpfc_cmd->status)) {
|
||||||
if (lpfc_cmd->status == IOSTAT_LOCAL_REJECT &&
|
if (lpfc_cmd->status == IOSTAT_LOCAL_REJECT &&
|
||||||
(lpfc_cmd->result & IOERR_DRVR_MASK))
|
(lpfc_cmd->result & IOERR_DRVR_MASK))
|
||||||
lpfc_cmd->status = IOSTAT_DRIVER_REJECT;
|
lpfc_cmd->status = IOSTAT_DRIVER_REJECT;
|
||||||
@ -4615,17 +4615,18 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
|
|||||||
err = lpfc_scsi_prep_dma_buf(phba, lpfc_cmd);
|
err = lpfc_scsi_prep_dma_buf(phba, lpfc_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err == 2) {
|
if (unlikely(err)) {
|
||||||
cmnd->result = DID_ERROR << 16;
|
if (err == 2) {
|
||||||
goto out_fail_command_release_buf;
|
cmnd->result = DID_ERROR << 16;
|
||||||
} else if (err) {
|
goto out_fail_command_release_buf;
|
||||||
|
}
|
||||||
goto out_host_busy_free_buf;
|
goto out_host_busy_free_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
lpfc_scsi_prep_cmnd(vport, lpfc_cmd, ndlp);
|
lpfc_scsi_prep_cmnd(vport, lpfc_cmd, ndlp);
|
||||||
|
|
||||||
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
|
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
|
||||||
if (phba->cpucheck_on & LPFC_CHECK_SCSI_IO) {
|
if (unlikely(phba->cpucheck_on & LPFC_CHECK_SCSI_IO)) {
|
||||||
cpu = raw_smp_processor_id();
|
cpu = raw_smp_processor_id();
|
||||||
if (cpu < LPFC_CHECK_CPU_CNT) {
|
if (cpu < LPFC_CHECK_CPU_CNT) {
|
||||||
struct lpfc_sli4_hdw_queue *hdwq =
|
struct lpfc_sli4_hdw_queue *hdwq =
|
||||||
|
Loading…
Reference in New Issue
Block a user