diff options
author | Jan Niehusmann <jan@gondor.com> | 2008-03-23 20:23:56 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-04-01 15:44:07 -0400 |
commit | 64f851e410ae37a0990212ae34f0c96b641478f7 (patch) | |
tree | 6ff8af643731d195b1d9439f77b4168f53fe0c62 /net | |
parent | f83f1768f833cb45bc93429fdc552252a4f55ac3 (diff) | |
download | op-kernel-dev-64f851e410ae37a0990212ae34f0c96b641478f7.zip op-kernel-dev-64f851e410ae37a0990212ae34f0c96b641478f7.tar.gz |
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/ieee80211.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c index 28bcdf9..8e58639 100644 --- a/net/mac80211/ieee80211.c +++ b/net/mac80211/ieee80211.c @@ -286,6 +286,18 @@ static int ieee80211_open(struct net_device *dev) if (need_hw_reconfig) 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); return 0; |