Daniel Wagner 1fe810
From: Quinn Tran <qutran@marvell.com>
Daniel Wagner 1fe810
Date: Mon, 6 Jun 2022 21:46:26 -0700
Daniel Wagner 1fe810
Subject: scsi: qla2xxx: edif: Fix n2n login retry for secure device
Denis Kirjanov 718367
Patch-mainline: v5.20-rc1
Daniel Wagner 1fe810
Git-commit: aec55325ddec975216119da000092cb8664a3399
Daniel Wagner 1fe810
References: bsc#1201958
Daniel Wagner 1fe810
Daniel Wagner 1fe810
After initiator has burned up all login retries, target authentication
Daniel Wagner 1fe810
application begins to run. This triggers a link bounce on target side.
Daniel Wagner 1fe810
Initiator will attempt another login. Due to N2N, the PRLI [nvme | fcp] can
Daniel Wagner 1fe810
fail because of the mode mismatch with target. This patch add a few more
Daniel Wagner 1fe810
login retries to revive the connection.
Daniel Wagner 1fe810
Daniel Wagner 1fe810
Link: https://lore.kernel.org/r/20220607044627.19563-11-njavali@marvell.com
Daniel Wagner 1fe810
Fixes: 4de067e5df12 ("scsi: qla2xxx: edif: Add N2N support for EDIF")
Daniel Wagner 1fe810
Signed-off-by: Quinn Tran <qutran@marvell.com>
Daniel Wagner 1fe810
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Daniel Wagner 1fe810
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Daniel Wagner 1fe810
Acked-by: Daniel Wagner <dwagner@suse.de>
Daniel Wagner 1fe810
---
Daniel Wagner 1fe810
 drivers/scsi/qla2xxx/qla_init.c |    7 +++++++
Daniel Wagner 1fe810
 1 file changed, 7 insertions(+)
Daniel Wagner 1fe810
Daniel Wagner 1fe810
--- a/drivers/scsi/qla2xxx/qla_init.c
Daniel Wagner 1fe810
+++ b/drivers/scsi/qla2xxx/qla_init.c
Daniel Wagner 1fe810
@@ -2126,6 +2126,13 @@ qla24xx_handle_prli_done_event(struct sc
Daniel Wagner 1fe810
 		}
Daniel Wagner 1fe810
 
Daniel Wagner 1fe810
 		if (N2N_TOPO(vha->hw)) {
Daniel Wagner 1fe810
+			if (ea->fcport->n2n_link_reset_cnt ==
Daniel Wagner 1fe810
+			    vha->hw->login_retry_count &&
Daniel Wagner 1fe810
+			    ea->fcport->flags & FCF_FCSP_DEVICE) {
Daniel Wagner 1fe810
+				/* remote authentication app just started */
Daniel Wagner 1fe810
+				ea->fcport->n2n_link_reset_cnt = 0;
Daniel Wagner 1fe810
+			}
Daniel Wagner 1fe810
+
Daniel Wagner 1fe810
 			if (ea->fcport->n2n_link_reset_cnt <
Daniel Wagner 1fe810
 			    vha->hw->login_retry_count) {
Daniel Wagner 1fe810
 				ea->fcport->n2n_link_reset_cnt++;