diff --git a/umac/regulatory/core/src/reg_services.c b/umac/regulatory/core/src/reg_services.c index a152cab392f9..27084d21fb04 100644 --- a/umac/regulatory/core/src/reg_services.c +++ b/umac/regulatory/core/src/reg_services.c @@ -2183,16 +2183,27 @@ static void reg_modify_chan_list_for_dfs_channels(struct regulatory_channel } } } + static void reg_modify_chan_list_for_indoor_channels( struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj) { enum channel_enum chan_enum; struct regulatory_channel *chan_list = pdev_priv_obj->cur_chan_list; - if (pdev_priv_obj->indoor_chan_enabled) - return; + if (!pdev_priv_obj->indoor_chan_enabled) { + for (chan_enum = 0; chan_enum < NUM_CHANNELS; chan_enum++) { + if (REGULATORY_CHAN_INDOOR_ONLY & + chan_list[chan_enum].chan_flags) { + chan_list[chan_enum].state = + CHANNEL_STATE_DFS; + chan_list[chan_enum].chan_flags |= + REGULATORY_CHAN_NO_IR; + } + } + } - if (!pdev_priv_obj->force_ssc_disable_indoor_channel) { + if (pdev_priv_obj->force_ssc_disable_indoor_channel && + pdev_priv_obj->sap_state) { for (chan_enum = 0; chan_enum < NUM_CHANNELS; chan_enum++) { if (REGULATORY_CHAN_INDOOR_ONLY & chan_list[chan_enum].chan_flags) { @@ -2202,30 +2213,6 @@ static void reg_modify_chan_list_for_indoor_channels( REGULATORY_CHAN_DISABLED; } } - } else { - - for (chan_enum = 0; chan_enum < NUM_CHANNELS; chan_enum++) { - - if (pdev_priv_obj->sap_state) { - - if (REGULATORY_CHAN_INDOOR_ONLY & - chan_list[chan_enum].chan_flags) { - chan_list[chan_enum].state = - CHANNEL_STATE_DISABLE; - chan_list[chan_enum].chan_flags |= - REGULATORY_CHAN_DISABLED; - } - } else { - - if (REGULATORY_CHAN_INDOOR_ONLY & - chan_list[chan_enum].chan_flags) { - chan_list[chan_enum].state = - CHANNEL_STATE_DFS; - chan_list[chan_enum].chan_flags |= - REGULATORY_CHAN_NO_IR; - } - } - } } }