16 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18 #include <linux/module.h>
19 #include <linux/ctype.h>
21 #include <linux/errno.h>
23 #include <linux/slab.h>
24 #include <linux/string.h>
28 #define DRV_NAME "lib80211"
30 #define DRV_DESCRIPTION "common routines for IEEE802.11 drivers"
47 static void lib80211_crypt_deinit_handler(
unsigned long data);
84 memset(info, 0,
sizeof(*info));
101 lib80211_crypt_quiescing(info);
103 lib80211_crypt_deinit_entries(info, 1);
109 crypt->
ops->deinit(crypt->
priv);
110 module_put(crypt->
ops->owner);
133 entry->
ops->deinit(entry->
priv);
134 module_put(entry->
ops->owner);
138 spin_unlock_irqrestore(info->
lock, flags);
148 spin_unlock_irqrestore(info->
lock, flags);
151 static void lib80211_crypt_deinit_handler(
unsigned long data)
156 lib80211_crypt_deinit_entries(info, 0);
161 "deletion list\n", info->
name);
165 spin_unlock_irqrestore(info->
lock, flags);
192 spin_unlock_irqrestore(info->
lock, flags);
208 list_add(&alg->
list, &lib80211_crypto_algs);
209 spin_unlock_irqrestore(&lib80211_crypto_lock, flags);
228 spin_unlock_irqrestore(&lib80211_crypto_lock, flags);
235 spin_unlock_irqrestore(&lib80211_crypto_lock, flags);
251 spin_unlock_irqrestore(&lib80211_crypto_lock, flags);
255 spin_unlock_irqrestore(&lib80211_crypto_lock, flags);
260 static void *lib80211_crypt_null_init(
int keyidx)
265 static void lib80211_crypt_null_deinit(
void *
priv)
271 .init = lib80211_crypt_null_init,
272 .deinit = lib80211_crypt_null_deinit,
276 static int __init lib80211_init(
void)
282 static void __exit lib80211_exit(
void)
285 BUG_ON(!list_empty(&lib80211_crypto_algs));