iwl3945: fix scan races
Port following patch to 3945. "commit 90c4162ff59a3281b6d2f7206740be6217bd6758 Author: Johannes Berg <johannes.berg@intel.com> Date: Wed Apr 7 00:21:36 2010 -0700 iwlwifi: fix scan races" Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
This commit is contained in:
parent
95b13014bb
commit
1e460535ab
@ -515,6 +515,7 @@ int iwl_scan_cancel_timeout(struct iwl_priv *priv, unsigned long ms);
|
|||||||
int iwl_mac_hw_scan(struct ieee80211_hw *hw,
|
int iwl_mac_hw_scan(struct ieee80211_hw *hw,
|
||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
struct cfg80211_scan_request *req);
|
struct cfg80211_scan_request *req);
|
||||||
|
void iwl_bg_start_internal_scan(struct work_struct *work);
|
||||||
void iwl_internal_short_hw_scan(struct iwl_priv *priv);
|
void iwl_internal_short_hw_scan(struct iwl_priv *priv);
|
||||||
int iwl_force_reset(struct iwl_priv *priv, int mode);
|
int iwl_force_reset(struct iwl_priv *priv, int mode);
|
||||||
u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
|
u16 iwl_fill_probe_req(struct iwl_priv *priv, struct ieee80211_mgmt *frame,
|
||||||
|
@ -367,7 +367,7 @@ void iwl_internal_short_hw_scan(struct iwl_priv *priv)
|
|||||||
queue_work(priv->workqueue, &priv->start_internal_scan);
|
queue_work(priv->workqueue, &priv->start_internal_scan);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void iwl_bg_start_internal_scan(struct work_struct *work)
|
void iwl_bg_start_internal_scan(struct work_struct *work)
|
||||||
{
|
{
|
||||||
struct iwl_priv *priv =
|
struct iwl_priv *priv =
|
||||||
container_of(work, struct iwl_priv, start_internal_scan);
|
container_of(work, struct iwl_priv, start_internal_scan);
|
||||||
@ -402,6 +402,7 @@ static void iwl_bg_start_internal_scan(struct work_struct *work)
|
|||||||
unlock:
|
unlock:
|
||||||
mutex_unlock(&priv->mutex);
|
mutex_unlock(&priv->mutex);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(iwl_bg_start_internal_scan);
|
||||||
|
|
||||||
void iwl_bg_scan_check(struct work_struct *data)
|
void iwl_bg_scan_check(struct work_struct *data)
|
||||||
{
|
{
|
||||||
|
@ -3739,6 +3739,7 @@ static void iwl3945_setup_deferred_work(struct iwl_priv *priv)
|
|||||||
INIT_DELAYED_WORK(&priv->_3945.rfkill_poll, iwl3945_rfkill_poll);
|
INIT_DELAYED_WORK(&priv->_3945.rfkill_poll, iwl3945_rfkill_poll);
|
||||||
INIT_WORK(&priv->scan_completed, iwl_bg_scan_completed);
|
INIT_WORK(&priv->scan_completed, iwl_bg_scan_completed);
|
||||||
INIT_WORK(&priv->abort_scan, iwl_bg_abort_scan);
|
INIT_WORK(&priv->abort_scan, iwl_bg_abort_scan);
|
||||||
|
INIT_WORK(&priv->start_internal_scan, iwl_bg_start_internal_scan);
|
||||||
INIT_DELAYED_WORK(&priv->scan_check, iwl_bg_scan_check);
|
INIT_DELAYED_WORK(&priv->scan_check, iwl_bg_scan_check);
|
||||||
|
|
||||||
iwl3945_hw_setup_deferred_work(priv);
|
iwl3945_hw_setup_deferred_work(priv);
|
||||||
@ -3761,6 +3762,7 @@ static void iwl3945_cancel_deferred_work(struct iwl_priv *priv)
|
|||||||
cancel_delayed_work_sync(&priv->init_alive_start);
|
cancel_delayed_work_sync(&priv->init_alive_start);
|
||||||
cancel_delayed_work(&priv->scan_check);
|
cancel_delayed_work(&priv->scan_check);
|
||||||
cancel_delayed_work(&priv->alive_start);
|
cancel_delayed_work(&priv->alive_start);
|
||||||
|
cancel_work_sync(&priv->start_internal_scan);
|
||||||
cancel_work_sync(&priv->beacon_update);
|
cancel_work_sync(&priv->beacon_update);
|
||||||
if (priv->cfg->ops->lib->recover_from_tx_stall)
|
if (priv->cfg->ops->lib->recover_from_tx_stall)
|
||||||
del_timer_sync(&priv->monitor_recover);
|
del_timer_sync(&priv->monitor_recover);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user