aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2009-08-28 05:59:26 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-28 14:40:57 -0400
commit9f77ccab57534f45b0289ceae3a6b85478d14182 (patch)
tree1e155ec129d770d60db85d59e58eaf4ea178838b /drivers/net/wireless
parent161391725eba1f07e98594369cfcb10c848ef352 (diff)
rndis_wlan: enable infrastructure before setting random essid
Random essid must be set to turn on radio when not connected. If device is in ad-hoc mode, this results 'media connect' indications with the random essid which should be ignored. Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/rndis_wlan.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index d11762011dc2..c5a674d8d1fb 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -921,6 +921,7 @@ static int freq_to_dsconfig(struct iw_freq *freq, unsigned int *dsconfig)
921/* 921/*
922 * common functions 922 * common functions
923 */ 923 */
924static int set_infra_mode(struct usbnet *usbdev, int mode);
924static void restore_keys(struct usbnet *usbdev); 925static void restore_keys(struct usbnet *usbdev);
925static int rndis_check_bssid_list(struct usbnet *usbdev); 926static int rndis_check_bssid_list(struct usbnet *usbdev);
926 927
@@ -1014,6 +1015,11 @@ static int disassociate(struct usbnet *usbdev, int reset_ssid)
1014 /* disassociate causes radio to be turned off; if reset_ssid 1015 /* disassociate causes radio to be turned off; if reset_ssid
1015 * is given, set random ssid to enable radio */ 1016 * is given, set random ssid to enable radio */
1016 if (reset_ssid) { 1017 if (reset_ssid) {
1018 /* Set device to infrastructure mode so we don't get ad-hoc
1019 * 'media connect' indications with the random ssid.
1020 */
1021 set_infra_mode(usbdev, NDIS_80211_INFRA_INFRA);
1022
1017 ssid.length = cpu_to_le32(sizeof(ssid.essid)); 1023 ssid.length = cpu_to_le32(sizeof(ssid.essid));
1018 get_random_bytes(&ssid.essid[2], sizeof(ssid.essid)-2); 1024 get_random_bytes(&ssid.essid[2], sizeof(ssid.essid)-2);
1019 ssid.essid[0] = 0x1; 1025 ssid.essid[0] = 0x1;