diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index bfce4b53e3be9..8d12daa699033 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -768,29 +768,6 @@ enum hdd_dot11_mode {
#define CFG_OKC_FEATURE_ENABLED_MAX (1)
#define CFG_OKC_FEATURE_ENABLED_DEFAULT (1)
-/*
- *
- * gForce1x1Exception - force 1x1 when connecting to certain peer
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This INI when enabled will force 1x1 connection with certain peer.
- *
- *
- * Related: None
- *
- * Supported Feature: connection
- *
- * Usage: External
- *
- *
- */
-#define CFG_FORCE_1X1_NAME "gForce1x1Exception"
-#define CFG_FORCE_1X1_MIN (0)
-#define CFG_FORCE_1X1_MAX (1)
-#define CFG_FORCE_1X1_DEFAULT (1)
-
#ifdef FEATURE_LFR_SUBNET_DETECTION
/*
*
@@ -2096,30 +2073,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_LINK_SPEED_RSSI_LOW_MAX (0)
#define CFG_LINK_SPEED_RSSI_LOW_DEFAULT (-80)
-/*
- *
- * gEnableOverLapCh - Enables Overlap Channel. If set, allow overlapping
- * channels to be selected for the SoftAP
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to set Overlap Channel
- *
- * Related: None
- *
- * Supported Feature: STA
- *
- * Usage: Internal/External
- *
- *
- */
-
-#define CFG_ENABLE_OVERLAP_CH "gEnableOverLapCh"
-#define CFG_ENABLE_OVERLAP_CH_MIN (0)
-#define CFG_ENABLE_OVERLAP_CH_MAX (1)
-#define CFG_ENABLE_OVERLAP_CH_DEFAULT (0)
-
/*
*
* gFwDebugModuleLoglevel - modulized firmware debug log level
@@ -2172,67 +2125,6 @@ enum hdd_link_speed_rpt_type {
#define HDD_MULTICAST_FILTER_LIST 0x04
#define HDD_MULTICAST_FILTER_LIST_CLEAR 0x05
-/*
- *
- * gEnableSAPManadatoryChanList - Enable SAP Mandatory channel list
- * Options.
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to enable/disable the SAP manadatory chan list
- * 0 - Disable SAP mandatory chan list
- * 1 - Enable SAP mandatory chan list
- *
- * Supported Feature: SAP
- *
- *
- * Usage: Internal/External
- *
- *
- */
-#define CFG_ENABLE_SAP_MANDATORY_CHAN_LIST "gEnableSAPManadatoryChanList"
-#define CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_MIN (0)
-#define CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_MAX (1)
-#define CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_DEFAULT (0)
-
-/*
- *
- * gAllowMCCGODiffBI - Allow GO in MCC mode to accept different beacon interval
- * than STA's.
- * @Min: 0
- * @Max: 4
- * @Default: 4
- *
- * This ini is used to allow GO in MCC mode to accept different beacon interval
- * than STA's.
- * Added for Wi-Fi Cert. 5.1.12
- * If gAllowMCCGODiffBI = 1
- * Set to 1 for WFA certification. GO Beacon interval is not changed.
- * MCC GO doesn't work well in optimized way. In worst scenario, it may
- * invite STA disconnection.
- * If gAllowMCCGODiffBI = 2
- * If set to 2 workaround 1 disassoc all the clients and update beacon
- * Interval.
- * If gAllowMCCGODiffBI = 3
- * If set to 3 tear down the P2P link in auto/Non-autonomous -GO case.
- * If gAllowMCCGODiffBI = 4
- * If set to 4 don't disconnect the P2P client in autonomous/Non-auto-
- * nomous -GO case update the BI dynamically
- *
- * Related: None.
- *
- * Supported Feature: Concurrency
- *
- * Usage: Internal/External
- *
- *
- */
-#define CFG_ALLOW_MCC_GO_DIFF_BI_NAME "gAllowMCCGODiffBI"
-#define CFG_ALLOW_MCC_GO_DIFF_BI_MIN (0)
-#define CFG_ALLOW_MCC_GO_DIFF_BI_MAX (4)
-#define CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT (4)
-
#if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
/*
* Enable/Disable Bad Peer TX CTL feature
@@ -2740,91 +2632,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MIN (0)
#define CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MAX (1)
-/*
- *
- *
- * gDualMacFeatureDisable - Disable Dual MAC feature.
- * @Min: 0
- * @Max: 4
- * @Default: 0
- *
- * This ini is used to enable/disable dual MAC feature.
- * 0 - enable DBS
- * 1 - disable DBS
- * 2 - disable DBS for connection but keep DBS for scan
- * 3 - disable DBS for connection but keep DBS scan with async
- * scan policy disabled
- * 4 - enable DBS for connection as well as for scan with async
- * scan policy disabled
- * 5 - enable DBS for connection but disable DBS for scan.
- * 6 - enable DBS for connection but disable simultaneous scan
- * from upper layer (DBS scan remains enabled in FW).
- *
- * Note: INI item value should match 'enum dbs_support'
- *
- * Related: None.
- *
- * Supported Feature: DBS
- *
- * Usage: Internal/External
- *
- *
- */
-#define CFG_DUAL_MAC_FEATURE_DISABLE "gDualMacFeatureDisable"
-#define CFG_DUAL_MAC_FEATURE_DISABLE_MIN (0)
-#define CFG_DUAL_MAC_FEATURE_DISABLE_MAX (6)
-#define CFG_DUAL_MAC_FEATURE_DISABLE_DEFAULT (0)
-
-/*
- *
- * g_sta_sap_scc_on_dfs_chan - Allow STA+SAP SCC on DFS channel with master
- * mode support disabled.
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to allow STA+SAP SCC on DFS channel with master mode
- * support disabled.
- * 0 - Disallow STA+SAP SCC on DFS channel
- * 1 - Allow STA+SAP SCC on DFS channel with master mode disabled
- *
- * Related: None.
- *
- * Supported Feature: Non-DBS, DBS
- *
- * Usage: Internal/External
- *
- *
- */
-#define CFG_STA_SAP_SCC_ON_DFS_CHAN "g_sta_sap_scc_on_dfs_chan"
-#define CFG_STA_SAP_SCC_ON_DFS_CHAN_MIN (0)
-#define CFG_STA_SAP_SCC_ON_DFS_CHAN_MAX (1)
-#define CFG_STA_SAP_SCC_ON_DFS_CHAN_DEFAULT (0)
-
-/*
- *
- * 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
- *
- *
- */
-#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.
@@ -2998,32 +2805,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_INDOOR_CHANNEL_SUPPORT_MAX (1)
#define CFG_INDOOR_CHANNEL_SUPPORT_DEFAULT (0)
-/*
- *
- * g_mark_sap_indoor_as_disable - Enable/Disable Indoor channel
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to mark the Indoor channel as
- * disable when SAP start and revert it on SAP stop,
- * so SAP will not turn on indoor channel and
- * sta will not scan/associate and roam on indoor
- * channels.
- *
- * Related: If g_mark_sap_indoor_as_disable set, turn the
- * indoor channels to disable and update Wiphy & fw.
- *
- * Supported Feature: SAP/STA
- *
- * Usage: External
- *
- *
- */
-#define CFG_MARK_INDOOR_AS_DISABLE_NAME "g_mark_sap_indoor_as_disable"
-#define CFG_MARK_INDOOR_AS_DISABLE_MIN (0)
-#define CFG_MARK_INDOOR_AS_DISABLE_MAX (1)
-#define CFG_MARK_INDOOR_AS_DISABLE_DEFAULT (0)
/*
*
@@ -4228,7 +4009,6 @@ struct hdd_config {
int32_t linkSpeedRssiHigh;
int32_t linkSpeedRssiMid;
int32_t linkSpeedRssiLow;
- uint8_t allowMCCGODiffBI;
uint8_t thermalMitigationEnable;
uint32_t throttlePeriod;
uint32_t throttle_dutycycle_level0;
@@ -4286,14 +4066,10 @@ struct hdd_config {
uint32_t IpaConfig;
bool IpaClkScalingEnable;
uint8_t gDisableDfsJapanW53;
- bool gEnableOverLapCh;
bool fRegChangeDefCountry;
bool advertiseConcurrentOperation;
-
uint8_t enableFwModuleLogLevel[FW_MODULE_LOG_LEVEL_STRING_LENGTH];
- bool enable_sap_mandatory_chan_list;
-
#ifdef FEATURE_WLAN_FORCE_SAP_SCC
uint8_t SapSccChanAvoidance;
#endif /* FEATURE_WLAN_FORCE_SAP_SCC */
@@ -4310,9 +4086,6 @@ struct hdd_config {
uint8_t go_11ac_override;
uint8_t max_scan_count;
bool etsi13_srd_chan_in_master_mode;
- uint32_t dual_mac_feature_disable;
- uint32_t sta_sap_scc_on_dfs_chan;
- uint32_t sta_sap_scc_on_lte_coex_chan;
uint16_t self_gen_frm_pwr;
#ifdef FEATURE_WLAN_SCAN_PNO
bool pno_channel_prediction;
@@ -4349,8 +4122,6 @@ struct hdd_config {
uint8_t adapt_dwell_wifi_act_threshold;
bool bug_report_for_no_scan_results;
bool indoor_channel_support;
- /* control marking indoor channel passive to disable */
- bool force_ssc_disable_indoor_channel;
uint16_t sap_tx_leakage_threshold;
bool sap_internal_restart;
enum restart_beaconing_on_ch_avoid_rule
@@ -4374,7 +4145,6 @@ struct hdd_config {
uint32_t mawc_nlo_exp_backoff_ratio;
uint32_t mawc_nlo_init_scan_interval;
uint32_t mawc_nlo_max_scan_interval;
- bool is_force_1x1;
enum pmo_auto_pwr_detect_failure_mode auto_pwr_save_fail_mode;
bool enable_11d_in_world_mode;
/* 5G preference parameters for boosting RSSI */
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 8f695ef088918..2c8932b8672aa 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -147,13 +147,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_AP_ENABLE_PROTECTION_MODE_MIN,
CFG_AP_ENABLE_PROTECTION_MODE_MAX),
- REG_VARIABLE(CFG_ENABLE_SAP_MANDATORY_CHAN_LIST, WLAN_PARAM_Integer,
- struct hdd_config, enable_sap_mandatory_chan_list,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_DEFAULT,
- CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_MIN,
- CFG_ENABLE_SAP_MANDATORY_CHAN_LIST_MAX),
-
REG_VARIABLE(CFG_DISABLE_PACKET_FILTER, WLAN_PARAM_Integer,
struct hdd_config, disablePacketFilter,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -364,13 +357,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_LINK_SPEED_RSSI_LOW_MAX,
NULL, 0),
- REG_VARIABLE(CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer,
- struct hdd_config, allowMCCGODiffBI,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT,
- CFG_ALLOW_MCC_GO_DIFF_BI_MIN,
- CFG_ALLOW_MCC_GO_DIFF_BI_MAX),
-
REG_VARIABLE(CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
struct hdd_config, thermalMitigationEnable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -535,13 +521,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MIN,
CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX),
- REG_VARIABLE(CFG_ENABLE_OVERLAP_CH, WLAN_PARAM_Integer,
- struct hdd_config, gEnableOverLapCh,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
- CFG_ENABLE_OVERLAP_CH_DEFAULT,
- CFG_ENABLE_OVERLAP_CH_MIN,
- CFG_ENABLE_OVERLAP_CH_MAX),
-
REG_VARIABLE(CFG_REG_CHANGE_DEF_COUNTRY_NAME, WLAN_PARAM_Integer,
struct hdd_config, fRegChangeDefCountry,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -647,27 +626,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MIN,
CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MAX),
- REG_VARIABLE(CFG_DUAL_MAC_FEATURE_DISABLE, WLAN_PARAM_HexInteger,
- struct hdd_config, dual_mac_feature_disable,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_DUAL_MAC_FEATURE_DISABLE_DEFAULT,
- CFG_DUAL_MAC_FEATURE_DISABLE_MIN,
- CFG_DUAL_MAC_FEATURE_DISABLE_MAX),
-
- REG_VARIABLE(CFG_STA_SAP_SCC_ON_DFS_CHAN, WLAN_PARAM_HexInteger,
- struct hdd_config, sta_sap_scc_on_dfs_chan,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_STA_SAP_SCC_ON_DFS_CHAN_DEFAULT,
- 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,
struct hdd_config, pno_channel_prediction,
@@ -828,14 +786,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_INDOOR_CHANNEL_SUPPORT_MIN,
CFG_INDOOR_CHANNEL_SUPPORT_MAX),
- REG_VARIABLE(CFG_MARK_INDOOR_AS_DISABLE_NAME,
- WLAN_PARAM_Integer,
- struct hdd_config, force_ssc_disable_indoor_channel,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_MARK_INDOOR_AS_DISABLE_DEFAULT,
- CFG_MARK_INDOOR_AS_DISABLE_MIN,
- CFG_MARK_INDOOR_AS_DISABLE_MAX),
-
REG_VARIABLE(CFG_RESTART_BEACONING_ON_CH_AVOID_NAME, WLAN_PARAM_Integer,
struct hdd_config, restart_beaconing_on_chan_avoid_event,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -937,13 +887,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MIN,
CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MAX),
- REG_VARIABLE(CFG_FORCE_1X1_NAME, WLAN_PARAM_Integer,
- struct hdd_config, is_force_1x1,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_FORCE_1X1_DEFAULT,
- CFG_FORCE_1X1_MIN,
- CFG_FORCE_1X1_MAX),
-
REG_VARIABLE(CFG_ENABLE_11D_IN_WORLD_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, enable_11d_in_world_mode,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -2511,10 +2454,6 @@ QDF_STATUS hdd_set_policy_mgr_user_cfg(struct hdd_context *hdd_ctx)
hdd_err("unable to get vht_enable2x2");
user_cfg->sub_20_mhz_enabled = cds_is_sub_20_mhz_enabled();
- user_cfg->is_sta_sap_scc_allowed_on_dfs_chan =
- hdd_ctx->config->sta_sap_scc_on_dfs_chan;
- 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->psoc, user_cfg);
qdf_mem_free(user_cfg);
@@ -2568,7 +2507,7 @@ static
QDF_STATUS hdd_set_sme_cfgs_related_to_plcy_mgr(struct hdd_context *hdd_ctx,
tSmeConfigParams *sme_cfg)
{
- uint8_t mcc_to_scc_switch = 0;
+ uint8_t mcc_to_scc_switch = 0, is_force_1x1 = 0, allow_diff_bi = 0;
uint8_t conc_rule1 = 0, conc_rule2 = 0, sta_cxn_5g = 0;
if (QDF_STATUS_SUCCESS !=
@@ -2603,6 +2542,22 @@ QDF_STATUS hdd_set_sme_cfgs_related_to_plcy_mgr(struct hdd_context *hdd_ctx,
}
sme_cfg->csrConfig.is_sta_connection_in_5gz_enabled = sta_cxn_5g;
+ if (QDF_STATUS_SUCCESS !=
+ ucfg_policy_mgr_get_force_1x1(hdd_ctx->psoc,
+ &is_force_1x1)) {
+ hdd_err("can't get force 1x1 flag");
+ return QDF_STATUS_E_FAILURE;
+ }
+ sme_cfg->csrConfig.is_force_1x1 = is_force_1x1;
+
+ if (QDF_STATUS_SUCCESS !=
+ ucfg_policy_mgr_get_allow_mcc_go_diff_bi(hdd_ctx->psoc,
+ &allow_diff_bi)) {
+ hdd_err("can't get allow mcc go diff BI flag");
+ return QDF_STATUS_E_FAILURE;
+ }
+ sme_cfg->csrConfig.fAllowMCCGODiffBI = allow_diff_bi;
+
return QDF_STATUS_SUCCESS;
}
@@ -2738,8 +2693,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
pConfig->mcc_rts_cts_prot_enable;
smeConfig->csrConfig.mcc_bcast_prob_resp_enable =
pConfig->mcc_bcast_prob_resp_enable;
- smeConfig->csrConfig.fAllowMCCGODiffBI = pConfig->allowMCCGODiffBI;
-
/* Scan Results Aging Time out value */
smeConfig->csrConfig.scanCfgAgingTime = pConfig->scanAgingTimeout;
@@ -2802,9 +2755,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
hdd_ctx->config->wlm_latency_flags_low;
smeConfig->csrConfig.wlm_latency_flags[3] =
hdd_ctx->config->wlm_latency_flags_ultralow;
-
- smeConfig->csrConfig.is_force_1x1 =
- hdd_ctx->config->is_force_1x1;
hdd_set_sme_cfgs_related_to_plcy_mgr(hdd_ctx, smeConfig);
hdd_update_11k_offload_params(hdd_ctx->config,
&smeConfig->csrConfig);
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index f5beb62110969..9349a60c086e2 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -12273,6 +12273,7 @@ int wlan_hdd_cfg80211_init(struct device *dev,
int len_5g_ch = 0, num_ch, ch_arr_size;
int num_dsrc_ch, len_dsrc_ch, num_srd_ch, len_srd_ch;
uint32_t *cipher_suites;
+ uint8_t allow_mcc_go_diff_bi = 0;
hdd_enter();
@@ -12329,6 +12330,10 @@ int wlan_hdd_cfg80211_init(struct device *dev,
| BIT(NL80211_IFTYPE_AP)
| BIT(NL80211_IFTYPE_MONITOR);
+ if (QDF_STATUS_SUCCESS !=
+ ucfg_policy_mgr_get_allow_mcc_go_diff_bi(hdd_ctx->psoc,
+ &allow_mcc_go_diff_bi))
+ hdd_err("can't get mcc_go_diff_bi value, use default");
if (pCfg->advertiseConcurrentOperation) {
if (pCfg->enableMCC) {
int i;
@@ -12336,7 +12341,7 @@ int wlan_hdd_cfg80211_init(struct device *dev,
for (i = 0;
i < ARRAY_SIZE(wlan_hdd_iface_combination);
i++) {
- if (!pCfg->allowMCCGODiffBI)
+ if (!allow_mcc_go_diff_bi)
wlan_hdd_iface_combination[i].
beacon_int_infra_match = true;
}
diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c
index 0a504f1e422cf..86264560077cf 100644
--- a/core/hdd/src/wlan_hdd_hostapd.c
+++ b/core/hdd/src/wlan_hdd_hostapd.c
@@ -2718,6 +2718,7 @@ int hdd_softap_set_channel_change(struct net_device *dev, int target_channel,
struct hdd_adapter *sta_adapter;
struct hdd_station_ctx *sta_ctx;
uint8_t conc_rule1 = 0;
+ uint8_t scc_on_lte_coex = 0;
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
ret = wlan_hdd_validate_context(hdd_ctx);
@@ -2790,6 +2791,15 @@ int hdd_softap_set_channel_change(struct net_device *dev, int target_channel,
qdf_atomic_set(&adapter->dfs_radar_found, 0);
return -EINVAL;
}
+
+ status =
+ ucfg_policy_mgr_get_sta_sap_scc_lte_coex_chnl(hdd_ctx->psoc,
+ &scc_on_lte_coex);
+ if (!QDF_IS_STATUS_SUCCESS(status)) {
+ hdd_err("can't get STA-SAP SCC on lte coex channel setting");
+ qdf_atomic_set(&adapter->dfs_radar_found, 0);
+ return -EINVAL;
+ }
/*
* Post the Channel Change request to SAP.
*/
@@ -2797,7 +2807,7 @@ int hdd_softap_set_channel_change(struct net_device *dev, int target_channel,
WLAN_HDD_GET_SAP_CTX_PTR(adapter),
(uint32_t)target_channel,
target_bw,
- forced && !(hdd_ctx->config->sta_sap_scc_on_lte_coex_chan));
+ forced && !scc_on_lte_coex);
if (QDF_STATUS_SUCCESS != status) {
hdd_err("SAP set channel failed for channel: %d, bw: %d",
@@ -4081,12 +4091,18 @@ QDF_STATUS wlan_hdd_config_acs(struct hdd_context *hdd_ctx,
tsap_config_t *sap_config;
struct hdd_config *ini_config;
mac_handle_t mac_handle;
+ uint8_t is_overlap_enable = 0;
+ QDF_STATUS status;
mac_handle = hdd_ctx->mac_handle;
sap_config = &adapter->session.ap.sap_config;
ini_config = hdd_ctx->config;
- sap_config->enOverLapCh = !!hdd_ctx->config->gEnableOverLapCh;
+ status = ucfg_policy_mgr_get_enable_overlap_chnl(hdd_ctx->psoc,
+ &is_overlap_enable);
+ if (status != QDF_STATUS_SUCCESS)
+ hdd_err("can't get overlap channel INI value, using default");
+ sap_config->enOverLapCh = !!is_overlap_enable;
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
hdd_debug("HDD_ACS_SKIP_STATUS = %d", hdd_ctx->skip_acs_scan_status);
@@ -4625,7 +4641,8 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
enum dfs_mode mode;
struct hdd_adapter *sta_adapter;
bool ignore_cac = 0;
- uint8_t beacon_fixed_len;
+ uint8_t is_overlap_enable = 0, scc_on_dfs_chan = 0;
+ uint8_t beacon_fixed_len, indoor_chnl_marking = 0;
int value;
bool val;
uint32_t tx_leakage_threshold = 0;
@@ -4713,8 +4730,12 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
goto free;
}
+ if (QDF_STATUS_SUCCESS !=
+ ucfg_policy_mgr_get_indoor_chnl_marking(hdd_ctx->psoc,
+ &indoor_chnl_marking))
+ hdd_err("can't get indoor channel marking, using default");
/* Mark the indoor channel (passive) to disable */
- if (iniConfig->force_ssc_disable_indoor_channel) {
+ if (indoor_chnl_marking) {
hdd_update_indoor_channel(hdd_ctx, true);
if (QDF_IS_STATUS_ERROR(
sme_update_channel_list(mac_handle))) {
@@ -4765,9 +4786,13 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
hdd_err("ucfg_mlme_get_auto_channel_weight failed, set def");
pConfig->auto_channel_select_weight = auto_channel_select_weight;
- ucfg_mlme_get_sap_chn_switch_bcn_count(hdd_ctx->psoc, &value);
+ status = ucfg_mlme_get_sap_chn_switch_bcn_count(hdd_ctx->psoc, &value);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("ucfg_mlme_get_sap_chn_switch_bcn_count fail, set def");
pConfig->sap_chanswitch_beacon_cnt = value;
- ucfg_mlme_get_sap_channel_switch_mode(hdd_ctx->psoc, &val);
+ status = ucfg_mlme_get_sap_channel_switch_mode(hdd_ctx->psoc, &val);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("ucfg_mlme_get_sap_channel_switch_mode, set def");
pConfig->sap_chanswitch_mode = val;
/* channel is already set in the set_channel Call back */
@@ -4776,7 +4801,10 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
/* Protection parameter to enable or disable */
pConfig->protEnabled = iniConfig->apProtEnabled;
- ucfg_mlme_get_sap_chan_switch_rate_enabled(hdd_ctx->psoc, &val);
+ status = ucfg_mlme_get_sap_chan_switch_rate_enabled(hdd_ctx->psoc,
+ &val);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("ucfg_mlme_get_sap_chan_switch_rate_enabled, set def");
pConfig->chan_switch_hostapd_rate_enabled = val;
if (QDF_STATUS_SUCCESS ==
@@ -4785,9 +4813,16 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
if (mcc_to_scc_switch != QDF_MCC_TO_SCC_SWITCH_DISABLE)
pConfig->chan_switch_hostapd_rate_enabled = false;
}
- pConfig->enOverLapCh = iniConfig->gEnableOverLapCh;
+ status = ucfg_policy_mgr_get_enable_overlap_chnl(hdd_ctx->psoc,
+ &is_overlap_enable);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("can't get overlap channel INI value, using default");
+ pConfig->enOverLapCh = is_overlap_enable;
- ucfg_mlme_get_sap_reduces_beacon_interval(hdd_ctx->psoc, &value);
+ status = ucfg_mlme_get_sap_reduces_beacon_interval(hdd_ctx->psoc,
+ &value);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("ucfg_mlme_get_sap_reduces_beacon_interval fail");
pConfig->dtim_period = pBeacon->dtim_period;
pConfig->reduced_beacon_interval = value;
@@ -4861,10 +4896,20 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
goto error;
}
- ucfg_mlme_get_dfs_ignore_cac(hdd_ctx->psoc, &ignore_cac);
+ status = ucfg_mlme_get_dfs_ignore_cac(hdd_ctx->psoc,
+ &ignore_cac);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("can't get sta-sap scc on dfs chnl, use def");
+ status =
+ ucfg_policy_mgr_get_sta_sap_scc_on_dfs_chnl(hdd_ctx->psoc,
+ &scc_on_dfs_chan);
+
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("can't get sta-sap scc on dfs chnl, use def");
+
if (ignore_cac ||
((mcc_to_scc_switch != QDF_MCC_TO_SCC_SWITCH_DISABLE) &&
- iniConfig->sta_sap_scc_on_dfs_chan))
+ scc_on_dfs_chan))
ignore_cac = 1;
wlansap_set_dfs_ignore_cac(mac_handle, ignore_cac);
@@ -5062,7 +5107,9 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
pConfig->SapMacaddr_acl = eSAP_ACCEPT_UNLESS_DENIED;
pConfig->num_accept_mac = 0;
pConfig->num_deny_mac = 0;
- ucfg_policy_mgr_get_conc_rule1(hdd_ctx->psoc, &conc_rule1);
+ status = ucfg_policy_mgr_get_conc_rule1(hdd_ctx->psoc, &conc_rule1);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("can't get ucfg_policy_mgr_get_conc_rule1, use def");
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
/*
* We don't want P2PGO to follow STA's channel
@@ -5344,7 +5391,7 @@ error:
wlan_hdd_restore_channels(hdd_ctx, true);
/* Revert the indoor to passive marking if START BSS fails */
- if (iniConfig->force_ssc_disable_indoor_channel) {
+ if (indoor_chnl_marking) {
hdd_update_indoor_channel(hdd_ctx, false);
sme_update_channel_list(mac_handle);
}
@@ -5707,7 +5754,7 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy,
enum hw_mode_bandwidth channel_width;
int status;
struct sme_sta_inactivity_timeout *sta_inactivity_timer;
- uint8_t channel;
+ uint8_t channel, mandt_chnl_list = 0;
bool sta_sap_scc_on_dfs_chan;
uint16_t sta_cnt;
bool val;
@@ -5758,7 +5805,10 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy,
return -EINVAL;
}
- if (policy_mgr_is_sap_mandatory_chan_list_enabled(hdd_ctx->psoc)) {
+ if (QDF_STATUS_SUCCESS !=
+ ucfg_policy_mgr_get_sap_mandt_chnl(hdd_ctx->psoc, &mandt_chnl_list))
+ hdd_err("can't get mandatory channel list");
+ if (mandt_chnl_list) {
if (WLAN_REG_IS_5GHZ_CH(channel)) {
hdd_debug("channel %hu, sap mandatory chan list enabled",
channel);
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 6daa728ae9d83..72bca2ceec8ce 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -1581,18 +1581,26 @@ static void hdd_update_wiphy_vhtcap(struct hdd_context *hdd_ctx)
*/
static void hdd_update_hw_dbs_capable(struct hdd_context *hdd_ctx)
{
- struct hdd_config *cfg_ini = hdd_ctx->config;
uint8_t hw_dbs_capable = 0;
+ uint8_t dual_mac_feature = DISABLE_DBS_CXN_AND_SCAN;
+ QDF_STATUS status;
- if (policy_mgr_is_hw_dbs_capable(hdd_ctx->psoc) &&
- ((cfg_ini->dual_mac_feature_disable ==
- ENABLE_DBS_CXN_AND_SCAN) ||
- (cfg_ini->dual_mac_feature_disable ==
- ENABLE_DBS_CXN_AND_ENABLE_SCAN_WITH_ASYNC_SCAN_OFF) ||
- (cfg_ini->dual_mac_feature_disable ==
- ENABLE_DBS_CXN_AND_DISABLE_SIMULTANEOUS_SCAN)))
- hw_dbs_capable = 1;
-
+ status = ucfg_policy_mgr_get_dual_mac_feature(hdd_ctx->psoc,
+ &dual_mac_feature);
+ if (status != QDF_STATUS_SUCCESS)
+ hdd_err("can't get dual_mac_feature value");
+ if (policy_mgr_is_hw_dbs_capable(hdd_ctx->psoc)) {
+ switch (dual_mac_feature) {
+ case ENABLE_DBS_CXN_AND_SCAN:
+ case ENABLE_DBS_CXN_AND_ENABLE_SCAN_WITH_ASYNC_SCAN_OFF:
+ case ENABLE_DBS_CXN_AND_DISABLE_SIMULTANEOUS_SCAN:
+ hw_dbs_capable = 1;
+ break;
+ default:
+ hw_dbs_capable = 0;
+ break;
+ }
+ }
sme_update_hw_dbs_capable(hdd_ctx->mac_handle, hw_dbs_capable);
}
@@ -2305,6 +2313,7 @@ wlan_hdd_update_dbs_scan_and_fw_mode_config(void)
QDF_STATUS status;
uint32_t channel_select_logic_conc = 0;
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
+ uint8_t dual_mac_feature = DISABLE_DBS_CXN_AND_SCAN;
if (!hdd_ctx) {
hdd_err("HDD context is NULL");
@@ -2318,15 +2327,26 @@ wlan_hdd_update_dbs_scan_and_fw_mode_config(void)
cfg.scan_config = 0;
cfg.fw_mode_config = 0;
cfg.set_dual_mac_cb = policy_mgr_soc_set_dual_mac_cfg_cb;
+ status =
ucfg_policy_mgr_get_chnl_select_plcy(hdd_ctx->psoc,
&channel_select_logic_conc);
+ if (status != QDF_STATUS_SUCCESS) {
+ hdd_err("ucfg_policy_mgr_get_chnl_select_plcy failed, use def");
+ return status;
+ }
+ status =
+ ucfg_policy_mgr_get_dual_mac_feature(hdd_ctx->psoc,
+ &dual_mac_feature);
+ if (status != QDF_STATUS_SUCCESS) {
+ hdd_err("ucfg_policy_mgr_get_dual_mac_feature failed, use def");
+ return status;
+ }
- if (hdd_ctx->config->dual_mac_feature_disable !=
- DISABLE_DBS_CXN_AND_SCAN) {
+ if (dual_mac_feature != DISABLE_DBS_CXN_AND_SCAN) {
status = policy_mgr_get_updated_scan_and_fw_mode_config(
hdd_ctx->psoc, &cfg.scan_config,
&cfg.fw_mode_config,
- hdd_ctx->config->dual_mac_feature_disable,
+ dual_mac_feature,
channel_select_logic_conc);
if (status != QDF_STATUS_SUCCESS) {
@@ -4574,6 +4594,12 @@ static int hdd_configure_chain_mask(struct hdd_adapter *adapter)
struct wma_caps_per_phy non_dbs_phy_cap;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
bool enable2x2 = false, enable_bt_chain_sep = false;
+ uint8_t dual_mac_feature = DISABLE_DBS_CXN_AND_SCAN;
+
+ status = ucfg_policy_mgr_get_dual_mac_feature(hdd_ctx->psoc,
+ &dual_mac_feature);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("unable to get dual mac feature");
status = ucfg_mlme_get_vht_enable2x2(hdd_ctx->psoc, &enable2x2);
if (QDF_IS_STATUS_ERROR(status))
@@ -4586,7 +4612,7 @@ static int hdd_configure_chain_mask(struct hdd_adapter *adapter)
hdd_debug("enable2x2: %d, lte_coex: %d, disable_DBS: %d",
enable2x2, hdd_ctx->lte_coex_ant_share,
- hdd_ctx->config->dual_mac_feature_disable);
+ dual_mac_feature);
hdd_debug("enable_bt_chain_separation %d", enable_bt_chain_sep);
status = wma_get_caps_for_phyidx_hwmode(&non_dbs_phy_cap,
@@ -4610,10 +4636,9 @@ static int hdd_configure_chain_mask(struct hdd_adapter *adapter)
return 0;
}
- if (hdd_ctx->config->dual_mac_feature_disable !=
- DISABLE_DBS_CXN_AND_SCAN) {
+ if (dual_mac_feature != DISABLE_DBS_CXN_AND_SCAN) {
hdd_debug("DBS enabled(%d). skip chain mask programming",
- hdd_ctx->config->dual_mac_feature_disable);
+ dual_mac_feature);
return 0;
}
@@ -8676,6 +8701,7 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt)
uint32_t i;
bool found = false;
uint8_t restart_chan;
+ uint8_t scc_on_lte_coex = 0;
bool value;
QDF_STATUS status;
bool is_acs_support_for_dfs_ltecoex = cfg_default(CFG_USER_ACS_DFS_LTE);
@@ -8693,13 +8719,18 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt)
}
found = false;
+ status =
+ ucfg_policy_mgr_get_sta_sap_scc_lte_coex_chnl(hdd_ctxt->psoc,
+ &scc_on_lte_coex);
+ if (!QDF_IS_STATUS_SUCCESS(status))
+ hdd_err("can't get scc on lte coex chnl, use def");
/*
* If STA+SAP is doing SCC & g_sta_sap_scc_on_lte_coex_chan
* is set, no need to move SAP.
*/
if (policy_mgr_is_sta_sap_scc(hdd_ctxt->psoc,
adapter->session.ap.operating_channel) &&
- hdd_ctxt->config->sta_sap_scc_on_lte_coex_chan)
+ scc_on_lte_coex)
hdd_debug("SAP is allowed on SCC channel, no need to move SAP");
else {
for (i = 0; i < hdd_ctxt->unsafe_channel_count; i++) {
@@ -9864,6 +9895,7 @@ static int hdd_update_user_config(struct hdd_context *hdd_ctx)
struct wlan_objmgr_psoc_user_config *user_config;
bool skip_dfs_in_p2p_search = false;
uint8_t band_capability;
+ uint8_t dual_mac_feature = DISABLE_DBS_CXN_AND_SCAN;
QDF_STATUS status;
bool value = false;
@@ -9871,13 +9903,17 @@ static int hdd_update_user_config(struct hdd_context *hdd_ctx)
if (QDF_IS_STATUS_ERROR(status))
return -EIO;
+ status = ucfg_policy_mgr_get_dual_mac_feature(hdd_ctx->psoc,
+ &dual_mac_feature);
+ if (QDF_IS_STATUS_ERROR(status))
+ return -EIO;
+
user_config = qdf_mem_malloc(sizeof(*user_config));
if (!user_config)
return -ENOMEM;
user_config->dot11_mode = hdd_ctx->config->dot11Mode;
- user_config->dual_mac_feature_disable =
- hdd_ctx->config->dual_mac_feature_disable;
+ user_config->dual_mac_feature_disable = dual_mac_feature;
user_config->indoor_channel_support =
hdd_ctx->config->indoor_channel_support;
@@ -10495,9 +10531,6 @@ static int hdd_pre_enable_configure(struct hdd_context *hdd_ctx)
hdd_init_channel_avoidance(hdd_ctx);
- /* update enable sap mandatory chan list */
- policy_mgr_enable_disable_sap_mandatory_chan_list(hdd_ctx->psoc,
- hdd_ctx->config->enable_sap_mandatory_chan_list);
out:
return ret;
}
@@ -10619,14 +10652,20 @@ int hdd_dbs_scan_selection_init(struct hdd_context *hdd_ctx)
struct wmi_dbs_scan_sel_params dbs_scan_params;
uint32_t i = 0;
uint8_t count = 0, numentries = 0;
+ uint8_t dual_mac_feature;
uint8_t dbs_scan_config[CDS_DBS_SCAN_PARAM_PER_CLIENT
* CDS_DBS_SCAN_CLIENTS_MAX];
+ status = ucfg_policy_mgr_get_dual_mac_feature(hdd_ctx->psoc,
+ &dual_mac_feature);
+
+ if (status != QDF_STATUS_SUCCESS) {
+ hdd_err("can't get dual mac feature flag");
+ return -EINVAL;
+ }
/* check if DBS is enabled or supported */
- if ((hdd_ctx->config->dual_mac_feature_disable ==
- DISABLE_DBS_CXN_AND_SCAN) ||
- (hdd_ctx->config->dual_mac_feature_disable ==
- ENABLE_DBS_CXN_AND_DISABLE_DBS_SCAN))
+ if ((dual_mac_feature == DISABLE_DBS_CXN_AND_SCAN) ||
+ (dual_mac_feature == ENABLE_DBS_CXN_AND_DISABLE_DBS_SCAN))
return -EINVAL;
hdd_string_to_u8_array(hdd_ctx->config->dbs_scan_selection,
@@ -10994,7 +11033,7 @@ int hdd_configure_cds(struct hdd_context *hdd_ctx)
mac_handle_t mac_handle;
bool enable_rts_sifsbursting;
uint8_t enable_phy_reg_retention;
- uint8_t max_mpdus_inampdu;
+ uint8_t max_mpdus_inampdu, is_force_1x1 = 0;
uint32_t num_abg_tx_chains = 0;
uint16_t num_11b_tx_chains = 0;
uint16_t num_11ag_tx_chains = 0;
@@ -11006,8 +11045,12 @@ int hdd_configure_cds(struct hdd_context *hdd_ctx)
mac_handle = hdd_ctx->mac_handle;
hdd_action_oui_send(hdd_ctx);
-
- if (hdd_ctx->config->is_force_1x1)
+ status = ucfg_policy_mgr_get_force_1x1(hdd_ctx->psoc, &is_force_1x1);
+ if (status != QDF_STATUS_SUCCESS) {
+ hdd_err("Failed to get force 1x1 value");
+ goto out;
+ }
+ if (is_force_1x1)
sme_cli_set_command(0, (int)WMI_PDEV_PARAM_SET_IOT_PATTERN,
1, PDEV_CMD);
/* set chip power save failure detected callback */
@@ -11016,8 +11059,10 @@ int hdd_configure_cds(struct hdd_context *hdd_ctx)
status = ucfg_get_max_mpdus_inampdu(hdd_ctx->psoc,
&max_mpdus_inampdu);
- if (status)
- return status;
+ if (status) {
+ hdd_err("Failed to get max mpdus in ampdu value");
+ goto out;
+ }
if (max_mpdus_inampdu) {
set_value = max_mpdus_inampdu;
@@ -11027,8 +11072,10 @@ int hdd_configure_cds(struct hdd_context *hdd_ctx)
status = ucfg_get_enable_rts_sifsbursting(hdd_ctx->psoc,
&enable_rts_sifsbursting);
- if (status)
- return status;
+ if (status) {
+ hdd_err("Failed to get rts sifs bursting value");
+ goto out;
+ }
if (enable_rts_sifsbursting) {
set_value = enable_rts_sifsbursting;
diff --git a/core/hdd/src/wlan_hdd_regulatory.c b/core/hdd/src/wlan_hdd_regulatory.c
index 16a435d7244e3..2d63b13eb7424 100644
--- a/core/hdd/src/wlan_hdd_regulatory.c
+++ b/core/hdd/src/wlan_hdd_regulatory.c
@@ -32,6 +32,7 @@
#include "cds_utils.h"
#include "pld_common.h"
#include
+#include "wlan_policy_mgr_ucfg.h"
#define REG_RULE_2412_2462 REG_RULE(2412-10, 2462+10, 40, 0, 20, 0)
@@ -207,7 +208,7 @@ void hdd_reset_global_reg_params(void)
static void reg_program_config_vars(struct hdd_context *hdd_ctx,
struct reg_config_vars *config_vars)
{
- uint8_t band_capability = 0;
+ uint8_t band_capability = 0, indoor_chnl_marking = 0;
QDF_STATUS status;
bool country_priority = 0;
bool value = false;
@@ -216,6 +217,11 @@ static void reg_program_config_vars(struct hdd_context *hdd_ctx,
if (QDF_IS_STATUS_ERROR(status))
hdd_err("Failed to get MLME band cap, defaulting to BAND_ALL");
+ status = ucfg_policy_mgr_get_indoor_chnl_marking(hdd_ctx->psoc,
+ &indoor_chnl_marking);
+ if (QDF_STATUS_SUCCESS != status)
+ hdd_err("can't get indoor channel marking, using default");
+
status = ucfg_mlme_is_11d_enabled(hdd_ctx->psoc, &value);
if (!QDF_IS_STATUS_SUCCESS(status))
hdd_err("Invalid 11d_enable flag");
@@ -228,8 +234,7 @@ static void reg_program_config_vars(struct hdd_context *hdd_ctx,
config_vars->dfs_enabled = hdd_ctx->config->enableDFSChnlScan;
config_vars->indoor_chan_enabled =
hdd_ctx->config->indoor_channel_support;
- config_vars->force_ssc_disable_indoor_channel =
- hdd_ctx->config->force_ssc_disable_indoor_channel;
+ config_vars->force_ssc_disable_indoor_channel = indoor_chnl_marking;
config_vars->band_capability = band_capability;
config_vars->restart_beaconing = hdd_ctx->config->
restart_beaconing_on_chan_avoid_event;
@@ -424,10 +429,16 @@ static void hdd_process_regulatory_data(struct hdd_context *hdd_ctx,
enum channel_enum chan_enum = CHAN_ENUM_1;
struct ieee80211_channel *wiphy_chan, *wiphy_chan_144 = NULL;
struct regulatory_channel *cds_chan;
- uint8_t band_capability;
+ uint8_t band_capability, indoor_chnl_marking = 0;
+ QDF_STATUS status;
band_capability = hdd_ctx->curr_band;
+ status = ucfg_policy_mgr_get_indoor_chnl_marking(hdd_ctx->psoc,
+ &indoor_chnl_marking);
+ if (QDF_STATUS_SUCCESS != status)
+ hdd_err("can't get indoor channel marking, using default");
+
for (band_num = 0; band_num < HDD_NUM_NL80211_BANDS; band_num++) {
if (wiphy->bands[band_num] == NULL)
@@ -449,8 +460,8 @@ static void hdd_process_regulatory_data(struct hdd_context *hdd_ctx,
if (!reset)
hdd_modify_wiphy(wiphy, wiphy_chan);
- if (hdd_ctx->config->force_ssc_disable_indoor_channel &&
- (wiphy_chan->flags & IEEE80211_CHAN_INDOOR_ONLY))
+ if (indoor_chnl_marking &&
+ (wiphy_chan->flags & IEEE80211_CHAN_INDOOR_ONLY))
cds_chan->chan_flags |=
REGULATORY_CHAN_INDOOR_ONLY;
diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c
index 5847186535c99..dabf7e33c1455 100644
--- a/core/hdd/src/wlan_hdd_softap_tx_rx.c
+++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c
@@ -41,6 +41,7 @@
#include "wlan_p2p_ucfg_api.h"
#include
#include "wlan_ipa_ucfg_api.h"
+#include "wlan_policy_mgr_ucfg.h"
#include
/* Preprocessor definitions and constants */
@@ -1152,29 +1153,33 @@ static QDF_STATUS hdd_softap_deregister_bc_sta(struct hdd_adapter *adapter)
QDF_STATUS hdd_softap_stop_bss(struct hdd_adapter *adapter)
{
- QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
- uint8_t sta_id = 0;
+ QDF_STATUS status = QDF_STATUS_E_FAILURE;
+ uint8_t sta_id = 0, indoor_chnl_marking = 0;
struct hdd_context *hdd_ctx;
struct hdd_ap_ctx *ap_ctx;
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(adapter);
+ status = ucfg_policy_mgr_get_indoor_chnl_marking(hdd_ctx->psoc,
+ &indoor_chnl_marking);
+ if (QDF_STATUS_SUCCESS != status)
+ hdd_err("can't get indoor channel marking, using default");
/* This is stop bss callback running in scheduler thread so do not
* driver unload in progress check otherwise it can lead to peer
* object leak
*/
- qdf_status = hdd_softap_deregister_bc_sta(adapter);
+ status = hdd_softap_deregister_bc_sta(adapter);
- if (!QDF_IS_STATUS_SUCCESS(qdf_status))
+ if (!QDF_IS_STATUS_SUCCESS(status))
hdd_err("Failed to deregister BC sta Id %d",
ap_ctx->broadcast_sta_id);
for (sta_id = 0; sta_id < WLAN_MAX_STA_COUNT; sta_id++) {
/* This excludes BC sta as it is already deregistered */
if (adapter->sta_info[sta_id].in_use) {
- qdf_status = hdd_softap_deregister_sta(adapter, sta_id);
- if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
+ status = hdd_softap_deregister_sta(adapter, sta_id);
+ if (!QDF_IS_STATUS_SUCCESS(status)) {
hdd_err("Failed to deregister sta Id %d",
sta_id);
}
@@ -1184,7 +1189,7 @@ QDF_STATUS hdd_softap_stop_bss(struct hdd_adapter *adapter)
wlan_hdd_restore_channels(hdd_ctx, true);
/* Mark the indoor channel (passive) to enable */
- if (hdd_ctx->config->force_ssc_disable_indoor_channel) {
+ if (indoor_chnl_marking) {
hdd_update_indoor_channel(hdd_ctx, false);
sme_update_channel_list(hdd_ctx->mac_handle);
}
@@ -1201,7 +1206,7 @@ QDF_STATUS hdd_softap_stop_bss(struct hdd_adapter *adapter)
hdd_err("WLAN_AP_DISCONNECT event failed");
}
- return qdf_status;
+ return status;
}
QDF_STATUS hdd_softap_change_sta_state(struct hdd_adapter *adapter,
diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c
index e6a0bfb5b4da6..73632029ceb41 100644
--- a/core/hdd/src/wlan_hdd_wext.c
+++ b/core/hdd/src/wlan_hdd_wext.c
@@ -6175,7 +6175,9 @@ static int __iw_set_three_ints_getnone(struct net_device *dev,
int *value = (int *)extra;
int sub_cmd = value[0];
int ret;
+ uint8_t dual_mac_feature = DISABLE_DBS_CXN_AND_SCAN;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+ QDF_STATUS status;
hdd_enter_dev(dev);
@@ -6204,8 +6206,12 @@ static int __iw_set_three_ints_getnone(struct net_device *dev,
case WE_SET_DUAL_MAC_SCAN_CONFIG:
hdd_debug("Ioctl to set dual mac scan config");
- if (hdd_ctx->config->dual_mac_feature_disable ==
- DISABLE_DBS_CXN_AND_SCAN) {
+ status =
+ ucfg_policy_mgr_get_dual_mac_feature(hdd_ctx->psoc,
+ &dual_mac_feature);
+ if (status != QDF_STATUS_SUCCESS)
+ hdd_err("can't get dual mac feature val, use def");
+ if (dual_mac_feature == DISABLE_DBS_CXN_AND_SCAN) {
hdd_err("Dual mac feature is disabled from INI");
return -EPERM;
}
@@ -9177,7 +9183,9 @@ static int __iw_set_two_ints_getnone(struct net_device *dev,
int *value = (int *)extra;
int sub_cmd = value[0];
int ret;
+ uint8_t dual_mac_feature = DISABLE_DBS_CXN_AND_SCAN;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+ QDF_STATUS status;
hdd_enter_dev(dev);
@@ -9217,8 +9225,12 @@ static int __iw_set_two_ints_getnone(struct net_device *dev,
break;
case WE_SET_DUAL_MAC_FW_MODE_CONFIG:
hdd_debug("Ioctl to set dual fw mode config");
- if (hdd_ctx->config->dual_mac_feature_disable ==
- DISABLE_DBS_CXN_AND_SCAN) {
+ status =
+ ucfg_policy_mgr_get_dual_mac_feature(hdd_ctx->psoc,
+ &dual_mac_feature);
+ if (status != QDF_STATUS_SUCCESS)
+ hdd_err("can't get dual mac feature val, use def");
+ if (dual_mac_feature == DISABLE_DBS_CXN_AND_SCAN) {
hdd_err("Dual mac feature is disabled from INI");
return -EPERM;
}