aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/ibss.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-07-07 03:56:05 +0200
committerJohn W. Linville <linville@tuxdriver.com>2009-07-10 15:02:31 -0400
commit78485475618cf9f1c70dc7f15e8deafa8b6074ab (patch)
treec31ebe1540016bbe1fdc41ac5b671cdc2bf143ed /net/wireless/ibss.c
parentmac80211: refactor the WEP code to be directly usable (diff)
downloadlinux-dev-78485475618cf9f1c70dc7f15e8deafa8b6074ab.tar.xz
linux-dev-78485475618cf9f1c70dc7f15e8deafa8b6074ab.zip
cfg80211: fix netdev down problem
We shouldn't be looking at the ssid_len for non-IBSS, and for IBSS we should also return an error on trying to leave an IBSS while not in or joining an IBSS. This fixes an issue where we wouldn't disconnect() on an interface being taken down since there's no SSID configured this way. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/ibss.c')
-rw-r--r--net/wireless/ibss.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/wireless/ibss.c b/net/wireless/ibss.c
index c92b542d54b0..a5330c5a5477 100644
--- a/net/wireless/ibss.c
+++ b/net/wireless/ibss.c
@@ -92,8 +92,12 @@ void cfg80211_clear_ibss(struct net_device *dev, bool nowext)
int cfg80211_leave_ibss(struct cfg80211_registered_device *rdev,
struct net_device *dev, bool nowext)
{
+ struct wireless_dev *wdev = dev->ieee80211_ptr;
int err;
+ if (!wdev->ssid_len)
+ return -ENOLINK;
+
err = rdev->ops->leave_ibss(&rdev->wiphy, dev);
if (err)