diff options
Diffstat (limited to 'net/wireless/sme.c')
-rw-r--r-- | net/wireless/sme.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/wireless/sme.c b/net/wireless/sme.c index d536b07582f8..f741d8376a46 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c | |||
@@ -642,11 +642,15 @@ static bool cfg80211_is_all_idle(void) | |||
642 | * All devices must be idle as otherwise if you are actively | 642 | * All devices must be idle as otherwise if you are actively |
643 | * scanning some new beacon hints could be learned and would | 643 | * scanning some new beacon hints could be learned and would |
644 | * count as new regulatory hints. | 644 | * count as new regulatory hints. |
645 | * Also if there is any other active beaconing interface we | ||
646 | * need not issue a disconnect hint and reset any info such | ||
647 | * as chan dfs state, etc. | ||
645 | */ | 648 | */ |
646 | list_for_each_entry(rdev, &cfg80211_rdev_list, list) { | 649 | list_for_each_entry(rdev, &cfg80211_rdev_list, list) { |
647 | list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { | 650 | list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { |
648 | wdev_lock(wdev); | 651 | wdev_lock(wdev); |
649 | if (wdev->conn || wdev->current_bss) | 652 | if (wdev->conn || wdev->current_bss || |
653 | cfg80211_beaconing_iface_active(wdev)) | ||
650 | is_all_idle = false; | 654 | is_all_idle = false; |
651 | wdev_unlock(wdev); | 655 | wdev_unlock(wdev); |
652 | } | 656 | } |
@@ -1171,6 +1175,8 @@ int cfg80211_connect(struct cfg80211_registered_device *rdev, | |||
1171 | 1175 | ||
1172 | cfg80211_oper_and_ht_capa(&connect->ht_capa_mask, | 1176 | cfg80211_oper_and_ht_capa(&connect->ht_capa_mask, |
1173 | rdev->wiphy.ht_capa_mod_mask); | 1177 | rdev->wiphy.ht_capa_mod_mask); |
1178 | cfg80211_oper_and_vht_capa(&connect->vht_capa_mask, | ||
1179 | rdev->wiphy.vht_capa_mod_mask); | ||
1174 | 1180 | ||
1175 | if (connkeys && connkeys->def >= 0) { | 1181 | if (connkeys && connkeys->def >= 0) { |
1176 | int idx; | 1182 | int idx; |