Lines Matching refs:info

43 static void lib80211_crypt_deinit_entries(struct lib80211_crypt_info *info,
45 static void lib80211_crypt_quiescing(struct lib80211_crypt_info *info);
48 int lib80211_crypt_info_init(struct lib80211_crypt_info *info, char *name,
51 memset(info, 0, sizeof(*info));
53 info->name = name;
54 info->lock = lock;
56 INIT_LIST_HEAD(&info->crypt_deinit_list);
57 timer_setup(&info->crypt_deinit_timer, lib80211_crypt_deinit_handler,
64 void lib80211_crypt_info_free(struct lib80211_crypt_info *info)
68 lib80211_crypt_quiescing(info);
69 del_timer_sync(&info->crypt_deinit_timer);
70 lib80211_crypt_deinit_entries(info, 1);
73 struct lib80211_crypt_data *crypt = info->crypt[i];
80 info->crypt[i] = NULL;
86 static void lib80211_crypt_deinit_entries(struct lib80211_crypt_info *info,
92 spin_lock_irqsave(info->lock, flags);
93 list_for_each_entry_safe(entry, next, &info->crypt_deinit_list, list) {
105 spin_unlock_irqrestore(info->lock, flags);
109 static void lib80211_crypt_quiescing(struct lib80211_crypt_info *info)
113 spin_lock_irqsave(info->lock, flags);
114 info->crypt_quiesced = 1;
115 spin_unlock_irqrestore(info->lock, flags);
120 struct lib80211_crypt_info *info = from_timer(info, t,
124 lib80211_crypt_deinit_entries(info, 0);
126 spin_lock_irqsave(info->lock, flags);
127 if (!list_empty(&info->crypt_deinit_list) && !info->crypt_quiesced) {
129 "deletion list\n", info->name);
130 info->crypt_deinit_timer.expires = jiffies + HZ;
131 add_timer(&info->crypt_deinit_timer);
133 spin_unlock_irqrestore(info->lock, flags);
136 void lib80211_crypt_delayed_deinit(struct lib80211_crypt_info *info,
152 spin_lock_irqsave(info->lock, flags);
153 if (!info->crypt_quiesced) {
154 list_add(&tmp->list, &info->crypt_deinit_list);
155 if (!timer_pending(&info->crypt_deinit_timer)) {
156 info->crypt_deinit_timer.expires = jiffies + HZ;
157 add_timer(&info->crypt_deinit_timer);
160 spin_unlock_irqrestore(info->lock, flags);