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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 5 Feb 2024 20:14:23 +0000 (20:14 +0000)
[ Upstream commit 8dc8eb89f4df74593ba4bf30c3d31a0fc6d3ea47 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/lpfc/lpfc_els.c

index 54e47f2..932d479 100644 (file)
@@ -11110,6 +11110,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;
 }