mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 16:46:15 -04:00
Merge "qcacld-3.0: Add new STA-SAP on DFS chan INI config mode" into wlan-cld3.driver.lnx.2.0
This commit is contained in:
commit
90f4eff29d
5 changed files with 146 additions and 5 deletions
|
|
@ -64,6 +64,27 @@ typedef const enum policy_mgr_conc_next_action
|
|||
((channel_select_logic_conc & PM_FW_MODE_STA_P2P_BIT_MASK) >> \
|
||||
PM_FW_MODE_STA_P2P_BIT_POS)
|
||||
|
||||
/**
|
||||
* enum PM_AP_DFS_MASTER_MODE - AP dfs master mode
|
||||
* @PM_STA_SAP_ON_DFS_DEFAULT - Disallow STA+SAP SCC on DFS channel
|
||||
* @PM_STA_SAP_ON_DFS_MASTER_MODE_DISABLED - Allow STA+SAP SCC
|
||||
* on DFS channel with master mode disabled
|
||||
* @PM_STA_SAP_ON_DFS_MASTER_MODE_FLEX - enhance
|
||||
* "PM_STA_SAP_ON_DFS_MASTER_MODE_DISABLED" with below requirement:
|
||||
* a. Allow single SAP (GO) start on DFS channel.
|
||||
* b. Allow CAC process on DFS channel in single SAP (GO) mode
|
||||
* c. Allow DFS radar event process in single SAP (GO) mode
|
||||
* d. Disallow CAC and radar event process in SAP (GO) + STA mode.
|
||||
*
|
||||
* This enum value will be used to set to INI g_sta_sap_scc_on_dfs_chan to
|
||||
* config the sta+sap on dfs channel behaviour expected by user.
|
||||
*/
|
||||
enum PM_AP_DFS_MASTER_MODE {
|
||||
PM_STA_SAP_ON_DFS_DEFAULT,
|
||||
PM_STA_SAP_ON_DFS_MASTER_MODE_DISABLED,
|
||||
PM_STA_SAP_ON_DFS_MASTER_MODE_FLEX,
|
||||
};
|
||||
|
||||
/**
|
||||
* policy_mgr_get_allow_mcc_go_diff_bi() - to get information on whether GO
|
||||
* can have diff BI than STA in MCC
|
||||
|
|
@ -130,6 +151,33 @@ QDF_STATUS policy_mgr_get_force_1x1(struct wlan_objmgr_psoc *psoc,
|
|||
QDF_STATUS
|
||||
policy_mgr_get_sta_sap_scc_on_dfs_chnl(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *sta_sap_scc_on_dfs_chnl);
|
||||
|
||||
/**
|
||||
* policy_mgr_get_dfs_master_dynamic_enabled() - support dfs master or not
|
||||
* on AP interafce when STA+SAP(GO) concurrency
|
||||
* @psoc: pointer to psoc
|
||||
* @vdev_id: sap vdev id
|
||||
*
|
||||
* This API is used to check AP dfs master functionality enabled or not when
|
||||
* STA+SAP(GO) concurrency.
|
||||
* If g_sta_sap_scc_on_dfs_chan is non-zero, the STA+SAP(GO) concurrency
|
||||
* is allowed on DFS channel SCC and the SAP's DFS master functionality
|
||||
* should be enable/disable according to:
|
||||
* 1. g_sta_sap_scc_on_dfs_chan is 0: function return true - dfs master
|
||||
* capability enabled.
|
||||
* 2. g_sta_sap_scc_on_dfs_chan is 1: function return false - dfs master
|
||||
* capability disabled.
|
||||
* 3. g_sta_sap_scc_on_dfs_chan is 2: dfs master capability based on STA on
|
||||
* 5G or not:
|
||||
* a. 5G STA active - return false
|
||||
* b. no 5G STA active -return true
|
||||
*
|
||||
* Return: true if dfs master functionality should be enabled.
|
||||
*/
|
||||
bool
|
||||
policy_mgr_get_dfs_master_dynamic_enabled(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* policy_mgr_get_sta_sap_scc_lte_coex_chnl() - to find out if STA & SAP
|
||||
* SCC is allowed on LTE COEX
|
||||
|
|
|
|||
|
|
@ -386,14 +386,18 @@ CFG_INI_UINT("gDualMacFeatureDisable", 0, 6, 0, CFG_VALUE_OR_DEFAULT, \
|
|||
* g_sta_sap_scc_on_dfs_chan - Allow STA+SAP SCC on DFS channel with master
|
||||
* mode support disabled.
|
||||
* @Min: 0
|
||||
* @Max: 1
|
||||
* @Max: 2
|
||||
* @Default: 0
|
||||
*
|
||||
* This ini is used to allow STA+SAP SCC on DFS channel with master mode
|
||||
* support disabled.
|
||||
* support disabled, the value is defined by enum PM_AP_DFS_MASTER_MODE.
|
||||
* 0 - Disallow STA+SAP SCC on DFS channel
|
||||
* 1 - Allow STA+SAP SCC on DFS channel with master mode disabled
|
||||
*
|
||||
* 2 - enhance "1" with below requirement
|
||||
* a. Allow single SAP (GO) start on DFS channel.
|
||||
* b. Allow CAC process on DFS channel in single SAP (GO) mode
|
||||
* c. Allow DFS radar event process in single SAP (GO) mode
|
||||
* d. Disallow CAC and radar event process in SAP (GO) + STA mode.
|
||||
* Related: None.
|
||||
*
|
||||
* Supported Feature: Non-DBS, DBS
|
||||
|
|
@ -404,7 +408,7 @@ CFG_INI_UINT("gDualMacFeatureDisable", 0, 6, 0, CFG_VALUE_OR_DEFAULT, \
|
|||
*/
|
||||
|
||||
#define CFG_STA_SAP_SCC_ON_DFS_CHAN \
|
||||
CFG_INI_UINT("g_sta_sap_scc_on_dfs_chan", 0, 1, 0, CFG_VALUE_OR_DEFAULT, \
|
||||
CFG_INI_UINT("g_sta_sap_scc_on_dfs_chan", 0, 2, 0, CFG_VALUE_OR_DEFAULT, \
|
||||
"Allow STA+SAP SCC on DFS channel with master mode disable")
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -227,6 +227,33 @@ ucfg_policy_mgr_get_sta_sap_scc_on_dfs_chnl(struct wlan_objmgr_psoc *psoc,
|
|||
QDF_STATUS
|
||||
ucfg_policy_mgr_get_sta_sap_scc_lte_coex_chnl(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *sta_sap_scc_lte_coex);
|
||||
|
||||
/**
|
||||
* ucfg_policy_mgr_get_dfs_master_dynamic_enabled() - support dfs master or not
|
||||
* AP interface when STA+SAP(GO) concurrency
|
||||
* @psoc: pointer to psoc
|
||||
* @vdev_id: sap vdev id
|
||||
*
|
||||
* This API is used to check SAP (GO) dfs master functionality enabled or not
|
||||
* when STA+SAP(GO) concurrency.
|
||||
* If g_sta_sap_scc_on_dfs_chan is non-zero, the STA+SAP(GO) is allowed on DFS
|
||||
* channel SCC and the SAP's DFS master functionality should be enable/disable
|
||||
* according to:
|
||||
* 1. g_sta_sap_scc_on_dfs_chan is 0: function return true - dfs master
|
||||
* capability enabled.
|
||||
* 2. g_sta_sap_scc_on_dfs_chan is 1: function return false - dfs master
|
||||
* capability disabled.
|
||||
* 3. g_sta_sap_scc_on_dfs_chan is 2: dfs master capability based on STA on
|
||||
* 5G or not:
|
||||
* a. 5G STA active - return false
|
||||
* b. no 5G STA active -return true
|
||||
*
|
||||
* Return: true if dfs master functionality should be enabled.
|
||||
*/
|
||||
bool
|
||||
ucfg_policy_mgr_get_dfs_master_dynamic_enabled(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* ucfg_policy_mgr_get_sap_mandt_chnl() - to find out if SAP mandatory channel
|
||||
* support is enabled
|
||||
|
|
|
|||
|
|
@ -116,6 +116,61 @@ policy_mgr_get_sta_sap_scc_on_dfs_chnl(struct wlan_objmgr_psoc *psoc,
|
|||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool
|
||||
policy_mgr_get_dfs_master_dynamic_enabled(
|
||||
struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
||||
{
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
bool sta_on_5g = false;
|
||||
bool sta_on_2g = false;
|
||||
uint32_t i;
|
||||
bool enable;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
policy_mgr_err("pm_ctx is NULL");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!pm_ctx->cfg.sta_sap_scc_on_dfs_chnl)
|
||||
return true;
|
||||
if (pm_ctx->cfg.sta_sap_scc_on_dfs_chnl ==
|
||||
PM_STA_SAP_ON_DFS_MASTER_MODE_DISABLED)
|
||||
return false;
|
||||
if (pm_ctx->cfg.sta_sap_scc_on_dfs_chnl !=
|
||||
PM_STA_SAP_ON_DFS_MASTER_MODE_FLEX) {
|
||||
policy_mgr_debug("sta_sap_scc_on_dfs_chnl %d unknown",
|
||||
pm_ctx->cfg.sta_sap_scc_on_dfs_chnl);
|
||||
return true;
|
||||
}
|
||||
|
||||
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
|
||||
for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) {
|
||||
if (!((pm_conc_connection_list[i].vdev_id != vdev_id) &&
|
||||
pm_conc_connection_list[i].in_use &&
|
||||
(pm_conc_connection_list[i].mode == PM_STA_MODE ||
|
||||
pm_conc_connection_list[i].mode == PM_P2P_CLIENT_MODE)))
|
||||
continue;
|
||||
if (WLAN_REG_IS_5GHZ_CH(pm_conc_connection_list[i].chan))
|
||||
sta_on_5g = true;
|
||||
else
|
||||
sta_on_2g = true;
|
||||
}
|
||||
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
|
||||
|
||||
if (policy_mgr_is_hw_dbs_capable(psoc) && !sta_on_5g)
|
||||
enable = true;
|
||||
else if (!sta_on_5g && !sta_on_2g)
|
||||
enable = true;
|
||||
else
|
||||
enable = false;
|
||||
policy_mgr_debug("sta_sap_scc_on_dfs_chnl %d sta_on_2g %d sta_on_5g %d enable %d",
|
||||
pm_ctx->cfg.sta_sap_scc_on_dfs_chnl, sta_on_2g,
|
||||
sta_on_5g, enable);
|
||||
|
||||
return enable;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
policy_mgr_get_sta_sap_scc_lte_coex_chnl(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *sta_sap_scc_lte_coex)
|
||||
|
|
|
|||
|
|
@ -188,6 +188,13 @@ ucfg_policy_mgr_get_sta_sap_scc_on_dfs_chnl(struct wlan_objmgr_psoc *psoc,
|
|||
sta_sap_scc_on_dfs_chnl);
|
||||
}
|
||||
|
||||
bool
|
||||
ucfg_policy_mgr_get_dfs_master_dynamic_enabled(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
return policy_mgr_get_dfs_master_dynamic_enabled(psoc, vdev_id);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
ucfg_policy_mgr_get_sta_sap_scc_lte_coex_chnl(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *sta_sap_scc_lte_coex)
|
||||
|
|
|
|||
Loading…
Reference in a new issue