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:
Srinivas Dasari 2019-09-19 14:16:29 +05:30 • committed by nshrivas
commit 1ec7452b18
4 changed files with 76 additions and 12 deletions

View file

@ -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

View file

@ -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)
{

View file

@ -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,

View file

@ -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,