return rc;
 }
 
-/**
- * iwl3945_scan_cancel - Cancel any currently executing HW scan
- *
- * NOTE: priv->mutex is not required before calling this function
- */
-static int iwl3945_scan_cancel(struct iwl_priv *priv)
-{
-       if (!test_bit(STATUS_SCAN_HW, &priv->status)) {
-               clear_bit(STATUS_SCANNING, &priv->status);
-               return 0;
-       }
-
-       if (test_bit(STATUS_SCANNING, &priv->status)) {
-               if (!test_bit(STATUS_SCAN_ABORTING, &priv->status)) {
-                       IWL_DEBUG_SCAN("Queuing scan abort.\n");
-                       set_bit(STATUS_SCAN_ABORTING, &priv->status);
-                       queue_work(priv->workqueue, &priv->abort_scan);
-
-               } else
-                       IWL_DEBUG_SCAN("Scan abort already in progress.\n");
-
-               return test_bit(STATUS_SCANNING, &priv->status);
-       }
-
-       return 0;
-}
-
-/**
- * iwl3945_scan_cancel_timeout - Cancel any currently executing HW scan
- * @ms: amount of time to wait (in milliseconds) for scan to abort
- *
- * NOTE: priv->mutex must be held before calling this function
- */
-static int iwl3945_scan_cancel_timeout(struct iwl_priv *priv, unsigned long ms)
-{
-       unsigned long now = jiffies;
-       int ret;
-
-       ret = iwl3945_scan_cancel(priv);
-       if (ret && ms) {
-               mutex_unlock(&priv->mutex);
-               while (!time_after(jiffies, now + msecs_to_jiffies(ms)) &&
-                               test_bit(STATUS_SCANNING, &priv->status))
-                       msleep(1);
-               mutex_lock(&priv->mutex);
-
-               return test_bit(STATUS_SCANNING, &priv->status);
-       }
-
-       return ret;
-}
-
 #define MAX_UCODE_BEACON_INTERVAL      1024
 #define INTEL_CONN_LISTEN_INTERVAL     __constant_cpu_to_le16(0xA)
 
                return -EAGAIN;
 
        cancel_delayed_work(&priv->scan_check);
-       if (iwl3945_scan_cancel_timeout(priv, 100)) {
+       if (iwl_scan_cancel_timeout(priv, 100)) {
                IWL_WARN(priv, "Aborted scan still in progress after 100ms\n");
                IWL_DEBUG_MAC80211("leaving - scan abort failed.\n");
                return -EAGAIN;
                          disable_radio ? "OFF" : "ON");
 
        if (disable_radio) {
-               iwl3945_scan_cancel(priv);
+               iwl_scan_cancel(priv);
                /* FIXME: This is a workaround for AP */
                if (priv->iw_mode != NL80211_IFTYPE_AP) {
                        spin_lock_irqsave(&priv->lock, flags);
        else
                clear_bit(STATUS_RF_KILL_SW, &priv->status);
 
-       iwl3945_scan_cancel(priv);
+       iwl_scan_cancel(priv);
 
        if ((test_bit(STATUS_RF_KILL_HW, &status) !=
             test_bit(STATUS_RF_KILL_HW, &priv->status)) ||
        if (!priv->vif || !priv->is_open)
                return;
 
-       iwl3945_scan_cancel_timeout(priv, 200);
+       iwl_scan_cancel_timeout(priv, 200);
 
        conf = ieee80211_get_hw_conf(priv->hw);
 
                 * RXON_FILTER_ASSOC_MSK BIT
                 */
                mutex_lock(&priv->mutex);
-               iwl3945_scan_cancel_timeout(priv, 100);
+               iwl_scan_cancel_timeout(priv, 100);
                mutex_unlock(&priv->mutex);
        }
 
            !is_multicast_ether_addr(conf->bssid)) {
                /* If there is currently a HW scan going on in the background
                 * then we need to cancel it else the RXON below will fail. */
-               if (iwl3945_scan_cancel_timeout(priv, 100)) {
+               if (iwl_scan_cancel_timeout(priv, 100)) {
                        IWL_WARN(priv, "Aborted scan still in progress "
                                    "after 100ms\n");
                        IWL_DEBUG_MAC80211("leaving - scan abort failed.\n");
                }
 
        } else {
-               iwl3945_scan_cancel_timeout(priv, 100);
+               iwl_scan_cancel_timeout(priv, 100);
                priv->staging39_rxon.filter_flags &= ~RXON_FILTER_ASSOC_MSK;
                iwl3945_commit_rxon(priv);
        }
        mutex_lock(&priv->mutex);
 
        if (iwl_is_ready_rf(priv)) {
-               iwl3945_scan_cancel_timeout(priv, 100);
+               iwl_scan_cancel_timeout(priv, 100);
                priv->staging39_rxon.filter_flags &= ~RXON_FILTER_ASSOC_MSK;
                iwl3945_commit_rxon(priv);
        }
 
        mutex_lock(&priv->mutex);
 
-       iwl3945_scan_cancel_timeout(priv, 100);
+       iwl_scan_cancel_timeout(priv, 100);
 
        switch (cmd) {
        case  SET_KEY:
         * clear RXON_FILTER_ASSOC_MSK bit
        */
        if (priv->iw_mode != NL80211_IFTYPE_AP) {
-               iwl3945_scan_cancel_timeout(priv, 100);
+               iwl_scan_cancel_timeout(priv, 100);
                priv->staging39_rxon.filter_flags &= ~RXON_FILTER_ASSOC_MSK;
                iwl3945_commit_rxon(priv);
        }
        mutex_lock(&priv->mutex);
        if (le32_to_cpu(priv->staging39_rxon.flags) != flags) {
                /* Cancel any currently running scans... */
-               if (iwl3945_scan_cancel_timeout(priv, 100))
+               if (iwl_scan_cancel_timeout(priv, 100))
                        IWL_WARN(priv, "Could not cancel scan.\n");
                else {
                        IWL_DEBUG_INFO("Committing rxon.flags = 0x%04X\n",
        mutex_lock(&priv->mutex);
        if (le32_to_cpu(priv->staging39_rxon.filter_flags) != filter_flags) {
                /* Cancel any currently running scans... */
-               if (iwl3945_scan_cancel_timeout(priv, 100))
+               if (iwl_scan_cancel_timeout(priv, 100))
                        IWL_WARN(priv, "Could not cancel scan.\n");
                else {
                        IWL_DEBUG_INFO("Committing rxon.filter_flags = "