scsi: qla2xxx: edif: Reduce disruption due to multiple app start
authorQuinn Tran <qutran@marvell.com>
Wed, 8 Jun 2022 11:58:42 +0000 (04:58 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:23:42 +0000 (14:23 +0200)
[ Upstream commit 0dbfce5255fe8d069a1a3b712a25b263264cfa58 ]

Multiple app start can trigger a session bounce. Make driver skip over
session teardown if app start is seen more than once.

Link: https://lore.kernel.org/r/20220608115849.16693-4-njavali@marvell.com
Fixes: 7ebb336e45ef ("scsi: qla2xxx: edif: Add start + stop bsgs")
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/qla2xxx/qla_edif.c

index 69f8d16effa6f5bc2a2d949db1eac5954f28f1e2..f7953ce17678e92b4ed31f4fa1a93d74e9097e57 100644 (file)
@@ -486,8 +486,7 @@ qla_edif_app_start(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
                /* mark doorbell as active since an app is now present */
                vha->e_dbell.db_flags |= EDB_ACTIVE;
        } else {
-               ql_dbg(ql_dbg_edif, vha, 0x911e, "%s doorbell already active\n",
-                    __func__);
+               goto out;
        }
 
        if (N2N_TOPO(vha->hw)) {
@@ -555,6 +554,7 @@ qla_edif_app_start(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
                     __func__);
        }
 
+out:
        appreply.host_support_edif = vha->hw->flags.edif_enabled;
        appreply.edif_enode_active = vha->pur_cinfo.enode_flags;
        appreply.edif_edb_active = vha->e_dbell.db_flags;