scsi: qla2xxx: Fix device connect issues in P2P configuration
authorArun Easi <aeasi@marvell.com>
Tue, 5 Nov 2019 15:06:56 +0000 (07:06 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 9 Nov 2019 02:15:42 +0000 (21:15 -0500)
P2P needs to take the alternate plogi route.

Link: https://lore.kernel.org/r/20191105150657.8092-8-hmadhani@marvell.com
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Arun Easi <aeasi@marvell.com>
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_iocb.c

index d11416d..5b163ad 100644 (file)
@@ -917,4 +917,5 @@ int qla2x00_set_data_rate(scsi_qla_host_t *vha, uint16_t mode);
 
 /* nvme.c */
 void qla_nvme_unregister_remote_port(struct fc_port *fcport);
+void qla_handle_els_plogi_done(scsi_qla_host_t *vha, struct event_arg *ea);
 #endif /* _QLA_GBL_H */
index ff45287..6bb4ddd 100644 (file)
@@ -1717,6 +1717,15 @@ void qla24xx_handle_relogin_event(scsi_qla_host_t *vha,
        qla24xx_fcport_handle_login(vha, fcport);
 }
 
+void qla_handle_els_plogi_done(scsi_qla_host_t *vha,
+                                     struct event_arg *ea)
+{
+       ql_dbg(ql_dbg_disc, vha, 0x2118,
+           "%s %d %8phC post PRLI\n",
+           __func__, __LINE__, ea->fcport->port_name);
+       qla24xx_post_prli_work(vha, ea->fcport);
+}
+
 /*
  * RSCN(s) came in for this fcport, but the RSCN(s) was not able
  * to be consumed by the fcport
index 2b675da..b25f87f 100644 (file)
@@ -2760,9 +2760,8 @@ static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
                case CS_COMPLETE:
                        memset(&ea, 0, sizeof(ea));
                        ea.fcport = fcport;
-                       ea.data[0] = MBS_COMMAND_COMPLETE;
-                       ea.sp = sp;
-                       qla24xx_handle_plogi_done_event(vha, &ea);
+                       ea.rc = res;
+                       qla_handle_els_plogi_done(vha, &ea);
                        break;
 
                case CS_IOCB_ERROR: