diff --git a/umac/dfs/core/src/misc/dfs_nol.c b/umac/dfs/core/src/misc/dfs_nol.c index b2a9831e9ae0..31f096c299e8 100644 --- a/umac/dfs/core/src/misc/dfs_nol.c +++ b/umac/dfs/core/src/misc/dfs_nol.c @@ -680,9 +680,11 @@ void dfs_nol_free_list(struct wlan_dfs *dfs) dfs->dfs_nol = NULL; } +#ifdef CONFIG_CHAN_FREQ_API void dfs_nol_timer_cleanup(struct wlan_dfs *dfs) { struct dfs_nolelem *nol; + uint16_t nol_freq; while (true) { WLAN_DFSNOL_LOCK(dfs); @@ -691,7 +693,13 @@ void dfs_nol_timer_cleanup(struct wlan_dfs *dfs) if (nol) { dfs->dfs_nol = nol->nol_next; dfs->dfs_nol_count--; + nol_freq = nol->nol_freq; WLAN_DFSNOL_UNLOCK(dfs); + utils_dfs_reg_update_nol_chan_for_freq( + dfs->dfs_pdev_obj, + &nol_freq, + 1, + DFS_NOL_RESET); qdf_timer_free(&nol->nol_timer); qdf_mem_free(nol); @@ -701,6 +709,37 @@ void dfs_nol_timer_cleanup(struct wlan_dfs *dfs) } } } +#else +#ifdef CONFIG_CHAN_NUM_API +void dfs_nol_timer_cleanup(struct wlan_dfs *dfs) +{ + struct dfs_nolelem *nol; + uint8_t nol_chan; + + while (true) { + WLAN_DFSNOL_LOCK(dfs); + + nol = dfs->dfs_nol; + if (nol) { + dfs->dfs_nol = nol->nol_next; + dfs->dfs_nol_count--; + nol_chan = utils_dfs_freq_to_chan(nol->nol_freq); + WLAN_DFSNOL_UNLOCK(dfs); + utils_dfs_reg_update_nol_ch(dfs->dfs_pdev_obj, + &nol_chan, + 1, + DFS_NOL_RESET); + + qdf_timer_free(&nol->nol_timer); + qdf_mem_free(nol); + } else { + WLAN_DFSNOL_UNLOCK(dfs); + break; + } + } +} +#endif +#endif void dfs_nol_workqueue_cleanup(struct wlan_dfs *dfs) {