aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwmc3200wifi/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/main.c')
-rw-r--r--drivers/net/wireless/iwmc3200wifi/main.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/main.c b/drivers/net/wireless/iwmc3200wifi/main.c
index 3147fe7b5130..952701e6127e 100644
--- a/drivers/net/wireless/iwmc3200wifi/main.c
+++ b/drivers/net/wireless/iwmc3200wifi/main.c
@@ -207,6 +207,33 @@ static void iwm_reset_worker(struct work_struct *work)
207 mutex_unlock(&iwm->mutex); 207 mutex_unlock(&iwm->mutex);
208} 208}
209 209
210static void iwm_auth_retry_worker(struct work_struct *work)
211{
212 struct iwm_priv *iwm;
213 int i, ret;
214
215 iwm = container_of(work, struct iwm_priv, auth_retry_worker);
216 if (iwm->umac_profile_active) {
217 ret = iwm_invalidate_mlme_profile(iwm);
218 if (ret < 0)
219 return;
220 }
221
222 iwm->umac_profile->sec.auth_type = UMAC_AUTH_TYPE_LEGACY_PSK;
223
224 ret = iwm_send_mlme_profile(iwm);
225 if (ret < 0)
226 return;
227
228 for (i = 0; i < IWM_NUM_KEYS; i++)
229 if (iwm->keys[i].key_len)
230 iwm_set_key(iwm, 0, &iwm->keys[i]);
231
232 iwm_set_tx_key(iwm, iwm->default_key);
233}
234
235
236
210static void iwm_watchdog(unsigned long data) 237static void iwm_watchdog(unsigned long data)
211{ 238{
212 struct iwm_priv *iwm = (struct iwm_priv *)data; 239 struct iwm_priv *iwm = (struct iwm_priv *)data;
@@ -240,6 +267,7 @@ int iwm_priv_init(struct iwm_priv *iwm)
240 INIT_DELAYED_WORK(&iwm->disconnect, iwm_disconnect_work); 267 INIT_DELAYED_WORK(&iwm->disconnect, iwm_disconnect_work);
241 INIT_DELAYED_WORK(&iwm->ct_kill_delay, iwm_ct_kill_work); 268 INIT_DELAYED_WORK(&iwm->ct_kill_delay, iwm_ct_kill_work);
242 INIT_WORK(&iwm->reset_worker, iwm_reset_worker); 269 INIT_WORK(&iwm->reset_worker, iwm_reset_worker);
270 INIT_WORK(&iwm->auth_retry_worker, iwm_auth_retry_worker);
243 INIT_LIST_HEAD(&iwm->bss_list); 271 INIT_LIST_HEAD(&iwm->bss_list);
244 272
245 skb_queue_head_init(&iwm->rx_list); 273 skb_queue_head_init(&iwm->rx_list);