netif_device_detach(lif->netdev);
 
+       mutex_lock(&lif->queue_lock);
        if (test_bit(IONIC_LIF_F_UP, lif->state)) {
                dev_info(ionic->dev, "Surprise FW stop, stopping queues\n");
-               mutex_lock(&lif->queue_lock);
                ionic_stop_queues(lif);
-               mutex_unlock(&lif->queue_lock);
        }
 
        if (netif_running(lif->netdev)) {
        ionic_reset(ionic);
        ionic_qcqs_free(lif);
 
+       mutex_unlock(&lif->queue_lock);
+
        dev_info(ionic->dev, "FW Down: LIFs stopped\n");
 }
 
        err = ionic_port_init(ionic);
        if (err)
                goto err_out;
+
+       mutex_lock(&lif->queue_lock);
+
        err = ionic_qcqs_alloc(lif);
        if (err)
-               goto err_out;
+               goto err_unlock;
 
        err = ionic_lif_init(lif);
        if (err)
                        goto err_txrx_free;
        }
 
+       mutex_unlock(&lif->queue_lock);
+
        clear_bit(IONIC_LIF_F_FW_RESET, lif->state);
        ionic_link_status_check_request(lif, CAN_SLEEP);
        netif_device_attach(lif->netdev);
        ionic_lif_deinit(lif);
 err_qcqs_free:
        ionic_qcqs_free(lif);
+err_unlock:
+       mutex_unlock(&lif->queue_lock);
 err_out:
        dev_err(ionic->dev, "FW Up: LIFs restart failed - err %d\n", err);
 }