qcacmn: Move repetitive function bodies into a single function
The body of the two following functions: 1)reg_get_num_sp_freq_ranges, 2)reg_cp_freq_ranges have much in common. Move the common part into a single function in order to optimize code size. Change-Id: Ice9e925ef0e64baa41f867a92a3c3d2902374d74 CRs-Fixed: 3019338
This commit is contained in:

gecommit door
Madan Koyyalamudi

bovenliggende
575da29354
commit
bd02b05aa5
@@ -593,9 +593,9 @@ static bool reg_is_subrange(struct freq_range *range_first,
|
||||
/**
|
||||
* reg_is_cfi_freq_in_ranges() - Check if the given 'cfi' in the any of the
|
||||
* frequency ranges
|
||||
* @cfi_freq: The ceter frequency index frequency
|
||||
* @cfi_freq: The center frequency index frequency
|
||||
* @bw: bandwidth of the band with center freq cfi_freq
|
||||
* @p_frange_lst: Pointer to frequencey range list (AFC)
|
||||
* @p_frange_lst: Pointer to frequency range list (AFC)
|
||||
*
|
||||
* return: True if the cfi is in the ranges, else false
|
||||
*/
|
||||
|
@@ -4927,19 +4927,36 @@ reg_intersect_ranges(struct freq_range *first_range,
|
||||
}
|
||||
|
||||
/**
|
||||
* reg_get_num_sp_freq_ranges() - Find the number of reg rules from the Standard
|
||||
* power regulatory rules
|
||||
* @pdev: Pointer to pdev
|
||||
* reg_act_sp_rule_cb - A function pointer type that calculate something
|
||||
* from the input frequency range
|
||||
* @rule_fr: Pointer to frequencey range
|
||||
* @arg: Pointer to generic argument (a.k.a. context)
|
||||
*
|
||||
* Return: number of frequency ranges
|
||||
* Return: Void
|
||||
*/
|
||||
static uint8_t reg_get_num_sp_freq_ranges(struct wlan_objmgr_pdev *pdev,
|
||||
struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj)
|
||||
typedef void (*reg_act_sp_rule_cb)(struct freq_range *rule_fr,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* reg_iterate_sp_rules() - Iterate through the Standard Power reg rules, for
|
||||
* every reg rule call the call back function to take some action or calculate
|
||||
* something
|
||||
* @pdev: Pointer to pdev
|
||||
* @pdev_priv_obj: Pointer to pdev private object
|
||||
* @action_on_sp_rule: A function pointer to take some action or calculate
|
||||
* something for every sp rule
|
||||
* @arg: Pointer to opque object (argument/context)
|
||||
*
|
||||
* Return: Void
|
||||
*/
|
||||
static void reg_iterate_sp_rules(struct wlan_objmgr_pdev *pdev,
|
||||
struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj,
|
||||
reg_act_sp_rule_cb sp_rule_action,
|
||||
void *arg)
|
||||
{
|
||||
struct cur_reg_rule *p_sp_reg_rule;
|
||||
struct reg_rule_info *psoc_reg_rules;
|
||||
uint8_t n_6g_sp_ap_reg_rules;
|
||||
uint8_t num_freq_ranges;
|
||||
qdf_freq_t low_5g;
|
||||
qdf_freq_t high_5g;
|
||||
uint8_t i;
|
||||
@@ -4957,7 +4974,6 @@ static uint8_t reg_get_num_sp_freq_ranges(struct wlan_objmgr_pdev *pdev,
|
||||
reg_debug("chip_range = [%u, %u]", low_5g, high_5g);
|
||||
reg_debug("Num_6g_rules = %u", n_6g_sp_ap_reg_rules);
|
||||
|
||||
num_freq_ranges = 0;
|
||||
for (i = 0; i < n_6g_sp_ap_reg_rules; i++) {
|
||||
struct freq_range sp_range;
|
||||
struct freq_range out_range;
|
||||
@@ -4967,23 +4983,87 @@ static uint8_t reg_get_num_sp_freq_ranges(struct wlan_objmgr_pdev *pdev,
|
||||
reg_debug("Rule:[%u, %u]",
|
||||
p_sp_reg_rule->start_freq,
|
||||
p_sp_reg_rule->end_freq);
|
||||
|
||||
out_range = reg_intersect_ranges(&chip_range, &sp_range);
|
||||
if (reg_is_empty_range(&out_range))
|
||||
continue;
|
||||
|
||||
if (sp_rule_action)
|
||||
sp_rule_action(&out_range, arg);
|
||||
|
||||
p_sp_reg_rule++;
|
||||
num_freq_ranges++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* reg_afc_incr_num_ranges() - Increment the number of frequency ranges
|
||||
* @p_range: Pointer to frequency range
|
||||
* @num_freq_ranges: Pointer to number of frequency ranges. This needs to be
|
||||
* (Actual type: uint8_t *num_freq_ranges)
|
||||
* incremented by the function
|
||||
*
|
||||
* Return: Void
|
||||
*/
|
||||
static void reg_afc_incr_num_ranges(struct freq_range *p_range,
|
||||
void *num_freq_ranges)
|
||||
{
|
||||
if (!reg_is_empty_range(p_range))
|
||||
(*(uint8_t *)num_freq_ranges)++;
|
||||
}
|
||||
|
||||
/**
|
||||
* reg_get_num_sp_freq_ranges() - Find the number of reg rules from the Standard
|
||||
* power regulatory rules
|
||||
* @pdev: Pointer to pdev
|
||||
*
|
||||
* Return: number of frequency ranges
|
||||
*/
|
||||
static uint8_t reg_get_num_sp_freq_ranges(struct wlan_objmgr_pdev *pdev,
|
||||
struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj)
|
||||
{
|
||||
uint8_t num_freq_ranges;
|
||||
|
||||
num_freq_ranges = 0;
|
||||
reg_iterate_sp_rules(pdev,
|
||||
pdev_priv_obj,
|
||||
reg_afc_incr_num_ranges,
|
||||
&num_freq_ranges);
|
||||
|
||||
reg_debug("Num_freq_ranges=%u", num_freq_ranges);
|
||||
return num_freq_ranges;
|
||||
}
|
||||
|
||||
/**
|
||||
* reg_afc_get_intersected_ranges() - Get the intersected range into range obj
|
||||
* @rule_fr: Pointer to the rule for frequency range
|
||||
* @arg: Pointer to opaque object (argument/context)
|
||||
* (Actual type: struct wlan_afc_freq_range_obj **p_range_obj)
|
||||
* incremented by the function
|
||||
*
|
||||
* Return: Void
|
||||
*/
|
||||
static void reg_afc_get_intersected_ranges(struct freq_range *rule_fr,
|
||||
void *arg)
|
||||
{
|
||||
struct wlan_afc_freq_range_obj *p_range;
|
||||
struct wlan_afc_freq_range_obj **pp_range;
|
||||
|
||||
pp_range = (struct wlan_afc_freq_range_obj **)arg;
|
||||
p_range = *pp_range;
|
||||
|
||||
if (!reg_is_empty_range(rule_fr)) {
|
||||
reg_assign_vars_with_range_vals(rule_fr,
|
||||
&p_range->lowfreq,
|
||||
&p_range->highfreq);
|
||||
reg_debug("Range = [%u, %u]", p_range->lowfreq, p_range->highfreq);
|
||||
(*pp_range)++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* reg_cp_freq_ranges() - Copy frequency ranges from the Standard power
|
||||
* regulatory rules
|
||||
* @pdev: Pointer to pdev
|
||||
* @pdev_priv_obj: Pointer to pdev private object
|
||||
* @num_freq_ranges: Number of frequency ranges
|
||||
* @p_range_obj: Pointer to range object
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
@@ -4992,38 +5072,15 @@ static void reg_cp_freq_ranges(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t num_freq_ranges,
|
||||
struct wlan_afc_freq_range_obj *p_range_obj)
|
||||
{
|
||||
struct cur_reg_rule *p_sp_reg_rule;
|
||||
struct reg_rule_info *psoc_reg_rules;
|
||||
uint8_t i;
|
||||
qdf_freq_t low_5g;
|
||||
qdf_freq_t high_5g;
|
||||
struct freq_range chip_range;
|
||||
struct wlan_afc_freq_range_obj *p_range;
|
||||
|
||||
psoc_reg_rules = reg_get_reg_rules_for_pdev(pdev);
|
||||
p_sp_reg_rule = psoc_reg_rules->reg_rules_6g_ap[REG_STANDARD_POWER_AP];
|
||||
reg_debug("Num freq ranges = %u", num_freq_ranges);
|
||||
|
||||
low_5g = pdev_priv_obj->range_5g_low;
|
||||
high_5g = pdev_priv_obj->range_5g_high;
|
||||
|
||||
chip_range = reg_init_freq_range(low_5g, high_5g);
|
||||
|
||||
for (i = 0; i < num_freq_ranges; i++) {
|
||||
struct freq_range sp_range;
|
||||
struct freq_range out_range;
|
||||
|
||||
sp_range = reg_init_freq_range(p_sp_reg_rule->start_freq,
|
||||
p_sp_reg_rule->end_freq);
|
||||
|
||||
out_range = reg_intersect_ranges(&chip_range, &sp_range);
|
||||
if (reg_is_empty_range(&out_range))
|
||||
continue;
|
||||
|
||||
reg_assign_vars_with_range_vals(&out_range,
|
||||
&p_range_obj->lowfreq,
|
||||
&p_range_obj->highfreq);
|
||||
p_range_obj++;
|
||||
p_sp_reg_rule++;
|
||||
}
|
||||
p_range = p_range_obj;
|
||||
reg_iterate_sp_rules(pdev,
|
||||
pdev_priv_obj,
|
||||
reg_afc_get_intersected_ranges,
|
||||
&p_range);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -5363,6 +5420,7 @@ reg_get_partial_afc_req_info(struct wlan_objmgr_pdev *pdev,
|
||||
status = QDF_STATUS_E_NOMEM;
|
||||
goto handle_invalid_priv_object;
|
||||
}
|
||||
|
||||
status = reg_dmn_get_6g_opclasses_and_channels(pdev,
|
||||
p_frange_lst_local,
|
||||
&num_opclasses,
|
||||
@@ -5381,7 +5439,6 @@ reg_get_partial_afc_req_info(struct wlan_objmgr_pdev *pdev,
|
||||
chansize_lst);
|
||||
|
||||
temp_afc_req = qdf_mem_malloc(afc_req_len);
|
||||
|
||||
if (!temp_afc_req) {
|
||||
reg_err("AFC request not allocated");
|
||||
status = QDF_STATUS_E_NOMEM;
|
||||
|
Verwijs in nieuw issue
Block a user