diff options
author | James Smart <james.smart@avagotech.com> | 2015-05-21 20:55:23 +0300 |
---|---|---|
committer | James Bottomley <JBottomley@Odin.com> | 2015-06-06 08:37:18 +0300 |
commit | 6b337e032c398aa9d92222f0709f4e06932acf72 (patch) | |
tree | be9dd32a763906e470a06b246595de5a14230482 /drivers/scsi/lpfc/lpfc_hbadisc.c | |
parent | c84163d179e561613472a4ee479eb67ba2771177 (diff) | |
download | linux-6b337e032c398aa9d92222f0709f4e06932acf72.tar.xz |
lpfc: Fix discovery issue when changing from Pt2Pt to Fabric.
Signed-off-by: Dick Kennedy <dick.kennedy@avagotech.com>
Signed-off-by: James Smart <james.smart@avagotech.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_hbadisc.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_hbadisc.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index e93705da81b4..0dfa56604c91 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c @@ -4834,9 +4834,19 @@ lpfc_matchdid(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, if (matchdid.un.b.id == ndlpdid.un.b.id) { if ((mydid.un.b.domain == matchdid.un.b.domain) && (mydid.un.b.area == matchdid.un.b.area)) { + /* This code is supposed to match the ID + * for a private loop device that is + * connect to fl_port. But we need to + * check that the port did not just go + * from pt2pt to fabric or we could end + * up matching ndlp->nlp_DID 000001 to + * fabric DID 0x20101 + */ if ((ndlpdid.un.b.domain == 0) && (ndlpdid.un.b.area == 0)) { - if (ndlpdid.un.b.id) + if (ndlpdid.un.b.id && + vport->phba->fc_topology == + LPFC_TOPOLOGY_LOOP) return 1; } return 0; |