aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-11-07 01:43:03 -0500
committerDavid S. Miller <davem@davemloft.net>2008-11-07 01:43:03 -0500
commit9eeda9abd1faf489f3df9a1f557975f4c8650363 (patch)
tree3e0a58e25b776cfbee193195460324dccb1886c7 /drivers/net/wireless/iwlwifi
parent61c9eaf90081cbe6dc4f389e0056bff76eca19ec (diff)
parent4bab0ea1d42dd1927af9df6fbf0003fc00617c50 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/wireless/ath5k/base.c net/8021q/vlan_core.c
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c15
2 files changed, 19 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 82e98b4602c5..2c35a017e5f6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -3237,7 +3237,11 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw,
3237 return; 3237 return;
3238 } 3238 }
3239 3239
3240 iwl_scan_cancel_timeout(priv, 100); 3240 if (iwl_scan_cancel(priv)) {
3241 /* cancel scan failed, just live w/ bad key and rely
3242 briefly on SW decryption */
3243 return;
3244 }
3241 3245
3242 key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK); 3246 key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK);
3243 key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS); 3247 key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS);
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 5436cb43bca7..f675b2993a3d 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -5720,7 +5720,6 @@ static void iwl3945_alive_start(struct iwl3945_priv *priv)
5720 if (priv->error_recovering) 5720 if (priv->error_recovering)
5721 iwl3945_error_recovery(priv); 5721 iwl3945_error_recovery(priv);
5722 5722
5723 ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC);
5724 return; 5723 return;
5725 5724
5726 restart: 5725 restart:
@@ -5965,6 +5964,7 @@ static void iwl3945_bg_alive_start(struct work_struct *data)
5965 mutex_lock(&priv->mutex); 5964 mutex_lock(&priv->mutex);
5966 iwl3945_alive_start(priv); 5965 iwl3945_alive_start(priv);
5967 mutex_unlock(&priv->mutex); 5966 mutex_unlock(&priv->mutex);
5967 ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC);
5968} 5968}
5969 5969
5970static void iwl3945_bg_rf_kill(struct work_struct *work) 5970static void iwl3945_bg_rf_kill(struct work_struct *work)
@@ -6209,6 +6209,11 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
6209 n_probes, 6209 n_probes,
6210 (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); 6210 (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
6211 6211
6212 if (scan->channel_count == 0) {
6213 IWL_DEBUG_SCAN("channel count %d\n", scan->channel_count);
6214 goto done;
6215 }
6216
6212 cmd.len += le16_to_cpu(scan->tx_cmd.len) + 6217 cmd.len += le16_to_cpu(scan->tx_cmd.len) +
6213 scan->channel_count * sizeof(struct iwl3945_scan_channel); 6218 scan->channel_count * sizeof(struct iwl3945_scan_channel);
6214 cmd.data = scan; 6219 cmd.data = scan;
@@ -6226,6 +6231,14 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
6226 return; 6231 return;
6227 6232
6228 done: 6233 done:
6234 /* can not perform scan make sure we clear scanning
6235 * bits from status so next scan request can be performed.
6236 * if we dont clear scanning status bit here all next scan
6237 * will fail
6238 */
6239 clear_bit(STATUS_SCAN_HW, &priv->status);
6240 clear_bit(STATUS_SCANNING, &priv->status);
6241
6229 /* inform mac80211 scan aborted */ 6242 /* inform mac80211 scan aborted */
6230 queue_work(priv->workqueue, &priv->scan_completed); 6243 queue_work(priv->workqueue, &priv->scan_completed);
6231 mutex_unlock(&priv->mutex); 6244 mutex_unlock(&priv->mutex);