summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDewey Lee <dewey.lee@broadcom.corp-partner.google.com>2022-12-02 16:27:58 +0900
committerPaul Chen <chenpaul@google.com>2023-02-14 07:27:04 +0000
commit1ce7566fc7219fccd95b6c5877bff89f4e3913b5 (patch)
tree10aa9fc6058363cab3c88fd118614f615b2b8c48
parent923c48152572a65bb7469f30d2df8ea3238dfdbb (diff)
downloadbcm4389-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.c19
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)) {