mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-11-08 11:45:53 -05:00
qcacmn: Add random channel debug bit mask
Add WLAN_DEBUG_DFS_RANDOM_CHAN bit mask to enable/disable random channel algorithm prints using DFS logging. Change-Id: I77f01afcf59b8b790404eca8caa68c150a5d3ec2 CRs-Fixed: 2120265
This commit is contained in:
parent
2427663f1f
commit
0ea0a2466e
2 changed files with 52 additions and 34 deletions
|
|
@ -887,6 +887,7 @@ struct wlan_dfs {
|
|||
* @WLAN_DEBUG_DFS_BIN5_FFT: BIN5 FFT check.
|
||||
* @WLAN_DEBUG_DFS_BIN5_PULSE: BIN5 pulse check.
|
||||
* @WLAN_DEBUG_DFS_FALSE_DET: False detection debug related prints.
|
||||
* @WLAN_DEBUG_DFS_RANDOM_CHAN: Random channel selection.
|
||||
*/
|
||||
enum {
|
||||
WLAN_DEBUG_DFS = 0x00000100,
|
||||
|
|
@ -901,6 +902,7 @@ enum {
|
|||
WLAN_DEBUG_DFS_BIN5_FFT = 0x00020000,
|
||||
WLAN_DEBUG_DFS_BIN5_PULSE = 0x00040000,
|
||||
WLAN_DEBUG_DFS_FALSE_DET = 0x00080000,
|
||||
WLAN_DEBUG_DFS_RANDOM_CHAN = 0x00100000,
|
||||
WLAN_DEBUG_DFS_MAX = 0x80000000,
|
||||
WLAN_DEBUG_DFS_ALWAYS = WLAN_DEBUG_DFS_MAX
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@
|
|||
#include <qdf_mc_timer.h>
|
||||
|
||||
/**
|
||||
* dfs_populate_80mhz_available_channels()- Populate channels for 80MHz uing bitmap
|
||||
* dfs_populate_80mhz_available_channels()- Populate channels for 80MHz using
|
||||
* bitmap
|
||||
* @bitmap: bitmap
|
||||
* @avail_chnl: prepared channel list
|
||||
*
|
||||
|
|
@ -60,13 +61,16 @@ static uint8_t dfs_populate_80mhz_available_channels(
|
|||
(DFS_NEXT_5GHZ_CHANNEL * 3);
|
||||
}
|
||||
}
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS, "channel count %d", chnl_count);
|
||||
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"channel count %d", chnl_count);
|
||||
|
||||
return chnl_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* dfs_populate_40mhz_available_channels()- Populate channels for 40MHz uing bitmap
|
||||
* dfs_populate_40mhz_available_channels()- Populate channels for 40MHz using
|
||||
* bitmap
|
||||
* @bitmap: bitmap
|
||||
* @avail_chnl: prepared channel list
|
||||
*
|
||||
|
|
@ -99,13 +103,15 @@ static uint8_t dfs_populate_40mhz_available_channels(
|
|||
(DFS_NEXT_5GHZ_CHANNEL * 3);
|
||||
}
|
||||
}
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS, "channel count %d", chnl_count);
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"channel count %d", chnl_count);
|
||||
|
||||
return chnl_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* dfs_populate_available_channels()- Populate channels based on width and bitmap
|
||||
* dfs_populate_available_channels()- Populate channels based on width and
|
||||
* bitmap
|
||||
* @bitmap: bitmap
|
||||
* @ch_width: channel width
|
||||
* @avail_chnl: prepared channel list
|
||||
|
|
@ -168,6 +174,7 @@ static uint8_t dfs_get_rand_from_lst(uint8_t *ch_lst, uint8_t num_ch)
|
|||
/**
|
||||
* dfs_random_channel_sel_set_bitmap()- Set channel bit in bitmap based
|
||||
* on given channel number
|
||||
* @dfs: Pointer to DFS structure.
|
||||
* @bitmap: bitmap
|
||||
* @channel: channel number
|
||||
*
|
||||
|
|
@ -176,8 +183,9 @@ static uint8_t dfs_get_rand_from_lst(uint8_t *ch_lst, uint8_t num_ch)
|
|||
* Return: None
|
||||
*/
|
||||
static void dfs_random_channel_sel_set_bitmap(
|
||||
struct chan_bonding_bitmap *bitmap,
|
||||
uint8_t channel)
|
||||
struct wlan_dfs *dfs,
|
||||
struct chan_bonding_bitmap *bitmap,
|
||||
uint8_t channel)
|
||||
{
|
||||
int i = 0;
|
||||
int start_chan = 0;
|
||||
|
|
@ -192,12 +200,13 @@ static void dfs_random_channel_sel_set_bitmap(
|
|||
}
|
||||
}
|
||||
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"Channel=%d is not in the bitmap", channel);
|
||||
}
|
||||
|
||||
/**
|
||||
* dfs_find_ch_with_fallback()- find random channel
|
||||
* @dfs: Pointer to DFS structure.
|
||||
* @ch_wd: channel width
|
||||
* @center_freq_seg1: center frequency of secondary segment.
|
||||
* @ch_lst: list of available channels.
|
||||
|
|
@ -208,10 +217,12 @@ static void dfs_random_channel_sel_set_bitmap(
|
|||
*
|
||||
* Return: channel number
|
||||
*/
|
||||
static uint8_t dfs_find_ch_with_fallback(uint8_t *ch_wd,
|
||||
uint8_t *center_freq_seg1,
|
||||
uint8_t *ch_lst,
|
||||
uint32_t num_ch)
|
||||
static uint8_t dfs_find_ch_with_fallback(
|
||||
struct wlan_dfs *dfs,
|
||||
uint8_t *ch_wd,
|
||||
uint8_t *center_freq_seg1,
|
||||
uint8_t *ch_lst,
|
||||
uint32_t num_ch)
|
||||
{
|
||||
bool flag = false;
|
||||
uint32_t rand_byte = 0;
|
||||
|
|
@ -229,9 +240,9 @@ static uint8_t dfs_find_ch_with_fallback(uint8_t *ch_wd,
|
|||
ch_map.chan_bonding_set[5].start_chan = 149;
|
||||
|
||||
for (i = 0; i < num_ch; i++) {
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"channel = %d added to bitmap", ch_lst[i]);
|
||||
dfs_random_channel_sel_set_bitmap(&ch_map, ch_lst[i]);
|
||||
dfs_random_channel_sel_set_bitmap(dfs, &ch_map, ch_lst[i]);
|
||||
}
|
||||
|
||||
/* populate available channel list from bitmap */
|
||||
|
|
@ -242,11 +253,12 @@ static uint8_t dfs_find_ch_with_fallback(uint8_t *ch_wd,
|
|||
if ((*ch_wd == DFS_CH_WIDTH_160MHZ) ||
|
||||
(*ch_wd == DFS_CH_WIDTH_80P80MHZ) ||
|
||||
(*ch_wd == DFS_CH_WIDTH_80MHZ)) {
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"from [%d] to 40Mhz", *ch_wd);
|
||||
*ch_wd = DFS_CH_WIDTH_40MHZ;
|
||||
} else if (*ch_wd == DFS_CH_WIDTH_40MHZ) {
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS, "from 40Mhz to 20MHz");
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"from 40Mhz to 20MHz");
|
||||
*ch_wd = DFS_CH_WIDTH_20MHZ;
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -256,7 +268,7 @@ static uint8_t dfs_find_ch_with_fallback(uint8_t *ch_wd,
|
|||
if (((*ch_wd == DFS_CH_WIDTH_160MHZ) ||
|
||||
(*ch_wd == DFS_CH_WIDTH_80P80MHZ)) &&
|
||||
(final_cnt < DFS_MAX_20M_SUB_CH)) {
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"from [%d] to 80Mhz", *ch_wd);
|
||||
*ch_wd = DFS_CH_WIDTH_80MHZ;
|
||||
return 0;
|
||||
|
|
@ -285,7 +297,7 @@ static uint8_t dfs_find_ch_with_fallback(uint8_t *ch_wd,
|
|||
}
|
||||
|
||||
if ((flag == false) && (*ch_wd > DFS_CH_WIDTH_80MHZ)) {
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"from [%d] to 80Mhz", *ch_wd);
|
||||
*ch_wd = DFS_CH_WIDTH_80MHZ;
|
||||
return 0;
|
||||
|
|
@ -327,12 +339,12 @@ static uint8_t dfs_find_ch_with_fallback(uint8_t *ch_wd,
|
|||
*ch_wd = DFS_CH_WIDTH_80MHZ;
|
||||
|
||||
*center_freq_seg1 = sec_seg_ch;
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"Center frequency seg1 = %d", sec_seg_ch);
|
||||
} else {
|
||||
target_channel = dfs_get_rand_from_lst(final_lst, final_cnt);
|
||||
}
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"target channel = %d", target_channel);
|
||||
|
||||
return target_channel;
|
||||
|
|
@ -380,7 +392,7 @@ static bool dfs_freq_is_in_nol(struct wlan_dfs *dfs, uint32_t freq)
|
|||
nol = dfs->dfs_nol;
|
||||
while (nol) {
|
||||
if (freq == nol->nol_freq) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"%d is in nol", freq);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -423,7 +435,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
uint16_t flag_no_5g_chan = 0;
|
||||
int i;
|
||||
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "flags %d", flags);
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN, "flags %d", flags);
|
||||
flag_no_weather = (dfs_region == DFS_ETSI_REGION_VAL) ?
|
||||
flags & DFS_RANDOM_CH_FLAG_NO_WEATHER_CH : 0;
|
||||
|
||||
|
|
@ -442,7 +454,8 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
|
||||
if ((chan->dfs_ch_ieee == 0) ||
|
||||
(chan->dfs_ch_ieee > MAX_CHANNEL_NUM)) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "invalid channel %d",
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"invalid channel %d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -451,7 +464,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
/* TODO : Skip all HT20 channels in the given mode */
|
||||
if (chan->dfs_ch_ieee ==
|
||||
dfs->dfs_curchan->dfs_ch_ieee) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip %d current operating channel\n",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
|
|
@ -461,7 +474,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
if (acs_info && (acs_info->acs_mode == 1) &&
|
||||
((chan->dfs_ch_ieee < acs_info->start_ch) ||
|
||||
(chan->dfs_ch_ieee > acs_info->end_ch))) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip ch %d not in acs range (%d-%d)",
|
||||
chan->dfs_ch_ieee, acs_info->start_ch,
|
||||
acs_info->end_ch);
|
||||
|
|
@ -471,7 +484,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
|
||||
if (flag_no_2g_chan &&
|
||||
chan->dfs_ch_ieee <= DFS_MAX_24GHZ_CHANNEL) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip 2.4 GHz channel=%d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
|
|
@ -479,7 +492,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
|
||||
if (flag_no_5g_chan &&
|
||||
chan->dfs_ch_ieee > DFS_MAX_24GHZ_CHANNEL) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip 5 GHz channel=%d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
|
|
@ -487,7 +500,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
|
||||
if (flag_no_weather) {
|
||||
if (DFS_IS_CHANNEL_WEATHER_RADAR(chan->dfs_ch_freq)) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip weather channel=%d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
|
|
@ -496,7 +509,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
|
||||
if (flag_no_lower_5g &&
|
||||
DFS_IS_CHAN_JAPAN_INDOOR(chan->dfs_ch_ieee)) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip indoor channel=%d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
|
|
@ -504,20 +517,23 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||
|
||||
if (flag_no_upper_5g &&
|
||||
DFS_IS_CHAN_JAPAN_OUTDOOR(chan->dfs_ch_ieee)) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "skip outdoor channel=%d",
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip outdoor channel=%d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (flag_no_dfs_chan &&
|
||||
(chan->dfs_ch_flagext & IEEE80211_CHAN_DFS)) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "skip dfs channel=%d",
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip dfs channel=%d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dfs_freq_is_in_nol(dfs, chan->dfs_ch_freq)) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "skip nol channel=%d",
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip nol channel=%d",
|
||||
chan->dfs_ch_ieee);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -577,7 +593,7 @@ uint8_t dfs_prepare_random_channel(struct wlan_dfs *dfs,
|
|||
break;
|
||||
}
|
||||
|
||||
target_ch = dfs_find_ch_with_fallback(ch_wd,
|
||||
target_ch = dfs_find_ch_with_fallback(dfs, ch_wd,
|
||||
&cur_chan->dfs_ch_vhtop_ch_freq_seg2,
|
||||
random_chan_list,
|
||||
random_chan_cnt);
|
||||
|
|
@ -591,7 +607,7 @@ uint8_t dfs_prepare_random_channel(struct wlan_dfs *dfs,
|
|||
(target_ch ==
|
||||
DFS_ADJACENT_WEATHER_RADAR_CHANNEL_NUM) &&
|
||||
(*ch_wd == DFS_CH_WIDTH_40MHZ)) {
|
||||
dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"skip weather adjacent ch=%d\n",
|
||||
target_ch);
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Reference in a new issue