From 3bd52b06e9274850cabffc483dd2f2bdc00ff259 Mon Sep 17 00:00:00 2001 From: Zhu Jianmin Date: Mon, 11 Jun 2018 19:03:39 +0800 Subject: [PATCH] qcacmn: ini parameter to allow STA+SAP SCC on LTE coex channel When Force SCC and STA+SAP SCC on LTE coex channel are enabled: 1. When STA on LTE coex channel, start SAP, select STA channel. 2. When SAP on, connect STA on LTE coex channel, then switch SAP channel to STA channel. Change-Id: I7864e0ab2655c3bee95154ea4dedfb60fe8689e4 CRs-Fixed: 2261226 --- .../policy_mgr/inc/wlan_policy_mgr_api.h | 10 ++++++++++ .../policy_mgr/inc/wlan_policy_mgr_public_struct.h | 1 + .../policy_mgr/src/wlan_policy_mgr_action.c | 5 +++-- .../policy_mgr/src/wlan_policy_mgr_get_set_utils.c | 13 +++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h b/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h index 3ba1cce50467..7ddc73f0f8f6 100644 --- a/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h +++ b/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h @@ -2336,4 +2336,14 @@ bool policy_mgr_dual_beacon_on_single_mac_scc_capable( bool policy_mgr_dual_beacon_on_single_mac_mcc_capable( struct wlan_objmgr_psoc *psoc); +/** + * policy_mgr_sta_sap_scc_on_lte_coex_chan() - get capability that + * whether support sta sap scc on lte coex chan + * @psoc: pointer to soc + * + * Return: bool: capable + */ +bool policy_mgr_sta_sap_scc_on_lte_coex_chan( + struct wlan_objmgr_psoc *psoc); + #endif /* __WLAN_POLICY_MGR_API_H */ diff --git a/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h b/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h index 7bf2f876ec83..2d7f61042574 100644 --- a/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h +++ b/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h @@ -1024,6 +1024,7 @@ struct policy_mgr_user_cfg { bool sub_20_mhz_enabled; bool is_sta_sap_scc_allowed_on_dfs_chan; uint32_t channel_select_logic_conc; + uint32_t sta_sap_scc_on_lte_coex_chan; }; /** diff --git a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c index 553356679170..c000c8a93657 100644 --- a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c +++ b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c @@ -887,9 +887,10 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check( if (policy_mgr_valid_sta_channel_check(psoc, channel)) { if (wlan_reg_is_dfs_ch(pm_ctx->pdev, channel) || - wlan_reg_is_passive_or_disable_ch( + wlan_reg_is_passive_or_disable_ch( pm_ctx->pdev, channel) || - !policy_mgr_is_safe_channel(psoc, channel)) { + !(policy_mgr_sta_sap_scc_on_lte_coex_chan(psoc) || + policy_mgr_is_safe_channel(psoc, channel))) { if (policy_mgr_is_hw_dbs_capable(psoc)) { temp_channel = policy_mgr_get_alternate_channel_for_sap(psoc); diff --git a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c index e76057c32e63..b733b71abfa5 100644 --- a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +++ b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c @@ -3074,3 +3074,16 @@ bool policy_mgr_dual_beacon_on_single_mac_mcc_capable( policy_mgr_debug("Not support dual beacon on different channel on single MAC"); return false; } + +bool policy_mgr_sta_sap_scc_on_lte_coex_chan( + struct wlan_objmgr_psoc *psoc) +{ + struct policy_mgr_psoc_priv_obj *pm_ctx; + + pm_ctx = policy_mgr_get_context(psoc); + if (!pm_ctx) { + policy_mgr_err("Invalid Context"); + return false; + } + return pm_ctx->user_cfg.sta_sap_scc_on_lte_coex_chan; +}