]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - net/wireless/reg.c
cfg80211: Make pre-CAC results valid only for ETSI domain
[mirror_ubuntu-bionic-kernel.git] / net / wireless / reg.c
index 753efcd51fa3495c66e7063d3ce6c1aca7fd9d14..e59b192459e8c7f02947ea7cb276f21ea31be014 100644 (file)
@@ -3120,6 +3120,34 @@ bool regulatory_indoor_allowed(void)
        return reg_is_indoor;
 }
 
+bool regulatory_pre_cac_allowed(struct wiphy *wiphy)
+{
+       const struct ieee80211_regdomain *regd = NULL;
+       const struct ieee80211_regdomain *wiphy_regd = NULL;
+       bool pre_cac_allowed = false;
+
+       rcu_read_lock();
+
+       regd = rcu_dereference(cfg80211_regdomain);
+       wiphy_regd = rcu_dereference(wiphy->regd);
+       if (!wiphy_regd) {
+               if (regd->dfs_region == NL80211_DFS_ETSI)
+                       pre_cac_allowed = true;
+
+               rcu_read_unlock();
+
+               return pre_cac_allowed;
+       }
+
+       if (regd->dfs_region == wiphy_regd->dfs_region &&
+           wiphy_regd->dfs_region == NL80211_DFS_ETSI)
+               pre_cac_allowed = true;
+
+       rcu_read_unlock();
+
+       return pre_cac_allowed;
+}
+
 int __init regulatory_init(void)
 {
        int err = 0;