aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/ibss.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/ibss.c')
-rw-r--r--net/wireless/ibss.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/net/wireless/ibss.c b/net/wireless/ibss.c
index 6ef5a491fb4b..27a8ce9343c3 100644
--- a/net/wireless/ibss.c
+++ b/net/wireless/ibss.c
@@ -6,6 +6,7 @@
6 6
7#include <linux/etherdevice.h> 7#include <linux/etherdevice.h>
8#include <linux/if_arp.h> 8#include <linux/if_arp.h>
9#include <linux/slab.h>
9#include <net/cfg80211.h> 10#include <net/cfg80211.h>
10#include "wext-compat.h" 11#include "wext-compat.h"
11#include "nl80211.h" 12#include "nl80211.h"
@@ -80,15 +81,10 @@ int __cfg80211_join_ibss(struct cfg80211_registered_device *rdev,
80 struct cfg80211_cached_keys *connkeys) 81 struct cfg80211_cached_keys *connkeys)
81{ 82{
82 struct wireless_dev *wdev = dev->ieee80211_ptr; 83 struct wireless_dev *wdev = dev->ieee80211_ptr;
83 struct ieee80211_channel *chan;
84 int err; 84 int err;
85 85
86 ASSERT_WDEV_LOCK(wdev); 86 ASSERT_WDEV_LOCK(wdev);
87 87
88 chan = rdev_fixed_channel(rdev, wdev);
89 if (chan && chan != params->channel)
90 return -EBUSY;
91
92 if (wdev->ssid_len) 88 if (wdev->ssid_len)
93 return -EALREADY; 89 return -EALREADY;
94 90
@@ -251,8 +247,10 @@ int cfg80211_ibss_wext_join(struct cfg80211_registered_device *rdev,
251 if (!netif_running(wdev->netdev)) 247 if (!netif_running(wdev->netdev))
252 return 0; 248 return 0;
253 249
254 if (wdev->wext.keys) 250 if (wdev->wext.keys) {
255 wdev->wext.keys->def = wdev->wext.default_key; 251 wdev->wext.keys->def = wdev->wext.default_key;
252 wdev->wext.keys->defmgmt = wdev->wext.default_mgmt_key;
253 }
256 254
257 wdev->wext.ibss.privacy = wdev->wext.default_key != -1; 255 wdev->wext.ibss.privacy = wdev->wext.default_key != -1;
258 256