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)
364 reset_regdomains(false, rd);
366 cfg80211_world_regdom = rd;
468 static void cfg80211_save_user_regdom(const struct ieee80211_regdomain *rd)
474 cfg80211_user_regdom = reg_copy_regd(rd);
1161 reg_get_max_bandwidth_from_range(const struct ieee80211_regdomain *rd,
1169 for (idx = 0; idx < rd->n_reg_rules; idx++)
1170 if (rule == &rd->reg_rules[idx])
1173 if (idx == rd->n_reg_rules)
1180 tmp = &rd->reg_rules[--no];
1195 while (no < rd->n_reg_rules - 1) {
1196 tmp = &rd->reg_rules[++no];
1210 unsigned int reg_get_max_bandwidth(const struct ieee80211_regdomain *rd,
1213 unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule);
1254 static bool is_valid_rd(const struct ieee80211_regdomain *rd)
1259 if (!rd->n_reg_rules)
1262 if (WARN_ON(rd->n_reg_rules > NL80211_MAX_SUPP_REG_RULES))
1265 for (i = 0; i < rd->n_reg_rules; i++) {
1266 reg_rule = &rd->reg_rules[i];
1490 * Once completed we will mark the alpha2 for the rd as intersected, "98",
1508 struct ieee80211_regdomain *rd;
1534 rd = kzalloc(struct_size(rd, reg_rules, num_rules), GFP_KERNEL);
1535 if (!rd)
1551 add_rule(&intersected_rule, rd->reg_rules,
1552 &rd->n_reg_rules);
1556 rd->alpha2[0] = '9';
1557 rd->alpha2[1] = '8';
1558 rd->dfs_region = reg_intersect_dfs_region(rd1->dfs_region,
1561 return rd;
3715 static void print_rd_rules(const struct ieee80211_regdomain *rd)
3725 for (i = 0; i < rd->n_reg_rules; i++) {
3726 reg_rule = &rd->reg_rules[i];
3733 reg_get_max_bandwidth(rd, reg_rule));
3781 static void print_regdomain(const struct ieee80211_regdomain *rd)
3785 if (is_intersected_alpha2(rd->alpha2)) {
3797 } else if (is_world_regdom(rd->alpha2)) {
3800 if (is_unknown_alpha2(rd->alpha2))
3805 rd->alpha2[0], rd->alpha2[1]);
3808 rd->alpha2[0], rd->alpha2[1]);
3812 pr_debug(" DFS Master region: %s", reg_dfs_region_str(rd->dfs_region));
3813 print_rd_rules(rd);
3816 static void print_regdomain_info(const struct ieee80211_regdomain *rd)
3818 pr_debug("Regulatory domain: %c%c\n", rd->alpha2[0], rd->alpha2[1]);
3819 print_rd_rules(rd);
3822 static int reg_set_rd_core(const struct ieee80211_regdomain *rd)
3824 if (!is_world_regdom(rd->alpha2))
3826 update_world_regdomain(rd);
3830 static int reg_set_rd_user(const struct ieee80211_regdomain *rd,
3835 if (!regdom_changes(rd->alpha2))
3838 if (!is_valid_rd(rd)) {
3840 rd->alpha2[0], rd->alpha2[1]);
3841 print_regdomain_info(rd);
3846 reset_regdomains(false, rd);
3850 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom());
3854 kfree(rd);
3855 rd = NULL;
3861 static int reg_set_rd_driver(const struct ieee80211_regdomain *rd,
3869 if (is_world_regdom(rd->alpha2))
3872 if (!regdom_changes(rd->alpha2))
3875 if (!is_valid_rd(rd)) {
3877 rd->alpha2[0], rd->alpha2[1]);
3878 print_regdomain_info(rd);
3892 regd = reg_copy_regd(rd);
3901 reset_regdomains(false, rd);
3905 intersected_rd = regdom_intersect(rd, get_cfg80211_regdom());
3915 rcu_assign_pointer(request_wiphy->regd, rd);
3918 rd = NULL;
3925 static int reg_set_rd_country_ie(const struct ieee80211_regdomain *rd,
3930 if (!is_alpha2_set(rd->alpha2) && !is_an_alpha2(rd->alpha2) &&
3931 !is_unknown_alpha2(rd->alpha2))
3936 * rd is non static (it means CRDA was present and was used last)
3940 if (!is_valid_rd(rd)) {
3942 rd->alpha2[0], rd->alpha2[1]);
3943 print_regdomain_info(rd);
3954 reset_regdomains(false, rd);
3961 * kmalloc'd the rd structure.
3963 int set_regdom(const struct ieee80211_regdomain *rd,
3970 if (IS_ERR_OR_NULL(rd))
3973 if (!reg_is_valid_request(rd->alpha2)) {
3974 kfree(rd);
3986 r = reg_set_rd_core(rd);
3989 cfg80211_save_user_regdom(rd);
3990 r = reg_set_rd_user(rd, lr);
3994 r = reg_set_rd_driver(rd, lr);
3997 r = reg_set_rd_country_ie(rd, lr);
4001 kfree(rd);
4015 kfree(rd);
4020 if (WARN_ON(!lr->intersect && rd != get_cfg80211_regdom()))
4036 struct ieee80211_regdomain *rd)
4042 if (WARN_ON(!wiphy || !rd))
4049 if (WARN(!is_valid_rd(rd),
4051 rd->alpha2[0], rd->alpha2[1])) {
4052 print_regdomain_info(rd);
4056 regd = reg_copy_regd(rd);
4072 struct ieee80211_regdomain *rd)
4074 int ret = __regulatory_set_wiphy_regd(wiphy, rd);
4085 struct ieee80211_regdomain *rd)
4091 ret = __regulatory_set_wiphy_regd(wiphy, rd);