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 <n...@nbd.name>
Signed-off-by: Timothy Redaelli <tredae...@redhat.com>
---
 drivers/net/wireless/ath/ath9k/init.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/init.c 
b/drivers/net/wireless/ath/ath9k/init.c
index e479fae5aab9..b71b16715f6a 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -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);
 }
 
-- 
2.14.3

Reply via email to