mutex_unlock(&priv->mutex);
 }
 
-static void iwl_bg_rf_kill(struct work_struct *work)
-{
-       struct iwl_priv *priv = container_of(work, struct iwl_priv, rf_kill);
-
-       wake_up_interruptible(&priv->wait_command_queue);
-
-       if (test_bit(STATUS_EXIT_PENDING, &priv->status))
-               return;
-
-       mutex_lock(&priv->mutex);
-
-       if (!iwl_is_rfkill(priv)) {
-               IWL_DEBUG(IWL_DL_RF_KILL,
-                         "HW and/or SW RF Kill no longer active, restarting "
-                         "device\n");
-               if (!test_bit(STATUS_EXIT_PENDING, &priv->status) &&
-                    test_bit(STATUS_ALIVE, &priv->status))
-                       queue_work(priv->workqueue, &priv->restart);
-       } else {
-               /* make sure mac80211 stop sending Tx frame */
-               if (priv->mac80211_registered)
-                       ieee80211_stop_queues(priv->hw);
-
-               if (!test_bit(STATUS_RF_KILL_HW, &priv->status))
-                       IWL_DEBUG_RF_KILL("Can not turn radio back on - "
-                                         "disabled by SW switch\n");
-               else
-                       IWL_WARN(priv, "Radio Frequency Kill Switch is On:\n"
-                                   "Kill switch must be turned off for "
-                                   "wireless networking to work.\n");
-       }
-       mutex_unlock(&priv->mutex);
-       iwl_rfkill_set_hw_state(priv);
-}
-
 static void iwl_bg_run_time_calib_work(struct work_struct *work)
 {
        struct iwl_priv *priv = container_of(work, struct iwl_priv,
 
        return 1;
 }
 EXPORT_SYMBOL(iwl_radio_kill_sw_enable_radio);
+
+void iwl_bg_rf_kill(struct work_struct *work)
+{
+       struct iwl_priv *priv = container_of(work, struct iwl_priv, rf_kill);
+
+       wake_up_interruptible(&priv->wait_command_queue);
+
+       if (test_bit(STATUS_EXIT_PENDING, &priv->status))
+               return;
+
+       mutex_lock(&priv->mutex);
+
+       if (!iwl_is_rfkill(priv)) {
+               IWL_DEBUG(IWL_DL_RF_KILL,
+                         "HW and/or SW RF Kill no longer active, restarting "
+                         "device\n");
+               if (!test_bit(STATUS_EXIT_PENDING, &priv->status) &&
+                   test_bit(STATUS_ALIVE, &priv->status))
+                       queue_work(priv->workqueue, &priv->restart);
+       } else {
+               /* make sure mac80211 stop sending Tx frame */
+               if (priv->mac80211_registered)
+                       ieee80211_stop_queues(priv->hw);
+
+               if (!test_bit(STATUS_RF_KILL_HW, &priv->status))
+                       IWL_DEBUG_RF_KILL("Can not turn radio back on - "
+                                         "disabled by SW switch\n");
+               else
+                       IWL_WARN(priv, "Radio Frequency Kill Switch is On:\n"
+                                   "Kill switch must be turned off for "
+                                   "wireless networking to work.\n");
+       }
+       mutex_unlock(&priv->mutex);
+       iwl_rfkill_set_hw_state(priv);
+}
+EXPORT_SYMBOL(iwl_bg_rf_kill);
 
        mutex_unlock(&priv->mutex);
 }
 
-static void iwl3945_bg_rf_kill(struct work_struct *work)
-{
-       struct iwl_priv *priv = container_of(work, struct iwl_priv, rf_kill);
-
-       wake_up_interruptible(&priv->wait_command_queue);
-
-       if (test_bit(STATUS_EXIT_PENDING, &priv->status))
-               return;
-
-       mutex_lock(&priv->mutex);
-
-       if (!iwl_is_rfkill(priv)) {
-               IWL_DEBUG(IWL_DL_INFO | IWL_DL_RF_KILL,
-                         "HW and/or SW RF Kill no longer active, restarting "
-                         "device\n");
-               if (!test_bit(STATUS_EXIT_PENDING, &priv->status) &&
-                    test_bit(STATUS_ALIVE, &priv->status))
-                       queue_work(priv->workqueue, &priv->restart);
-       } else {
-
-               if (!test_bit(STATUS_RF_KILL_HW, &priv->status))
-                       IWL_DEBUG_RF_KILL("Can not turn radio back on - "
-                                         "disabled by SW switch\n");
-               else
-                       IWL_WARN(priv, "Radio Frequency Kill Switch is On:\n"
-                                   "Kill switch must be turned off for "
-                                   "wireless networking to work.\n");
-       }
-
-       mutex_unlock(&priv->mutex);
-       iwl3945_rfkill_set_hw_state(priv);
-}
-
 static void iwl3945_rfkill_poll(struct work_struct *data)
 {
        struct iwl_priv *priv =
        mutex_lock(&priv->mutex);
        __iwl3945_up(priv);
        mutex_unlock(&priv->mutex);
-       iwl3945_rfkill_set_hw_state(priv);
+       iwl_rfkill_set_hw_state(priv);
 }
 
 static void iwl3945_bg_restart(struct work_struct *data)
 
        mutex_unlock(&priv->mutex);
 
-       iwl3945_rfkill_set_hw_state(priv);
+       iwl_rfkill_set_hw_state(priv);
 
        if (ret)
                goto out_release_irq;
        INIT_WORK(&priv->scan_completed, iwl3945_bg_scan_completed);
        INIT_WORK(&priv->request_scan, iwl3945_bg_request_scan);
        INIT_WORK(&priv->abort_scan, iwl3945_bg_abort_scan);
-       INIT_WORK(&priv->rf_kill, iwl3945_bg_rf_kill);
+       INIT_WORK(&priv->rf_kill, iwl_bg_rf_kill);
        INIT_WORK(&priv->beacon_update, iwl3945_bg_beacon_update);
        INIT_DELAYED_WORK(&priv->init_alive_start, iwl3945_bg_init_alive_start);
        INIT_DELAYED_WORK(&priv->alive_start, iwl3945_bg_alive_start);
        priv->hw->conf.beacon_int = 100;
        priv->mac80211_registered = 1;
 
-       err = iwl3945_rfkill_init(priv);
+       err = iwl_rfkill_init(priv);
        if (err)
                IWL_ERR(priv, "Unable to initialize RFKILL system. "
                                  "Ignoring error: %d\n", err);
 
        sysfs_remove_group(&pdev->dev.kobj, &iwl3945_attribute_group);
 
-       iwl3945_rfkill_unregister(priv);
+       iwl_rfkill_unregister(priv);
        cancel_delayed_work(&priv->rfkill_poll);
 
        iwl3945_dealloc_ucode_pci(priv);
 
 #endif /* CONFIG_PM */
 
-/*************** RFKILL FUNCTIONS **********/
-#ifdef CONFIG_IWL3945_RFKILL
-/* software rf-kill from user */
-static int iwl3945_rfkill_soft_rf_kill(void *data, enum rfkill_state state)
-{
-       struct iwl_priv *priv = data;
-       int err = 0;
-
-       if (!priv->rfkill)
-       return 0;
-
-       if (test_bit(STATUS_EXIT_PENDING, &priv->status))
-               return 0;
-
-       IWL_DEBUG_RF_KILL("we received soft RFKILL set to state %d\n", state);
-       mutex_lock(&priv->mutex);
-
-       switch (state) {
-       case RFKILL_STATE_UNBLOCKED:
-               if (iwl_is_rfkill_hw(priv)) {
-                       err = -EBUSY;
-                       goto out_unlock;
-               }
-               iwl3945_radio_kill_sw(priv, 0);
-               break;
-       case RFKILL_STATE_SOFT_BLOCKED:
-               iwl3945_radio_kill_sw(priv, 1);
-               break;
-       default:
-               IWL_WARN(priv, "received unexpected RFKILL state %d\n", state);
-               break;
-       }
-out_unlock:
-       mutex_unlock(&priv->mutex);
-
-       return err;
-}
-
-int iwl3945_rfkill_init(struct iwl_priv *priv)
-{
-       struct device *device = wiphy_dev(priv->hw->wiphy);
-       int ret = 0;
-
-       BUG_ON(device == NULL);
-
-       IWL_DEBUG_RF_KILL("Initializing RFKILL.\n");
-       priv->rfkill = rfkill_allocate(device, RFKILL_TYPE_WLAN);
-       if (!priv->rfkill) {
-               IWL_ERR(priv, "Unable to allocate rfkill device.\n");
-               ret = -ENOMEM;
-               goto error;
-       }
-
-       priv->rfkill->name = priv->cfg->name;
-       priv->rfkill->data = priv;
-       priv->rfkill->state = RFKILL_STATE_UNBLOCKED;
-       priv->rfkill->toggle_radio = iwl3945_rfkill_soft_rf_kill;
-       priv->rfkill->user_claim_unsupported = 1;
-
-       priv->rfkill->dev.class->suspend = NULL;
-       priv->rfkill->dev.class->resume = NULL;
-
-       ret = rfkill_register(priv->rfkill);
-       if (ret) {
-               IWL_ERR(priv, "Unable to register rfkill: %d\n", ret);
-               goto freed_rfkill;
-       }
-
-       IWL_DEBUG_RF_KILL("RFKILL initialization complete.\n");
-       return ret;
-
-freed_rfkill:
-       if (priv->rfkill != NULL)
-               rfkill_free(priv->rfkill);
-       priv->rfkill = NULL;
-
-error:
-       IWL_DEBUG_RF_KILL("RFKILL initialization complete.\n");
-       return ret;
-}
-
-void iwl3945_rfkill_unregister(struct iwl_priv *priv)
-{
-       if (priv->rfkill)
-               rfkill_unregister(priv->rfkill);
-
-       priv->rfkill = NULL;
-}
-
-/* set rf-kill to the right state. */
-void iwl3945_rfkill_set_hw_state(struct iwl_priv *priv)
-{
-
-       if (!priv->rfkill)
-               return;
-
-       if (iwl_is_rfkill_hw(priv)) {
-               rfkill_force_state(priv->rfkill, RFKILL_STATE_HARD_BLOCKED);
-               return;
-       }
-
-       if (!iwl_is_rfkill_sw(priv))
-               rfkill_force_state(priv->rfkill, RFKILL_STATE_UNBLOCKED);
-       else
-               rfkill_force_state(priv->rfkill, RFKILL_STATE_SOFT_BLOCKED);
-}
-#endif
-
 /*****************************************************************************
  *
  * driver and module entry point