Lines Matching refs:rd

137 static void print_regdomain(const struct ieee80211_regdomain *rd);
356 static void update_world_regdomain(const struct ieee80211_regdomain *rd) in update_world_regdomain() argument
364 reset_regdomains(false, rd); in update_world_regdomain()
366 cfg80211_world_regdom = rd; in update_world_regdomain()
469 static void cfg80211_save_user_regdom(const struct ieee80211_regdomain *rd) in cfg80211_save_user_regdom() argument
475 cfg80211_user_regdom = reg_copy_regd(rd); in cfg80211_save_user_regdom()
1162 reg_get_max_bandwidth_from_range(const struct ieee80211_regdomain *rd, in reg_get_max_bandwidth_from_range() argument
1170 for (idx = 0; idx < rd->n_reg_rules; idx++) in reg_get_max_bandwidth_from_range()
1171 if (rule == &rd->reg_rules[idx]) in reg_get_max_bandwidth_from_range()
1174 if (idx == rd->n_reg_rules) in reg_get_max_bandwidth_from_range()
1181 tmp = &rd->reg_rules[--no]; in reg_get_max_bandwidth_from_range()
1196 while (no < rd->n_reg_rules - 1) { in reg_get_max_bandwidth_from_range()
1197 tmp = &rd->reg_rules[++no]; in reg_get_max_bandwidth_from_range()
1211 unsigned int reg_get_max_bandwidth(const struct ieee80211_regdomain *rd, in reg_get_max_bandwidth() argument
1214 unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule); in reg_get_max_bandwidth()
1255 static bool is_valid_rd(const struct ieee80211_regdomain *rd) in is_valid_rd() argument
1260 if (!rd->n_reg_rules) in is_valid_rd()
1263 if (WARN_ON(rd->n_reg_rules > NL80211_MAX_SUPP_REG_RULES)) in is_valid_rd()
1266 for (i = 0; i < rd->n_reg_rules; i++) { in is_valid_rd()
1267 reg_rule = &rd->reg_rules[i]; in is_valid_rd()
1509 struct ieee80211_regdomain *rd; in regdom_intersect() local
1535 rd = kzalloc(struct_size(rd, reg_rules, num_rules), GFP_KERNEL); in regdom_intersect()
1536 if (!rd) in regdom_intersect()
1552 add_rule(&intersected_rule, rd->reg_rules, in regdom_intersect()
1553 &rd->n_reg_rules); in regdom_intersect()
1557 rd->alpha2[0] = '9'; in regdom_intersect()
1558 rd->alpha2[1] = '8'; in regdom_intersect()
1559 rd->dfs_region = reg_intersect_dfs_region(rd1->dfs_region, in regdom_intersect()
1562 return rd; in regdom_intersect()
3712 static void print_rd_rules(const struct ieee80211_regdomain *rd) in print_rd_rules() argument
3722 for (i = 0; i < rd->n_reg_rules; i++) { in print_rd_rules()
3723 reg_rule = &rd->reg_rules[i]; in print_rd_rules()
3730 reg_get_max_bandwidth(rd, reg_rule)); in print_rd_rules()
3778 static void print_regdomain(const struct ieee80211_regdomain *rd) in print_regdomain() argument
3782 if (is_intersected_alpha2(rd->alpha2)) { in print_regdomain()
3794 } else if (is_world_regdom(rd->alpha2)) { in print_regdomain()
3797 if (is_unknown_alpha2(rd->alpha2)) in print_regdomain()
3802 rd->alpha2[0], rd->alpha2[1]); in print_regdomain()
3805 rd->alpha2[0], rd->alpha2[1]); in print_regdomain()
3809 pr_debug(" DFS Master region: %s", reg_dfs_region_str(rd->dfs_region)); in print_regdomain()
3810 print_rd_rules(rd); in print_regdomain()
3813 static void print_regdomain_info(const struct ieee80211_regdomain *rd) in print_regdomain_info() argument
3815 pr_debug("Regulatory domain: %c%c\n", rd->alpha2[0], rd->alpha2[1]); in print_regdomain_info()
3816 print_rd_rules(rd); in print_regdomain_info()
3819 static int reg_set_rd_core(const struct ieee80211_regdomain *rd) in reg_set_rd_core() argument
3821 if (!is_world_regdom(rd->alpha2)) in reg_set_rd_core()
3823 update_world_regdomain(rd); in reg_set_rd_core()
3827 static int reg_set_rd_user(const struct ieee80211_regdomain *rd, in reg_set_rd_user() argument
3832 if (!regdom_changes(rd->alpha2)) in reg_set_rd_user()
3835 if (!is_valid_rd(rd)) { in reg_set_rd_user()
3837 rd->alpha2[0], rd->alpha2[1]); in reg_set_rd_user()
3838 print_regdomain_info(rd); in reg_set_rd_user()
3843 reset_regdomains(false, rd); in reg_set_rd_user()
3847 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom()); in reg_set_rd_user()
3851 kfree(rd); in reg_set_rd_user()
3852 rd = NULL; in reg_set_rd_user()
3858 static int reg_set_rd_driver(const struct ieee80211_regdomain *rd, in reg_set_rd_driver() argument
3866 if (is_world_regdom(rd->alpha2)) in reg_set_rd_driver()
3869 if (!regdom_changes(rd->alpha2)) in reg_set_rd_driver()
3872 if (!is_valid_rd(rd)) { in reg_set_rd_driver()
3874 rd->alpha2[0], rd->alpha2[1]); in reg_set_rd_driver()
3875 print_regdomain_info(rd); in reg_set_rd_driver()
3889 regd = reg_copy_regd(rd); in reg_set_rd_driver()
3897 reset_regdomains(false, rd); in reg_set_rd_driver()
3901 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom()); in reg_set_rd_driver()
3911 rcu_assign_pointer(request_wiphy->regd, rd); in reg_set_rd_driver()
3914 rd = NULL; in reg_set_rd_driver()
3921 static int reg_set_rd_country_ie(const struct ieee80211_regdomain *rd, in reg_set_rd_country_ie() argument
3926 if (!is_alpha2_set(rd->alpha2) && !is_an_alpha2(rd->alpha2) && in reg_set_rd_country_ie()
3927 !is_unknown_alpha2(rd->alpha2)) in reg_set_rd_country_ie()
3936 if (!is_valid_rd(rd)) { in reg_set_rd_country_ie()
3938 rd->alpha2[0], rd->alpha2[1]); in reg_set_rd_country_ie()
3939 print_regdomain_info(rd); in reg_set_rd_country_ie()
3950 reset_regdomains(false, rd); in reg_set_rd_country_ie()
3959 int set_regdom(const struct ieee80211_regdomain *rd, in set_regdom() argument
3966 if (IS_ERR_OR_NULL(rd)) in set_regdom()
3969 if (!reg_is_valid_request(rd->alpha2)) { in set_regdom()
3970 kfree(rd); in set_regdom()
3982 r = reg_set_rd_core(rd); in set_regdom()
3985 cfg80211_save_user_regdom(rd); in set_regdom()
3986 r = reg_set_rd_user(rd, lr); in set_regdom()
3990 r = reg_set_rd_driver(rd, lr); in set_regdom()
3993 r = reg_set_rd_country_ie(rd, lr); in set_regdom()
3997 kfree(rd); in set_regdom()
4011 kfree(rd); in set_regdom()
4016 if (WARN_ON(!lr->intersect && rd != get_cfg80211_regdom())) in set_regdom()
4032 struct ieee80211_regdomain *rd) in __regulatory_set_wiphy_regd() argument
4038 if (WARN_ON(!wiphy || !rd)) in __regulatory_set_wiphy_regd()
4045 if (WARN(!is_valid_rd(rd), in __regulatory_set_wiphy_regd()
4047 rd->alpha2[0], rd->alpha2[1])) { in __regulatory_set_wiphy_regd()
4048 print_regdomain_info(rd); in __regulatory_set_wiphy_regd()
4052 regd = reg_copy_regd(rd); in __regulatory_set_wiphy_regd()
4068 struct ieee80211_regdomain *rd) in regulatory_set_wiphy_regd() argument
4070 int ret = __regulatory_set_wiphy_regd(wiphy, rd); in regulatory_set_wiphy_regd()
4081 struct ieee80211_regdomain *rd) in regulatory_set_wiphy_regd_sync() argument
4087 ret = __regulatory_set_wiphy_regd(wiphy, rd); in regulatory_set_wiphy_regd_sync()