mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
qcacmn: Add 6G support for DFS Random channel selection
Add 6G support for DFS Random channel selection to move to a 6G target channel in the event of a radar on a radio that supports both 5G and 6G channels. Change-Id: I1ad65b36feba65b6bbc3affc243aae1beb12960c CRs-Fixed: 2727958
This commit is contained in:
parent
9949f46e04
commit
e808bb0cce
3 changed files with 50 additions and 3 deletions
|
|
@ -87,8 +87,13 @@
|
|||
/* Frequency difference between 80+80 MHz */
|
||||
#define DFS_80P80M_FREQ_DIFF 40
|
||||
|
||||
#ifdef CONFIG_BAND_6GHZ
|
||||
/* Number of 80MHz channels in 5GHz and 6GHz band */
|
||||
#define DFS_MAX_80MHZ_BANDS (6 + 14)
|
||||
#else
|
||||
/* Number of 80MHz channels in 5GHz band */
|
||||
#define DFS_MAX_80MHZ_BANDS 6
|
||||
#endif
|
||||
|
||||
/* Start channel and center channel diff in 80Mhz */
|
||||
#define DFS_80MHZ_START_CENTER_CH_DIFF 6
|
||||
|
|
|
|||
|
|
@ -910,7 +910,13 @@ dfs_mark_leaking_ch(struct wlan_dfs *dfs,
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
|
||||
#ifdef CONFIG_BAND_6GHZ
|
||||
#define END_CHAN_INDEX CHAN_ENUM_7115
|
||||
#else
|
||||
#define END_CHAN_INDEX CHAN_ENUM_5720
|
||||
#endif
|
||||
|
||||
#define START_CHAN_INDEX CHAN_ENUM_5180
|
||||
QDF_STATUS
|
||||
dfs_mark_leaking_chan_for_freq(struct wlan_dfs *dfs,
|
||||
|
|
@ -1538,6 +1544,37 @@ static uint8_t dfs_find_ch_with_fallback(
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BAND_6GHZ
|
||||
/**
|
||||
* dfs_assign_6g_channels()- Assign the center frequency of the first 20 MHZ
|
||||
* channel in every 80MHz channel, present in the 6G band.
|
||||
* @ch_map: Pointer to ch_map.
|
||||
*
|
||||
* Return: Void
|
||||
*/
|
||||
static void dfs_assign_6g_channels(struct chan_bonding_bitmap *ch_map)
|
||||
{
|
||||
ch_map->chan_bonding_set[6].start_chan_freq = 5955;
|
||||
ch_map->chan_bonding_set[7].start_chan_freq = 6035;
|
||||
ch_map->chan_bonding_set[8].start_chan_freq = 6115;
|
||||
ch_map->chan_bonding_set[9].start_chan_freq = 6195;
|
||||
ch_map->chan_bonding_set[10].start_chan_freq = 6275;
|
||||
ch_map->chan_bonding_set[11].start_chan_freq = 6355;
|
||||
ch_map->chan_bonding_set[12].start_chan_freq = 6435;
|
||||
ch_map->chan_bonding_set[13].start_chan_freq = 6515;
|
||||
ch_map->chan_bonding_set[14].start_chan_freq = 6595;
|
||||
ch_map->chan_bonding_set[15].start_chan_freq = 6675;
|
||||
ch_map->chan_bonding_set[16].start_chan_freq = 6755;
|
||||
ch_map->chan_bonding_set[17].start_chan_freq = 6835;
|
||||
ch_map->chan_bonding_set[18].start_chan_freq = 6915;
|
||||
ch_map->chan_bonding_set[19].start_chan_freq = 6995;
|
||||
}
|
||||
#else
|
||||
static inline void dfs_assign_6g_channels(struct chan_bonding_bitmap *ch_map)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_find_ch_with_fallback_for_freq()- find random channel
|
||||
* @dfs: Pointer to DFS structure.
|
||||
|
|
@ -1574,6 +1611,7 @@ static uint16_t dfs_find_ch_with_fallback_for_freq(struct wlan_dfs *dfs,
|
|||
ch_map.chan_bonding_set[4].start_chan_freq = 5660;
|
||||
ch_map.chan_bonding_set[5].start_chan_freq = 5745;
|
||||
|
||||
dfs_assign_6g_channels(&ch_map);
|
||||
for (i = 0; i < num_chan; i++) {
|
||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||
"channel = %d added to bitmap", freq_lst[i]);
|
||||
|
|
|
|||
|
|
@ -771,11 +771,12 @@ static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
|
|||
{
|
||||
struct dfs_channel *tmp_chan_list = NULL;
|
||||
struct wlan_dfs *dfs;
|
||||
bool is_curchan_6g;
|
||||
bool is_curchan_5g;
|
||||
bool is_curchan_24g;
|
||||
bool is_curchan_49g;
|
||||
uint32_t chan_num;
|
||||
uint32_t center_freq;
|
||||
uint8_t chan_num;
|
||||
uint16_t center_freq;
|
||||
uint16_t flagext;
|
||||
int i, j = 0;
|
||||
|
||||
|
|
@ -793,6 +794,7 @@ static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
|
|||
|
||||
chan_num = dfs->dfs_curchan->dfs_ch_ieee;
|
||||
center_freq = dfs->dfs_curchan->dfs_ch_freq;
|
||||
is_curchan_6g = WLAN_REG_IS_6GHZ_CHAN_FREQ(center_freq);
|
||||
is_curchan_5g = WLAN_REG_IS_5GHZ_CH_FREQ(center_freq);
|
||||
is_curchan_24g = WLAN_REG_IS_24GHZ_CH_FREQ(center_freq);
|
||||
is_curchan_49g = WLAN_REG_IS_49GHZ_FREQ(center_freq);
|
||||
|
|
@ -805,7 +807,9 @@ static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
|
|||
if (!dfs_mlme_check_allowed_prim_chanlist(pdev, center_freq))
|
||||
continue;
|
||||
|
||||
if ((is_curchan_5g) && WLAN_REG_IS_5GHZ_CH_FREQ(center_freq)) {
|
||||
if (((is_curchan_5g) || is_curchan_6g) &&
|
||||
(WLAN_REG_IS_5GHZ_CH_FREQ(center_freq) ||
|
||||
WLAN_REG_IS_6GHZ_CHAN_FREQ(center_freq))) {
|
||||
chan_list[j].dfs_ch_ieee = chan_num;
|
||||
chan_list[j].dfs_ch_freq = center_freq;
|
||||
chan_list[j].dfs_ch_flagext = flagext;
|
||||
|
|
|
|||
Loading…
Reference in a new issue