diff options
Diffstat (limited to 'net/wireless/sme.c')
-rw-r--r-- | net/wireless/sme.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 8020b5b094d4..544558171787 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c | |||
@@ -264,7 +264,7 @@ static struct cfg80211_bss *cfg80211_get_conn_bss(struct wireless_dev *wdev) | |||
264 | wdev->conn->params.bssid, | 264 | wdev->conn->params.bssid, |
265 | wdev->conn->params.ssid, | 265 | wdev->conn->params.ssid, |
266 | wdev->conn->params.ssid_len, | 266 | wdev->conn->params.ssid_len, |
267 | IEEE80211_BSS_TYPE_ESS, | 267 | wdev->conn_bss_type, |
268 | IEEE80211_PRIVACY(wdev->conn->params.privacy)); | 268 | IEEE80211_PRIVACY(wdev->conn->params.privacy)); |
269 | if (!bss) | 269 | if (!bss) |
270 | return NULL; | 270 | return NULL; |
@@ -687,7 +687,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid, | |||
687 | WARN_ON_ONCE(!wiphy_to_rdev(wdev->wiphy)->ops->connect); | 687 | WARN_ON_ONCE(!wiphy_to_rdev(wdev->wiphy)->ops->connect); |
688 | bss = cfg80211_get_bss(wdev->wiphy, NULL, bssid, | 688 | bss = cfg80211_get_bss(wdev->wiphy, NULL, bssid, |
689 | wdev->ssid, wdev->ssid_len, | 689 | wdev->ssid, wdev->ssid_len, |
690 | IEEE80211_BSS_TYPE_ESS, | 690 | wdev->conn_bss_type, |
691 | IEEE80211_PRIVACY_ANY); | 691 | IEEE80211_PRIVACY_ANY); |
692 | if (bss) | 692 | if (bss) |
693 | cfg80211_hold_bss(bss_from_pub(bss)); | 693 | cfg80211_hold_bss(bss_from_pub(bss)); |
@@ -846,7 +846,7 @@ void cfg80211_roamed(struct net_device *dev, | |||
846 | 846 | ||
847 | bss = cfg80211_get_bss(wdev->wiphy, channel, bssid, wdev->ssid, | 847 | bss = cfg80211_get_bss(wdev->wiphy, channel, bssid, wdev->ssid, |
848 | wdev->ssid_len, | 848 | wdev->ssid_len, |
849 | IEEE80211_BSS_TYPE_ESS, IEEE80211_PRIVACY_ANY); | 849 | wdev->conn_bss_type, IEEE80211_PRIVACY_ANY); |
850 | if (WARN_ON(!bss)) | 850 | if (WARN_ON(!bss)) |
851 | return; | 851 | return; |
852 | 852 | ||
@@ -917,6 +917,12 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie, | |||
917 | 917 | ||
918 | nl80211_send_disconnected(rdev, dev, reason, ie, ie_len, from_ap); | 918 | nl80211_send_disconnected(rdev, dev, reason, ie, ie_len, from_ap); |
919 | 919 | ||
920 | /* stop critical protocol if supported */ | ||
921 | if (rdev->ops->crit_proto_stop && rdev->crit_proto_nlportid) { | ||
922 | rdev->crit_proto_nlportid = 0; | ||
923 | rdev_crit_proto_stop(rdev, wdev); | ||
924 | } | ||
925 | |||
920 | /* | 926 | /* |
921 | * Delete all the keys ... pairwise keys can't really | 927 | * Delete all the keys ... pairwise keys can't really |
922 | * exist any more anyway, but default keys might. | 928 | * exist any more anyway, but default keys might. |
@@ -1017,6 +1023,9 @@ int cfg80211_connect(struct cfg80211_registered_device *rdev, | |||
1017 | memcpy(wdev->ssid, connect->ssid, connect->ssid_len); | 1023 | memcpy(wdev->ssid, connect->ssid, connect->ssid_len); |
1018 | wdev->ssid_len = connect->ssid_len; | 1024 | wdev->ssid_len = connect->ssid_len; |
1019 | 1025 | ||
1026 | wdev->conn_bss_type = connect->pbss ? IEEE80211_BSS_TYPE_PBSS : | ||
1027 | IEEE80211_BSS_TYPE_ESS; | ||
1028 | |||
1020 | if (!rdev->ops->connect) | 1029 | if (!rdev->ops->connect) |
1021 | err = cfg80211_sme_connect(wdev, connect, prev_bssid); | 1030 | err = cfg80211_sme_connect(wdev, connect, prev_bssid); |
1022 | else | 1031 | else |