qcacld-3.0: skip redundant update request for dual mac cfg

Dual mac configuration is static from wlan module
start to module stop, no need to update for each
adapter starting.
To reduce the time cost on starting adapter, add
a flag to indicate the status of dual mac config,
skip the update request if it's been updated.

Change-Id: I033cda08173503d133a06eca617655d1cefe4d0d
CRs-Fixed: 2839192
This commit is contained in:
Yu Wang 2020-12-17 10:39:35 +08:00 • committed by snandini
commit 28e3a2d1c0
2 changed files with 10 additions and 0 deletions

View file

@ -1760,6 +1760,7 @@ struct hdd_adapter_ops_history {
* @adapter_ops_wq: High priority workqueue for handling adapter operations
* @multi_client_thermal_mitigation: Multi client thermal mitigation by fw
* @disconnect_for_sta_mon_conc: disconnect if sta monitor intf concurrency
* @is_dual_mac_cfg_updated: indicate whether dual mac cfg has been updated
*/
struct hdd_context {
struct wlan_objmgr_psoc *psoc;
@ -2102,6 +2103,7 @@ struct hdd_context {
bool multi_client_thermal_mitigation;
#endif
bool disconnect_for_sta_mon_conc;
bool is_dual_mac_cfg_updated;
};
/**

View file

@ -2984,6 +2984,11 @@ wlan_hdd_update_dbs_scan_and_fw_mode_config(void)
if (!policy_mgr_find_if_fw_supports_dbs(hdd_ctx->psoc))
return QDF_STATUS_SUCCESS;
if (hdd_ctx->is_dual_mac_cfg_updated) {
hdd_debug("dual mac config has already been updated, skip");
return QDF_STATUS_SUCCESS;
}
cfg.scan_config = 0;
cfg.fw_mode_config = 0;
cfg.set_dual_mac_cb = policy_mgr_soc_set_dual_mac_cfg_cb;
@ -3030,6 +3035,8 @@ wlan_hdd_update_dbs_scan_and_fw_mode_config(void)
/* wait for sme_soc_set_dual_mac_config to complete */
status =
policy_mgr_wait_for_dual_mac_configuration(hdd_ctx->psoc);
if (QDF_IS_STATUS_SUCCESS(status))
hdd_ctx->is_dual_mac_cfg_updated = true;
} else {
hdd_err("sme_soc_set_dual_mac_config failed %d", status);
return status;
@ -14316,6 +14323,7 @@ int hdd_wlan_stop_modules(struct hdd_context *hdd_ctx, bool ftm_mode)
/* Once the firmware sequence is completed reset this flag */
hdd_ctx->imps_enabled = false;
hdd_ctx->is_dual_mac_cfg_updated = false;
hdd_ctx->driver_status = DRIVER_MODULES_CLOSED;
hdd_debug("Wlan transitioned (now CLOSED)");