OSDN Git Service

ath9k: fix DFS detector synchronization
authorTimothy Redaelli <tredaelli@redhat.com>
Tue, 27 Mar 2018 08:25:25 +0000 (11:25 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 29 Mar 2018 08:48:08 +0000 (11:48 +0300)
some userspace programs (e.g. hostapd) need to set the regulatory domain
before selecting the operating channel. Synchronize DFS detector regardless of
the value of ah->curchan, to avoid situations where wireless scan can't be done
on some 5GHz sub-bands, because dfs_region is constantly UNSET.

Acked-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath9k/init.c

index e479fae..b71b167 100644 (file)
@@ -257,6 +257,11 @@ static void ath9k_reg_notifier(struct wiphy *wiphy,
 
        ath_reg_notifier_apply(wiphy, request, reg);
 
+       /* synchronize DFS detector if regulatory domain changed */
+       if (sc->dfs_detector != NULL)
+               sc->dfs_detector->set_dfs_domain(sc->dfs_detector,
+                                                request->dfs_region);
+
        /* Set tx power */
        if (!ah->curchan)
                return;
@@ -267,10 +272,6 @@ static void ath9k_reg_notifier(struct wiphy *wiphy,
        ath9k_cmn_update_txpow(ah, sc->cur_chan->cur_txpower,
                               sc->cur_chan->txpower,
                               &sc->cur_chan->cur_txpower);
-       /* synchronize DFS detector if regulatory domain changed */
-       if (sc->dfs_detector != NULL)
-               sc->dfs_detector->set_dfs_domain(sc->dfs_detector,
-                                                request->dfs_region);
        ath9k_ps_restore(sc);
 }