diff options
Diffstat (limited to 'net/mac80211/ieee80211_iface.c')
-rw-r--r-- | net/mac80211/ieee80211_iface.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/net/mac80211/ieee80211_iface.c b/net/mac80211/ieee80211_iface.c index 8bb85f194385..f9c74bb09d31 100644 --- a/net/mac80211/ieee80211_iface.c +++ b/net/mac80211/ieee80211_iface.c | |||
@@ -25,6 +25,8 @@ void ieee80211_if_sdata_init(struct ieee80211_sub_if_data *sdata) | |||
25 | sdata->eapol = 1; | 25 | sdata->eapol = 1; |
26 | for (i = 0; i < IEEE80211_FRAGMENT_MAX; i++) | 26 | for (i = 0; i < IEEE80211_FRAGMENT_MAX; i++) |
27 | skb_queue_head_init(&sdata->fragments[i].skb_list); | 27 | skb_queue_head_init(&sdata->fragments[i].skb_list); |
28 | |||
29 | INIT_LIST_HEAD(&sdata->key_list); | ||
28 | } | 30 | } |
29 | 31 | ||
30 | static void ieee80211_if_sdata_deinit(struct ieee80211_sub_if_data *sdata) | 32 | static void ieee80211_if_sdata_deinit(struct ieee80211_sub_if_data *sdata) |
@@ -210,25 +212,12 @@ void ieee80211_if_reinit(struct net_device *dev) | |||
210 | struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); | 212 | struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); |
211 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 213 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
212 | struct sta_info *sta; | 214 | struct sta_info *sta; |
213 | int i; | ||
214 | 215 | ||
215 | ASSERT_RTNL(); | 216 | ASSERT_RTNL(); |
217 | |||
218 | ieee80211_free_keys(sdata); | ||
219 | |||
216 | ieee80211_if_sdata_deinit(sdata); | 220 | ieee80211_if_sdata_deinit(sdata); |
217 | for (i = 0; i < NUM_DEFAULT_KEYS; i++) { | ||
218 | if (!sdata->keys[i]) | ||
219 | continue; | ||
220 | #if 0 | ||
221 | /* The interface is down at the moment, so there is not | ||
222 | * really much point in disabling the keys at this point. */ | ||
223 | memset(addr, 0xff, ETH_ALEN); | ||
224 | if (local->ops->set_key) | ||
225 | local->ops->set_key(local_to_hw(local), DISABLE_KEY, addr, | ||
226 | local->keys[i], | ||
227 | local->default_wep_only); | ||
228 | #endif | ||
229 | ieee80211_key_free(sdata->keys[i]); | ||
230 | sdata->keys[i] = NULL; | ||
231 | } | ||
232 | 221 | ||
233 | switch (sdata->type) { | 222 | switch (sdata->type) { |
234 | case IEEE80211_IF_TYPE_AP: { | 223 | case IEEE80211_IF_TYPE_AP: { |