aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/core.c')
-rw-r--r--net/wireless/core.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c
index a0a679704612..e2f80dd0e4a6 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -553,6 +553,7 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
553#ifdef CONFIG_WIRELESS_EXT 553#ifdef CONFIG_WIRELESS_EXT
554 wdev->wext.default_key = -1; 554 wdev->wext.default_key = -1;
555 wdev->wext.default_mgmt_key = -1; 555 wdev->wext.default_mgmt_key = -1;
556 wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC;
556#endif 557#endif
557 mutex_unlock(&rdev->devlist_mtx); 558 mutex_unlock(&rdev->devlist_mtx);
558 break; 559 break;
@@ -565,8 +566,13 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
565 cfg80211_leave_ibss(rdev, dev, true); 566 cfg80211_leave_ibss(rdev, dev, true);
566 break; 567 break;
567 case NL80211_IFTYPE_STATION: 568 case NL80211_IFTYPE_STATION:
569#ifdef CONFIG_WIRELESS_EXT
570 kfree(wdev->wext.ie);
571 wdev->wext.ie = NULL;
572 wdev->wext.ie_len = 0;
573#endif
568 cfg80211_disconnect(rdev, dev, 574 cfg80211_disconnect(rdev, dev,
569 WLAN_REASON_DEAUTH_LEAVING); 575 WLAN_REASON_DEAUTH_LEAVING, true);
570 break; 576 break;
571 default: 577 default:
572 break; 578 break;
@@ -578,11 +584,20 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
578 break; 584 break;
579 case NETDEV_UP: 585 case NETDEV_UP:
580#ifdef CONFIG_WIRELESS_EXT 586#ifdef CONFIG_WIRELESS_EXT
581 if (wdev->iftype != NL80211_IFTYPE_ADHOC) 587 switch (wdev->iftype) {
588 case NL80211_IFTYPE_ADHOC:
589 if (wdev->wext.ibss.ssid_len)
590 cfg80211_join_ibss(rdev, dev,
591 &wdev->wext.ibss);
582 break; 592 break;
583 if (!wdev->wext.ibss.ssid_len) 593 case NL80211_IFTYPE_STATION:
594 if (wdev->wext.connect.ssid_len)
595 cfg80211_connect(rdev, dev,
596 &wdev->wext.connect);
597 break;
598 default:
584 break; 599 break;
585 cfg80211_join_ibss(rdev, dev, &wdev->wext.ibss); 600 }
586#endif 601#endif
587 break; 602 break;
588 case NETDEV_UNREGISTER: 603 case NETDEV_UNREGISTER: