--- linux-2.6.18.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-11-26 10:52:18.000000000 -0500 +++ linux-2.6.18.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-11-26 14:20:12.000000000 -0500 @@ -6273,6 +6273,14 @@ static void iwl3945_bg_request_scan(void return; done: + /* can not perform scan make sure we clear scanning + * bits from status so next scan request can be performed. + * if we dont clear scanning status bit here all next scan + * will fail + */ + clear_bit(STATUS_SCAN_HW, &priv->status); + clear_bit(STATUS_SCANNING, &priv->status); + /* inform mac80211 scan aborted */ queue_work(priv->workqueue, &priv->scan_completed); mutex_unlock(&priv->mutex); --- linux-2.6.18.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c.orig 2008-11-26 10:52:18.000000000 -0500 +++ linux-2.6.18.noarch/drivers/net/wireless/iwlwifi/iwl-scan.c 2008-11-26 14:20:14.000000000 -0500 @@ -900,6 +900,13 @@ static void iwl_bg_request_scan(void *p) return; done: + /* Cannot perform scan. Make sure we clear scanning + * bits from status so next scan request can be performed. + * If we don't clear scanning status bit here all next scan + * will fail + */ + clear_bit(STATUS_SCAN_HW, &priv->status); + clear_bit(STATUS_SCANNING, &priv->status); /* inform mac80211 scan aborted */ queue_work(priv->workqueue, &priv->scan_completed); mutex_unlock(&priv->mutex);