goto ctrl_clean;
        }
 
-       /* tell fw we're ready to fire cmds */
-       status = be_cmd_fw_init(adapter);
-       if (status)
-               goto ctrl_clean;
-
        if (be_reset_required(adapter)) {
                status = be_cmd_reset_function(adapter);
                if (status)
                        goto ctrl_clean;
-       }
 
-       /* Wait for interrupts to quiesce after an FLR */
-       msleep(100);
+               /* Wait for interrupts to quiesce after an FLR */
+               msleep(100);
+       }
 
        /* Allow interrupts for other ULPs running on NIC function */
        be_intr_set(adapter, true);
 
+       /* tell fw we're ready to fire cmds */
+       status = be_cmd_fw_init(adapter);
+       if (status)
+               goto ctrl_clean;
+
        status = be_stats_init(adapter);
        if (status)
                goto ctrl_clean;
 
        pci_save_state(pdev);
 
-       /* tell fw we're ready to fire cmds */
-       status = be_cmd_fw_init(adapter);
+       status = be_cmd_reset_function(adapter);
        if (status)
                goto err;
 
-       status = be_cmd_reset_function(adapter);
+       /* tell fw we're ready to fire cmds */
+       status = be_cmd_fw_init(adapter);
        if (status)
                goto err;