aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/sme.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/sme.c')
-rw-r--r--net/wireless/sme.c15
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