mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
qcacld-3.0: Restore all control config params upon CLEAR_ALL
User might modify the roam control config params through multiple commands as part of roam control config enable. Currently, only the params which are modified as part of SUBCMD_CONTROL_SET command are restored. Restore all of the roam control config params from the default ini values when the control config is disabled i.e when the CLEAR_ALL is received. Change-Id: I59ebc2e3018b01889ffb2bcd19b72d6d20fd0517 CRs-Fixed: 2517854
This commit is contained in:
parent
a5a42fa0ce
commit
1ec7452b18
4 changed files with 76 additions and 12 deletions
|
|
@ -512,4 +512,17 @@ mlme_set_operations_bitmap(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
|||
#define MLME_IS_ROAM_INITIALIZED(psoc, vdev_id) \
|
||||
(mlme_get_roam_state(psoc, vdev_id) >= ROAM_INIT)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* mlme_reinit_control_config_lfr_params() - Reinitialize roam control config
|
||||
* @psoc: PSOC pointer
|
||||
* @lfr: Pointer of an lfr_cfg buffer to fill.
|
||||
*
|
||||
* Reinitialize/restore the param related control roam config lfr params with
|
||||
* default values of corresponding ini params.
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void mlme_reinit_control_config_lfr_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_mlme_lfr_cfg *lfr);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1503,6 +1503,17 @@ mlme_init_bss_load_trigger_params(struct wlan_objmgr_psoc *psoc,
|
|||
cfg_get(psoc, CFG_BSS_LOAD_TRIG_2G_RSSI_THRES);
|
||||
}
|
||||
|
||||
void mlme_reinit_control_config_lfr_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_mlme_lfr_cfg *lfr)
|
||||
{
|
||||
/* Restore the params set through SETDFSSCANMODE */
|
||||
lfr->roaming_dfs_channel =
|
||||
cfg_get(psoc, CFG_LFR_ROAMING_DFS_CHANNEL);
|
||||
|
||||
/* Restore the params set through SETWESMODE */
|
||||
lfr->wes_mode_enabled = cfg_get(psoc, CFG_LFR_ENABLE_WES_MODE);
|
||||
}
|
||||
|
||||
static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_mlme_lfr_cfg *lfr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -260,6 +260,7 @@ void csr_roam_reset_roam_params(struct mac_context *mac_ptr);
|
|||
#define REASON_DRIVER_ENABLED 43
|
||||
#define REASON_ROAM_FULL_SCAN_PERIOD_CHANGED 44
|
||||
#define REASON_SCORING_CRITERIA_CHANGED 45
|
||||
#define REASON_ROAM_CONTROL_CONFIG_RESTORED 46
|
||||
|
||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||
QDF_STATUS csr_roam_offload_scan(struct mac_context *mac, uint8_t sessionId,
|
||||
|
|
|
|||
|
|
@ -6904,12 +6904,52 @@ out:
|
|||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* sme_restore_default_roaming_params() - Restore neighbor roam config
|
||||
* @mac: mac context
|
||||
* @roam_info: Neighbor roam info pointer to be populated
|
||||
*
|
||||
* Restore neighbor roam info request params with lfr config params
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
sme_restore_default_roaming_params(struct mac_context *mac,
|
||||
tCsrNeighborRoamControlInfo *roam_info)
|
||||
{
|
||||
sme_debug("%s default roam scoring",
|
||||
mac->mlme_cfg->scoring.enable_scoring_for_roam ?
|
||||
"Enable" : "Disable");
|
||||
|
||||
roam_info->cfgParams.enable_scoring_for_roam =
|
||||
mac->mlme_cfg->scoring.enable_scoring_for_roam;
|
||||
roam_info->cfgParams.emptyScanRefreshPeriod =
|
||||
mac->mlme_cfg->lfr.empty_scan_refresh_period;
|
||||
roam_info->cfgParams.full_roam_scan_period =
|
||||
mac->mlme_cfg->lfr.roam_full_scan_period;
|
||||
roam_info->cfgParams.maxChannelScanTime =
|
||||
mac->mlme_cfg->lfr.neighbor_scan_max_chan_time;
|
||||
roam_info->cfgParams.neighborScanPeriod =
|
||||
mac->mlme_cfg->lfr.neighbor_scan_timer_period;
|
||||
roam_info->cfgParams.neighborLookupThreshold =
|
||||
mac->mlme_cfg->lfr.neighbor_lookup_rssi_threshold;
|
||||
roam_info->cfgParams.roam_rssi_diff =
|
||||
mac->mlme_cfg->lfr.roam_rssi_diff;
|
||||
roam_info->cfgParams.maxChannelScanTime =
|
||||
mac->mlme_cfg->lfr.neighbor_scan_max_chan_time;
|
||||
roam_info->cfgParams.roam_scan_home_away_time =
|
||||
mac->mlme_cfg->lfr.roam_scan_home_away_time;
|
||||
roam_info->cfgParams.roam_scan_n_probes =
|
||||
mac->mlme_cfg->lfr.roam_scan_n_probes;
|
||||
}
|
||||
|
||||
QDF_STATUS sme_roam_control_restore_default_config(mac_handle_t mac_handle,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct mac_context *mac = MAC_CONTEXT(mac_handle);
|
||||
QDF_STATUS status;
|
||||
tpCsrNeighborRoamControlInfo neighbor_roam_info;
|
||||
tCsrChannelInfo *chan_info;
|
||||
|
||||
if (vdev_id >= WLAN_MAX_VDEVS) {
|
||||
sme_err("Invalid vdev_id: %d", vdev_id);
|
||||
|
|
@ -6926,24 +6966,23 @@ QDF_STATUS sme_roam_control_restore_default_config(mac_handle_t mac_handle,
|
|||
goto out;
|
||||
}
|
||||
|
||||
sme_debug("%s default roam scoring",
|
||||
mac->mlme_cfg->scoring.enable_scoring_for_roam ?
|
||||
"Enable" : "Disable");
|
||||
sme_debug("Cleanup roam scan control");
|
||||
mac->roam.configParam.nRoamScanControl = false;
|
||||
|
||||
neighbor_roam_info = &mac->roam.neighborRoamInfo[vdev_id];
|
||||
|
||||
neighbor_roam_info->cfgParams.enable_scoring_for_roam =
|
||||
mac->mlme_cfg->scoring.enable_scoring_for_roam;
|
||||
sme_debug("Cleanup Preferred frequency list");
|
||||
chan_info = &neighbor_roam_info->cfgParams.pref_chan_info;
|
||||
csr_flush_cfg_bg_scan_roam_channel_list(chan_info);
|
||||
|
||||
neighbor_roam_info->cfgParams.emptyScanRefreshPeriod =
|
||||
mac->mlme_cfg->lfr.empty_scan_refresh_period;
|
||||
sme_debug("Cleanup specific frequency list");
|
||||
chan_info = &neighbor_roam_info->cfgParams.specific_chan_info;
|
||||
csr_flush_cfg_bg_scan_roam_channel_list(chan_info);
|
||||
|
||||
neighbor_roam_info->cfgParams.full_roam_scan_period =
|
||||
mac->mlme_cfg->lfr.roam_full_scan_period;
|
||||
sme_debug("Cleanup roam control config related lfr params");
|
||||
mlme_reinit_control_config_lfr_params(mac->psoc, &mac->mlme_cfg->lfr);
|
||||
|
||||
sme_debug("Restore scan period to: %u and full scan period to: %u",
|
||||
neighbor_roam_info->cfgParams.emptyScanRefreshPeriod,
|
||||
neighbor_roam_info->cfgParams.full_roam_scan_period);
|
||||
sme_restore_default_roaming_params(mac, neighbor_roam_info);
|
||||
|
||||
csr_roam_offload_scan(mac, vdev_id,
|
||||
ROAM_SCAN_OFFLOAD_UPDATE_CFG,
|
||||
|
|
|
|||
Loading…
Reference in a new issue