qcacld-3.0: Introduce new INI to configure roam trigger parameters
Add new ini to configure various roam trigger parameters: 1. "minimum_btm_candidate_score" Consider the AP as roam candidate only if its score is greater than minimum_btm_candidate_score. This value will be sent over the WMI_BTM_OFFLOAD_CONFIG command. 2. "roam_scan_inactivity_time" Device inactivity monitoring time in milliseconds for which the device is considered to be inactive with data packets count is less than configured roam_inactive_count. 3. "roam_inactive_data_packet_count" Maximum allowed data packets count during roam_scan_inactivity_time. 4. "roam_scan_period_after_inactivity" Roam scan period in ms after device was in inactive state. 5. "btm_roam_score_delta" Roam scan delta value for btm triggered roam scan. This value will be sent to firmware over the WMI_ROAM_AP_PROFILE wmi command. 6. "idle_roam_score_delta" Roam scan delta value for Idle roam scan trigger reason. This value will be sent to firmware over the WMI_ROAM_AP_PROFILE wmi commnd in the roam_score_delta_param_list tlv. 7. "disconnect_roam_trigger_min_rssi" Candidate minimum rssi value for disconnect roam trigger. This value will be sent to firmware over the WMI_ROAM_AP_PROFILE wmi commnd in the roam_score_min_rssi_param_list tlv. 8. "beacon_miss_roam_min_rssi" Candidate minimum rssi value for BTM triggered roam. This value will be sent to firmware over the WMI_ROAM_AP_PROFILE wmi commnd in the roam_score_min_rssi_param_list tlv. 9. "bss_load_trigger_5g_rssi_threshold" If connected AP is in 5GHz band, then consider bss load roam triggered only if load % > bss_load_threshold && connected AP rssi is worse than bss_load_trigger_5g_rssi_threshold. 10. "bss_load_trigger_2g_rssi_threshold" If connected AP is in 2GHz band, then consider bss load roam triggered only if load % > bss_load_threshold && connected AP rssi is worse than bss_load_trigger_2g_rssi_threshold. Change-Id: Ib026251a8ec403f4376a16a91ff1b5d969336816 CRs-Fixed: 2434922
This commit is contained in:

committed by
nshrivas

parent
ed23c6ff1e
commit
2b8ea35e71
@@ -1516,6 +1516,10 @@ mlme_init_bss_load_trigger_params(struct wlan_objmgr_psoc *psoc,
|
||||
cfg_get(psoc, CFG_ENABLE_BSS_LOAD_TRIGGERED_ROAM);
|
||||
bss_load_trig->threshold = cfg_get(psoc, CFG_BSS_LOAD_THRESHOLD);
|
||||
bss_load_trig->sample_time = cfg_get(psoc, CFG_BSS_LOAD_SAMPLE_TIME);
|
||||
bss_load_trig->rssi_threshold_5ghz =
|
||||
cfg_get(psoc, CFG_BSS_LOAD_TRIG_5G_RSSI_THRES);
|
||||
bss_load_trig->rssi_threshold_24ghz =
|
||||
cfg_get(psoc, CFG_BSS_LOAD_TRIG_2G_RSSI_THRES);
|
||||
}
|
||||
|
||||
static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
@@ -1676,6 +1680,13 @@ static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
lfr->roaming_scan_policy =
|
||||
cfg_get(psoc, CFG_ROAM_SCAN_SCAN_POLICY);
|
||||
|
||||
lfr->roam_scan_inactivity_time =
|
||||
cfg_get(psoc, CFG_ROAM_SCAN_INACTIVITY_TIME);
|
||||
lfr->roam_inactive_data_packet_count =
|
||||
cfg_get(psoc, CFG_ROAM_INACTIVE_COUNT);
|
||||
lfr->roam_scan_period_after_inactivity =
|
||||
cfg_get(psoc, CFG_POST_INACTIVITY_ROAM_SCAN_PERIOD);
|
||||
|
||||
mlme_init_roam_offload_cfg(psoc, lfr);
|
||||
mlme_init_ese_cfg(psoc, lfr);
|
||||
mlme_init_bss_load_trigger_params(psoc, &lfr->bss_load_trig);
|
||||
@@ -2129,7 +2140,36 @@ static void mlme_init_btm_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
btm->disassoc_timer_threshold =
|
||||
cfg_get(psoc, CFG_BTM_DISASSOC_TIMER_THRESHOLD);
|
||||
btm->btm_query_bitmask = cfg_get(psoc, CFG_BTM_QUERY_BITMASK);
|
||||
btm->btm_trig_min_candidate_score =
|
||||
cfg_get(psoc, CFG_MIN_BTM_CANDIDATE_SCORE);
|
||||
}
|
||||
|
||||
static void
|
||||
mlme_init_roam_score_config(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_mlme_cfg *mlme_cfg)
|
||||
{
|
||||
struct roam_trigger_score_delta *score_delta_param;
|
||||
struct roam_trigger_min_rssi *min_rssi_param;
|
||||
|
||||
score_delta_param = &mlme_cfg->trig_score_delta[IDLE_ROAM_TRIGGER];
|
||||
score_delta_param->roam_score_delta =
|
||||
cfg_get(psoc, CFG_IDLE_ROAM_SCORE_DELTA);
|
||||
score_delta_param->trigger_reason = ROAM_TRIGGER_REASON_IDLE;
|
||||
|
||||
score_delta_param = &mlme_cfg->trig_score_delta[BTM_ROAM_TRIGGER];
|
||||
score_delta_param->roam_score_delta =
|
||||
cfg_get(psoc, CFG_BTM_ROAM_SCORE_DELTA);
|
||||
score_delta_param->trigger_reason = ROAM_TRIGGER_REASON_BTM;
|
||||
|
||||
min_rssi_param = &mlme_cfg->trig_min_rssi[DEAUTH_MIN_RSSI];
|
||||
min_rssi_param->min_rssi =
|
||||
cfg_get(psoc, CFG_DISCONNECT_ROAM_TRIGGER_MIN_RSSI);
|
||||
min_rssi_param->trigger_reason = ROAM_TRIGGER_REASON_DEAUTH;
|
||||
|
||||
min_rssi_param = &mlme_cfg->trig_min_rssi[BMISS_MIN_RSSI];
|
||||
min_rssi_param->min_rssi =
|
||||
cfg_get(psoc, CFG_BMISS_ROAM_MIN_RSSI);
|
||||
min_rssi_param->trigger_reason = ROAM_TRIGGER_REASON_BMISS;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2286,6 +2326,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
|
||||
mlme_init_mwc_cfg(psoc, &mlme_cfg->mwc);
|
||||
mlme_init_reg_cfg(psoc, &mlme_cfg->reg);
|
||||
mlme_init_btm_cfg(psoc, &mlme_cfg->btm);
|
||||
mlme_init_roam_score_config(psoc, mlme_cfg);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@@ -269,6 +269,33 @@
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"btm query with candidate list bitmask")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* minimum_btm_candidate_score - Consider the AP as roam candidate only if
|
||||
* its score is greater than minimum_btm_candidate_score.
|
||||
* @Min: 0
|
||||
* @Max: 10000
|
||||
* @Default: 1800
|
||||
*
|
||||
* This ini is applicable only for candidate selection during BTM roam trigger.
|
||||
* For this roam_score_delta_bitmap bit 10 should be set to 1.
|
||||
*
|
||||
* Related: None
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_MIN_BTM_CANDIDATE_SCORE CFG_INI_UINT( \
|
||||
"minimum_btm_candidate_score", \
|
||||
0, \
|
||||
10000, \
|
||||
1800, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Minimum BTM candidate score")
|
||||
|
||||
#define CFG_BTM_ALL \
|
||||
CFG(CFG_PREFER_BTM_QUERY) \
|
||||
CFG(CFG_ENABLE_BTM_ABRIDGE) \
|
||||
@@ -278,6 +305,7 @@
|
||||
CFG(CFG_BTM_STICKY_TIME) \
|
||||
CFG(CFG_BTM_VALIDITY_TIMER) \
|
||||
CFG(CFG_BTM_DISASSOC_TIMER_THRESHOLD) \
|
||||
CFG(CFG_BTM_QUERY_BITMASK)
|
||||
CFG(CFG_BTM_QUERY_BITMASK) \
|
||||
CFG(CFG_MIN_BTM_CANDIDATE_SCORE)
|
||||
|
||||
#endif /* CFG_MLME_BTM_H_ */
|
||||
|
@@ -1893,6 +1893,62 @@
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"bss load sampling time")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* bss_load_trigger_5g_rssi_threshold - Current AP minimum RSSI in dBm below
|
||||
* which roaming can be triggered if BSS load exceeds bss_load_threshold.
|
||||
* @Min: -120
|
||||
* @Max: 0
|
||||
* @Default: -70
|
||||
*
|
||||
* If connected AP is in 5Ghz, then consider bss load roam triggered only if
|
||||
* load % > bss_load_threshold && connected AP rssi is worse than
|
||||
* bss_load_trigger_5g_rssi_threshold
|
||||
*
|
||||
* Related: "bss_load_threshold"
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: Internal/External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_BSS_LOAD_TRIG_5G_RSSI_THRES CFG_INI_INT( \
|
||||
"bss_load_trigger_5g_rssi_threshold", \
|
||||
-120, \
|
||||
0, \
|
||||
-70, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Minimum RSSI of current AP in 5GHz band for BSS load roam trigger")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* bss_load_trigger_2g_rssi_threshold - Current AP minimum RSSI in dBm below
|
||||
* which roaming can be triggered if BSS load exceeds bss_load_threshold.
|
||||
* @Min: -120
|
||||
* @Max: 0
|
||||
* @Default: -60
|
||||
*
|
||||
* If connected AP is in 2Ghz, then consider bss load roam triggered only if
|
||||
* load % > bss_load_threshold && connected AP rssi is worse than
|
||||
* bss_load_trigger_2g_rssi_threshold.
|
||||
*
|
||||
* Related: "bss_load_threshold"
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: Internal/External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_BSS_LOAD_TRIG_2G_RSSI_THRES CFG_INI_INT( \
|
||||
"bss_load_trigger_2g_rssi_threshold", \
|
||||
-120, \
|
||||
0, \
|
||||
-60, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Minimum RSSI of current AP in 2.4GHz band for BSS load roam trigger")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* ho_delay_for_rx - Delay hand-off (in msec) by this duration to receive
|
||||
@@ -2353,6 +2409,103 @@
|
||||
0, \
|
||||
"Config roam scan policy")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* roam_scan_inactivity_time - Device inactivity monitoring time in
|
||||
* milliseconds for which the device is considered to be inactive with data
|
||||
* packets count is less than configured roam_inactive_data_count.
|
||||
*
|
||||
* @Min: 0
|
||||
* @Max: 0xFFFFFFFF
|
||||
* @Default: 0
|
||||
*
|
||||
* The below three ini values are used to control the roam scan after the
|
||||
* firmware gets empty roam scan results during periodic roam scans.
|
||||
* 1. roam_scan_inactivity_time
|
||||
* 2. roam_inactive_data_count
|
||||
* 3. roam_scan_period_after_inactivity
|
||||
* The first two ini "roam_scan_inactivity_time" and "roam_inactive_data_count"
|
||||
* is frames the criteria to detect if the DUT is inactive. If the device is
|
||||
* identified to be inactive based on the above two ini, then the value,
|
||||
* "roam_scan_period_after_inactivity" will be used as periodic roam scan
|
||||
* duration.
|
||||
*
|
||||
* Related: roam_inactive_data_count
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_ROAM_SCAN_INACTIVITY_TIME CFG_INI_UINT( \
|
||||
"roam_scan_inactivity_time", \
|
||||
0, \
|
||||
0xFFFFFFFF, \
|
||||
0, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Device inactivity monitoring time")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* roam_inactive_data_count - Maximum allowed data packets count during
|
||||
* roam_scan_inactivity_time.
|
||||
*
|
||||
* @Min: 0
|
||||
* @Max: 0xFFFFFFFF
|
||||
* @Default: 10
|
||||
*
|
||||
* The DUT is said to be inactive only if the data packets count
|
||||
* during this roam_scan_inactivity_time is less than the configured
|
||||
* roam_inactive_data_count.
|
||||
*
|
||||
* Related: roam_scan_inactivity_time
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_ROAM_INACTIVE_COUNT CFG_INI_UINT( \
|
||||
"roam_inactive_data_count", \
|
||||
0, \
|
||||
0xFFFFFFFF, \
|
||||
10, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Roam scan inactivity period data pkt count")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* roam_scan_period_after_inactivity - Roam scan duration in ms after device is
|
||||
* out of inactivity state.
|
||||
*
|
||||
* @Min: 0
|
||||
* @Max: 0xFFFFFFFF
|
||||
* @Default: 120000
|
||||
*
|
||||
* If there is empty scan results during roam scan, firmware will move to
|
||||
* roam scan inactive state if roam_scan_inactivity and
|
||||
* roam_inactive_data_count criteria are met.
|
||||
* This ini is used to configure the roam scan duration in ms once the
|
||||
* inactivity is finished and roam scan can be started.
|
||||
*
|
||||
* Related: roam_scan_inactivity_time, roam_inactive_data_count
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_POST_INACTIVITY_ROAM_SCAN_PERIOD CFG_INI_UINT( \
|
||||
"roam_scan_period_after_inactivity", \
|
||||
0, \
|
||||
0xFFFFFFFF, \
|
||||
120000, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Roam scan period post inactivity")
|
||||
|
||||
#define CFG_LFR_ALL \
|
||||
CFG(CFG_LFR_MAWC_ROAM_ENABLED) \
|
||||
CFG(CFG_LFR_MAWC_ROAM_TRAFFIC_THRESHOLD) \
|
||||
@@ -2431,6 +2584,11 @@
|
||||
CFG(CFG_LFR_ROAM_FT_OPEN_ENABLE) \
|
||||
CFG(CFG_LFR_ROAM_FORCE_RSSI_TRIGGER) \
|
||||
CFG(CFG_ROAM_SCAN_SCAN_POLICY) \
|
||||
CFG(CFG_ROAM_SCAN_INACTIVITY_TIME) \
|
||||
CFG(CFG_ROAM_INACTIVE_COUNT) \
|
||||
CFG(CFG_POST_INACTIVITY_ROAM_SCAN_PERIOD) \
|
||||
CFG(CFG_BSS_LOAD_TRIG_5G_RSSI_THRES) \
|
||||
CFG(CFG_BSS_LOAD_TRIG_2G_RSSI_THRES) \
|
||||
ROAM_OFFLOAD_ALL \
|
||||
LFR_ESE_ALL \
|
||||
LFR_SUBNET_DETECTION_ALL
|
||||
|
@@ -1065,12 +1065,134 @@
|
||||
* @Min: 0
|
||||
* @Max: 1
|
||||
* @Default: 0
|
||||
*
|
||||
* Supported Feature: Power save
|
||||
*
|
||||
* Usage: Internal
|
||||
*
|
||||
* </cfg>
|
||||
*/
|
||||
#define CFG_APSD_ENABLED CFG_BOOL( \
|
||||
"apsd_enabled", \
|
||||
0, \
|
||||
"Enable APSD")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* candidate_min_rssi_for_disconnect - Candidate AP minimum RSSI in
|
||||
* idle roam trigger(in dBm).
|
||||
* @Min: -120
|
||||
* @Max: 0
|
||||
* @Default: -70
|
||||
*
|
||||
* Minimum RSSI value of the candidate AP to consider it as candidate for
|
||||
* roaming when roam trigger is Deauthentication/Disconnection from current
|
||||
* AP. This value will be sent to firmware over the WMI_ROAM_AP_PROFILE
|
||||
* wmi command in the roam_min_rssi_param_list tlv.
|
||||
*
|
||||
* Related: enable_idle_roam.
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: Internal/External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_DISCONNECT_ROAM_TRIGGER_MIN_RSSI CFG_INI_INT( \
|
||||
"candidate_min_rssi_for_disconnect", \
|
||||
-120, \
|
||||
0, \
|
||||
-70, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Minimum RSSI of candidate AP for Disconnect roam trigger")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* candidate_min_rssi_for_beacon_miss - Candidate AP minimum RSSI for beacon
|
||||
* miss roam trigger (in dBm)
|
||||
* @Min: -120
|
||||
* @Max: 0
|
||||
* @Default: -70
|
||||
*
|
||||
* Minimum RSSI value of the candidate AP to consider it as candidate for
|
||||
* roaming when roam trigger is disconnection from current AP due to beacon
|
||||
* miss. This value will be sent to firmware over the WMI_ROAM_AP_PROFILE
|
||||
* wmi command in the roam_min_rssi_param_list tlv.
|
||||
*
|
||||
* Related: None
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: Internal/External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_BMISS_ROAM_MIN_RSSI CFG_INI_INT( \
|
||||
"candidate_min_rssi_for_beacon_miss", \
|
||||
-120, \
|
||||
0, \
|
||||
-70, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Minimum RSSI of candidate AP for Bmiss roam trigger")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* idle_roam_score_delta - Roam score delta value in percentage for idle roam.
|
||||
* @Min: 0
|
||||
* @Max: 100
|
||||
* @Default: 10
|
||||
*
|
||||
* This ini is used to configure the minimum change in roam score
|
||||
* value of the AP to consider it as candidate for
|
||||
* roaming when roam trigger is due to idle state of sta.
|
||||
* This value will be sent to firmware over the WMI_ROAM_AP_PROFILE wmi
|
||||
* command in the roam_score_delta_param_list tlv.
|
||||
* Related: None
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_IDLE_ROAM_SCORE_DELTA CFG_INI_UINT( \
|
||||
"idle_roam_score_delta", \
|
||||
0, \
|
||||
100, \
|
||||
10, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Roam score delta for Idle roam trigger")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* btm_roam_score_delta - Roam score delta value in percentage for BTM triggered
|
||||
* roaming.
|
||||
* @Min: 0
|
||||
* @Max: 100
|
||||
* @Default: 10
|
||||
*
|
||||
* This ini is used to configure the minimum change in roam score
|
||||
* value of the AP to consider it as candidate when the sta is disconnected
|
||||
* from the current AP due to BTM kickout.
|
||||
* This value will be sent to firmware over the WMI_ROAM_AP_PROFILE wmi
|
||||
* command in the roam_score_delta_param_list tlv.
|
||||
*
|
||||
* Related: None
|
||||
*
|
||||
* Supported Feature: Roaming
|
||||
*
|
||||
* Usage: External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_BTM_ROAM_SCORE_DELTA CFG_INI_UINT( \
|
||||
"btm_roam_score_delta", \
|
||||
0, \
|
||||
100, \
|
||||
10, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"Roam score delta for BTM roam trigger")
|
||||
|
||||
#define CFG_SCORING_ALL \
|
||||
CFG(CFG_SCORING_RSSI_WEIGHTAGE) \
|
||||
CFG(CFG_SCORING_HT_CAPS_WEIGHTAGE) \
|
||||
@@ -1107,6 +1229,10 @@
|
||||
CFG(CFG_ROAM_TRIGGER_BITMAP) \
|
||||
CFG(CFG_ROAM_SCORE_DELTA) \
|
||||
CFG(CFG_ENABLE_SCORING_FOR_ROAM) \
|
||||
CFG(CFG_APSD_ENABLED)
|
||||
CFG(CFG_APSD_ENABLED) \
|
||||
CFG(CFG_DISCONNECT_ROAM_TRIGGER_MIN_RSSI) \
|
||||
CFG(CFG_BMISS_ROAM_MIN_RSSI) \
|
||||
CFG(CFG_IDLE_ROAM_SCORE_DELTA) \
|
||||
CFG(CFG_BTM_ROAM_SCORE_DELTA) \
|
||||
|
||||
#endif /* __CFG_MLME_SCORING_H */
|
||||
|
@@ -1248,11 +1248,19 @@ enum roaming_dfs_channel_type {
|
||||
* @threshold: Bss load threshold value above which roaming should start
|
||||
* @sample_time: Time duration in milliseconds for which the bss load value
|
||||
* should be monitored
|
||||
* @rssi_threshold_5ghz: RSSI threshold of the current connected AP below which
|
||||
* roam should be triggered if bss load threshold exceeds the configured value.
|
||||
* This value is applicable only when we are connected in 5GHz band.
|
||||
* @rssi_threshold_24ghz: RSSI threshold of the current connected AP below which
|
||||
* roam should be triggered if bss load threshold exceeds the configured value.
|
||||
* This value is applicable only when we are connected in 2.4 GHz band.
|
||||
*/
|
||||
struct bss_load_trigger {
|
||||
bool enabled;
|
||||
uint32_t threshold;
|
||||
uint32_t sample_time;
|
||||
int32_t rssi_threshold_5ghz;
|
||||
int32_t rssi_threshold_24ghz;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -1344,6 +1352,12 @@ struct bss_load_trigger {
|
||||
* @enable_ftopen: Enable/disable FT open feature
|
||||
* @roam_force_rssi_trigger: Force RSSI trigger or not
|
||||
* @roaming_scan_policy: Config roaming scan policy in fw
|
||||
* @roam_scan_inactivity_time: Device inactivity monitoring time in
|
||||
* milliseconds for which the device is considered to be inactive.
|
||||
* @roam_inactive_data_packet_count: Maximum allowed data packets count
|
||||
* during roam_scan_inactivity_time.
|
||||
* @roam_scan_period_after_inactivity: Roam scan period after device was in
|
||||
* inactive state
|
||||
*/
|
||||
struct wlan_mlme_lfr_cfg {
|
||||
bool mawc_roam_enabled;
|
||||
@@ -1438,6 +1452,9 @@ struct wlan_mlme_lfr_cfg {
|
||||
bool roam_force_rssi_trigger;
|
||||
struct bss_load_trigger bss_load_trig;
|
||||
bool roaming_scan_policy;
|
||||
uint32_t roam_scan_inactivity_time;
|
||||
uint32_t roam_inactive_data_packet_count;
|
||||
uint32_t roam_scan_period_after_inactivity;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1883,6 +1900,8 @@ struct wlan_mlme_wifi_pos_cfg {
|
||||
* not be triggered
|
||||
* @btm_query_bitmask: Bitmask to send BTM query with candidate list on
|
||||
* various roam
|
||||
* @btm_trig_min_candidate_score: Minimum score to consider the AP as candidate
|
||||
* when the roam trigger is BTM.
|
||||
*/
|
||||
struct wlan_mlme_btm {
|
||||
bool prefer_btm_query;
|
||||
@@ -1894,6 +1913,7 @@ struct wlan_mlme_btm {
|
||||
uint32_t rct_validity_timer;
|
||||
uint32_t disassoc_timer_threshold;
|
||||
uint32_t btm_query_bitmask;
|
||||
uint32_t btm_trig_min_candidate_score;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2035,6 +2055,9 @@ struct wlan_mlme_ibss_cfg {
|
||||
* @mwc: MWC related CFG items
|
||||
* @dot11_mode: dot11 mode supported
|
||||
* @reg: REG related CFG itmes
|
||||
* @trig_score_delta: Roam score delta value for various roam triggers
|
||||
* @trig_min_rssi: Expected minimum RSSI value of candidate AP for
|
||||
* various roam triggers
|
||||
*/
|
||||
struct wlan_mlme_cfg {
|
||||
struct wlan_mlme_chainmask chainmask_cfg;
|
||||
@@ -2077,6 +2100,8 @@ struct wlan_mlme_cfg {
|
||||
struct wlan_mlme_mwc mwc;
|
||||
struct wlan_mlme_dot11_mode dot11_mode;
|
||||
struct wlan_mlme_reg reg;
|
||||
struct roam_trigger_score_delta trig_score_delta[NUM_OF_ROAM_TRIGGERS];
|
||||
struct roam_trigger_min_rssi trig_min_rssi[NUM_OF_ROAM_TRIGGERS];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -2269,6 +2269,7 @@ struct roam_offload_scan_req {
|
||||
uint32_t btm_sticky_time;
|
||||
uint32_t rct_validity_timer;
|
||||
uint32_t disassoc_timer_threshold;
|
||||
uint32_t btm_trig_min_candidate_score;
|
||||
struct wmi_11k_offload_params offload_11k_params;
|
||||
uint32_t ho_delay_for_rx;
|
||||
uint32_t roam_preauth_retry_count;
|
||||
@@ -2280,7 +2281,12 @@ struct roam_offload_scan_req {
|
||||
bool bss_load_trig_enabled;
|
||||
struct wmi_bss_load_config bss_load_config;
|
||||
bool roaming_scan_policy;
|
||||
uint32_t roam_scan_inactivity_time;
|
||||
uint32_t roam_inactive_data_packet_count;
|
||||
uint32_t roam_scan_period_after_inactivity;
|
||||
uint32_t btm_query_bitmask;
|
||||
struct roam_trigger_min_rssi min_rssi_params[NUM_OF_ROAM_TRIGGERS];
|
||||
struct roam_trigger_score_delta score_delta_param[NUM_OF_ROAM_TRIGGERS];
|
||||
};
|
||||
|
||||
struct roam_offload_scan_rsp {
|
||||
|
@@ -17732,6 +17732,10 @@ csr_update_roam_scan_offload_request(struct mac_context *mac_ctx,
|
||||
mac_ctx->mlme_cfg->lfr.bss_load_trig.threshold;
|
||||
req_buf->bss_load_config.bss_load_sample_time =
|
||||
mac_ctx->mlme_cfg->lfr.bss_load_trig.sample_time;
|
||||
req_buf->bss_load_config.rssi_threshold_5ghz =
|
||||
mac_ctx->mlme_cfg->lfr.bss_load_trig.rssi_threshold_5ghz;
|
||||
req_buf->bss_load_config.rssi_threshold_24ghz =
|
||||
mac_ctx->mlme_cfg->lfr.bss_load_trig.rssi_threshold_24ghz;
|
||||
req_buf->bss_load_config.vdev_id = session->sessionId;
|
||||
|
||||
/*
|
||||
@@ -18191,6 +18195,13 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx,
|
||||
roam_info->cfgParams.maxChannelScanTime;
|
||||
req_buf->EmptyRefreshScanPeriod =
|
||||
roam_info->cfgParams.emptyScanRefreshPeriod;
|
||||
req_buf->roam_scan_inactivity_time =
|
||||
mac_ctx->mlme_cfg->lfr.roam_scan_inactivity_time;
|
||||
req_buf->roam_inactive_data_packet_count =
|
||||
mac_ctx->mlme_cfg->lfr.roam_inactive_data_packet_count;
|
||||
req_buf->roam_scan_period_after_inactivity =
|
||||
mac_ctx->mlme_cfg->lfr.roam_scan_period_after_inactivity;
|
||||
|
||||
req_buf->RoamBmissFirstBcnt =
|
||||
roam_info->cfgParams.nRoamBmissFirstBcnt;
|
||||
req_buf->RoamBmissFinalBcnt =
|
||||
@@ -18205,6 +18216,16 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx,
|
||||
req_buf->mawc_roam_params.mawc_roam_ap_rssi_threshold,
|
||||
req_buf->mawc_roam_params.mawc_roam_rssi_high_adjust,
|
||||
req_buf->mawc_roam_params.mawc_roam_rssi_low_adjust);
|
||||
|
||||
req_buf->min_rssi_params[DEAUTH_MIN_RSSI] =
|
||||
mac_ctx->mlme_cfg->trig_min_rssi[DEAUTH_MIN_RSSI];
|
||||
req_buf->min_rssi_params[BMISS_MIN_RSSI] =
|
||||
mac_ctx->mlme_cfg->trig_min_rssi[BMISS_MIN_RSSI];
|
||||
req_buf->score_delta_param[IDLE_ROAM_TRIGGER] =
|
||||
mac_ctx->mlme_cfg->trig_score_delta[IDLE_ROAM_TRIGGER];
|
||||
req_buf->score_delta_param[BTM_ROAM_TRIGGER] =
|
||||
mac_ctx->mlme_cfg->trig_score_delta[BTM_ROAM_TRIGGER];
|
||||
|
||||
#ifdef FEATURE_WLAN_ESE
|
||||
req_buf->IsESEAssoc =
|
||||
csr_roam_is_ese_assoc(mac_ctx, session_id) &&
|
||||
@@ -18355,6 +18376,8 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx,
|
||||
mac_ctx->mlme_cfg->btm.disassoc_timer_threshold;
|
||||
req_buf->btm_query_bitmask =
|
||||
mac_ctx->mlme_cfg->btm.btm_query_bitmask;
|
||||
req_buf->btm_trig_min_candidate_score =
|
||||
mac_ctx->mlme_cfg->btm.btm_trig_min_candidate_score;
|
||||
|
||||
csr_update_roam_scan_offload_request(mac_ctx, req_buf, session);
|
||||
|
||||
|
@@ -252,10 +252,9 @@ QDF_STATUS
|
||||
wma_roam_scan_offload_rssi_thresh(tp_wma_handle wma_handle,
|
||||
struct roam_offload_scan_req *roam_req);
|
||||
|
||||
QDF_STATUS wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
|
||||
uint32_t scan_period,
|
||||
uint32_t scan_age,
|
||||
uint32_t vdev_id);
|
||||
QDF_STATUS
|
||||
wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
|
||||
struct roam_offload_scan_req *roam_req);
|
||||
|
||||
QDF_STATUS wma_roam_scan_offload_rssi_change(tp_wma_handle wma_handle,
|
||||
uint32_t vdev_id,
|
||||
|
@@ -587,27 +587,37 @@ wma_roam_scan_offload_rssi_thresh(tp_wma_handle wma_handle,
|
||||
/**
|
||||
* wma_roam_scan_offload_scan_period() - set roam offload scan period
|
||||
* @wma_handle: wma handle
|
||||
* @scan_period: scan period
|
||||
* @scan_age: scan age
|
||||
* @vdev_id: vdev id
|
||||
* @roam_req: Pointer to roam_offload_scan_req
|
||||
*
|
||||
* Send WMI_ROAM_SCAN_PERIOD parameters to fw.
|
||||
*
|
||||
* Return: QDF status
|
||||
*/
|
||||
QDF_STATUS wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
|
||||
uint32_t scan_period,
|
||||
uint32_t scan_age,
|
||||
uint32_t vdev_id)
|
||||
QDF_STATUS
|
||||
wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
|
||||
struct roam_offload_scan_req *roam_req)
|
||||
{
|
||||
uint8_t vdev_id;
|
||||
struct roam_scan_period_params scan_period_params;
|
||||
|
||||
vdev_id = roam_req->sessionId;
|
||||
if (!wma_is_vdev_valid(vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__, vdev_id);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
scan_period_params.vdev_id = vdev_id;
|
||||
scan_period_params.scan_period = roam_req->EmptyRefreshScanPeriod;
|
||||
scan_period_params.scan_age = (3 * roam_req->EmptyRefreshScanPeriod);
|
||||
scan_period_params.roam_scan_inactivity_time =
|
||||
roam_req->roam_scan_inactivity_time;
|
||||
scan_period_params.roam_inactive_data_packet_count =
|
||||
roam_req->roam_inactive_data_packet_count;
|
||||
scan_period_params.roam_scan_period_after_inactivity =
|
||||
roam_req->roam_scan_period_after_inactivity;
|
||||
|
||||
return wmi_unified_roam_scan_offload_scan_period(wma_handle->wmi_handle,
|
||||
scan_period, scan_age,
|
||||
vdev_id);
|
||||
&scan_period_params);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1206,6 +1216,16 @@ static QDF_STATUS wma_roam_scan_offload_ap_profile(tp_wma_handle wma_handle,
|
||||
WMA_NOISE_FLOOR_DBM_DEFAULT;
|
||||
}
|
||||
ap_profile.param = roam_req->score_params;
|
||||
ap_profile.min_rssi_params[DEAUTH_MIN_RSSI] =
|
||||
roam_req->min_rssi_params[DEAUTH_MIN_RSSI];
|
||||
ap_profile.min_rssi_params[BMISS_MIN_RSSI] =
|
||||
roam_req->min_rssi_params[BMISS_MIN_RSSI];
|
||||
|
||||
ap_profile.score_delta_param[IDLE_ROAM_TRIGGER] =
|
||||
roam_req->score_delta_param[IDLE_ROAM_TRIGGER];
|
||||
ap_profile.score_delta_param[BTM_ROAM_TRIGGER] =
|
||||
roam_req->score_delta_param[BTM_ROAM_TRIGGER];
|
||||
|
||||
return wmi_unified_send_roam_scan_offload_ap_cmd(wma_handle->wmi_handle,
|
||||
&ap_profile);
|
||||
}
|
||||
@@ -1428,15 +1448,16 @@ wma_roam_scan_btm_offload(tp_wma_handle wma_handle,
|
||||
params->btm_sticky_time = roam_req->btm_sticky_time;
|
||||
params->disassoc_timer_threshold = roam_req->disassoc_timer_threshold;
|
||||
params->btm_query_bitmask = roam_req->btm_query_bitmask;
|
||||
params->btm_candidate_min_score =
|
||||
roam_req->btm_trig_min_candidate_score;
|
||||
|
||||
WMA_LOGD("%s: Sending BTM offload to FW for vdev %u btm_offload_config %u btm_query_bitmask %u",
|
||||
WMA_LOGD("%s: vdev %u btm_offload:%u btm_query_bitmask:%u btm_candidate_min_score:%d",
|
||||
__func__, params->vdev_id, params->btm_offload_config,
|
||||
params->btm_query_bitmask);
|
||||
params->btm_query_bitmask, params->btm_candidate_min_score);
|
||||
|
||||
status = wmi_unified_send_btm_config(wma_handle->wmi_handle, params);
|
||||
qdf_mem_free(params);
|
||||
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -1673,9 +1694,7 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
|
||||
if (roam_req->EmptyRefreshScanPeriod > 0) {
|
||||
qdf_status =
|
||||
wma_roam_scan_offload_scan_period(wma_handle,
|
||||
roam_req->EmptyRefreshScanPeriod,
|
||||
roam_req->EmptyRefreshScanPeriod * 3,
|
||||
roam_req->sessionId);
|
||||
roam_req);
|
||||
if (qdf_status != QDF_STATUS_SUCCESS)
|
||||
break;
|
||||
|
||||
@@ -1977,10 +1996,7 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
|
||||
|
||||
if (roam_req->EmptyRefreshScanPeriod > 0) {
|
||||
qdf_status = wma_roam_scan_offload_scan_period(
|
||||
wma_handle,
|
||||
roam_req->EmptyRefreshScanPeriod,
|
||||
roam_req->EmptyRefreshScanPeriod * 3,
|
||||
roam_req->sessionId);
|
||||
wma_handle, roam_req);
|
||||
if (qdf_status != QDF_STATUS_SUCCESS)
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user