IWL_DEBUG_INFO("Begin load bsm\n");
 
+       priv->ucode_type = UCODE_RT;
+
        /* make sure bootstrap program is no larger than BSM's SRAM size */
        if (len > IWL_MAX_BSM_SIZE)
                return -EINVAL;
 
        iwl_release_nic_access(priv);
 
-       priv->ucode_type = UCODE_INIT;
-
        return 0;
 }
 
 
        IWL_DEBUG_INFO("Runtime uCode pointers are set.\n");
 
-       priv->ucode_type = UCODE_RT;
-
        return ret;
 }
 
 
 
        iwl5000_send_Xtal_calib(priv);
 
-       if (priv->ucode_type == UCODE_RT)
+       if (priv->ucode_type == UCODE_RT) {
                iwl5000_send_calib_results(priv);
+               set_bit(STATUS_READY, &priv->status);
+               priv->is_open = 1;
+       }
 
        return 0;
 }
 
        if (test_bit(STATUS_IN_SUSPEND, &priv->status))
                return 0;
 
-       /* Wait for START_ALIVE from ucode. Otherwise callbacks from
+       /* Wait for START_ALIVE from Run Time ucode. Otherwise callbacks from
         * mac80211 will not be run successfully. */
-       ret = wait_event_interruptible_timeout(priv->wait_command_queue,
-                       test_bit(STATUS_READY, &priv->status),
-                       UCODE_READY_TIMEOUT);
-       if (!ret) {
-               if (!test_bit(STATUS_READY, &priv->status)) {
-                       IWL_ERROR("Wait for START_ALIVE timeout after %dms.\n",
-                                 jiffies_to_msecs(UCODE_READY_TIMEOUT));
-                       ret = -ETIMEDOUT;
-                       goto out_release_irq;
+       if (priv->ucode_type == UCODE_RT) {
+               ret = wait_event_interruptible_timeout(priv->wait_command_queue,
+                               test_bit(STATUS_READY, &priv->status),
+                               UCODE_READY_TIMEOUT);
+               if (!ret) {
+                       if (!test_bit(STATUS_READY, &priv->status)) {
+                               IWL_ERROR("START_ALIVE timeout after %dms.\n",
+                                       jiffies_to_msecs(UCODE_READY_TIMEOUT));
+                               ret = -ETIMEDOUT;
+                               goto out_release_irq;
+                       }
                }
-       }
 
-       priv->is_open = 1;
+               priv->is_open = 1;
+       }
        IWL_DEBUG_MAC80211("leave\n");
        return 0;