Lines Matching refs:rd
336 static void update_world_regdomain(const struct ieee80211_regdomain *rd) in update_world_regdomain() argument
344 reset_regdomains(false, rd); in update_world_regdomain()
346 cfg80211_world_regdom = rd; in update_world_regdomain()
647 reg_get_max_bandwidth_from_range(const struct ieee80211_regdomain *rd, in reg_get_max_bandwidth_from_range() argument
655 for (idx = 0; idx < rd->n_reg_rules; idx++) in reg_get_max_bandwidth_from_range()
656 if (rule == &rd->reg_rules[idx]) in reg_get_max_bandwidth_from_range()
659 if (idx == rd->n_reg_rules) in reg_get_max_bandwidth_from_range()
666 tmp = &rd->reg_rules[--no]; in reg_get_max_bandwidth_from_range()
681 while (no < rd->n_reg_rules - 1) { in reg_get_max_bandwidth_from_range()
682 tmp = &rd->reg_rules[++no]; in reg_get_max_bandwidth_from_range()
696 unsigned int reg_get_max_bandwidth(const struct ieee80211_regdomain *rd, in reg_get_max_bandwidth() argument
699 unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule); in reg_get_max_bandwidth()
738 static bool is_valid_rd(const struct ieee80211_regdomain *rd) in is_valid_rd() argument
743 if (!rd->n_reg_rules) in is_valid_rd()
746 if (WARN_ON(rd->n_reg_rules > NL80211_MAX_SUPP_REG_RULES)) in is_valid_rd()
749 for (i = 0; i < rd->n_reg_rules; i++) { in is_valid_rd()
750 reg_rule = &rd->reg_rules[i]; in is_valid_rd()
967 struct ieee80211_regdomain *rd; in regdom_intersect() local
996 rd = kzalloc(size_of_regd, GFP_KERNEL); in regdom_intersect()
997 if (!rd) in regdom_intersect()
1013 add_rule(&intersected_rule, rd->reg_rules, in regdom_intersect()
1014 &rd->n_reg_rules); in regdom_intersect()
1018 rd->alpha2[0] = '9'; in regdom_intersect()
1019 rd->alpha2[1] = '8'; in regdom_intersect()
1020 rd->dfs_region = reg_intersect_dfs_region(rd1->dfs_region, in regdom_intersect()
1023 return rd; in regdom_intersect()
2758 static void print_rd_rules(const struct ieee80211_regdomain *rd) in print_rd_rules() argument
2768 for (i = 0; i < rd->n_reg_rules; i++) { in print_rd_rules()
2769 reg_rule = &rd->reg_rules[i]; in print_rd_rules()
2776 reg_get_max_bandwidth(rd, reg_rule)); in print_rd_rules()
2825 static void print_regdomain(const struct ieee80211_regdomain *rd) in print_regdomain() argument
2829 if (is_intersected_alpha2(rd->alpha2)) { in print_regdomain()
2841 } else if (is_world_regdom(rd->alpha2)) { in print_regdomain()
2844 if (is_unknown_alpha2(rd->alpha2)) in print_regdomain()
2849 rd->alpha2[0], rd->alpha2[1]); in print_regdomain()
2852 rd->alpha2[0], rd->alpha2[1]); in print_regdomain()
2856 pr_info(" DFS Master region: %s", reg_dfs_region_str(rd->dfs_region)); in print_regdomain()
2857 print_rd_rules(rd); in print_regdomain()
2860 static void print_regdomain_info(const struct ieee80211_regdomain *rd) in print_regdomain_info() argument
2862 pr_info("Regulatory domain: %c%c\n", rd->alpha2[0], rd->alpha2[1]); in print_regdomain_info()
2863 print_rd_rules(rd); in print_regdomain_info()
2866 static int reg_set_rd_core(const struct ieee80211_regdomain *rd) in reg_set_rd_core() argument
2868 if (!is_world_regdom(rd->alpha2)) in reg_set_rd_core()
2870 update_world_regdomain(rd); in reg_set_rd_core()
2874 static int reg_set_rd_user(const struct ieee80211_regdomain *rd, in reg_set_rd_user() argument
2879 if (!regdom_changes(rd->alpha2)) in reg_set_rd_user()
2882 if (!is_valid_rd(rd)) { in reg_set_rd_user()
2884 print_regdomain_info(rd); in reg_set_rd_user()
2889 reset_regdomains(false, rd); in reg_set_rd_user()
2893 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom()); in reg_set_rd_user()
2897 kfree(rd); in reg_set_rd_user()
2898 rd = NULL; in reg_set_rd_user()
2904 static int reg_set_rd_driver(const struct ieee80211_regdomain *rd, in reg_set_rd_driver() argument
2912 if (is_world_regdom(rd->alpha2)) in reg_set_rd_driver()
2915 if (!regdom_changes(rd->alpha2)) in reg_set_rd_driver()
2918 if (!is_valid_rd(rd)) { in reg_set_rd_driver()
2920 print_regdomain_info(rd); in reg_set_rd_driver()
2932 regd = reg_copy_regd(rd); in reg_set_rd_driver()
2937 reset_regdomains(false, rd); in reg_set_rd_driver()
2941 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom()); in reg_set_rd_driver()
2951 rcu_assign_pointer(request_wiphy->regd, rd); in reg_set_rd_driver()
2954 rd = NULL; in reg_set_rd_driver()
2961 static int reg_set_rd_country_ie(const struct ieee80211_regdomain *rd, in reg_set_rd_country_ie() argument
2966 if (!is_alpha2_set(rd->alpha2) && !is_an_alpha2(rd->alpha2) && in reg_set_rd_country_ie()
2967 !is_unknown_alpha2(rd->alpha2)) in reg_set_rd_country_ie()
2976 if (!is_valid_rd(rd)) { in reg_set_rd_country_ie()
2978 print_regdomain_info(rd); in reg_set_rd_country_ie()
2989 reset_regdomains(false, rd); in reg_set_rd_country_ie()
2998 int set_regdom(const struct ieee80211_regdomain *rd, in set_regdom() argument
3005 if (!reg_is_valid_request(rd->alpha2)) { in set_regdom()
3006 kfree(rd); in set_regdom()
3018 r = reg_set_rd_core(rd); in set_regdom()
3021 r = reg_set_rd_user(rd, lr); in set_regdom()
3025 r = reg_set_rd_driver(rd, lr); in set_regdom()
3028 r = reg_set_rd_country_ie(rd, lr); in set_regdom()
3032 kfree(rd); in set_regdom()
3046 kfree(rd); in set_regdom()
3051 if (WARN_ON(!lr->intersect && rd != get_cfg80211_regdom())) in set_regdom()
3067 struct ieee80211_regdomain *rd) in __regulatory_set_wiphy_regd() argument
3073 if (WARN_ON(!wiphy || !rd)) in __regulatory_set_wiphy_regd()
3080 if (WARN(!is_valid_rd(rd), "Invalid regulatory domain detected\n")) { in __regulatory_set_wiphy_regd()
3081 print_regdomain_info(rd); in __regulatory_set_wiphy_regd()
3085 regd = reg_copy_regd(rd); in __regulatory_set_wiphy_regd()
3101 struct ieee80211_regdomain *rd) in regulatory_set_wiphy_regd() argument
3103 int ret = __regulatory_set_wiphy_regd(wiphy, rd); in regulatory_set_wiphy_regd()
3114 struct ieee80211_regdomain *rd) in regulatory_set_wiphy_regd_sync_rtnl() argument
3120 ret = __regulatory_set_wiphy_regd(wiphy, rd); in regulatory_set_wiphy_regd_sync_rtnl()