diff options
author | Dewey Lee <dewey.lee@broadcom.corp-partner.google.com> | 2022-12-02 16:27:58 +0900 |
---|---|---|
committer | Paul Chen <chenpaul@google.com> | 2023-02-14 07:27:04 +0000 |
commit | 1ce7566fc7219fccd95b6c5877bff89f4e3913b5 (patch) | |
tree | 10aa9fc6058363cab3c88fd118614f615b2b8c48 | |
parent | 923c48152572a65bb7469f30d2df8ea3238dfdbb (diff) | |
download | bcm4389-1ce7566fc7219fccd95b6c5877bff89f4e3913b5.tar.gz |
bcmdhd: Fixed the ACS 2G SCC case
In b/252867295, we fixed the ACS to avoid a restricted channel for SCC case and modified the “per_chan_info” iovar to be called from one place, so wl_check_active_2g_chan() was removed and was replaced to other functions.
However, the fix for b/252867295 didn't handle 2G SCC case properly when STA was connected to 2G restricted channel like Ch13 on India(IN/0) country.
Thus, fixed the ACS 2G SCC case to get original functionality at the same location.
Bug: 260162012
Test: Verified with Pixel device
Signed-off-by: Dewey Lee <dewey.lee@broadcom.corp-partner.google.com>
Change-Id: I7cab75234e87fb6e5eb1093466e45ca114e20b17
-rw-r--r-- | wl_cfgscan.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/wl_cfgscan.c b/wl_cfgscan.c index d665851..ec57136 100644 --- a/wl_cfgscan.c +++ b/wl_cfgscan.c @@ -6519,7 +6519,8 @@ bool wl_check_active_2g_chan(struct bcm_cfg80211 *cfg, drv_acs_params_t *paramet #ifdef WL_CELLULAR_CHAN_AVOID if (wl_cellavoid_mandatory_isset(cfg->cellavoid_info, NL80211_IFTYPE_AP) && !wl_cellavoid_is_safe(cfg->cellavoid_info, sta_chanspec)) { - WL_INFORM_MEM(("Not allow unsafe channel and mandatory chspec:0x%x\n", + WL_INFORM_MEM(( + "Not allow unsafe channel and mandatory chspec:0x%x\n", sta_chanspec)); goto exit; } @@ -7045,11 +7046,14 @@ wl_acs_check_scc(struct bcm_cfg80211 *cfg, drv_acs_params_t *parameter, */ if (scc == FALSE && CHSPEC_IS2G(sta_chanspec)) { #ifdef WL_CELLULAR_CHAN_AVOID - scc = wl_cellavoid_operation_allowed(cfg->cellavoid_info, - sta_chanspec, NL80211_IFTYPE_AP); - if (scc == FALSE) { - WL_INFORM_MEM(("Not allow unsafe channel and mandatory chspec:0x%x\n", - sta_chanspec)); + if (!wl_is_chanspec_restricted(cfg, sta_chanspec)) { + scc = wl_cellavoid_operation_allowed(cfg->cellavoid_info, + sta_chanspec, NL80211_IFTYPE_AP); + if (scc == FALSE) { + WL_INFORM_MEM(( + "Not allow unsafe channel and mandatory chspec:0x%x\n", + sta_chanspec)); + } } #endif /* WL_CELLULAR_CHAN_AVOID */ } @@ -7129,8 +7133,7 @@ wl_handle_acs_concurrency_cases(struct bcm_cfg80211 *cfg, drv_acs_params_t *para bool scc_case = false; u32 sta_band = CHSPEC_TO_WLC_BAND(chspec); if (sta_band == WLC_BAND_2G) { - if (wl_is_chanspec_restricted(cfg, chspec) || - (parameter->freq_bands & (WLC_BAND_5G | WLC_BAND_6G))) { + if (parameter->freq_bands & (WLC_BAND_5G | WLC_BAND_6G)) { /* Remove the 2g band from incoming ACS bands */ parameter->freq_bands &= ~WLC_BAND_2G; } else if (wl_acs_check_scc(cfg, parameter, chspec, qty, pList)) { |