qcacld-3.0: skip overlap check with vdev on disabled band
When AP_AP work on 5 GHz SCC channel, but then hostapd_cli disable this band, AP_AP can't switch to channel of the other band if force SCC is enabled. The cause is that channel switch is one by one for each AP in hdd_country_change_update_sap(), the first AP's new channel(within the other band) can't pass overlap check from sme_check_concurrent_channel_overlap() against the second AP's working channel(5 GHz band), then cause channel switch failure. To fix this issue, the overlap check(e.g.,for the first AP) should skip any vdevs(e.g.,the second AP) that still work on channels on disabled band, noting that these vdevs will also switch to the other band later. Change-Id: I00ee1038c56dffdc01bcf902d77d1c1365c9c64a CRs-Fixed: 3616777
This commit is contained in:

gecommit door
Ravindra Konda

bovenliggende
1e3c3c688a
commit
bedd3f1f6b
@@ -605,6 +605,7 @@ uint16_t csr_check_concurrent_channel_overlap(struct mac_context *mac_ctx,
|
||||
QDF_STATUS status;
|
||||
enum QDF_OPMODE op_mode;
|
||||
enum phy_ch_width ch_width;
|
||||
enum channel_state state;
|
||||
|
||||
if (mac_ctx->roam.configParam.cc_switch_mode ==
|
||||
QDF_MCC_TO_SCC_SWITCH_DISABLE)
|
||||
@@ -672,6 +673,20 @@ uint16_t csr_check_concurrent_channel_overlap(struct mac_context *mac_ctx,
|
||||
&intf_cfreq, op_mode,
|
||||
cc_switch_mode);
|
||||
}
|
||||
|
||||
if (intf_ch_freq) {
|
||||
state = wlan_reg_get_channel_state_for_pwrmode(
|
||||
mac_ctx->pdev, intf_ch_freq,
|
||||
REG_CURRENT_PWR_MODE);
|
||||
if (state == CHANNEL_STATE_DISABLE ||
|
||||
state == CHANNEL_STATE_INVALID) {
|
||||
sme_debug("skip vdev %d for intf_ch:%d",
|
||||
i, intf_ch_freq);
|
||||
intf_ch_freq = 0;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (intf_ch_freq &&
|
||||
((intf_ch_freq <= wlan_reg_ch_to_freq(CHAN_ENUM_2484) &&
|
||||
sap_ch_freq <= wlan_reg_ch_to_freq(CHAN_ENUM_2484)) ||
|
||||
|
Verwijs in nieuw issue
Block a user