scsi: lpfc: Add embedded data pointers for enhanced performance
The current driver isn't taking advantage of a performance hint whereby the initial data buffer descriptor can be placed in the WQE as well as the SGL. Add the logic to detect support for the feature and to use it when supported. Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <james.smart@broadcom.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committed by
Martin K. Petersen

parent
1feb8204a1
commit
0bc2b7c531
@@ -6958,10 +6958,15 @@ lpfc_sli4_hba_setup(struct lpfc_hba *phba)
|
||||
"0378 No support for fcpi mode.\n");
|
||||
ftr_rsp++;
|
||||
}
|
||||
if (bf_get(lpfc_mbx_rq_ftr_rsp_perfh, &mqe->un.req_ftrs))
|
||||
phba->sli3_options |= LPFC_SLI4_PERFH_ENABLED;
|
||||
else
|
||||
phba->sli3_options &= ~LPFC_SLI4_PERFH_ENABLED;
|
||||
|
||||
/* Performance Hints are ONLY for FCoE */
|
||||
if (phba->hba_flag & HBA_FCOE_MODE) {
|
||||
if (bf_get(lpfc_mbx_rq_ftr_rsp_perfh, &mqe->un.req_ftrs))
|
||||
phba->sli3_options |= LPFC_SLI4_PERFH_ENABLED;
|
||||
else
|
||||
phba->sli3_options &= ~LPFC_SLI4_PERFH_ENABLED;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the port cannot support the host's requested features
|
||||
* then turn off the global config parameters to disable the
|
||||
@@ -9063,6 +9068,12 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
|
||||
}
|
||||
/* Note, word 10 is already initialized to 0 */
|
||||
|
||||
/* Don't set PBDE for Perf hints, just fcp_embed_pbde */
|
||||
if (phba->fcp_embed_pbde)
|
||||
bf_set(wqe_pbde, &wqe->fcp_iwrite.wqe_com, 1);
|
||||
else
|
||||
bf_set(wqe_pbde, &wqe->fcp_iwrite.wqe_com, 0);
|
||||
|
||||
if (phba->fcp_embed_io) {
|
||||
struct lpfc_scsi_buf *lpfc_cmd;
|
||||
struct sli4_sge *sgl;
|
||||
@@ -9122,6 +9133,12 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
|
||||
}
|
||||
/* Note, word 10 is already initialized to 0 */
|
||||
|
||||
/* Don't set PBDE for Perf hints, just fcp_embed_pbde */
|
||||
if (phba->fcp_embed_pbde)
|
||||
bf_set(wqe_pbde, &wqe->fcp_iread.wqe_com, 1);
|
||||
else
|
||||
bf_set(wqe_pbde, &wqe->fcp_iread.wqe_com, 0);
|
||||
|
||||
if (phba->fcp_embed_io) {
|
||||
struct lpfc_scsi_buf *lpfc_cmd;
|
||||
struct sli4_sge *sgl;
|
||||
|
Reference in New Issue
Block a user