scsi: lpfc: Reinitialize an NPIV's VMID data structures after FDISC
authorJustin Tee <justin.tee@broadcom.com>
Thu, 7 Dec 2023 22:40:37 +0000 (14:40 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 14 Dec 2023 03:17:56 +0000 (22:17 -0500)
After a follow up FDISC cmpl, an NPIV's VMID data structures are not
updated.

Fix by calling lpfc_reinit_vmid and copying the physical port's vmid_flag
to the NPIV's vmid_flag in the NPIV registration cmpl code path.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20231207224039.35466-3-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_els.c

index f04326db8c19d83103f954994eeac8850c5e4eb8..3b7ed8bca01a77c3782830f8c226fb3d1aebfd12 100644 (file)
@@ -11143,6 +11143,14 @@ mbox_err_exit:
        lpfc_nlp_put(ndlp);
 
        mempool_free(pmb, phba->mbox_mem_pool);
+
+       /* reinitialize the VMID datastructure before returning.
+        * this is specifically for vport
+        */
+       if (lpfc_is_vmid_enabled(phba))
+               lpfc_reinit_vmid(vport);
+       vport->vmid_flag = vport->phba->pport->vmid_flag;
+
        return;
 }