|
@@ -216,6 +216,7 @@ static int ieee80211_open(struct net_device *dev)
|
|
|
res = local->ops->start(local_to_hw(local));
|
|
|
if (res)
|
|
|
return res;
|
|
|
+ ieee80211_hw_config(local);
|
|
|
}
|
|
|
|
|
|
switch (sdata->type) {
|
|
@@ -232,7 +233,6 @@ static int ieee80211_open(struct net_device *dev)
|
|
|
netif_tx_unlock_bh(local->mdev);
|
|
|
|
|
|
local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
|
|
|
- ieee80211_hw_config(local);
|
|
|
}
|
|
|
break;
|
|
|
case IEEE80211_IF_TYPE_STA:
|
|
@@ -334,8 +334,7 @@ static int ieee80211_stop(struct net_device *dev)
|
|
|
ieee80211_configure_filter(local);
|
|
|
netif_tx_unlock_bh(local->mdev);
|
|
|
|
|
|
- local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
|
|
|
- ieee80211_hw_config(local);
|
|
|
+ local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP;
|
|
|
}
|
|
|
break;
|
|
|
case IEEE80211_IF_TYPE_STA:
|
|
@@ -357,6 +356,11 @@ static int ieee80211_stop(struct net_device *dev)
|
|
|
cancel_delayed_work(&local->scan_work);
|
|
|
}
|
|
|
flush_workqueue(local->hw.workqueue);
|
|
|
+
|
|
|
+ sdata->u.sta.flags &= ~IEEE80211_STA_PRIVACY_INVOKED;
|
|
|
+ kfree(sdata->u.sta.extra_ie);
|
|
|
+ sdata->u.sta.extra_ie = NULL;
|
|
|
+ sdata->u.sta.extra_ie_len = 0;
|
|
|
/* fall through */
|
|
|
default:
|
|
|
conf.if_id = dev->ifindex;
|