static void
 nvme_fc_error_recovery(struct nvme_fc_ctrl *ctrl, char *errmsg)
 {
+       /* only proceed if in LIVE state - e.g. on first error */
+       if (ctrl->ctrl.state != NVME_CTRL_LIVE)
+               return;
+
        dev_warn(ctrl->ctrl.device,
                "NVME-FC{%d}: transport association error detected: %s\n",
                ctrl->cnum, errmsg);
        dev_warn(ctrl->ctrl.device,
                "NVME-FC{%d}: resetting controller\n", ctrl->cnum);
 
-       /* stop the queues on error, cleanup is in reset thread */
-       if (ctrl->queue_count > 1)
-               nvme_stop_queues(&ctrl->ctrl);
-
        if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_RECONNECTING)) {
                dev_err(ctrl->ctrl.device,
                        "NVME-FC{%d}: error_recovery: Couldn't change state "