diff options
Diffstat (limited to 'net/mac80211/ieee80211.c')
| -rw-r--r-- | net/mac80211/ieee80211.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c index 59350b8727ec..505af1f067ab 100644 --- a/net/mac80211/ieee80211.c +++ b/net/mac80211/ieee80211.c | |||
| @@ -216,6 +216,7 @@ static int ieee80211_open(struct net_device *dev) | |||
| 216 | res = local->ops->start(local_to_hw(local)); | 216 | res = local->ops->start(local_to_hw(local)); |
| 217 | if (res) | 217 | if (res) |
| 218 | return res; | 218 | return res; |
| 219 | ieee80211_hw_config(local); | ||
| 219 | } | 220 | } |
| 220 | 221 | ||
| 221 | switch (sdata->type) { | 222 | switch (sdata->type) { |
| @@ -232,7 +233,6 @@ static int ieee80211_open(struct net_device *dev) | |||
| 232 | netif_tx_unlock_bh(local->mdev); | 233 | netif_tx_unlock_bh(local->mdev); |
| 233 | 234 | ||
| 234 | local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; | 235 | local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; |
| 235 | ieee80211_hw_config(local); | ||
| 236 | } | 236 | } |
| 237 | break; | 237 | break; |
| 238 | case IEEE80211_IF_TYPE_STA: | 238 | case IEEE80211_IF_TYPE_STA: |
| @@ -334,8 +334,7 @@ static int ieee80211_stop(struct net_device *dev) | |||
| 334 | ieee80211_configure_filter(local); | 334 | ieee80211_configure_filter(local); |
| 335 | netif_tx_unlock_bh(local->mdev); | 335 | netif_tx_unlock_bh(local->mdev); |
| 336 | 336 | ||
| 337 | local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; | 337 | local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP; |
| 338 | ieee80211_hw_config(local); | ||
| 339 | } | 338 | } |
| 340 | break; | 339 | break; |
| 341 | case IEEE80211_IF_TYPE_STA: | 340 | case IEEE80211_IF_TYPE_STA: |
| @@ -357,6 +356,11 @@ static int ieee80211_stop(struct net_device *dev) | |||
| 357 | cancel_delayed_work(&local->scan_work); | 356 | cancel_delayed_work(&local->scan_work); |
| 358 | } | 357 | } |
| 359 | flush_workqueue(local->hw.workqueue); | 358 | flush_workqueue(local->hw.workqueue); |
| 359 | |||
| 360 | sdata->u.sta.flags &= ~IEEE80211_STA_PRIVACY_INVOKED; | ||
| 361 | kfree(sdata->u.sta.extra_ie); | ||
| 362 | sdata->u.sta.extra_ie = NULL; | ||
| 363 | sdata->u.sta.extra_ie_len = 0; | ||
| 360 | /* fall through */ | 364 | /* fall through */ |
| 361 | default: | 365 | default: |
| 362 | conf.if_id = dev->ifindex; | 366 | conf.if_id = dev->ifindex; |
