diff mbox series

[06/17] lpfc: Remove NLP_RCV_PLOGI early return during RSCN processing for ndlps

Message ID 20240131003549.147784-7-justintee8345@gmail.com (mailing list archive)
State Superseded
Headers show
Series lpfc: Update lpfc to revision 14.4.0.0 | expand

Commit Message

Justin Tee Jan. 31, 2024, 12:35 a.m. UTC
Upon first RSCN receipt of a target server's remote port that is
initially acting as an initiator function, the driver marks the
ndlp->nlp_type as an initiator role.  Then later, when processing an RSCN
for a target function role switch, that ndlp remote port is permanently
stuck as an initiator role and can never transition to be discovered as an
updated target role function.

Remove the NLP_RCV_PLOGI early return if statement clause so that the
NLP_NPR_2B_DISC flag gets set.  This allows for role change detections.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
---
 drivers/scsi/lpfc/lpfc_hbadisc.c | 8 --------
 1 file changed, 8 deletions(-)

Comments

Himanshu Madhani Jan. 31, 2024, 2:37 a.m. UTC | #1
On 1/30/24 16:35, Justin Tee wrote:
> Upon first RSCN receipt of a target server's remote port that is
> initially acting as an initiator function, the driver marks the
> ndlp->nlp_type as an initiator role.  Then later, when processing an RSCN
> for a target function role switch, that ndlp remote port is permanently
> stuck as an initiator role and can never transition to be discovered as an
> updated target role function.
> 
> Remove the NLP_RCV_PLOGI early return if statement clause so that the
> NLP_NPR_2B_DISC flag gets set.  This allows for role change detections.
> 
> Signed-off-by: Justin Tee <justin.tee@broadcom.com>
> ---
>   drivers/scsi/lpfc/lpfc_hbadisc.c | 8 --------
>   1 file changed, 8 deletions(-)
> 
> diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
> index f80bbc315f4c..35ea67431239 100644
> --- a/drivers/scsi/lpfc/lpfc_hbadisc.c
> +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
> @@ -5774,14 +5774,6 @@ lpfc_setup_disc_node(struct lpfc_vport *vport, uint32_t did)
>   			if (vport->phba->nvmet_support)
>   				return ndlp;
>   
> -			/* If we've already received a PLOGI from this NPort
> -			 * we don't need to try to discover it again.
> -			 */
> -			if (ndlp->nlp_flag & NLP_RCV_PLOGI &&
> -			    !(ndlp->nlp_type &
> -			     (NLP_FCP_TARGET | NLP_NVME_TARGET)))
> -				return NULL;
> -
>   			if (ndlp->nlp_state > NLP_STE_UNUSED_NODE &&
>   			    ndlp->nlp_state < NLP_STE_PRLI_ISSUE) {
>   				lpfc_disc_state_machine(vport, ndlp, NULL,

Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
diff mbox series

Patch

diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
index f80bbc315f4c..35ea67431239 100644
--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -5774,14 +5774,6 @@  lpfc_setup_disc_node(struct lpfc_vport *vport, uint32_t did)
 			if (vport->phba->nvmet_support)
 				return ndlp;
 
-			/* If we've already received a PLOGI from this NPort
-			 * we don't need to try to discover it again.
-			 */
-			if (ndlp->nlp_flag & NLP_RCV_PLOGI &&
-			    !(ndlp->nlp_type &
-			     (NLP_FCP_TARGET | NLP_NVME_TARGET)))
-				return NULL;
-
 			if (ndlp->nlp_state > NLP_STE_UNUSED_NODE &&
 			    ndlp->nlp_state < NLP_STE_PRLI_ISSUE) {
 				lpfc_disc_state_machine(vport, ndlp, NULL,