Lines Matching defs:rd
137 static void print_regdomain(const struct ieee80211_regdomain *rd);
356 static void update_world_regdomain(const struct ieee80211_regdomain *rd)
364 reset_regdomains(false, rd);
366 cfg80211_world_regdom = rd;
469 static void cfg80211_save_user_regdom(const struct ieee80211_regdomain *rd)
475 cfg80211_user_regdom = reg_copy_regd(rd);
1162 reg_get_max_bandwidth_from_range(const struct ieee80211_regdomain *rd,
1170 for (idx = 0; idx < rd->n_reg_rules; idx++)
1171 if (rule == &rd->reg_rules[idx])
1174 if (idx == rd->n_reg_rules)
1181 tmp = &rd->reg_rules[--no];
1196 while (no < rd->n_reg_rules - 1) {
1197 tmp = &rd->reg_rules[++no];
1211 unsigned int reg_get_max_bandwidth(const struct ieee80211_regdomain *rd,
1214 unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule);
1255 static bool is_valid_rd(const struct ieee80211_regdomain *rd)
1260 if (!rd->n_reg_rules)
1263 if (WARN_ON(rd->n_reg_rules > NL80211_MAX_SUPP_REG_RULES))
1266 for (i = 0; i < rd->n_reg_rules; i++) {
1267 reg_rule = &rd->reg_rules[i];
1491 * Once completed we will mark the alpha2 for the rd as intersected, "98",
1509 struct ieee80211_regdomain *rd;
1535 rd = kzalloc(struct_size(rd, reg_rules, num_rules), GFP_KERNEL);
1536 if (!rd)
1552 add_rule(&intersected_rule, rd->reg_rules,
1553 &rd->n_reg_rules);
1557 rd->alpha2[0] = '9';
1558 rd->alpha2[1] = '8';
1559 rd->dfs_region = reg_intersect_dfs_region(rd1->dfs_region,
1562 return rd;
3682 static void print_rd_rules(const struct ieee80211_regdomain *rd)
3692 for (i = 0; i < rd->n_reg_rules; i++) {
3693 reg_rule = &rd->reg_rules[i];
3700 reg_get_max_bandwidth(rd, reg_rule));
3748 static void print_regdomain(const struct ieee80211_regdomain *rd)
3752 if (is_intersected_alpha2(rd->alpha2)) {
3764 } else if (is_world_regdom(rd->alpha2)) {
3767 if (is_unknown_alpha2(rd->alpha2))
3772 rd->alpha2[0], rd->alpha2[1]);
3775 rd->alpha2[0], rd->alpha2[1]);
3779 pr_debug(" DFS Master region: %s", reg_dfs_region_str(rd->dfs_region));
3780 print_rd_rules(rd);
3783 static void print_regdomain_info(const struct ieee80211_regdomain *rd)
3785 pr_debug("Regulatory domain: %c%c\n", rd->alpha2[0], rd->alpha2[1]);
3786 print_rd_rules(rd);
3789 static int reg_set_rd_core(const struct ieee80211_regdomain *rd)
3791 if (!is_world_regdom(rd->alpha2))
3793 update_world_regdomain(rd);
3797 static int reg_set_rd_user(const struct ieee80211_regdomain *rd,
3802 if (!regdom_changes(rd->alpha2))
3805 if (!is_valid_rd(rd)) {
3807 rd->alpha2[0], rd->alpha2[1]);
3808 print_regdomain_info(rd);
3813 reset_regdomains(false, rd);
3817 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom());
3821 kfree(rd);
3822 rd = NULL;
3828 static int reg_set_rd_driver(const struct ieee80211_regdomain *rd,
3836 if (is_world_regdom(rd->alpha2))
3839 if (!regdom_changes(rd->alpha2))
3842 if (!is_valid_rd(rd)) {
3844 rd->alpha2[0], rd->alpha2[1]);
3845 print_regdomain_info(rd);
3859 regd = reg_copy_regd(rd);
3867 reset_regdomains(false, rd);
3871 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom());
3881 rcu_assign_pointer(request_wiphy->regd, rd);
3884 rd = NULL;
3891 static int reg_set_rd_country_ie(const struct ieee80211_regdomain *rd,
3896 if (!is_alpha2_set(rd->alpha2) && !is_an_alpha2(rd->alpha2) &&
3897 !is_unknown_alpha2(rd->alpha2))
3902 * rd is non static (it means CRDA was present and was used last)
3906 if (!is_valid_rd(rd)) {
3908 rd->alpha2[0], rd->alpha2[1]);
3909 print_regdomain_info(rd);
3920 reset_regdomains(false, rd);
3927 * kmalloc'd the rd structure.
3929 int set_regdom(const struct ieee80211_regdomain *rd,
3936 if (IS_ERR_OR_NULL(rd))
3939 if (!reg_is_valid_request(rd->alpha2)) {
3940 kfree(rd);
3952 r = reg_set_rd_core(rd);
3955 cfg80211_save_user_regdom(rd);
3956 r = reg_set_rd_user(rd, lr);
3960 r = reg_set_rd_driver(rd, lr);
3963 r = reg_set_rd_country_ie(rd, lr);
3967 kfree(rd);
3981 kfree(rd);
3986 if (WARN_ON(!lr->intersect && rd != get_cfg80211_regdom()))
4002 struct ieee80211_regdomain *rd)
4008 if (WARN_ON(!wiphy || !rd))
4015 if (WARN(!is_valid_rd(rd),
4017 rd->alpha2[0], rd->alpha2[1])) {
4018 print_regdomain_info(rd);
4022 regd = reg_copy_regd(rd);
4038 struct ieee80211_regdomain *rd)
4040 int ret = __regulatory_set_wiphy_regd(wiphy, rd);
4051 struct ieee80211_regdomain *rd)
4057 ret = __regulatory_set_wiphy_regd(wiphy, rd);