Lines Matching refs:rd

339 static void update_world_regdomain(const struct ieee80211_regdomain *rd)  in update_world_regdomain()  argument
347 reset_regdomains(false, rd); in update_world_regdomain()
349 cfg80211_world_regdom = rd; in update_world_regdomain()
598 reg_get_max_bandwidth_from_range(const struct ieee80211_regdomain *rd, in reg_get_max_bandwidth_from_range() argument
606 for (idx = 0; idx < rd->n_reg_rules; idx++) in reg_get_max_bandwidth_from_range()
607 if (rule == &rd->reg_rules[idx]) in reg_get_max_bandwidth_from_range()
610 if (idx == rd->n_reg_rules) in reg_get_max_bandwidth_from_range()
617 tmp = &rd->reg_rules[--no]; in reg_get_max_bandwidth_from_range()
632 while (no < rd->n_reg_rules - 1) { in reg_get_max_bandwidth_from_range()
633 tmp = &rd->reg_rules[++no]; in reg_get_max_bandwidth_from_range()
647 unsigned int reg_get_max_bandwidth(const struct ieee80211_regdomain *rd, in reg_get_max_bandwidth() argument
650 unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule); in reg_get_max_bandwidth()
689 static bool is_valid_rd(const struct ieee80211_regdomain *rd) in is_valid_rd() argument
694 if (!rd->n_reg_rules) in is_valid_rd()
697 if (WARN_ON(rd->n_reg_rules > NL80211_MAX_SUPP_REG_RULES)) in is_valid_rd()
700 for (i = 0; i < rd->n_reg_rules; i++) { in is_valid_rd()
701 reg_rule = &rd->reg_rules[i]; in is_valid_rd()
918 struct ieee80211_regdomain *rd; in regdom_intersect() local
947 rd = kzalloc(size_of_regd, GFP_KERNEL); in regdom_intersect()
948 if (!rd) in regdom_intersect()
964 add_rule(&intersected_rule, rd->reg_rules, in regdom_intersect()
965 &rd->n_reg_rules); in regdom_intersect()
969 rd->alpha2[0] = '9'; in regdom_intersect()
970 rd->alpha2[1] = '8'; in regdom_intersect()
971 rd->dfs_region = reg_intersect_dfs_region(rd1->dfs_region, in regdom_intersect()
974 return rd; in regdom_intersect()
2669 static void print_rd_rules(const struct ieee80211_regdomain *rd) in print_rd_rules() argument
2679 for (i = 0; i < rd->n_reg_rules; i++) { in print_rd_rules()
2680 reg_rule = &rd->reg_rules[i]; in print_rd_rules()
2687 reg_get_max_bandwidth(rd, reg_rule)); in print_rd_rules()
2736 static void print_regdomain(const struct ieee80211_regdomain *rd) in print_regdomain() argument
2740 if (is_intersected_alpha2(rd->alpha2)) { in print_regdomain()
2752 } else if (is_world_regdom(rd->alpha2)) { in print_regdomain()
2755 if (is_unknown_alpha2(rd->alpha2)) in print_regdomain()
2760 rd->alpha2[0], rd->alpha2[1]); in print_regdomain()
2763 rd->alpha2[0], rd->alpha2[1]); in print_regdomain()
2767 pr_info(" DFS Master region: %s", reg_dfs_region_str(rd->dfs_region)); in print_regdomain()
2768 print_rd_rules(rd); in print_regdomain()
2771 static void print_regdomain_info(const struct ieee80211_regdomain *rd) in print_regdomain_info() argument
2773 pr_info("Regulatory domain: %c%c\n", rd->alpha2[0], rd->alpha2[1]); in print_regdomain_info()
2774 print_rd_rules(rd); in print_regdomain_info()
2777 static int reg_set_rd_core(const struct ieee80211_regdomain *rd) in reg_set_rd_core() argument
2779 if (!is_world_regdom(rd->alpha2)) in reg_set_rd_core()
2781 update_world_regdomain(rd); in reg_set_rd_core()
2785 static int reg_set_rd_user(const struct ieee80211_regdomain *rd, in reg_set_rd_user() argument
2790 if (!regdom_changes(rd->alpha2)) in reg_set_rd_user()
2793 if (!is_valid_rd(rd)) { in reg_set_rd_user()
2795 print_regdomain_info(rd); in reg_set_rd_user()
2800 reset_regdomains(false, rd); in reg_set_rd_user()
2804 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom()); in reg_set_rd_user()
2808 kfree(rd); in reg_set_rd_user()
2809 rd = NULL; in reg_set_rd_user()
2815 static int reg_set_rd_driver(const struct ieee80211_regdomain *rd, in reg_set_rd_driver() argument
2823 if (is_world_regdom(rd->alpha2)) in reg_set_rd_driver()
2826 if (!regdom_changes(rd->alpha2)) in reg_set_rd_driver()
2829 if (!is_valid_rd(rd)) { in reg_set_rd_driver()
2831 print_regdomain_info(rd); in reg_set_rd_driver()
2846 regd = reg_copy_regd(rd); in reg_set_rd_driver()
2851 reset_regdomains(false, rd); in reg_set_rd_driver()
2855 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom()); in reg_set_rd_driver()
2865 rcu_assign_pointer(request_wiphy->regd, rd); in reg_set_rd_driver()
2868 rd = NULL; in reg_set_rd_driver()
2875 static int reg_set_rd_country_ie(const struct ieee80211_regdomain *rd, in reg_set_rd_country_ie() argument
2880 if (!is_alpha2_set(rd->alpha2) && !is_an_alpha2(rd->alpha2) && in reg_set_rd_country_ie()
2881 !is_unknown_alpha2(rd->alpha2)) in reg_set_rd_country_ie()
2890 if (!is_valid_rd(rd)) { in reg_set_rd_country_ie()
2892 print_regdomain_info(rd); in reg_set_rd_country_ie()
2906 reset_regdomains(false, rd); in reg_set_rd_country_ie()
2915 int set_regdom(const struct ieee80211_regdomain *rd, in set_regdom() argument
2922 if (!reg_is_valid_request(rd->alpha2)) { in set_regdom()
2923 kfree(rd); in set_regdom()
2935 r = reg_set_rd_core(rd); in set_regdom()
2938 r = reg_set_rd_user(rd, lr); in set_regdom()
2942 r = reg_set_rd_driver(rd, lr); in set_regdom()
2945 r = reg_set_rd_country_ie(rd, lr); in set_regdom()
2962 kfree(rd); in set_regdom()
2967 if (WARN_ON(!lr->intersect && rd != get_cfg80211_regdom())) in set_regdom()
2983 struct ieee80211_regdomain *rd) in __regulatory_set_wiphy_regd() argument
2989 if (WARN_ON(!wiphy || !rd)) in __regulatory_set_wiphy_regd()
2996 if (WARN(!is_valid_rd(rd), "Invalid regulatory domain detected\n")) { in __regulatory_set_wiphy_regd()
2997 print_regdomain_info(rd); in __regulatory_set_wiphy_regd()
3001 regd = reg_copy_regd(rd); in __regulatory_set_wiphy_regd()
3017 struct ieee80211_regdomain *rd) in regulatory_set_wiphy_regd() argument
3019 int ret = __regulatory_set_wiphy_regd(wiphy, rd); in regulatory_set_wiphy_regd()
3030 struct ieee80211_regdomain *rd) in regulatory_set_wiphy_regd_sync_rtnl() argument
3036 ret = __regulatory_set_wiphy_regd(wiphy, rd); in regulatory_set_wiphy_regd_sync_rtnl()