qcacmn: Add a feature flag for 4.9 GHz channels

Condition 4.9 GHz channels under a macro CONFIG_49GHZ_CHAN
since only WIN uses these channels and not MCC.
This reduces kmalloc memory allocation in regulatory
component.

Change-Id: Ie9241dd68909f68fa70012b664c7bc7cf050c1a5
CRs-Fixed: 2766046
Cette révision appartient à :
Gururaj Pandurangi
2020-09-04 01:11:31 -07:00
révisé par snandini
Parent c05a963017
révision a30081e58e
6 fichiers modifiés avec 89 ajouts et 19 suppressions

Voir le fichier

@@ -960,6 +960,40 @@ void reg_propagate_mas_chan_list_to_pdev(struct wlan_objmgr_psoc *psoc,
}
}
/**
* reg_populate_49g_band_channels() - For all the valid 4.9GHz regdb channels
* in the master channel list, find the regulatory rules and call
* reg_fill_channel_info() to populate master channel list with txpower,
* antennagain, BW info, etc.
* @reg_rule_5g: Pointer to regulatory rule.
* @num_5g_reg_rules: Number of regulatory rules.
* @min_bw_5g: Minimum regulatory bandwidth.
* @mas_chan_list: Pointer to the master channel list.
*/
#ifdef CONFIG_49GHZ_CHAN
static void
reg_populate_49g_band_channels(struct cur_reg_rule *reg_rule_5g,
uint32_t num_5g_reg_rules,
uint16_t min_bw_5g,
struct regulatory_channel *mas_chan_list)
{
reg_populate_band_channels(MIN_49GHZ_CHANNEL,
MAX_49GHZ_CHANNEL,
reg_rule_5g,
num_5g_reg_rules,
min_bw_5g,
mas_chan_list);
}
#else
static void
reg_populate_49g_band_channels(struct cur_reg_rule *reg_rule_5g,
uint32_t num_5g_reg_rules,
uint16_t min_bw_5g,
struct regulatory_channel *mas_chan_list)
{
}
#endif /* CONFIG_49GHZ_CHAN */
/**
* reg_populate_6g_band_channels() - For all the valid 6GHz regdb channels
* in the master channel list, find the regulatory rules and call
@@ -1225,10 +1259,10 @@ QDF_STATUS reg_process_master_chan_list(
reg_populate_band_channels(MIN_5GHZ_CHANNEL, MAX_5GHZ_CHANNEL,
reg_rule_5g, num_5g_reg_rules,
min_bw_5g, mas_chan_list);
reg_populate_band_channels(MIN_49GHZ_CHANNEL,
MAX_49GHZ_CHANNEL,
reg_rule_5g, num_5g_reg_rules,
min_bw_5g, mas_chan_list);
reg_populate_49g_band_channels(reg_rule_5g,
num_5g_reg_rules,
min_bw_5g,
mas_chan_list);
reg_populate_6g_band_channels(reg_rule_5g,
num_5g_reg_rules,
min_bw_5g,

Voir le fichier

@@ -191,7 +191,7 @@ const struct chan_map channel_map_us[NUM_CHANNELS] = {
[CHAN_ENUM_2467] = {2467, 12, 20, 40},
[CHAN_ENUM_2472] = {2472, 13, 20, 40},
[CHAN_ENUM_2484] = {2484, 14, 20, 20},
#ifdef CONFIG_49GHZ_CHAN
[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -234,7 +234,7 @@ const struct chan_map channel_map_us[NUM_CHANNELS] = {
[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
#endif /* CONFIG_49GHZ_CHAN */
[CHAN_ENUM_5180] = {5180, 36, 2, 160},
[CHAN_ENUM_5200] = {5200, 40, 2, 160},
[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -361,7 +361,7 @@ const struct chan_map channel_map_eu[NUM_CHANNELS] = {
[CHAN_ENUM_2467] = {2467, 12, 20, 40},
[CHAN_ENUM_2472] = {2472, 13, 20, 40},
[CHAN_ENUM_2484] = {2484, 14, 20, 20},
#ifdef CONFIG_49GHZ_CHAN
[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -404,7 +404,7 @@ const struct chan_map channel_map_eu[NUM_CHANNELS] = {
[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
#endif /* CONFIG_49GHZ_CHAN */
[CHAN_ENUM_5180] = {5180, 36, 2, 160},
[CHAN_ENUM_5200] = {5200, 40, 2, 160},
[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -531,7 +531,7 @@ const struct chan_map channel_map_jp[NUM_CHANNELS] = {
[CHAN_ENUM_2467] = {2467, 12, 20, 40},
[CHAN_ENUM_2472] = {2472, 13, 20, 40},
[CHAN_ENUM_2484] = {2484, 14, 20, 20},
#ifdef CONFIG_49GHZ_CHAN
[CHAN_ENUM_4912] = {4912, 182, 5, 5},
[CHAN_ENUM_4915] = {4915, 183, 10, 10},
[CHAN_ENUM_4917] = {4917, 183, 5, 5},
@@ -574,7 +574,7 @@ const struct chan_map channel_map_jp[NUM_CHANNELS] = {
[CHAN_ENUM_5057] = {5057, 11, 5, 5},
[CHAN_ENUM_5060] = {5060, 12, 20, 20},
[CHAN_ENUM_5080] = {5080, 16, 20, 20},
#endif /* CONFIG_49GHZ_CHAN */
[CHAN_ENUM_5180] = {5180, 36, 2, 160},
[CHAN_ENUM_5200] = {5200, 40, 2, 160},
[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -701,7 +701,7 @@ const struct chan_map channel_map_global[NUM_CHANNELS] = {
[CHAN_ENUM_2467] = {2467, 12, 20, 40},
[CHAN_ENUM_2472] = {2472, 13, 20, 40},
[CHAN_ENUM_2484] = {2484, 14, 20, 20},
#ifdef CONFIG_49GHZ_CHAN
[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -744,7 +744,7 @@ const struct chan_map channel_map_global[NUM_CHANNELS] = {
[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
#endif /* CONFIG_49GHZ_CHAN */
[CHAN_ENUM_5180] = {5180, 36, 2, 160},
[CHAN_ENUM_5200] = {5200, 40, 2, 160},
[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -871,7 +871,7 @@ const struct chan_map channel_map_china[NUM_CHANNELS] = {
[CHAN_ENUM_2467] = {2467, 12, 20, 40},
[CHAN_ENUM_2472] = {2472, 13, 20, 40},
[CHAN_ENUM_2484] = {2484, 14, 20, 20},
#ifdef CONFIG_49GHZ_CHAN
[CHAN_ENUM_4912] = {4912, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4915] = {4915, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_4917] = {4917, INVALID_CHANNEL_NUM, 2, 20},
@@ -914,7 +914,7 @@ const struct chan_map channel_map_china[NUM_CHANNELS] = {
[CHAN_ENUM_5057] = {5057, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5060] = {5060, INVALID_CHANNEL_NUM, 2, 20},
[CHAN_ENUM_5080] = {5080, INVALID_CHANNEL_NUM, 2, 20},
#endif /* CONFIG_49GHZ_CHAN */
[CHAN_ENUM_5180] = {5180, 36, 2, 160},
[CHAN_ENUM_5200] = {5200, 40, 2, 160},
[CHAN_ENUM_5220] = {5220, 44, 2, 160},
@@ -2724,7 +2724,7 @@ reg_get_band_channel_list(struct wlan_objmgr_pdev *pdev,
}
}
if (BAND_5G_PRESENT(band_mask)) {
for (i = MIN_49GHZ_CHANNEL; i <= MAX_5GHZ_CHANNEL; i++) {
for (i = BAND_5GHZ_START_CHANNEL; i <= MAX_5GHZ_CHANNEL; i++) {
if ((cur_chan_list[i].state != CHANNEL_STATE_DISABLE) &&
!(cur_chan_list[i].chan_flags &
REGULATORY_CHAN_DISABLED)) {
@@ -2795,7 +2795,7 @@ qdf_freq_t reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
}
if (BAND_5G_PRESENT(band_mask)) {
min_chan = MIN_49GHZ_CHANNEL;
min_chan = BAND_5GHZ_START_CHANNEL;
max_chan = MAX_5GHZ_CHANNEL;
return reg_compute_chan_to_freq(pdev, chan_num,
@@ -2808,10 +2808,12 @@ qdf_freq_t reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
}
}
#ifdef CONFIG_49GHZ_CHAN
bool reg_is_49ghz_freq(qdf_freq_t freq)
{
return REG_IS_49GHZ_FREQ(freq);
}
#endif /* CONFIG_49GHZ_CHAN */
qdf_freq_t reg_ch_num(uint32_t ch_enum)
{

Voir le fichier

@@ -57,8 +57,13 @@
#define REG_MAX_5GHZ_CH_FREQ channel_map[MAX_5GHZ_CHANNEL].center_freq
#endif /* CONFIG_CHAN_FREQ_API */
#ifdef CONFIG_49GHZ_CHAN
#define REG_MIN_49GHZ_CH_FREQ channel_map[MIN_49GHZ_CHANNEL].center_freq
#define REG_MAX_49GHZ_CH_FREQ channel_map[MAX_49GHZ_CHANNEL].center_freq
#else
#define REG_MIN_49GHZ_CH_FREQ 0
#define REG_MAX_49GHZ_CH_FREQ 0
#endif /* CONFIG_49GHZ_CHAN */
#define REG_IS_49GHZ_FREQ(freq) \
(((freq) >= REG_MIN_49GHZ_CH_FREQ) && \
@@ -85,8 +90,13 @@
center_freq - HALF_20MHZ_BW)
#define TWO_GIG_ENDING_EDGE_FREQ (channel_map_global[MAX_24GHZ_CHANNEL]. \
center_freq + HALF_20MHZ_BW)
#ifdef CONFIG_49GHZ_CHAN
#define FIVE_GIG_STARTING_EDGE_FREQ (channel_map_global[MIN_49GHZ_CHANNEL]. \
center_freq - HALF_5MHZ_BW)
#else
#define FIVE_GIG_STARTING_EDGE_FREQ (channel_map_global[MIN_5GHZ_CHANNEL]. \
center_freq - HALF_20MHZ_BW)
#endif /* CONFIG_49GHZ_CHAN */
#define FIVE_GIG_ENDING_EDGE_FREQ (channel_map_global[MAX_5GHZ_CHANNEL]. \
center_freq + HALF_20MHZ_BW)

Voir le fichier

@@ -294,7 +294,7 @@ enum channel_enum {
CHAN_ENUM_2467,
CHAN_ENUM_2472,
CHAN_ENUM_2484,
#ifdef CONFIG_49GHZ_CHAN
CHAN_ENUM_4912,
CHAN_ENUM_4915,
CHAN_ENUM_4917,
@@ -337,7 +337,7 @@ enum channel_enum {
CHAN_ENUM_5057,
CHAN_ENUM_5060,
CHAN_ENUM_5080,
#endif /* CONFIG_49GHZ_CHAN */
CHAN_ENUM_5180,
CHAN_ENUM_5200,
CHAN_ENUM_5220,
@@ -457,9 +457,17 @@ enum channel_enum {
MAX_24GHZ_CHANNEL = CHAN_ENUM_2484,
NUM_24GHZ_CHANNELS = (MAX_24GHZ_CHANNEL - MIN_24GHZ_CHANNEL + 1),
INVALID_CHANNEL = 0xBAD,
#ifdef CONFIG_49GHZ_CHAN
MIN_49GHZ_CHANNEL = CHAN_ENUM_4912,
MAX_49GHZ_CHANNEL = CHAN_ENUM_5080,
NUM_49GHZ_CHANNELS = (MAX_49GHZ_CHANNEL - MIN_49GHZ_CHANNEL + 1),
#else
MIN_49GHZ_CHANNEL = INVALID_CHANNEL,
MAX_49GHZ_CHANNEL = INVALID_CHANNEL,
NUM_49GHZ_CHANNELS = 0,
#endif /* CONFIG_49GHZ_CHAN */
MIN_5GHZ_CHANNEL = CHAN_ENUM_5180,
MAX_5GHZ_CHANNEL = CHAN_ENUM_5885,
@@ -479,7 +487,11 @@ enum channel_enum {
MAX_5DOT9_CHANNEL = CHAN_ENUM_5885,
NUM_5DOT9_CHANNELS = (MAX_5DOT9_CHANNEL - MIN_5DOT9_CHANNEL + 1),
INVALID_CHANNEL = 0xBAD,
#ifdef CONFIG_49GHZ_CHAN
#define BAND_5GHZ_START_CHANNEL MIN_49GHZ_CHANNEL
#else
#define BAND_5GHZ_START_CHANNEL MIN_5GHZ_CHANNEL
#endif /* CONFIG_49GHZ_CHAN */
#ifdef DISABLE_UNII_SHARED_BANDS
MIN_UNII_1_BAND_CHANNEL = CHAN_ENUM_5180,

Voir le fichier

@@ -349,6 +349,7 @@ qdf_freq_t wlan_reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
uint8_t chan,
uint8_t band_mask);
#ifdef CONFIG_49GHZ_CHAN
/**
* wlan_reg_is_49ghz_freq() - Check if the given channel frequency is 4.9GHz
* @freq: Channel frequency
@@ -358,6 +359,15 @@ qdf_freq_t wlan_reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
#define WLAN_REG_IS_49GHZ_FREQ(freq) wlan_reg_is_49ghz_freq(freq)
bool wlan_reg_is_49ghz_freq(qdf_freq_t freq);
#else
#define WLAN_REG_IS_49GHZ_FREQ(freq) (false)
static inline bool wlan_reg_is_49ghz_freq(qdf_freq_t freq)
{
return false;
}
#endif /* CONFIG_49GHZ_CHAN */
/**
* wlan_reg_ch_num() - Get channel number from channel enum
* @ch_enum: Channel enum

Voir le fichier

@@ -872,10 +872,12 @@ qdf_freq_t wlan_reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
qdf_export_symbol(wlan_reg_chan_band_to_freq);
#ifdef CONFIG_49GHZ_CHAN
bool wlan_reg_is_49ghz_freq(qdf_freq_t freq)
{
return reg_is_49ghz_freq(freq);
}
#endif /* CONFIG_49GHZ_CHAN */
uint8_t wlan_reg_ch_num(uint32_t ch_enum)
{