diff mbox series

[06/13] qla2xxx: fix n2n inconsistent plogi

Message ID 20220308082048.9774-7-njavali@marvell.com (mailing list archive)
State Superseded
Headers show
Series qla2xxx driver fixes | expand

Commit Message

Nilesh Javali March 8, 2022, 8:20 a.m. UTC
From: Quinn Tran <qutran@marvell.com>

For N2N topology, ELS Passthrough is used to send PLOGI.
On failure of ELS pass through PLOGI, driver flipped over
to using LLIOCB PLOGI for N2N. This is not consistent.
This patch would delete the session to restart the
connection, where ELS pass through PLOGI would be used consistently.

Cc: stable@vger.kernel.org
Fixes: c76ae845ea83 ("scsi: qla2xxx: Add error handling for PLOGI ELS passthrough")
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
---
 drivers/scsi/qla2xxx/qla_iocb.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

Comments

Himanshu Madhani March 9, 2022, 6:55 p.m. UTC | #1
> On Mar 8, 2022, at 12:20 AM, Nilesh Javali <njavali@marvell.com> wrote:
> 
> From: Quinn Tran <qutran@marvell.com>
> 
> For N2N topology, ELS Passthrough is used to send PLOGI.
> On failure of ELS pass through PLOGI, driver flipped over
> to using LLIOCB PLOGI for N2N. This is not consistent.
> This patch would delete the session to restart the
> connection, where ELS pass through PLOGI would be used consistently.
> 
> Cc: stable@vger.kernel.org
> Fixes: c76ae845ea83 ("scsi: qla2xxx: Add error handling for PLOGI ELS passthrough")
> Signed-off-by: Quinn Tran <qutran@marvell.com>
> Signed-off-by: Nilesh Javali <njavali@marvell.com>
> ---
> drivers/scsi/qla2xxx/qla_iocb.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
> index 5e3ee1f7b43c..e0fe9ddb4bd2 100644
> --- a/drivers/scsi/qla2xxx/qla_iocb.c
> +++ b/drivers/scsi/qla2xxx/qla_iocb.c
> @@ -2958,6 +2958,7 @@ static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
> 					set_bit(ISP_ABORT_NEEDED,
> 					    &vha->dpc_flags);
> 					qla2xxx_wake_dpc(vha);
> +					break;
> 				}
> 				fallthrough;
> 			default:
> @@ -2967,9 +2968,7 @@ static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
> 				    fw_status[0], fw_status[1], fw_status[2]);
> 
> 				fcport->flags &= ~FCF_ASYNC_SENT;
> -				qla2x00_set_fcport_disc_state(fcport,
> -				    DSC_LOGIN_FAILED);
> -				set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
> +				qlt_schedule_sess_for_deletion(fcport);
> 				break;
> 			}
> 			break;
> @@ -2981,8 +2980,7 @@ static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
> 			    fw_status[0], fw_status[1], fw_status[2]);
> 
> 			sp->fcport->flags &= ~FCF_ASYNC_SENT;
> -			qla2x00_set_fcport_disc_state(fcport, DSC_LOGIN_FAILED);
> -			set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
> +			qlt_schedule_sess_for_deletion(fcport);
> 			break;
> 		}
> 
> -- 
> 2.19.0.rc0
> 

Looks Good. 

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

--
Himanshu Madhani	 Oracle Linux Engineering
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index 5e3ee1f7b43c..e0fe9ddb4bd2 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -2958,6 +2958,7 @@  static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
 					set_bit(ISP_ABORT_NEEDED,
 					    &vha->dpc_flags);
 					qla2xxx_wake_dpc(vha);
+					break;
 				}
 				fallthrough;
 			default:
@@ -2967,9 +2968,7 @@  static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
 				    fw_status[0], fw_status[1], fw_status[2]);
 
 				fcport->flags &= ~FCF_ASYNC_SENT;
-				qla2x00_set_fcport_disc_state(fcport,
-				    DSC_LOGIN_FAILED);
-				set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
+				qlt_schedule_sess_for_deletion(fcport);
 				break;
 			}
 			break;
@@ -2981,8 +2980,7 @@  static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
 			    fw_status[0], fw_status[1], fw_status[2]);
 
 			sp->fcport->flags &= ~FCF_ASYNC_SENT;
-			qla2x00_set_fcport_disc_state(fcport, DSC_LOGIN_FAILED);
-			set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
+			qlt_schedule_sess_for_deletion(fcport);
 			break;
 		}