Lines Matching refs:info
44 static void lib80211_crypt_deinit_entries(struct lib80211_crypt_info *info,
46 static void lib80211_crypt_quiescing(struct lib80211_crypt_info *info);
49 int lib80211_crypt_info_init(struct lib80211_crypt_info *info, char *name, in lib80211_crypt_info_init() argument
52 memset(info, 0, sizeof(*info)); in lib80211_crypt_info_init()
54 info->name = name; in lib80211_crypt_info_init()
55 info->lock = lock; in lib80211_crypt_info_init()
57 INIT_LIST_HEAD(&info->crypt_deinit_list); in lib80211_crypt_info_init()
58 setup_timer(&info->crypt_deinit_timer, lib80211_crypt_deinit_handler, in lib80211_crypt_info_init()
59 (unsigned long)info); in lib80211_crypt_info_init()
65 void lib80211_crypt_info_free(struct lib80211_crypt_info *info) in lib80211_crypt_info_free() argument
69 lib80211_crypt_quiescing(info); in lib80211_crypt_info_free()
70 del_timer_sync(&info->crypt_deinit_timer); in lib80211_crypt_info_free()
71 lib80211_crypt_deinit_entries(info, 1); in lib80211_crypt_info_free()
74 struct lib80211_crypt_data *crypt = info->crypt[i]; in lib80211_crypt_info_free()
81 info->crypt[i] = NULL; in lib80211_crypt_info_free()
87 static void lib80211_crypt_deinit_entries(struct lib80211_crypt_info *info, in lib80211_crypt_deinit_entries() argument
93 spin_lock_irqsave(info->lock, flags); in lib80211_crypt_deinit_entries()
94 list_for_each_entry_safe(entry, next, &info->crypt_deinit_list, list) { in lib80211_crypt_deinit_entries()
106 spin_unlock_irqrestore(info->lock, flags); in lib80211_crypt_deinit_entries()
110 static void lib80211_crypt_quiescing(struct lib80211_crypt_info *info) in lib80211_crypt_quiescing() argument
114 spin_lock_irqsave(info->lock, flags); in lib80211_crypt_quiescing()
115 info->crypt_quiesced = 1; in lib80211_crypt_quiescing()
116 spin_unlock_irqrestore(info->lock, flags); in lib80211_crypt_quiescing()
121 struct lib80211_crypt_info *info = (struct lib80211_crypt_info *)data; in lib80211_crypt_deinit_handler() local
124 lib80211_crypt_deinit_entries(info, 0); in lib80211_crypt_deinit_handler()
126 spin_lock_irqsave(info->lock, flags); in lib80211_crypt_deinit_handler()
127 if (!list_empty(&info->crypt_deinit_list) && !info->crypt_quiesced) { in lib80211_crypt_deinit_handler()
129 "deletion list\n", info->name); in lib80211_crypt_deinit_handler()
130 info->crypt_deinit_timer.expires = jiffies + HZ; in lib80211_crypt_deinit_handler()
131 add_timer(&info->crypt_deinit_timer); in lib80211_crypt_deinit_handler()
133 spin_unlock_irqrestore(info->lock, flags); in lib80211_crypt_deinit_handler()
136 void lib80211_crypt_delayed_deinit(struct lib80211_crypt_info *info, in lib80211_crypt_delayed_deinit() argument
152 spin_lock_irqsave(info->lock, flags); in lib80211_crypt_delayed_deinit()
153 if (!info->crypt_quiesced) { in lib80211_crypt_delayed_deinit()
154 list_add(&tmp->list, &info->crypt_deinit_list); in lib80211_crypt_delayed_deinit()
155 if (!timer_pending(&info->crypt_deinit_timer)) { in lib80211_crypt_delayed_deinit()
156 info->crypt_deinit_timer.expires = jiffies + HZ; in lib80211_crypt_delayed_deinit()
157 add_timer(&info->crypt_deinit_timer); in lib80211_crypt_delayed_deinit()
160 spin_unlock_irqrestore(info->lock, flags); in lib80211_crypt_delayed_deinit()