diff options
Diffstat (limited to 'net/wireless/sme.c')
-rw-r--r-- | net/wireless/sme.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/net/wireless/sme.c b/net/wireless/sme.c index d3c5bd7c6b51..f04d4c32e96e 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c | |||
@@ -67,21 +67,14 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev) | |||
67 | ASSERT_RDEV_LOCK(rdev); | 67 | ASSERT_RDEV_LOCK(rdev); |
68 | ASSERT_WDEV_LOCK(wdev); | 68 | ASSERT_WDEV_LOCK(wdev); |
69 | 69 | ||
70 | if (rdev->scan_req) | 70 | if (rdev->scan_req || rdev->scan_msg) |
71 | return -EBUSY; | 71 | return -EBUSY; |
72 | 72 | ||
73 | if (wdev->conn->params.channel) { | 73 | if (wdev->conn->params.channel) |
74 | n_channels = 1; | 74 | n_channels = 1; |
75 | } else { | 75 | else |
76 | enum ieee80211_band band; | 76 | n_channels = ieee80211_get_num_supported_channels(wdev->wiphy); |
77 | n_channels = 0; | ||
78 | 77 | ||
79 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { | ||
80 | if (!wdev->wiphy->bands[band]) | ||
81 | continue; | ||
82 | n_channels += wdev->wiphy->bands[band]->n_channels; | ||
83 | } | ||
84 | } | ||
85 | request = kzalloc(sizeof(*request) + sizeof(request->ssids[0]) + | 78 | request = kzalloc(sizeof(*request) + sizeof(request->ssids[0]) + |
86 | sizeof(request->channels[0]) * n_channels, | 79 | sizeof(request->channels[0]) * n_channels, |
87 | GFP_KERNEL); | 80 | GFP_KERNEL); |
@@ -872,6 +865,8 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie, | |||
872 | for (i = 0; i < 6; i++) | 865 | for (i = 0; i < 6; i++) |
873 | rdev_del_key(rdev, dev, i, false, NULL); | 866 | rdev_del_key(rdev, dev, i, false, NULL); |
874 | 867 | ||
868 | rdev_set_qos_map(rdev, dev, NULL); | ||
869 | |||
875 | #ifdef CONFIG_CFG80211_WEXT | 870 | #ifdef CONFIG_CFG80211_WEXT |
876 | memset(&wrqu, 0, sizeof(wrqu)); | 871 | memset(&wrqu, 0, sizeof(wrqu)); |
877 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; | 872 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; |