diff --git a/core/hdd/src/wlan_hdd_regulatory.c b/core/hdd/src/wlan_hdd_regulatory.c index cb25712d5e89..918cfe856a9b 100644 --- a/core/hdd/src/wlan_hdd_regulatory.c +++ b/core/hdd/src/wlan_hdd_regulatory.c @@ -1232,32 +1232,35 @@ void hdd_send_wiphy_regd_sync_event(struct hdd_context *hdd_ctx) { struct ieee80211_regdomain *regd; struct ieee80211_reg_rule *regd_rules; + struct reg_rule_info reg_rules_struct; struct reg_rule_info *reg_rules; + QDF_STATUS status; uint8_t i; if (!hdd_ctx) { hdd_err("hdd_ctx is NULL"); return; } - reg_rules = ucfg_reg_get_regd_rules(hdd_ctx->pdev); - if (!reg_rules) { - hdd_err("reg_rules is NULL"); + + status = ucfg_reg_get_regd_rules(hdd_ctx->pdev, ®_rules_struct); + if (QDF_IS_STATUS_ERROR(status)) { + hdd_err("could not get reg rules"); return; } + + reg_rules = ®_rules_struct; if (!reg_rules->num_of_reg_rules) { hdd_err("no reg rules %d", reg_rules->num_of_reg_rules); return; } - if (!reg_rules->reg_rules_ptr) { - hdd_err("reg_rules_ptr is NULL"); - return; - } + regd = qdf_mem_malloc((reg_rules->num_of_reg_rules * sizeof(*regd_rules) + sizeof(*regd))); if (!regd) { hdd_err("mem alloc failed for reg rules"); return; } + regd->n_reg_rules = reg_rules->num_of_reg_rules; qdf_mem_copy(regd->alpha2, reg_rules->alpha2, REG_ALPHA2_LEN + 1); regd->dfs_region = @@ -1267,16 +1270,16 @@ void hdd_send_wiphy_regd_sync_event(struct hdd_context *hdd_ctx) hdd_debug("start freq\tend freq\t@ max_bw\tant_gain\tpwr\tflags"); for (i = 0; i < reg_rules->num_of_reg_rules; i++) { regd_rules[i].freq_range.start_freq_khz = - reg_rules->reg_rules_ptr[i].start_freq * 1000; + reg_rules->reg_rules[i].start_freq * 1000; regd_rules[i].freq_range.end_freq_khz = - reg_rules->reg_rules_ptr[i].end_freq * 1000; + reg_rules->reg_rules[i].end_freq * 1000; regd_rules[i].freq_range.max_bandwidth_khz = - reg_rules->reg_rules_ptr[i].max_bw * 1000; + reg_rules->reg_rules[i].max_bw * 1000; regd_rules[i].power_rule.max_antenna_gain = - reg_rules->reg_rules_ptr[i].ant_gain * 100; + reg_rules->reg_rules[i].ant_gain * 100; regd_rules[i].power_rule.max_eirp = - reg_rules->reg_rules_ptr[i].reg_power * 100; - map_nl_reg_rule_flags(reg_rules->reg_rules_ptr[i].flags, + reg_rules->reg_rules[i].reg_power * 100; + map_nl_reg_rule_flags(reg_rules->reg_rules[i].flags, ®d_rules[i].flags); hdd_debug("%d KHz\t%d KHz\t@ %d KHz\t%d\t\t%d\t%d", regd_rules[i].freq_range.start_freq_khz,