mirror of https://gitee.com/openkylin/linux.git
scsi: lpfc: Refactor WQE structure definitions for common use
In preparation of reworking the driver to use a native SLI-4 WQE interface for the SCSI and NVMe I/O paths, start by commonizing the WQE exchange type and command type attributes. While adjusting these options also noted the variance in the pbde field. Fix this by setting templates to 0 and in NVMe, which explicitly uses this option, setting the value. Link: https://lore.kernel.org/r/20201115192646.12977-11-james.smart@broadcom.com Co-developed-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <james.smart@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
a70e63eee1
commit
b101eb27fd
|
@ -4386,9 +4386,11 @@ struct wqe_common {
|
|||
#define wqe_ebde_cnt_SHIFT 0
|
||||
#define wqe_ebde_cnt_MASK 0x0000000f
|
||||
#define wqe_ebde_cnt_WORD word10
|
||||
#define wqe_nvme_SHIFT 4
|
||||
#define wqe_nvme_MASK 0x00000001
|
||||
#define wqe_nvme_WORD word10
|
||||
#define wqe_xchg_SHIFT 4
|
||||
#define wqe_xchg_MASK 0x00000001
|
||||
#define wqe_xchg_WORD word10
|
||||
#define LPFC_SCSI_XCHG 0x0
|
||||
#define LPFC_NVME_XCHG 0x1
|
||||
#define wqe_oas_SHIFT 6
|
||||
#define wqe_oas_MASK 0x00000001
|
||||
#define wqe_oas_WORD word10
|
||||
|
@ -4886,6 +4888,8 @@ struct lpfc_grp_hdr {
|
|||
#define NVME_READ_CMD 0x0
|
||||
#define FCP_COMMAND_DATA_OUT 0x1
|
||||
#define NVME_WRITE_CMD 0x1
|
||||
#define COMMAND_DATA_IN 0x0
|
||||
#define COMMAND_DATA_OUT 0x1
|
||||
#define FCP_COMMAND_TRECEIVE 0x2
|
||||
#define FCP_COMMAND_TRSP 0x3
|
||||
#define FCP_COMMAND_TSEND 0x7
|
||||
|
|
|
@ -98,16 +98,16 @@ lpfc_nvme_cmd_template(void)
|
|||
|
||||
/* Word 10 - dbde, wqes is variable */
|
||||
bf_set(wqe_qosd, &wqe->fcp_iread.wqe_com, 0);
|
||||
bf_set(wqe_nvme, &wqe->fcp_iread.wqe_com, 1);
|
||||
bf_set(wqe_xchg, &wqe->fcp_iread.wqe_com, LPFC_NVME_XCHG);
|
||||
bf_set(wqe_iod, &wqe->fcp_iread.wqe_com, LPFC_WQE_IOD_READ);
|
||||
bf_set(wqe_lenloc, &wqe->fcp_iread.wqe_com, LPFC_WQE_LENLOC_WORD4);
|
||||
bf_set(wqe_dbde, &wqe->fcp_iread.wqe_com, 0);
|
||||
bf_set(wqe_wqes, &wqe->fcp_iread.wqe_com, 1);
|
||||
|
||||
/* Word 11 - pbde is variable */
|
||||
bf_set(wqe_cmd_type, &wqe->fcp_iread.wqe_com, NVME_READ_CMD);
|
||||
bf_set(wqe_cmd_type, &wqe->fcp_iread.wqe_com, COMMAND_DATA_IN);
|
||||
bf_set(wqe_cqid, &wqe->fcp_iread.wqe_com, LPFC_WQE_CQ_ID_DEFAULT);
|
||||
bf_set(wqe_pbde, &wqe->fcp_iread.wqe_com, 1);
|
||||
bf_set(wqe_pbde, &wqe->fcp_iread.wqe_com, 0);
|
||||
|
||||
/* Word 12 - is zero */
|
||||
|
||||
|
@ -139,16 +139,16 @@ lpfc_nvme_cmd_template(void)
|
|||
|
||||
/* Word 10 - dbde, wqes is variable */
|
||||
bf_set(wqe_qosd, &wqe->fcp_iwrite.wqe_com, 0);
|
||||
bf_set(wqe_nvme, &wqe->fcp_iwrite.wqe_com, 1);
|
||||
bf_set(wqe_xchg, &wqe->fcp_iwrite.wqe_com, LPFC_NVME_XCHG);
|
||||
bf_set(wqe_iod, &wqe->fcp_iwrite.wqe_com, LPFC_WQE_IOD_WRITE);
|
||||
bf_set(wqe_lenloc, &wqe->fcp_iwrite.wqe_com, LPFC_WQE_LENLOC_WORD4);
|
||||
bf_set(wqe_dbde, &wqe->fcp_iwrite.wqe_com, 0);
|
||||
bf_set(wqe_wqes, &wqe->fcp_iwrite.wqe_com, 1);
|
||||
|
||||
/* Word 11 - pbde is variable */
|
||||
bf_set(wqe_cmd_type, &wqe->fcp_iwrite.wqe_com, NVME_WRITE_CMD);
|
||||
bf_set(wqe_cmd_type, &wqe->fcp_iwrite.wqe_com, COMMAND_DATA_OUT);
|
||||
bf_set(wqe_cqid, &wqe->fcp_iwrite.wqe_com, LPFC_WQE_CQ_ID_DEFAULT);
|
||||
bf_set(wqe_pbde, &wqe->fcp_iwrite.wqe_com, 1);
|
||||
bf_set(wqe_pbde, &wqe->fcp_iwrite.wqe_com, 0);
|
||||
|
||||
/* Word 12 - is zero */
|
||||
|
||||
|
@ -178,14 +178,14 @@ lpfc_nvme_cmd_template(void)
|
|||
|
||||
/* Word 10 - dbde, wqes is variable */
|
||||
bf_set(wqe_qosd, &wqe->fcp_icmd.wqe_com, 1);
|
||||
bf_set(wqe_nvme, &wqe->fcp_icmd.wqe_com, 1);
|
||||
bf_set(wqe_xchg, &wqe->fcp_icmd.wqe_com, LPFC_NVME_XCHG);
|
||||
bf_set(wqe_iod, &wqe->fcp_icmd.wqe_com, LPFC_WQE_IOD_NONE);
|
||||
bf_set(wqe_lenloc, &wqe->fcp_icmd.wqe_com, LPFC_WQE_LENLOC_NONE);
|
||||
bf_set(wqe_dbde, &wqe->fcp_icmd.wqe_com, 0);
|
||||
bf_set(wqe_wqes, &wqe->fcp_icmd.wqe_com, 1);
|
||||
|
||||
/* Word 11 */
|
||||
bf_set(wqe_cmd_type, &wqe->fcp_icmd.wqe_com, FCP_COMMAND);
|
||||
bf_set(wqe_cmd_type, &wqe->fcp_icmd.wqe_com, COMMAND_DATA_IN);
|
||||
bf_set(wqe_cqid, &wqe->fcp_icmd.wqe_com, LPFC_WQE_CQ_ID_DEFAULT);
|
||||
bf_set(wqe_pbde, &wqe->fcp_icmd.wqe_com, 0);
|
||||
|
||||
|
@ -1567,7 +1567,9 @@ lpfc_nvme_prep_io_dma(struct lpfc_vport *vport,
|
|||
le32_to_cpu(first_data_sgl->sge_len);
|
||||
bde->tus.f.bdeFlags = BUFF_TYPE_BDE_64;
|
||||
bde->tus.w = cpu_to_le32(bde->tus.w);
|
||||
/* wqe_pbde is 1 in template */
|
||||
|
||||
/* Word 11 */
|
||||
bf_set(wqe_pbde, &wqe->generic.wqe_com, 1);
|
||||
} else {
|
||||
memset(&wqe->words[13], 0, (sizeof(uint32_t) * 3));
|
||||
bf_set(wqe_pbde, &wqe->generic.wqe_com, 0);
|
||||
|
|
|
@ -105,7 +105,7 @@ lpfc_nvmet_cmd_template(void)
|
|||
/* Word 9 - reqtag, rcvoxid is variable */
|
||||
|
||||
/* Word 10 - wqes, xc is variable */
|
||||
bf_set(wqe_nvme, &wqe->fcp_tsend.wqe_com, 1);
|
||||
bf_set(wqe_xchg, &wqe->fcp_tsend.wqe_com, LPFC_NVME_XCHG);
|
||||
bf_set(wqe_dbde, &wqe->fcp_tsend.wqe_com, 1);
|
||||
bf_set(wqe_wqes, &wqe->fcp_tsend.wqe_com, 0);
|
||||
bf_set(wqe_xc, &wqe->fcp_tsend.wqe_com, 1);
|
||||
|
@ -153,7 +153,7 @@ lpfc_nvmet_cmd_template(void)
|
|||
/* Word 10 - xc is variable */
|
||||
bf_set(wqe_dbde, &wqe->fcp_treceive.wqe_com, 1);
|
||||
bf_set(wqe_wqes, &wqe->fcp_treceive.wqe_com, 0);
|
||||
bf_set(wqe_nvme, &wqe->fcp_treceive.wqe_com, 1);
|
||||
bf_set(wqe_xchg, &wqe->fcp_treceive.wqe_com, LPFC_NVME_XCHG);
|
||||
bf_set(wqe_iod, &wqe->fcp_treceive.wqe_com, LPFC_WQE_IOD_READ);
|
||||
bf_set(wqe_lenloc, &wqe->fcp_treceive.wqe_com, LPFC_WQE_LENLOC_WORD12);
|
||||
bf_set(wqe_xc, &wqe->fcp_tsend.wqe_com, 1);
|
||||
|
@ -195,7 +195,7 @@ lpfc_nvmet_cmd_template(void)
|
|||
|
||||
/* Word 10 wqes, xc is variable */
|
||||
bf_set(wqe_dbde, &wqe->fcp_trsp.wqe_com, 1);
|
||||
bf_set(wqe_nvme, &wqe->fcp_trsp.wqe_com, 1);
|
||||
bf_set(wqe_xchg, &wqe->fcp_trsp.wqe_com, LPFC_NVME_XCHG);
|
||||
bf_set(wqe_wqes, &wqe->fcp_trsp.wqe_com, 0);
|
||||
bf_set(wqe_xc, &wqe->fcp_trsp.wqe_com, 0);
|
||||
bf_set(wqe_iod, &wqe->fcp_trsp.wqe_com, LPFC_WQE_IOD_NONE);
|
||||
|
|
Loading…
Reference in New Issue