qtnfmac: handle channel switch events for connected stations only
authorSergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Tue, 9 Apr 2019 07:35:08 +0000 (07:35 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 26 Apr 2019 11:53:12 +0000 (14:53 +0300)
Channel switch events from firmware should be processed only when STA
is already connected to BSS. On connect this notification is not needed
since full BSS info will be supplied by cfg80211_connect_result.

Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/quantenna/qtnfmac/event.c

index 6c1b886339acf7f7fc85edf366dbcf9bf41c243e..b57c8c18a8d01b0d2939dfa427002aea1335a17e 100644 (file)
@@ -493,14 +493,20 @@ qtnf_event_handle_freq_change(struct qtnf_wmac *mac,
 
        for (i = 0; i < QTNF_MAX_INTF; i++) {
                vif = &mac->iflist[i];
+
                if (vif->wdev.iftype == NL80211_IFTYPE_UNSPECIFIED)
                        continue;
 
-               if (vif->netdev) {
-                       mutex_lock(&vif->wdev.mtx);
-                       cfg80211_ch_switch_notify(vif->netdev, &chandef);
-                       mutex_unlock(&vif->wdev.mtx);
-               }
+               if (vif->wdev.iftype == NL80211_IFTYPE_STATION &&
+                   !vif->wdev.current_bss)
+                       continue;
+
+               if (!vif->netdev)
+                       continue;
+
+               mutex_lock(&vif->wdev.mtx);
+               cfg80211_ch_switch_notify(vif->netdev, &chandef);
+               mutex_unlock(&vif->wdev.mtx);
        }
 
        return 0;