mac80211: trigger ieee80211_sta_work after opening interface
ieee80211_sta_work is disabled while network interface is down. Therefore, if you configure wireless parameters before bringing the interface up, these configurations are not yet effective and association fails. A workaround from userspace is calling a command like 'iwconfig wlan0 ap any' after the interface is brought up. To fix this behaviour, trigger execution of ieee80211_sta_work from ieee80211_open when in STA or IBSS mode. Signed-off-by: Jan Niehusmann <jan@gondor.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
f83f1768f8
commit
64f851e410
1 changed files with 12 additions and 0 deletions
|
@ -286,6 +286,18 @@ static int ieee80211_open(struct net_device *dev)
|
||||||
if (need_hw_reconfig)
|
if (need_hw_reconfig)
|
||||||
ieee80211_hw_config(local);
|
ieee80211_hw_config(local);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ieee80211_sta_work is disabled while network interface
|
||||||
|
* is down. Therefore, some configuration changes may not
|
||||||
|
* yet be effective. Trigger execution of ieee80211_sta_work
|
||||||
|
* to fix this.
|
||||||
|
*/
|
||||||
|
if(sdata->vif.type == IEEE80211_IF_TYPE_STA ||
|
||||||
|
sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
|
||||||
|
struct ieee80211_if_sta *ifsta = &sdata->u.sta;
|
||||||
|
queue_work(local->hw.workqueue, &ifsta->work);
|
||||||
|
}
|
||||||
|
|
||||||
netif_start_queue(dev);
|
netif_start_queue(dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue