scsi: qla2xxx: Make qla2x00_restart_isp() easier to read
authorBart Van Assche <bvanassche@acm.org>
Mon, 29 Jun 2020 22:54:53 +0000 (15:54 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 1 Jul 2020 03:12:23 +0000 (23:12 -0400)
Instead of using complicated control flow to only have one return statement
at the end of qla2x00_restart_isp(), return an error status as soon as it
is known that this function will fail.

Link: https://lore.kernel.org/r/20200629225454.22863-9-bvanassche@acm.org
Cc: Nilesh Javali <njavali@marvell.com>
Cc: Quinn Tran <qutran@marvell.com>
Cc: Himanshu Madhani <himanshu.madhani@oracle.com>
Cc: Martin Wilck <mwilck@suse.com>
Cc: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Daniel Wagner <dwagner@suse.de>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_init.c

index 4576d3a..6cc1a82 100644 (file)
@@ -6996,36 +6996,41 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
 static int
 qla2x00_restart_isp(scsi_qla_host_t *vha)
 {
-       int status = 0;
+       int status;
        struct qla_hw_data *ha = vha->hw;
 
        /* If firmware needs to be loaded */
        if (qla2x00_isp_firmware(vha)) {
                vha->flags.online = 0;
                status = ha->isp_ops->chip_diag(vha);
-               if (!status)
-                       status = qla2x00_setup_chip(vha);
+               if (status)
+                       return status;
+               status = qla2x00_setup_chip(vha);
+               if (status)
+                       return status;
        }
 
-       if (!status && !(status = qla2x00_init_rings(vha))) {
-               clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags);
-               ha->flags.chip_reset_done = 1;
+       status = qla2x00_init_rings(vha);
+       if (status)
+               return status;
 
-               /* Initialize the queues in use */
-               qla25xx_init_queues(ha);
+       clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags);
+       ha->flags.chip_reset_done = 1;
 
-               status = qla2x00_fw_ready(vha);
-               if (!status) {
-                       /* Issue a marker after FW becomes ready. */
-                       qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL);
-                       set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
-               }
+       /* Initialize the queues in use */
+       qla25xx_init_queues(ha);
 
+       status = qla2x00_fw_ready(vha);
+       if (status) {
                /* if no cable then assume it's good */
-               if ((vha->device_flags & DFLG_NO_CABLE))
-                       status = 0;
+               return vha->device_flags & DFLG_NO_CABLE ? 0 : status;
        }
-       return (status);
+
+       /* Issue a marker after FW becomes ready. */
+       qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL);
+       set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
+
+       return 0;
 }
 
 static int