scsi: lpfc: vmid: Append the VMID to the wqe before sending
authorGaurav Srivastava <gaurav.srivastava@broadcom.com>
Tue, 8 Jun 2021 04:35:53 +0000 (10:05 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 10 Jun 2021 14:01:33 +0000 (10:01 -0400)
Add the VMID in wqe before sending out the request. The type of VMID
depends on the configured type and is checked before being appended.

Link: https://lore.kernel.org/r/20210608043556.274139-11-muneendra.kumar@broadcom.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Gaurav Srivastava <gaurav.srivastava@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Muneendra Kumar <muneendra.kumar@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_sli.c

index 64fc5af..a2ef3a6 100644 (file)
@@ -9766,6 +9766,8 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
                                *pcmd == ELS_CMD_RSCN_XMT ||
                                *pcmd == ELS_CMD_FDISC ||
                                *pcmd == ELS_CMD_LOGO ||
+                               *pcmd == ELS_CMD_QFPA ||
+                               *pcmd == ELS_CMD_UVEM ||
                                *pcmd == ELS_CMD_PLOGI)) {
                                bf_set(els_req64_sp, &wqe->els_req, 1);
                                bf_set(els_req64_sid, &wqe->els_req,
@@ -10328,6 +10330,18 @@ __lpfc_sli_issue_fcp_io_s4(struct lpfc_hba *phba, uint32_t ring_number,
                bf_set(wqe_wqes, &wqe->generic.wqe_com, 0);
        }
 
+       /* add the VMID tags as per switch response */
+       if (unlikely(piocb->iocb_flag & LPFC_IO_VMID)) {
+               if (phba->pport->vmid_priority_tagging) {
+                       bf_set(wqe_ccpe, &wqe->fcp_iwrite.wqe_com, 1);
+                       bf_set(wqe_ccp, &wqe->fcp_iwrite.wqe_com,
+                                       (piocb->vmid_tag.cs_ctl_vmid));
+               } else {
+                       bf_set(wqe_appid, &wqe->fcp_iwrite.wqe_com, 1);
+                       bf_set(wqe_wqes, &wqe->fcp_iwrite.wqe_com, 1);
+                       wqe->words[31] = piocb->vmid_tag.app_id;
+               }
+       }
        rc = lpfc_sli4_issue_wqe(phba, lpfc_cmd->hdwq, piocb);
        return rc;
 }