diff mbox series

[06/12] qla2xxx: edif: do secure plogi when auth app is present

Message ID 20210817051315.2477-7-njavali@marvell.com
State New
Headers show
Series qla2xxx driver bug fixes | expand

Commit Message

Nilesh Javali Aug. 17, 2021, 5:13 a.m. UTC
From: Quinn Tran <qutran@marvell.com>

For initiator mode, always do secure login when authentication app started.
Also remove redundant flags to indicate secure connection.

Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
---
 drivers/scsi/qla2xxx/qla_def.h    | 2 --
 drivers/scsi/qla2xxx/qla_edif.c   | 6 +++---
 drivers/scsi/qla2xxx/qla_init.c   | 7 ++-----
 drivers/scsi/qla2xxx/qla_iocb.c   | 5 ++++-
 drivers/scsi/qla2xxx/qla_target.c | 4 +---
 5 files changed, 10 insertions(+), 14 deletions(-)
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 031107b6024f..ddc6932f05fa 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -2620,7 +2620,6 @@  typedef struct fc_port {
 		uint32_t	enable:1;	/* device is edif enabled/req'd */
 		uint32_t	app_stop:2;
 		uint32_t	app_started:1;
-		uint32_t	secured_login:1;
 		uint32_t	aes_gmac:1;
 		uint32_t	app_sess_online:1;
 		uint32_t	tx_sa_set:1;
@@ -2631,7 +2630,6 @@  typedef struct fc_port {
 		uint32_t	rx_rekey_cnt;
 		uint64_t	tx_bytes;
 		uint64_t	rx_bytes;
-		uint8_t		non_secured_login;
 		uint8_t		auth_state;
 		uint16_t	authok:1;
 		uint16_t	rekey_cnt;
diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c
index bb5cda85b60f..dc10874a0c99 100644
--- a/drivers/scsi/qla2xxx/qla_edif.c
+++ b/drivers/scsi/qla2xxx/qla_edif.c
@@ -568,7 +568,7 @@  qla_edif_app_start(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
 
 			if (atomic_read(&vha->loop_state) == LOOP_DOWN)
 				break;
-			if (!fcport->edif.secured_login)
+			if (!(fcport->flags & FCF_FCSP_DEVICE))
 				continue;
 
 			fcport->edif.app_started = 1;
@@ -647,7 +647,7 @@  qla_edif_app_stop(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
 	qla_edb_stop(vha);          /* stop db */
 
 	list_for_each_entry_safe(fcport, tf, &vha->vp_fcports, list) {
-		if (fcport->edif.non_secured_login)
+		if (!(fcport->flags & FCF_FCSP_DEVICE))
 			continue;
 
 		if (fcport->flags & FCF_FCSP_DEVICE) {
@@ -948,7 +948,7 @@  qla_edif_app_getfcinfo(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
 			ql_dbg(ql_dbg_edif, vha, 0x2058,
 			    "Found FC_SP fcport - nn %8phN pn %8phN pcnt %d portid=%06x secure %d.\n",
 			    fcport->node_name, fcport->port_name, pcnt,
-			    fcport->d_id.b24, fcport->edif.secured_login);
+			    fcport->d_id.b24, fcport->flags & FCF_FCSP_DEVICE);
 
 			switch (fcport->edif.auth_state) {
 			case VND_CMD_AUTH_STATE_ELS_RCVD:
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 4c5acfde0788..7e6fb4ad4255 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1435,18 +1435,15 @@  static int	qla_chk_secure_login(scsi_qla_host_t	*vha, fc_port_t *fcport,
 		ql_dbg(ql_dbg_disc, vha, 0x104d,
 		    "Secure Login established on %8phC\n",
 		    fcport->port_name);
-		fcport->edif.secured_login = 1;
-		fcport->edif.non_secured_login = 0;
 		fcport->flags |= FCF_FCSP_DEVICE;
 	} else {
 		ql_dbg(ql_dbg_disc, vha, 0x104d,
 		    "non-Secure Login %8phC",
 		    fcport->port_name);
-		fcport->edif.secured_login = 0;
-		fcport->edif.non_secured_login = 1;
+		fcport->flags &= ~FCF_FCSP_DEVICE;
 	}
 	if (vha->hw->flags.edif_enabled) {
-		if (fcport->edif.secured_login) {
+		if (fcport->flags & FCF_FCSP_DEVICE) {
 			qla2x00_set_fcport_disc_state(fcport, DSC_LOGIN_AUTH_PEND);
 			/* Start edif prli timer & ring doorbell for app */
 			fcport->edif.rx_sa_set = 0;
diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index eef1fa2b45c2..9d4ad1d2b00a 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -1552,6 +1552,9 @@  qla24xx_start_scsi(srb_t *sp)
 	struct scsi_qla_host *vha = sp->vha;
 	struct qla_hw_data *ha = vha->hw;
 
+	if (sp->fcport->edif.enable  && (sp->fcport->flags & FCF_FCSP_DEVICE))
+		return qla28xx_start_scsi_edif(sp);
+
 	/* Setup device pointers. */
 	req = vha->req;
 	rsp = req->rsp;
@@ -1910,7 +1913,7 @@  qla2xxx_start_scsi_mq(srb_t *sp)
 	struct qla_hw_data *ha = vha->hw;
 	struct qla_qpair *qpair = sp->qpair;
 
-	if (sp->fcport->edif.enable)
+	if (sp->fcport->edif.enable && (sp->fcport->flags & FCF_FCSP_DEVICE))
 		return qla28xx_start_scsi_edif(sp);
 
 	/* Acquire qpair specific lock */
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index 2f4da88995ea..b3478ed9b12e 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -636,10 +636,8 @@  int qla24xx_async_notify_ack(scsi_qla_host_t *vha, fc_port_t *fcport,
 		fcport->fw_login_state = DSC_LS_PLOGI_PEND;
 		c = "PLOGI";
 		if (vha->hw->flags.edif_enabled &&
-		    (le16_to_cpu(ntfy->u.isp24.flags) & NOTIFY24XX_FLAGS_FCSP)) {
+		    (le16_to_cpu(ntfy->u.isp24.flags) & NOTIFY24XX_FLAGS_FCSP))
 			fcport->flags |= FCF_FCSP_DEVICE;
-			fcport->edif.secured_login = 1;
-		}
 		break;
 	case SRB_NACK_PRLI:
 		fcport->fw_login_state = DSC_LS_PRLI_PEND;