diff options
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_hw.c')
-rw-r--r-- | drivers/net/wireless/hostap/hostap_hw.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c index fd7f7ceeac46..066299fc9259 100644 --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c | |||
@@ -47,7 +47,7 @@ | |||
47 | #include <linux/wireless.h> | 47 | #include <linux/wireless.h> |
48 | #include <net/iw_handler.h> | 48 | #include <net/iw_handler.h> |
49 | #include <net/ieee80211.h> | 49 | #include <net/ieee80211.h> |
50 | #include <net/ieee80211_crypt.h> | 50 | #include <net/lib80211.h> |
51 | #include <asm/irq.h> | 51 | #include <asm/irq.h> |
52 | 52 | ||
53 | #include "hostap_80211.h" | 53 | #include "hostap_80211.h" |
@@ -2791,11 +2791,12 @@ static void prism2_check_sta_fw_version(local_info_t *local) | |||
2791 | static void prism2_crypt_deinit_entries(local_info_t *local, int force) | 2791 | static void prism2_crypt_deinit_entries(local_info_t *local, int force) |
2792 | { | 2792 | { |
2793 | struct list_head *ptr, *n; | 2793 | struct list_head *ptr, *n; |
2794 | struct ieee80211_crypt_data *entry; | 2794 | struct lib80211_crypt_data *entry; |
2795 | 2795 | ||
2796 | for (ptr = local->crypt_deinit_list.next, n = ptr->next; | 2796 | for (ptr = local->crypt_info.crypt_deinit_list.next, n = ptr->next; |
2797 | ptr != &local->crypt_deinit_list; ptr = n, n = ptr->next) { | 2797 | ptr != &local->crypt_info.crypt_deinit_list; |
2798 | entry = list_entry(ptr, struct ieee80211_crypt_data, list); | 2798 | ptr = n, n = ptr->next) { |
2799 | entry = list_entry(ptr, struct lib80211_crypt_data, list); | ||
2799 | 2800 | ||
2800 | if (atomic_read(&entry->refcnt) != 0 && !force) | 2801 | if (atomic_read(&entry->refcnt) != 0 && !force) |
2801 | continue; | 2802 | continue; |
@@ -2816,11 +2817,11 @@ static void prism2_crypt_deinit_handler(unsigned long data) | |||
2816 | 2817 | ||
2817 | spin_lock_irqsave(&local->lock, flags); | 2818 | spin_lock_irqsave(&local->lock, flags); |
2818 | prism2_crypt_deinit_entries(local, 0); | 2819 | prism2_crypt_deinit_entries(local, 0); |
2819 | if (!list_empty(&local->crypt_deinit_list)) { | 2820 | if (!list_empty(&local->crypt_info.crypt_deinit_list)) { |
2820 | printk(KERN_DEBUG "%s: entries remaining in delayed crypt " | 2821 | printk(KERN_DEBUG "%s: entries remaining in delayed crypt " |
2821 | "deletion list\n", local->dev->name); | 2822 | "deletion list\n", local->dev->name); |
2822 | local->crypt_deinit_timer.expires = jiffies + HZ; | 2823 | local->crypt_info.crypt_deinit_timer.expires = jiffies + HZ; |
2823 | add_timer(&local->crypt_deinit_timer); | 2824 | add_timer(&local->crypt_info.crypt_deinit_timer); |
2824 | } | 2825 | } |
2825 | spin_unlock_irqrestore(&local->lock, flags); | 2826 | spin_unlock_irqrestore(&local->lock, flags); |
2826 | 2827 | ||
@@ -3250,10 +3251,13 @@ while (0) | |||
3250 | 3251 | ||
3251 | INIT_LIST_HEAD(&local->cmd_queue); | 3252 | INIT_LIST_HEAD(&local->cmd_queue); |
3252 | init_waitqueue_head(&local->hostscan_wq); | 3253 | init_waitqueue_head(&local->hostscan_wq); |
3253 | INIT_LIST_HEAD(&local->crypt_deinit_list); | 3254 | |
3254 | init_timer(&local->crypt_deinit_timer); | 3255 | local->crypt_info.name = dev->name; |
3255 | local->crypt_deinit_timer.data = (unsigned long) local; | 3256 | local->crypt_info.lock = &local->lock; |
3256 | local->crypt_deinit_timer.function = prism2_crypt_deinit_handler; | 3257 | INIT_LIST_HEAD(&local->crypt_info.crypt_deinit_list); |
3258 | init_timer(&local->crypt_info.crypt_deinit_timer); | ||
3259 | local->crypt_info.crypt_deinit_timer.data = (unsigned long) local; | ||
3260 | local->crypt_info.crypt_deinit_timer.function = prism2_crypt_deinit_handler; | ||
3257 | 3261 | ||
3258 | init_timer(&local->passive_scan_timer); | 3262 | init_timer(&local->passive_scan_timer); |
3259 | local->passive_scan_timer.data = (unsigned long) local; | 3263 | local->passive_scan_timer.data = (unsigned long) local; |
@@ -3354,8 +3358,8 @@ static void prism2_free_local_data(struct net_device *dev) | |||
3354 | 3358 | ||
3355 | flush_scheduled_work(); | 3359 | flush_scheduled_work(); |
3356 | 3360 | ||
3357 | if (timer_pending(&local->crypt_deinit_timer)) | 3361 | if (timer_pending(&local->crypt_info.crypt_deinit_timer)) |
3358 | del_timer(&local->crypt_deinit_timer); | 3362 | del_timer(&local->crypt_info.crypt_deinit_timer); |
3359 | prism2_crypt_deinit_entries(local, 1); | 3363 | prism2_crypt_deinit_entries(local, 1); |
3360 | 3364 | ||
3361 | if (timer_pending(&local->passive_scan_timer)) | 3365 | if (timer_pending(&local->passive_scan_timer)) |
@@ -3374,12 +3378,12 @@ static void prism2_free_local_data(struct net_device *dev) | |||
3374 | prism2_callback(local, PRISM2_CALLBACK_DISABLE); | 3378 | prism2_callback(local, PRISM2_CALLBACK_DISABLE); |
3375 | 3379 | ||
3376 | for (i = 0; i < WEP_KEYS; i++) { | 3380 | for (i = 0; i < WEP_KEYS; i++) { |
3377 | struct ieee80211_crypt_data *crypt = local->crypt[i]; | 3381 | struct lib80211_crypt_data *crypt = local->crypt_info.crypt[i]; |
3378 | if (crypt) { | 3382 | if (crypt) { |
3379 | if (crypt->ops) | 3383 | if (crypt->ops) |
3380 | crypt->ops->deinit(crypt->priv); | 3384 | crypt->ops->deinit(crypt->priv); |
3381 | kfree(crypt); | 3385 | kfree(crypt); |
3382 | local->crypt[i] = NULL; | 3386 | local->crypt_info.crypt[i] = NULL; |
3383 | } | 3387 | } |
3384 | } | 3388 | } |
3385 | 3389 | ||