mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 22:40:54 -04:00
qcacld-3.0: 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: I3f3972df43318473342d42012be3a57b8baad965
CRs-Fixed: 2235704
This commit is contained in:
parent
074340dce7
commit
72d32dedba
4 changed files with 50 additions and 3 deletions
|
|
@ -9162,6 +9162,30 @@ enum dot11p_mode {
|
|||
#define CFG_STA_SAP_SCC_ON_DFS_CHAN_MAX (1)
|
||||
#define CFG_STA_SAP_SCC_ON_DFS_CHAN_DEFAULT (0)
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* g_sta_sap_scc_on_lte_coex_chan - Allow STA+SAP SCC on LTE coex channel
|
||||
* @Min: 0
|
||||
* @Max: 1
|
||||
* @Default: 0
|
||||
*
|
||||
* This ini is used to allow STA+SAP SCC on LTE coex channel
|
||||
* 0 - Disallow STA+SAP SCC on LTE coex channel
|
||||
* 1 - Allow STA+SAP SCC on LTE coex channel
|
||||
*
|
||||
* Related: None.
|
||||
*
|
||||
* Supported Feature: Non-DBS, DBS
|
||||
*
|
||||
* Usage: Internal/External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN "g_sta_sap_scc_on_lte_coex_chan"
|
||||
#define CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN_MIN (0)
|
||||
#define CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN_MAX (1)
|
||||
#define CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN_DEFAULT (0)
|
||||
|
||||
/*
|
||||
* gPNOChannelPrediction will allow user to enable/disable the
|
||||
* PNO channel prediction feature.
|
||||
|
|
@ -14794,6 +14818,7 @@ struct hdd_config {
|
|||
uint32_t dual_mac_feature_disable;
|
||||
uint8_t dbs_scan_selection[CFG_DBS_SCAN_PARAM_LENGTH];
|
||||
uint32_t sta_sap_scc_on_dfs_chan;
|
||||
uint32_t sta_sap_scc_on_lte_coex_chan;
|
||||
bool tx_chain_mask_cck;
|
||||
uint8_t tx_chain_mask_1ss;
|
||||
bool smart_chainmask_enabled;
|
||||
|
|
|
|||
|
|
@ -3599,6 +3599,12 @@ struct reg_table_entry g_registry_table[] = {
|
|||
CFG_STA_SAP_SCC_ON_DFS_CHAN_MIN,
|
||||
CFG_STA_SAP_SCC_ON_DFS_CHAN_MAX),
|
||||
|
||||
REG_VARIABLE(CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN, WLAN_PARAM_HexInteger,
|
||||
struct hdd_config, sta_sap_scc_on_lte_coex_chan,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN_DEFAULT,
|
||||
CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN_MIN,
|
||||
CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN_MAX),
|
||||
|
||||
#ifdef FEATURE_WLAN_SCAN_PNO
|
||||
REG_VARIABLE(CFG_PNO_CHANNEL_PREDICTION_NAME, WLAN_PARAM_Integer,
|
||||
|
|
@ -6871,6 +6877,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
|
|||
hdd_debug("Name = [%s] value = [%u]",
|
||||
CFG_STA_SAP_SCC_ON_DFS_CHAN,
|
||||
hdd_ctx->config->sta_sap_scc_on_dfs_chan);
|
||||
hdd_debug("Name = [%s] value = [%u]",
|
||||
CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN,
|
||||
hdd_ctx->config->sta_sap_scc_on_lte_coex_chan);
|
||||
#ifdef FEATURE_WLAN_SCAN_PNO
|
||||
hdd_debug("Name = [%s] Value = [%u]",
|
||||
CFG_PNO_CHANNEL_PREDICTION_NAME,
|
||||
|
|
@ -8427,6 +8436,8 @@ QDF_STATUS hdd_set_policy_mgr_user_cfg(struct hdd_context *hdd_ctx)
|
|||
hdd_ctx->config->sta_sap_scc_on_dfs_chan;
|
||||
user_cfg->channel_select_logic_conc =
|
||||
hdd_ctx->config->channel_select_logic_conc;
|
||||
user_cfg->sta_sap_scc_on_lte_coex_chan =
|
||||
hdd_ctx->config->sta_sap_scc_on_lte_coex_chan;
|
||||
status = policy_mgr_set_user_cfg(hdd_ctx->hdd_psoc, user_cfg);
|
||||
qdf_mem_free(user_cfg);
|
||||
|
||||
|
|
|
|||
|
|
@ -2724,7 +2724,8 @@ int hdd_softap_set_channel_change(struct net_device *dev, int target_channel,
|
|||
status = wlansap_set_channel_change_with_csa(
|
||||
WLAN_HDD_GET_SAP_CTX_PTR(adapter),
|
||||
(uint32_t)target_channel,
|
||||
target_bw, forced);
|
||||
target_bw,
|
||||
forced && !(hdd_ctx->config->sta_sap_scc_on_lte_coex_chan));
|
||||
|
||||
if (QDF_STATUS_SUCCESS != status) {
|
||||
hdd_err("SAP set channel failed for channel: %d, bw: %d",
|
||||
|
|
|
|||
|
|
@ -951,6 +951,9 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
|||
sap_context->channel,
|
||||
sap_context->csr_roamProfile.phyMode,
|
||||
sap_context->cc_switch_mode);
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_DEBUG,
|
||||
FL("After check overlap: con_ch:%d"),
|
||||
con_ch);
|
||||
if (sap_context->cc_switch_mode !=
|
||||
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) {
|
||||
if (QDF_IS_STATUS_ERROR(
|
||||
|
|
@ -963,8 +966,15 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
|||
return QDF_STATUS_E_ABORTED;
|
||||
}
|
||||
}
|
||||
if (con_ch && !wlan_reg_is_dfs_ch(mac_ctx->pdev,
|
||||
con_ch)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_DEBUG,
|
||||
FL("After check concurrency: con_ch:%d"),
|
||||
con_ch);
|
||||
if (con_ch &&
|
||||
(policy_mgr_sta_sap_scc_on_lte_coex_chan(
|
||||
mac_ctx->psoc) ||
|
||||
policy_mgr_is_safe_channel(mac_ctx->psoc,
|
||||
con_ch)) &&
|
||||
!wlan_reg_is_dfs_ch(mac_ctx->pdev, con_ch)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP,
|
||||
QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: Override ch %d to %d due to CC Intf",
|
||||
|
|
|
|||
Loading…
Reference in a new issue