aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/hostap/hostap_hw.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2008-10-29 11:35:05 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-11-21 11:08:17 -0500
commit274bfb8dc5ffa16cb073801bebe76ab7f4e2e73d (patch)
tree04cd3f6a062496911b56737daa6a0858b769ccd6 /drivers/net/wireless/hostap/hostap_hw.c
parentdfe1bafdbac1c7b48b636fb7ace799e78170e0d6 (diff)
lib80211: absorb crypto bits from net/ieee80211
These bits are shared already between ipw2x00 and hostap, and could probably be shared both more cleanly and with other drivers. This commit simply relocates the code to lib80211 and adjusts the drivers appropriately. Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_hw.c')
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c36
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 fd7f7ceeac4..066299fc925 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)
2791static void prism2_crypt_deinit_entries(local_info_t *local, int force) 2791static 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