From ef3473af12b31ffa6b2bcecf66f78b01a25080f1 Mon Sep 17 00:00:00 2001 From: Krupali Dhanvijay Date: Mon, 28 Aug 2023 13:23:03 +0530 Subject: [PATCH] qcacmn: Update set_disable_channel_list cmd for 6 GHz channels Currently SET_DISABLE_CHANNEL_LIST command is used to disable legacy channels only. Update this command to accept frequency for all the bands along with the channel numbers from legacy (2.4 GHz/5 GHz) and update the channel state in secondary channel list also. Change-Id: Iecc9f73dca65900d82a2f2a044cb854cea58c638 CRs-Fixed: 3601253 --- .../regulatory/core/src/reg_build_chan_list.c | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/umac/regulatory/core/src/reg_build_chan_list.c b/umac/regulatory/core/src/reg_build_chan_list.c index 825d03469a52..6059b406d57b 100644 --- a/umac/regulatory/core/src/reg_build_chan_list.c +++ b/umac/regulatory/core/src/reg_build_chan_list.c @@ -722,7 +722,9 @@ static void reg_modify_chan_list_for_cached_channels( { uint32_t i, j; uint32_t num_cache_channels = pdev_priv_obj->num_cache_channels; - struct regulatory_channel *chan_list = pdev_priv_obj->cur_chan_list; + struct regulatory_channel *cur_chan_list = pdev_priv_obj->cur_chan_list; + struct regulatory_channel *sec_chan_list = + pdev_priv_obj->secondary_cur_chan_list; struct regulatory_channel *cache_chan_list = pdev_priv_obj->cache_disable_chan_list; @@ -730,15 +732,24 @@ static void reg_modify_chan_list_for_cached_channels( return; if (pdev_priv_obj->disable_cached_channels) { - for (i = 0; i < num_cache_channels; i++) - for (j = 0; j < NUM_CHANNELS; j++) + for (i = 0; i < num_cache_channels; i++) { + for (j = 0; j < NUM_CHANNELS; j++) { if (cache_chan_list[i].center_freq == - chan_list[j].center_freq) { - chan_list[j].state = + cur_chan_list[j].center_freq) { + cur_chan_list[j].state = CHANNEL_STATE_DISABLE; - chan_list[j].chan_flags |= + cur_chan_list[j].chan_flags |= REGULATORY_CHAN_DISABLED; } + if (cache_chan_list[i].center_freq == + sec_chan_list[j].center_freq) { + sec_chan_list[j].state = + CHANNEL_STATE_DISABLE; + sec_chan_list[j].chan_flags |= + REGULATORY_CHAN_DISABLED; + } + } + } } } #else @@ -1278,8 +1289,6 @@ void reg_compute_pdev_current_chan_list(struct wlan_regulatory_pdev_priv_obj reg_modify_chan_list_for_chan_144(pdev_priv_obj->cur_chan_list, pdev_priv_obj->en_chan_144); - reg_modify_chan_list_for_cached_channels(pdev_priv_obj); - reg_modify_chan_list_for_srd_channels(pdev_priv_obj->pdev_ptr, pdev_priv_obj->cur_chan_list); @@ -1292,6 +1301,8 @@ void reg_compute_pdev_current_chan_list(struct wlan_regulatory_pdev_priv_obj cur_chan_list); reg_populate_secondary_cur_chan_list(pdev_priv_obj); + + reg_modify_chan_list_for_cached_channels(pdev_priv_obj); } void reg_reset_reg_rules(struct reg_rule_info *reg_rules)