summaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2008-12-10 13:51:47 +0100
committerJohn W. Linville <linville@tuxdriver.com>2008-12-12 20:02:12 +0100
commitb7a530d82cb36bb43901c196039b0fccee3ffcc3 (patch)
tree402f4b19586b969cf236eea951e4b4510403e0bc /net/mac80211
parentipw2200: fix scanning while associated (diff)
downloadlinux-b7a530d82cb36bb43901c196039b0fccee3ffcc3.tar.xz
linux-b7a530d82cb36bb43901c196039b0fccee3ffcc3.zip
mac80211: Disable requests for new scans in AP mode
AP mode operations are seriously affected if mac80211 runs through a multi-second scan while the AP is trying to send Beacon frames on the operation channel. While this could be implemented in a way that does not cause too many problems, it is not very simple and will require synchronization with Beacon frame scheduling in the drivers (scan one channel at a time between Beacon frames). Furthermore, such scanning takes quite a bit longer time and existing userspace applications would be likely to timeout while waiting for the results. For now, just refuse requests for new scans (SIOCSIWSCAN) when in AP mode. In practice, this moves the rejection from iwl* drivers into mac80211 to make it apply to every mac80211-based driver. This issue shows up in associated stations getting disconnected when something (e.g., Network Manager) requests a scan while the interface is in AP mode. When doing this continuously (e.g., NM does it every 120 seconds), the network gets close to useless. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/wext.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
index fbeb927c116b..15428048d01a 100644
--- a/net/mac80211/wext.c
+++ b/net/mac80211/wext.c
@@ -418,8 +418,7 @@ static int ieee80211_ioctl_siwscan(struct net_device *dev,
if (sdata->vif.type != NL80211_IFTYPE_STATION &&
sdata->vif.type != NL80211_IFTYPE_ADHOC &&
- sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
- sdata->vif.type != NL80211_IFTYPE_AP)
+ sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
return -EOPNOTSUPP;
/* if SSID was specified explicitly then use that */