/*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file contains roam specific SCORING related CFG/INI Items.
*/
#ifndef __CFG_MLME_ROAM_SCORING_H
#define __CFG_MLME_ROAM_SCORING_H
#ifdef CONNECTION_ROAMING_CFG
#define RoamCommon_Delta_min 0
#define RoamCommon_Delta_max 30
#define RoamCommon_Delta_default 20
#define RoamIdle_Delta_min 0
#define RoamIdle_Delta_max 20
#define RoamIdle_Delta_default 0
#define RoamBeaconLoss_TargetMinRSSI_min -127
#define RoamBeaconLoss_TargetMinRSSI_max -70
#define RoamBeaconLoss_TargetMinRSSI_default -75
#define RoamBTM_Delta_min 0
#define RoamBTM_Delta_max 20
#define RoamBTM_Delta_default 0
#define RoamEmergency_TargetMinRSSI_min -127
#define RoamEmergency_TargetMinRSSI_max 0
#define RoamEmergency_TargetMinRSSI_default -70
#else
#define RoamCommon_Delta_min 0
#define RoamCommon_Delta_max 100
#define RoamCommon_Delta_default 0
#define RoamIdle_Delta_min 0
#define RoamIdle_Delta_max 100
#define RoamIdle_Delta_default 0
#define RoamBeaconLoss_TargetMinRSSI_min -120
#define RoamBeaconLoss_TargetMinRSSI_max 0
#define RoamBeaconLoss_TargetMinRSSI_default -75
#define RoamBTM_Delta_min 0
#define RoamBTM_Delta_max 100
#define RoamBTM_Delta_default 0
#define RoamEmergency_TargetMinRSSI_min -120
#define RoamEmergency_TargetMinRSSI_max 0
#define RoamEmergency_TargetMinRSSI_default -75
#endif
/*
*
* roam_score_delta_bitmap - bitmap to enable roam triggers on
* which roam score delta is to be applied during roam candidate
* selection
* @Min: 0
* @Max: 0xffffffff
* @Default: 0xffffffff
*
* Bitmap value of the following roam triggers:
* ROAM_TRIGGER_REASON_NONE - B0,
* ROAM_TRIGGER_REASON_PER - B1,
* ROAM_TRIGGER_REASON_BMISS - B2,
* ROAM_TRIGGER_REASON_LOW_RSSI - B3,
* ROAM_TRIGGER_REASON_HIGH_RSSI - B4,
* ROAM_TRIGGER_REASON_PERIODIC - B5,
* ROAM_TRIGGER_REASON_MAWC - B6,
* ROAM_TRIGGER_REASON_DENSE - B7,
* ROAM_TRIGGER_REASON_BACKGROUND - B8,
* ROAM_TRIGGER_REASON_FORCED - B9,
* ROAM_TRIGGER_REASON_BTM - B10,
* ROAM_TRIGGER_REASON_UNIT_TEST - B11,
* ROAM_TRIGGER_REASON_BSS_LOAD - B12
* ROAM_TRIGGER_REASON_DISASSOC - B13
* ROAM_TRIGGER_REASON_IDLE_ROAM - B14
*
* When the bit corresponding to a particular roam trigger reason
* is set, the value of "roam_score_delta" is expected over the
* roam score of the current connected AP, for that triggered roam
*
* Related: None
*
* Supported Feature: Roaming
*
* Usage: External
*
*
*/
#define CFG_ROAM_SCORE_DELTA_TRIGGER_BITMAP CFG_INI_UINT( \
"roam_score_delta_bitmap", \
0, \
0xFFFFFFFF, \
0xFFFFFFFF, \
CFG_VALUE_OR_DEFAULT, \
"Bitmap for various roam triggers")
/*
*
* roam_score_delta/RoamCommon_Delta - Percentage increment in roam score value
* that is expected from a roaming candidate AP.
* @Min: 0
* @Max: 100
* @Default: 0
*
* This ini is used to provide the percentage increment value over roam
* score for the candidate APs so that they can be preferred over current
* AP for roaming.
*
* Related: None
*
* Supported Feature: Roaming
*
* Usage: External
*
*
*/
#define CFG_ROAM_SCORE_DELTA CFG_INI_UINT( \
"roam_score_delta RoamCommon_Delta", \
RoamCommon_Delta_min,\
RoamCommon_Delta_max, \
RoamCommon_Delta_default, \
CFG_VALUE_OR_DEFAULT, \
"candidate AP's percentage roam score delta")
/*
*
* min_roam_score_delta - Difference of roam score values between connected
* AP and roam candidate AP.
* @Min: 0
* @Max: 10000
* @Default: 0
*
* This ini is used during CU and low rssi based roam triggers, consider
* AP as roam candidate only if its roam score is better than connected
* AP score by at least min_roam_score_delta.
* If user configured "roam_score_delta" and "min_roam_score_delta" both,
* then firmware selects roam candidate AP by considering values of both
* INIs.
* Example: If DUT is connected with AP1 and roam candidate AP2 has roam
* score greater than roam_score_delta and min_roam_score_delta then only
* firmware will trigger roaming to AP2.
*
* Related: roam_score_delta
*
* Supported Feature: Roaming
*
* Usage: Internal
*
*
*/
#define CFG_CAND_MIN_ROAM_SCORE_DELTA CFG_INI_UINT( \
"min_roam_score_delta", \
0, \
10000, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Diff between connected AP's and candidate AP's roam score")
/*
*
* RoamCommon_MinRoamDelta - Difference of roam score values between connected
* AP and roam candidate AP.
* @Min: 0
* @Max: 100
* @Default: 15
*
* This ini is used during CU and low rssi based roam triggers, consider
* AP as roam candidate only if its roam score is better than connected
* AP score by at least RoamCommon_MinRoamDelta.
* If user configured "RoamCommon_Delta" and "RoamCommon_MinRoamDelta" both,
* then firmware selects roam candidate AP by considering values of both
* INIs.
* Example: If DUT is connected with AP1 and roam candidate AP2 has roam
* score greater than RoamCommon_Delta and RoamCommon_MinRoamDelta then only
* firmware will trigger roaming to AP2.
* This value needs to be given in percentage
*
* Related: RoamCommon_Delta
*
* Supported Feature: Roaming
*
* Usage: Internal
*
*
*/
#define CFG_ROAM_COMMON_MIN_ROAM_DELTA CFG_INI_UINT( \
"RoamCommon_MinRoamDelta", \
0, \
100, \
15, \
CFG_VALUE_OR_DEFAULT, \
"Diff bet connected AP's and candidate AP's roam score")
/*
*
* enable_scoring_for_roam - enable/disable scoring logic in FW for candidate
* selection during roaming
*
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable scoring logic in FW for candidate
* selection during roaming.
*
* Supported Feature: STA Candidate selection by FW during roaming based on
* scoring logic.
*
* Usage: External
*
*
*/
#define CFG_ENABLE_SCORING_FOR_ROAM CFG_INI_BOOL( \
"enable_scoring_for_roam", \
1, \
"Enable Scoring for Roam")
/*
*
* apsd_enabled - Enable automatic power save delivery
* @Min: 0
* @Max: 1
* @Default: 0
*
* Supported Feature: Power save
*
* Usage: Internal
*
*
*/
#define CFG_APSD_ENABLED CFG_BOOL( \
"apsd_enabled", \
0, \
"Enable APSD")
/*
*
* candidate_min_rssi_for_disconnect/RoamEmergency_TargetMinRSSI -
* Candidate AP minimum RSSI in idle roam trigger(in dBm).
* @Min: -120
* @Max: 0
* @Default: -75
*
* 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
*
*
*/
#define CFG_DISCONNECT_ROAM_TRIGGER_MIN_RSSI CFG_INI_INT( \
"candidate_min_rssi_for_disconnect RoamEmergency_TargetMinRSSI", \
RoamEmergency_TargetMinRSSI_min, \
RoamEmergency_TargetMinRSSI_max, \
RoamEmergency_TargetMinRSSI_default, \
CFG_VALUE_OR_DEFAULT, \
"Minimum RSSI of candidate AP for Disconnect roam trigger")
/*
*
* candidate_min_rssi_for_beacon_miss/RoamBeaconLoss_TargetMinRSSI -
* Candidate AP minimum RSSI for beacon miss roam trigger (in dBm)
* @Min: -120
* @Max: 0
* @Default: -75
*
* 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
*
*
*/
#define CFG_BMISS_ROAM_MIN_RSSI CFG_INI_INT( \
"candidate_min_rssi_for_beacon_miss RoamBeaconLoss_TargetMinRSSI", \
RoamBeaconLoss_TargetMinRSSI_min, \
RoamBeaconLoss_TargetMinRSSI_max, \
RoamBeaconLoss_TargetMinRSSI_default, \
CFG_VALUE_OR_DEFAULT, \
"Minimum RSSI of candidate AP for Bmiss roam trigger")
/*
*
* min_rssi_for_2g_to_5g_roam - Candidate AP minimum RSSI for
* 2G to 5G roam trigger (in dBm)
* @Min: -120
* @Max: 0
* @Default: -70
*
* Minimum RSSI value of the candidate AP to consider it as candidate
* for 2G to 5G roam.
*
* Related: None
*
* Supported Feature: Roaming
*
* Usage: Internal/External
*
*
*/
#define CFG_2G_TO_5G_ROAM_MIN_RSSI CFG_INI_INT( \
"min_rssi_for_2g_to_5g_roam", \
-120, \
0, \
-70, \
CFG_VALUE_OR_DEFAULT, \
"Minimum RSSI of candidate AP for 2G to 5G roam trigger")
/*
*
* idle_roam_score_delta/RoamIdle_Delta - Roam score delta value in
* percentage for idle roam.
* @Min: 0
* @Max: 100
* @Default: 0
*
* 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
*
*
*/
#define CFG_IDLE_ROAM_SCORE_DELTA CFG_INI_UINT( \
"idle_roam_score_delta RoamIdle_Delta", \
RoamIdle_Delta_min, \
RoamIdle_Delta_max, \
RoamIdle_Delta_default, \
CFG_VALUE_OR_DEFAULT, \
"Roam score delta for Idle roam trigger")
/*
*
* btm_roam_score_delta/RoamBTM_Delta - Roam score delta value in percentage for
* BTM triggered roaming.
* @Min: 0
* @Max: 100
* @Default: 0
*
* 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
*
*
*/
#define CFG_BTM_ROAM_SCORE_DELTA CFG_INI_UINT( \
"btm_roam_score_delta RoamBTM_Delta", \
RoamBTM_Delta_min, \
RoamBTM_Delta_max, \
RoamBTM_Delta_default, \
CFG_VALUE_OR_DEFAULT, \
"Roam score delta for BTM roam trigger")
#define CFG_ROAM_SCORING_ALL \
CFG(CFG_ROAM_SCORE_DELTA_TRIGGER_BITMAP) \
CFG(CFG_ROAM_SCORE_DELTA) \
CFG(CFG_CAND_MIN_ROAM_SCORE_DELTA) \
CFG(CFG_ROAM_COMMON_MIN_ROAM_DELTA) \
CFG(CFG_ENABLE_SCORING_FOR_ROAM) \
CFG(CFG_APSD_ENABLED) \
CFG(CFG_DISCONNECT_ROAM_TRIGGER_MIN_RSSI) \
CFG(CFG_BMISS_ROAM_MIN_RSSI) \
CFG(CFG_2G_TO_5G_ROAM_MIN_RSSI) \
CFG(CFG_IDLE_ROAM_SCORE_DELTA) \
CFG(CFG_BTM_ROAM_SCORE_DELTA)
#endif /* __CFG_MLME_ROAM_SCORING_H */