diff --git a/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c b/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c index a3e34fb7dd79..e8269e69fa64 100644 --- a/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c +++ b/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c @@ -361,9 +361,13 @@ static uint8_t dfs_find_radar_affected_subchans(struct wlan_dfs *dfs, uint8_t *channels, uint32_t freq_center) { - int i; + int i, j; + uint8_t num_radar_subchans; uint32_t flag; int32_t sidx; + uint8_t candidate_subchan; + uint8_t cur_subchans[NUM_CHANNELS_160MHZ]; + uint8_t n_cur_subchans; struct dfs_channel *curchan = dfs->dfs_curchan; struct freqs_offsets freq_offset; @@ -409,13 +413,25 @@ static uint8_t dfs_find_radar_affected_subchans(struct wlan_dfs *dfs, return 0; } - for (i = 0; i < DFS_NUM_FREQ_OFFSET; i++) { - channels[i] = utils_dfs_freq_to_chan(freq_offset.freq[i]); - dfs_info(dfs, WLAN_DEBUG_DFS, "offset=%d, channel=%d", - i, channels[i]); - } + n_cur_subchans = dfs_get_bonding_channels(dfs, curchan, + radar_found->segment_id, + cur_subchans); - return i; + for (i = 0, num_radar_subchans = 0; i < DFS_NUM_FREQ_OFFSET; i++) { + candidate_subchan = utils_dfs_freq_to_chan(freq_offset.freq[i]); + for (j = 0; j < n_cur_subchans; j++) { + if (cur_subchans[j] == candidate_subchan) { + channels[num_radar_subchans++] = + candidate_subchan; + dfs_info(dfs, WLAN_DEBUG_DFS, + "offset=%d, channel=%d", + num_radar_subchans, + channels[num_radar_subchans - 1]); + break; + } + } + } + return num_radar_subchans; } uint8_t dfs_get_bonding_channels_without_seg_info(struct dfs_channel *chan,