qcacld-3.0: Use MLME CFG for BSS Scoring Items

Implement the usage of MLME CFG infra for BSS Scoring related INI Items
and remove the older INI definitions from HDD.

Change-Id: I0db69138f0439131916a38176b5b21b706ff3671
CRs-Fixed: 2318320
This commit is contained in:
Vignesh Viswanathan
2018-09-17 17:00:29 +05:30
committed by nshrivas
parent db2dbab047
commit 987f0bba09
11 changed files with 260 additions and 1484 deletions

View File

@@ -21,6 +21,7 @@
#include "wlan_mlme_main.h" #include "wlan_mlme_main.h"
#include "cfg_ucfg_api.h" #include "cfg_ucfg_api.h"
#include "wlan_scan_public_structs.h"
struct wlan_mlme_psoc_obj *mlme_get_psoc_obj(struct wlan_objmgr_psoc *psoc) struct wlan_mlme_psoc_obj *mlme_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
{ {
@@ -375,6 +376,151 @@ static void wlan_mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
cfg_default(CFG_LFR_MAX_NUM_PRE_AUTH); cfg_default(CFG_LFR_MAX_NUM_PRE_AUTH);
} }
static uint32_t
mlme_limit_max_per_index_score(uint32_t per_index_score)
{
uint8_t i, score;
for (i = 0; i < MAX_INDEX_PER_INI; i++) {
score = WLAN_GET_SCORE_PERCENTAGE(per_index_score, i);
if (score > MAX_INDEX_SCORE)
WLAN_SET_SCORE_PERCENTAGE(per_index_score,
MAX_INDEX_SCORE, i);
}
return per_index_score;
}
static void mlme_init_scoring_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_scoring_cfg *scoring_cfg)
{
uint32_t total_weight;
scoring_cfg->enable_scoring_for_roam =
cfg_get(psoc, CFG_ENABLE_SCORING_FOR_ROAM);
scoring_cfg->weight_cfg.rssi_weightage =
cfg_get(psoc, CFG_SCORING_RSSI_WEIGHTAGE);
scoring_cfg->weight_cfg.ht_caps_weightage =
cfg_get(psoc, CFG_SCORING_HT_CAPS_WEIGHTAGE);
scoring_cfg->weight_cfg.vht_caps_weightage =
cfg_get(psoc, CFG_SCORING_VHT_CAPS_WEIGHTAGE);
scoring_cfg->weight_cfg.he_caps_weightage =
cfg_get(psoc, CFG_SCORING_HE_CAPS_WEIGHTAGE);
scoring_cfg->weight_cfg.chan_width_weightage =
cfg_get(psoc, CFG_SCORING_CHAN_WIDTH_WEIGHTAGE);
scoring_cfg->weight_cfg.chan_band_weightage =
cfg_get(psoc, CFG_SCORING_CHAN_BAND_WEIGHTAGE);
scoring_cfg->weight_cfg.nss_weightage =
cfg_get(psoc, CFG_SCORING_NSS_WEIGHTAGE);
scoring_cfg->weight_cfg.beamforming_cap_weightage =
cfg_get(psoc, CFG_SCORING_BEAMFORM_CAP_WEIGHTAGE);
scoring_cfg->weight_cfg.pcl_weightage =
cfg_get(psoc, CFG_SCORING_PCL_WEIGHTAGE);
scoring_cfg->weight_cfg.channel_congestion_weightage =
cfg_get(psoc, CFG_SCORING_CHAN_CONGESTION_WEIGHTAGE);
scoring_cfg->weight_cfg.oce_wan_weightage =
cfg_get(psoc, CFG_SCORING_OCE_WAN_WEIGHTAGE);
total_weight = scoring_cfg->enable_scoring_for_roam +
scoring_cfg->weight_cfg.rssi_weightage +
scoring_cfg->weight_cfg.ht_caps_weightage +
scoring_cfg->weight_cfg.vht_caps_weightage +
scoring_cfg->weight_cfg.he_caps_weightage +
scoring_cfg->weight_cfg.chan_width_weightage +
scoring_cfg->weight_cfg.chan_band_weightage +
scoring_cfg->weight_cfg.nss_weightage +
scoring_cfg->weight_cfg.beamforming_cap_weightage +
scoring_cfg->weight_cfg.pcl_weightage +
scoring_cfg->weight_cfg.channel_congestion_weightage +
scoring_cfg->weight_cfg.oce_wan_weightage;
/*
* If configured weights are greater than max weight,
* fallback to default weights
*/
if (total_weight > BEST_CANDIDATE_MAX_WEIGHT) {
mlme_err("Total weight greater than %d, using default weights",
BEST_CANDIDATE_MAX_WEIGHT);
scoring_cfg->weight_cfg.rssi_weightage = RSSI_WEIGHTAGE;
scoring_cfg->weight_cfg.ht_caps_weightage =
HT_CAPABILITY_WEIGHTAGE;
scoring_cfg->weight_cfg.vht_caps_weightage =
VHT_CAP_WEIGHTAGE;
scoring_cfg->weight_cfg.he_caps_weightage = HE_CAP_WEIGHTAGE;
scoring_cfg->weight_cfg.chan_width_weightage =
CHAN_WIDTH_WEIGHTAGE;
scoring_cfg->weight_cfg.chan_band_weightage =
CHAN_BAND_WEIGHTAGE;
scoring_cfg->weight_cfg.nss_weightage = NSS_WEIGHTAGE;
scoring_cfg->weight_cfg.beamforming_cap_weightage =
BEAMFORMING_CAP_WEIGHTAGE;
scoring_cfg->weight_cfg.pcl_weightage = PCL_WEIGHT;
scoring_cfg->weight_cfg.channel_congestion_weightage =
CHANNEL_CONGESTION_WEIGHTAGE;
scoring_cfg->weight_cfg.oce_wan_weightage = OCE_WAN_WEIGHTAGE;
}
scoring_cfg->rssi_score.best_rssi_threshold =
cfg_get(psoc, CFG_SCORING_BEST_RSSI_THRESHOLD);
scoring_cfg->rssi_score.good_rssi_threshold =
cfg_get(psoc, CFG_SCORING_GOOD_RSSI_THRESHOLD);
scoring_cfg->rssi_score.bad_rssi_threshold =
cfg_get(psoc, CFG_SCORING_BAD_RSSI_THRESHOLD);
scoring_cfg->rssi_score.good_rssi_pcnt =
cfg_get(psoc, CFG_SCORING_GOOD_RSSI_PERCENT);
scoring_cfg->rssi_score.bad_rssi_pcnt =
cfg_get(psoc, CFG_SCORING_BAD_RSSI_PERCENT);
scoring_cfg->rssi_score.good_rssi_bucket_size =
cfg_get(psoc, CFG_SCORING_GOOD_RSSI_BUCKET_SIZE);
scoring_cfg->rssi_score.bad_rssi_bucket_size =
cfg_get(psoc, CFG_SCORING_BAD_RSSI_BUCKET_SIZE);
scoring_cfg->rssi_score.rssi_pref_5g_rssi_thresh =
cfg_get(psoc, CFG_SCORING_RSSI_PREF_5G_THRESHOLD);
scoring_cfg->bandwidth_weight_per_index =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_BW_WEIGHT_PER_IDX));
scoring_cfg->nss_weight_per_index =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_NSS_WEIGHT_PER_IDX));
scoring_cfg->band_weight_per_index =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_BAND_WEIGHT_PER_IDX));
scoring_cfg->esp_qbss_scoring.num_slot =
cfg_get(psoc, CFG_SCORING_NUM_ESP_QBSS_SLOTS);
scoring_cfg->esp_qbss_scoring.score_pcnt3_to_0 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_ESP_QBSS_SCORE_IDX_3_TO_0));
scoring_cfg->esp_qbss_scoring.score_pcnt7_to_4 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_ESP_QBSS_SCORE_IDX_7_TO_4));
scoring_cfg->esp_qbss_scoring.score_pcnt11_to_8 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_ESP_QBSS_SCORE_IDX_11_TO_8));
scoring_cfg->esp_qbss_scoring.score_pcnt15_to_12 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_ESP_QBSS_SCORE_IDX_15_TO_12));
scoring_cfg->oce_wan_scoring.num_slot =
cfg_get(psoc, CFG_SCORING_NUM_OCE_WAN_SLOTS);
scoring_cfg->oce_wan_scoring.score_pcnt3_to_0 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_OCE_WAN_SCORE_IDX_3_TO_0));
scoring_cfg->oce_wan_scoring.score_pcnt7_to_4 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_OCE_WAN_SCORE_IDX_7_TO_4));
scoring_cfg->oce_wan_scoring.score_pcnt11_to_8 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_OCE_WAN_SCORE_IDX_11_TO_8));
scoring_cfg->oce_wan_scoring.score_pcnt15_to_12 =
mlme_limit_max_per_index_score(
cfg_get(psoc, CFG_SCORING_OCE_WAN_SCORE_IDX_15_TO_12));
}
QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
{ {
struct wlan_mlme_psoc_obj *mlme_obj; struct wlan_mlme_psoc_obj *mlme_obj;
@@ -398,6 +544,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
mlme_init_obss_ht40_cfg(psoc, &mlme_cfg->obss_ht40); mlme_init_obss_ht40_cfg(psoc, &mlme_cfg->obss_ht40);
mlme_init_sta_cfg(psoc, &mlme_cfg->sta); mlme_init_sta_cfg(psoc, &mlme_cfg->sta);
wlan_mlme_init_lfr_cfg(psoc, &mlme_cfg->lfr); wlan_mlme_init_lfr_cfg(psoc, &mlme_cfg->lfr);
mlme_init_scoring_cfg(psoc, &mlme_cfg->scoring);
return status; return status;
} }

View File

@@ -34,6 +34,7 @@
#include "cfg_mlme_sta.h" #include "cfg_mlme_sta.h"
#include "cfg_sap_protection.h" #include "cfg_sap_protection.h"
#include "cfg_mlme_sap.h" #include "cfg_mlme_sap.h"
#include "cfg_mlme_scoring.h"
#define CFG_MLME_ALL \ #define CFG_MLME_ALL \
CFG_CHAINMASK_ALL \ CFG_CHAINMASK_ALL \
@@ -46,6 +47,7 @@
CFG_RATES_ALL \ CFG_RATES_ALL \
CFG_SAP_PROTECTION_ALL \ CFG_SAP_PROTECTION_ALL \
CFG_SAP_ALL \ CFG_SAP_ALL \
CFG_STA_ALL CFG_STA_ALL \
CFG_SCORING_ALL
#endif /* __CFG_MLME_H */ #endif /* __CFG_MLME_H */

View File

@@ -10091,143 +10091,6 @@ enum hdd_external_acs_policy {
#define CFG_IS_BSSID_HINT_PRIORITY_MAX (1) #define CFG_IS_BSSID_HINT_PRIORITY_MAX (1)
/* /*
* <ini>
* rssi_weightage - RSSI Weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 20
*
* This ini is used to increase/decrease RSSI weightage in best candidate
* selection. AP with better RSSI will get more weightage.
*
* Related: None
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_RSSI_WEIGHTAGE_NAME "rssi_weightage"
#define CFG_RSSI_WEIGHTAGE_DEFAULT (20)
#define CFG_RSSI_WEIGHTAGE_MIN (0)
#define CFG_RSSI_WEIGHTAGE_MAX (100)
/*
* <ini>
* ht_caps_weightage - HT caps weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 2
*
* This ini is used to increase/decrease HT caps weightage in best candidate
* selection. If AP supports HT caps, AP will get additional Weightage with
* this param. Weightage will be given only if dot11mode is HT capable.
*
* Related: None
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_HT_CAPABILITY_WEIGHTAGE_NAME "ht_caps_weightage"
#define CFG_HT_CAPABILITY_WEIGHTAGE_DEFAULT (2)
#define CFG_HT_CAPABILITY_WEIGHTAGE_MIN (0)
#define CFG_HT_CAPABILITY_WEIGHTAGE_MAX (100)
/*
* <ini>
* vht_caps_weightage - VHT caps Weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 1
*
* This ini is used to increase/decrease VHT caps weightage in best candidate
* selection. If AP supports VHT caps, AP will get additional weightage with
* this param. Weightage will be given only if dot11mode is VHT capable.
*
* Related: None
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_VHT_CAPABILITY_WEIGHTAGE_NAME "vht_caps_weightage"
#define CFG_VHT_CAPABILITY_WEIGHTAGE_DEFAULT (1)
#define CFG_VHT_CAPABILITY_WEIGHTAGE_MIN (0)
#define CFG_VHT_CAPABILITY_WEIGHTAGE_MAX (100)
/*
* <ini>
* he_caps_weightage - HE caps Weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 1
*
* This ini is used to increase/decrease HE caps weightage in best candidate
* selection. If AP supports HE caps, AP will get additional weightage with
* this param. Weightage will be given only if dot11mode is HE capable.
*
* Related: None
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_HE_CAPABILITY_WEIGHTAGE_NAME "he_caps_weightage"
#define CFG_HE_CAPABILITY_WEIGHTAGE_DEFAULT (2)
#define CFG_HE_CAPABILITY_WEIGHTAGE_MIN (0)
#define CFG_HE_CAPABILITY_WEIGHTAGE_MAX (100)
/*
* <ini>
* chan_width_weightage - Channel Width Weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 17
*
* This ini is used to increase/decrease Channel Width weightage in best
* candidate selection. AP with Higher channel width will get higher weightage
*
* Related: bandwidth_weight_per_index
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_CHAN_WIDTH_WEIGHTAGE_NAME "chan_width_weightage"
#define CFG_CHAN_WIDTH_WEIGHTAGE_DEFAULT (17)
#define CFG_CHAN_WIDTH_WEIGHTAGE_MIN (0)
#define CFG_CHAN_WIDTH_WEIGHTAGE_MAX (100)
/*
* <ini>
* chan_band_weightage - Channel Band perferance to 5GHZ to
* calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 2
*
* This ini is used to increase/decrease Channel Band Preference weightage
* in best candidate selection. 5GHZ AP get this additional boost compare to
* 2GHZ AP before rssi_pref_5g_rssi_thresh and 2.4Ghz get weightage after
* rssi_pref_5g_rssi_thresh.
*
* Related: rssi_pref_5g_rssi_thresh, band_weight_per_index
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
* gEnableFastPwrTransition - Configuration for fast power transition * gEnableFastPwrTransition - Configuration for fast power transition
* @Min: 0 * @Min: 0
* @Max: 2 * @Max: 2
@@ -10270,739 +10133,6 @@ enum hdd_external_acs_policy {
#define CFG_IS_SAE_ENABLED_MIN (0) #define CFG_IS_SAE_ENABLED_MIN (0)
#define CFG_IS_SAE_ENABLED_MAX (1) #define CFG_IS_SAE_ENABLED_MAX (1)
/*
* Type declarations
*/
#define CFG_CHAN_BAND_WEIGHTAGE_NAME "chan_band_weightage"
#define CFG_CHAN_BAND_WEIGHTAGE_DEFAULT (2)
#define CFG_CHAN_BAND_WEIGHTAGE_MIN (0)
#define CFG_CHAN_BAND_WEIGHTAGE_MAX (100)
/*
* <ini>
* nss_weightage - NSS Weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 16
*
* This ini is used to increase/decrease NSS weightage in best candidate
* selection. If there are two AP, one AP supports 2x2 and another one supports
* 1x1 and station supports 2X2, first A will get this additional weightage
* depending on self-capability.
*
* Related: nss_weight_per_index
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_NSS_WEIGHTAGE_NAME "nss_weightage"
#define CFG_NSS_WEIGHTAGE_DEFAULT (16)
#define CFG_NSS_WEIGHTAGE_MIN (0)
#define CFG_NSS_WEIGHTAGE_MAX (100)
/*
* <ini>
* beamforming_cap_weightage - Beam Forming Weightage to
* calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 2
*
* This ini is used to increase/decrease Beam forming Weightage if some AP
* support Beam forming or not. If AP supports Beam forming, that AP will get
* additional boost of this weightage.
*
* Related: None
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_BEAMFORMING_CAP_WEIGHTAGE_NAME "beamforming_cap_weightage"
#define CFG_BEAMFORMING_CAP_WEIGHTAGE_DEFAULT (2)
#define CFG_BEAMFORMING_CAP_WEIGHTAGE_MIN (0)
#define CFG_BEAMFORMING_CAP_WEIGHTAGE_MAX (100)
/*
* <ini>
* pcl_weightage - PCL Weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 10
*
* This ini is used to increase/decrease PCL weightage in best candidate
* selection. If some APs are in PCL list, those AP will get addition
* weightage.
*
* Related: None
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_PCL_WEIGHT_WEIGHTAGE_NAME "pcl_weightage"
#define CFG_PCL_WEIGHT_DEFAULT (10)
#define CFG_PCL_WEIGHT_MIN (0)
#define CFG_PCL_WEIGHT_MAX (100)
/*
* <ini>
* channel_congestion_weightage - channel Congestion Weightage to
* calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 5
*
* This ini is used to increase/decrease channel congestion weightage in
* candidate selection. Congestion is measured with the help of ESP/QBSS load.
*
* Related: num_esp_qbss_slots
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_CHANNEL_CONGESTION_WEIGHTAGE_NAME "channel_congestion_weightage"
#define CFG_CHANNEL_CONGESTION_WEIGHTAGE_DEFAULT (5)
#define CFG_CHANNEL_CONGESTION_WEIGHTAGE_MIN (0)
#define CFG_CHANNEL_CONGESTION_WEIGHTAGE_MAX (100)
/*
* <ini>
* oce_wan_weightage - OCE WAN DL capacity Weightage to calculate best candidate
* @Min: 0
* @Max: 100
* @Default: 2
*
* This ini is used to increase/decrease OCE WAN caps weightage in best
* candidate selection. If AP have OCE WAN information, give weightage depending
* on the downaload available capacity.
*
* Related: num_oce_wan_slots
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_OCE_WAN_WEIGHTAGE_NAME "oce_wan_weightage"
#define CFG_OCE_WAN_WEIGHTAGE_DEFAULT (2)
#define CFG_OCE_WAN_WEIGHTAGE_MIN (0)
#define CFG_OCE_WAN_WEIGHTAGE_MAX (100)
/*
* <ini>
* best_rssi_threshold - Best Rssi for score calculation
* @Min: 0
* @Max: 96
* @Default: 55
*
* This ini tells limit for best RSSI. RSSI better than this limit are
* considered as best RSSI. The best RSSI is given full rssi_weightage.
*
* Related: rssi_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_BEST_RSSI_THRESHOLD_NAME "best_rssi_threshold"
#define CFG_BEST_RSSI_THRESHOLD_DEFAULT (55)
#define CFG_BEST_RSSI_THRESHOLD_MIN (0)
#define CFG_BEST_RSSI_THRESHOLD_MAX (96)
/*
* <ini>
* good_rssi_threshold - Good Rssi for score calculation
* @Min: 0
* @Max: 96
* @Default: 70
*
* This ini tells limit for good RSSI. RSSI better than this limit and less
* than best_rssi_threshold is considered as good RSSI.
*
* Related: rssi_weightage, best_rssi_threshold
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_GOOD_RSSI_THRESHOLD_NAME "good_rssi_threshold"
#define CFG_GOOD_RSSI_THRESHOLD_DEFAULT (70)
#define CFG_GOOD_RSSI_THRESHOLD_MIN (0)
#define CFG_GOOD_RSSI_THRESHOLD_MAX (96)
/*
* <ini>
* bad_rssi_threshold - Bad Rssi for score calculation
* @Min: 0
* @Max: 96
* @Default: 80
*
* This ini tells limit for Bad RSSI. RSSI greater then bad_rssi_threshold
* is considered as bad RSSI.
*
* Related: rssi_weightage, good_rssi_threshold
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_BAD_RSSI_THRESHOLD_NAME "bad_rssi_threshold"
#define CFG_BAD_RSSI_THRESHOLD_DEFAULT (80)
#define CFG_BAD_RSSI_THRESHOLD_MIN (0)
#define CFG_BAD_RSSI_THRESHOLD_MAX (96)
/*
* <ini>
* good_rssi_pcnt - Percent Score to Good RSSI out of total RSSI score.
* @Min: 0
* @Max: 100
* @Default: 80
*
* This ini tells about how much percent should be given to good RSSI(RSSI
* between best_rssi_threshold and good_rssi_threshold) out of RSSI weightage.
*
* Related: rssi_weightage, best_rssi_threshold, good_rssi_threshold
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_GOOD_RSSI_PCNT_NAME "good_rssi_pcnt"
#define CFG_GOOD_RSSI_PCNT_DEFAULT (80)
#define CFG_GOOD_RSSI_PCNT_MIN (0)
#define CFG_GOOD_RSSI_PCNT_MAX (100)
/*
* <ini>
* bad_rssi_pcnt - Percent Score to BAD RSSI out of total RSSI score.
* @Min: 0
* @Max: 100
* @Default: 25
*
* This ini tells about how much percent should be given to bad RSSI (RSSI
* between good_rssi_threshold and bad_rssi_threshold) out of RSSI weightage.
*
* Related: rssi_weightage, good_rssi_threshold, bad_rssi_threshold
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_BAD_RSSI_PCNT_NAME "bad_rssi_pcnt"
#define CFG_BAD_RSSI_PCNT_DEFAULT (25)
#define CFG_BAD_RSSI_PCNT_MIN (0)
#define CFG_BAD_RSSI_PCNT_MAX (100)
/*
* <ini>
* good_rssi_bucket_size - Bucket size between best and good RSSI to score.
* @Min: 1
* @Max: 10
* @Default: 5
*
* This ini tells about bucket size for scoring between best and good RSSI.
* Below Best RSSI, 100% score will be given. Between best and good RSSI, RSSI
* is divided in buckets and score will be assigned bucket wise starting from
* good_rssi_pcnt.
*
* Related: rssi_weightage, good_rssi_pcnt
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_GOOD_RSSI_BUCKET_SIZE_NAME "good_rssi_bucket_size"
#define CFG_GOOD_RSSI_BUCKET_SIZE_DEFAULT (5)
#define CFG_GOOD_RSSI_BUCKET_SIZE_MIN (1)
#define CFG_GOOD_RSSI_BUCKET_SIZE_MAX (10)
/*
* <ini>
* bad_rssi_bucket_size - Bucket size between good and bad RSSI to score.
* @Min: 1
* @Max: 10
* @Default: 5
*
* This ini tells about bucket size for scoring between good and bad RSSI.
* Between good and bad RSSI, RSSI is divided in buckets and score will be
* assigned bucket wise starting from bad_rssi_pcnt.
*
* Related: rssi_weightage, bad_rssi_pcnt
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_BAD_RSSI_BUCKET_SIZE_NAME "bad_rssi_bucket_size"
#define CFG_BAD_RSSI_BUCKET_SIZE_DEFAULT (5)
#define CFG_BAD_RSSI_BUCKET_SIZE_MIN (1)
#define CFG_BAD_RSSI_BUCKET_SIZE_MAX (10)
/*
* <ini>
* rssi_pref_5g_rssi_thresh - A RSSI threshold above which 5 GHz is not favored
* @Min: 0
* @Max: 96
* @Default: 76
*
* 5G AP are given chan_band_weightage. This ini tells about RSSI threshold
* above which 5GHZ is not favored.
*
* Related: chan_band_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_RSSI_PERF_5G_THRESHOLD_NAME "rssi_pref_5g_rssi_thresh"
#define CFG_RSSI_PERF_5G_THRESHOLD_DEFAULT (76)
#define CFG_RSSI_PERF_5G_THRESHOLD_MIN (0)
#define CFG_RSSI_PERF_5G_THRESHOLD_MAX (96)
/*
* <ini>
* bandwidth_weight_per_index - percentage as per bandwidth
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x6432190C
*
* This INI give percentage value of chan_width_weightage to be used as per
* peer bandwidth. Self BW is also considered while calculating score. Eg if
* self BW is 20 MHZ 10% will be given for all AP irrespective of the AP
* capability.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): 20 MHz - Def 12%
* 1 Index (BITS 8-15): 40 MHz - Def 25%
* 2 Index (BITS 16-23): 80 MHz - Def 50%
* 3 Index (BITS 24-31): 160 MHz - Def 100%
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: chan_width_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_BAND_WIDTH_WEIGHT_PER_INDEX_NAME "bandwidth_weight_per_index"
#define CFG_BAND_WIDTH_WEIGHT_PER_INDEX_DEFAULT (0x6432190C)
#define CFG_BAND_WIDTH_WEIGHT_PER_INDEX_MIN (0x00000000)
#define CFG_BAND_WIDTH_WEIGHT_PER_INDEX_MAX (0x64646464)
/*
* <ini>
* nss_weight_per_index - percentage as per NSS
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x6432190C
*
* This INI give percentage value of nss_weightage to be used as per peer NSS.
* Self NSS capability is also considered. Eg if self NSS is 1x1 10% will be
* given for all AP irrespective of the AP capability.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): 1X1- Def 12%
* 1 Index (BITS 8-15): 2X2- Def 25%
* 2 Index (BITS 16-23): 3X3- Def 50%
* 3 Index (BITS 24-31): 4X4- Def 100%
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: nss_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_NSS_WEIGHT_PER_INDEX_NAME "nss_weight_per_index"
#define CFG_NSS_WEIGHT_PER_INDEX_DEFAULT (0x6432190C)
#define CFG_NSS_WEIGHT_PER_INDEX_MIN (0x00000000)
#define CFG_NSS_WEIGHT_PER_INDEX_MAX (0x64646464)
/*
* <ini>
* band_weight_per_index - percentage as per band
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x0000644B
*
* This INI give percentage value of chan_band_weightage to be used as per band.
* If RSSI is greater than rssi_pref_5g_rssi_thresh preference is given for 5Ghz
* else, it's given for 2.4Ghz.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): 2.4GHz - Def 10%
* 1 Index (BITS 8-15): 5GHz - Def 20%
* 2 Index (BITS 16-23): Reserved
* 3 Index (BITS 24-31): Reserved
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: chan_band_weightage, rssi_pref_5g_rssi_thresh
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_BAND_WEIGHT_PER_INDEX_NAME "band_weight_per_index"
#define CFG_BAND_WEIGHT_PER_INDEX_DEFAULT (0x0000644B)
#define CFG_BAND_WEIGHT_PER_INDEX_MIN (0x00000000)
#define CFG_BAND_WEIGHT_PER_INDEX_MAX (0x64646464)
/*
* <ini>
* num_esp_qbss_slots - number of slots in which the esp/qbss load will
* be divided
*
* @Min: 1
* @Max: 15
* @Default: 4
*
* Number of slots in which the esp/qbss load will be divided. Max 15. index 0
* is used for 'not_present. Num_slot will equally divide 100. e.g, if
* num_slot = 4 slot 1 = 0-25% load, slot 2 = 26-50% load, slot 3 = 51-75% load,
* slot 4 = 76-100% load. Remaining unused index can be 0.
*
* Usage: External
*
* </ini>
*/
#define CFG_ESP_QBSS_SLOTS_NAME "num_esp_qbss_slots"
#define CFG_ESP_QBSS_SLOTS_DEFAULT (4)
#define CFG_ESP_QBSS_SLOTS_MIN (1)
#define CFG_ESP_QBSS_SLOTS_MAX (15)
/*
* <ini>
* esp_qbss_score_idx3_to_0 - percentage for esp/qbss load for slots 0-3
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x19326432
*
* This INI give percentage value of channel_congestion_weightage to be used as
* index in which the load value falls. Index 0 is for percentage when ESP/QBSS
* is not present.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): when ESP/QBSS is not present
* 1 Index (BITS 8-15): SLOT_1
* 2 Index (BITS 16-23): SLOT_2
* 3 Index (BITS 24-31): SLOT_3
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: channel_congestion_weightage, num_esp_qbss_slots
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_ESP_QBSS_SCORE_IDX3_TO_0_NAME "esp_qbss_score_idx3_to_0"
#define CFG_ESP_QBSS_SCORE_IDX3_TO_0_DEFAULT (0x19326432)
#define CFG_ESP_QBSS_SCORE_IDX3_TO_0_MIN (0x00000000)
#define CFG_ESP_QBSS_SCORE_IDX3_TO_0_MAX (0x64646464)
/*
* <ini>
* esp_qbss_score_idx7_to_4 - percentage for esp/qbss load for slots 4-7
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x0000000A
*
* This INI give percentage value of channel_congestion_weightage to be used as
* index in which the load value falls. Used only if num_esp_qbss_slots is
* greater than 3.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): SLOT_4
* 1 Index (BITS 8-15): SLOT_5
* 2 Index (BITS 16-23): SLOT_6
* 3 Index (BITS 24-31): SLOT_7
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: channel_congestion_weightage, num_esp_qbss_slots
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_ESP_QBSS_SCORE_IDX7_TO_4_NAME "esp_qbss_score_idx7_to_4"
#define CFG_ESP_QBSS_SCORE_IDX7_TO_4_DEFAULT (0x0000000A)
#define CFG_ESP_QBSS_SCORE_IDX7_TO_4_MIN (0x00000000)
#define CFG_ESP_QBSS_SCORE_IDX7_TO_4_MAX (0x64646464)
/*
* <ini>
* esp_qbss_score_idx11_to_8 - percentage for esp/qbss load for slots 8-11
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x00000000
*
* This INI give percentage value of channel_congestion_weightage to be used as
* index in which the load value falls. Used only if num_esp_qbss_slots is
* greater than 7.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): SLOT_8
* 1 Index (BITS 8-15): SLOT_9
* 2 Index (BITS 16-23): SLOT_10
* 3 Index (BITS 24-31): SLOT_11
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: channel_congestion_weightage, num_esp_qbss_slots
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_ESP_QBSS_SCORE_IDX11_TO_8_NAME "esp_qbss_score_idx11_to_8"
#define CFG_ESP_QBSS_SCORE_IDX11_TO_8_DEFAULT (0x00000000)
#define CFG_ESP_QBSS_SCORE_IDX11_TO_8_MIN (0x00000000)
#define CFG_ESP_QBSS_SCORE_IDX11_TO_8_MAX (0x64646464)
/*
* <ini>
* esp_qbss_score_idx15_to_12 - percentage for esp/qbss load for slots 12-15
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x00000000
*
* This INI give percentage value of channel_congestion_weightage to be used as
* index in which the load value falls. Used only if num_esp_qbss_slots is
* greater than 11.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): SLOT_12
* 1 Index (BITS 8-15): SLOT_13
* 2 Index (BITS 16-23): SLOT_14
* 3 Index (BITS 24-31): SLOT_15
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: channel_congestion_weightage, num_esp_qbss_slots
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_ESP_QBSS_SCORE_IDX15_TO_12_NAME "esp_qbss_score_idx15_to_12"
#define CFG_ESP_QBSS_SCORE_IDX15_TO_12_DEFAULT (0x00000000)
#define CFG_ESP_QBSS_SCORE_IDX15_TO_12_MIN (0x00000000)
#define CFG_ESP_QBSS_SCORE_IDX15_TO_12_MAX (0x64646464)
/*
* <ini>
* num_oce_wan_slots - number of slots in which the oce wan metrics will
* be divided
*
* @Min: 1
* @Max: 15
* @Default: 8
*
* Number of slots in which the oce wan metrics will be divided. Max 15. index 0
* is used for not_present. Num_slot will equally divide 100. e.g, if
* num_slot = 4 slot 1 = 0-3 DL CAP, slot 2 = 4-7 DL CAP, slot 3 = 8-11 DL CAP,
* slot 4 = 12-15 DL CAP. Remaining unused index can be 0.
*
* Related: oce_wan_weightage
*
* Usage: External
*
* </ini>
*/
#define CFG_OCE_WAN_SLOTS_NAME "num_oce_wan_slots"
#define CFG_OCE_WAN_SLOTS_DEFAULT (15)
#define CFG_OCE_WAN_SLOTS_MIN (1)
#define CFG_OCE_WAN_SLOTS_MAX (15)
/*
* <ini>
* oce_wan_score_idx3_to_0 - percentage for OCE WAN metrics score for slots 0-3
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x00000032
*
* This INI give percentage value of OCE WAN metrics DL CAP, to be used as
* index in which the DL CAP value falls. Index 0 is for percentage when
* OCE WAN metrics DL CAP is not present.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): when OCE WAN metrics DL CAP is not present
* 1 Index (BITS 8-15): SLOT_1
* 2 Index (BITS 16-23): SLOT_2
* 3 Index (BITS 24-31): SLOT_3
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: num_oce_wan_slots, oce_wan_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_OCE_WAN_SCORE_IDX3_TO_0_NAME "oce_wan_score_idx3_to_0"
#define CFG_OCE_WAN_SCORE_IDX3_TO_0_DEFAULT (0x00000032)
#define CFG_OCE_WAN_SCORE_IDX3_TO_0_MIN (0x00000000)
#define CFG_OCE_WAN_SCORE_IDX3_TO_0_MAX (0x64646464)
/*
* <ini>
* oce_wan_score_idx7_to_4 - percentage for OCE WAN metrics score for slots 4-7
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x00000000
*
* This INI give percentage value of OCE WAN metrics DL CAP, to be used as
* index in which the DL CAP value falls. Used only if num_oce_wan_slots is
* greater than 3.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): SLOT_4
* 1 Index (BITS 8-15): SLOT_5
* 2 Index (BITS 16-23): SLOT_6
* 3 Index (BITS 24-31): SLOT_7
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: num_oce_wan_slots, oce_wan_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_OCE_WAN_SCORE_IDX7_TO_4_NAME "oce_wan_score_idx7_to_4"
#define CFG_OCE_WAN_SCORE_IDX7_TO_4_DEFAULT (0x00000000)
#define CFG_OCE_WAN_SCORE_IDX7_TO_4_MIN (0x00000000)
#define CFG_OCE_WAN_SCORE_IDX7_TO_4_MAX (0x64646464)
/*
* <ini>
* oce_wan_score_idx11_to_8 - percentage for OCE WAN metrics score for slot 8-11
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x06030000
*
* This INI give percentage value of OCE WAN metrics DL CAP, to be used as
* index in which the DL CAP value falls. Used only if num_oce_wan_slots is
* greater than 7.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): SLOT_8
* 1 Index (BITS 8-15): SLOT_9
* 2 Index (BITS 16-23): SLOT_10
* 3 Index (BITS 24-31): SLOT_11
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: num_oce_wan_slots, oce_wan_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_OCE_WAN_SCORE_IDX11_TO_8_NAME "oce_wan_score_idx11_to_8"
#define CFG_OCE_WAN_SCORE_IDX11_TO_8_DEFAULT (0x06030000)
#define CFG_OCE_WAN_SCORE_IDX11_TO_8_MIN (0x00000000)
#define CFG_OCE_WAN_SCORE_IDX11_TO_8_MAX (0x64646464)
/*
* <ini>
* oce_wan_score_idx15_to_12 - % for OCE WAN metrics score for slot 12-15
* @Min: 0x00000000
* @Max: 0x64646464
* @Default: 0x6432190C
*
* This INI give percentage value of OCE WAN metrics DL CAP, to be used as
* index in which the DL CAP value falls. Used only if num_oce_wan_slots is
* greater than 11.
*
* Indexes are defined in this way.
* 0 Index (BITS 0-7): SLOT_12
* 1 Index (BITS 8-15): SLOT_13
* 2 Index (BITS 16-23): SLOT_14
* 3 Index (BITS 24-31): SLOT_15
* These percentage values are stored in HEX. For any index max value, can be 64
*
* Related: num_oce_wan_slots, oce_wan_weightage
*
* Supported Feature: STA Candidate selection
*
* Usage: External
*
* </ini>
*/
#define CFG_OCE_WAN_SCORE_IDX15_TO_12_NAME "oce_wan_score_idx15_to_12"
#define CFG_OCE_WAN_SCORE_IDX15_TO_12_DEFAULT (0x6432190C)
#define CFG_OCE_WAN_SCORE_IDX15_TO_12_MIN (0x00000000)
#define CFG_OCE_WAN_SCORE_IDX15_TO_12_MAX (0x64646464)
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_ENABLE_SCORING_FOR_ROAM_NAME "enable_scoring_for_roam"
#define CFG_ENABLE_SCORING_FOR_ROAM_DEFAULT (1)
#define CFG_ENABLE_SCORING_FOR_ROAM_MIN (0)
#define CFG_ENABLE_SCORING_FOR_ROAM_MAX (1)
/* /*
* <ini> * <ini>
* gChanSwitchHostapdRateEnabled - Enable/disable hostapd rate when doing SAP * gChanSwitchHostapdRateEnabled - Enable/disable hostapd rate when doing SAP
@@ -12848,39 +11978,6 @@ struct hdd_config {
uint32_t scan_11d_interval; uint32_t scan_11d_interval;
bool chan_switch_hostapd_rate_enabled; bool chan_switch_hostapd_rate_enabled;
bool is_bssid_hint_priority; bool is_bssid_hint_priority;
uint8_t rssi_weightage;
uint8_t ht_caps_weightage;
uint8_t vht_caps_weightage;
uint8_t he_caps_weightage;
uint8_t chan_width_weightage;
uint8_t chan_band_weightage;
uint8_t nss_weightage;
uint8_t beamforming_cap_weightage;
uint8_t pcl_weightage;
uint8_t channel_congestion_weightage;
uint8_t oce_wan_weightage;
uint32_t bandwidth_weight_per_index;
uint32_t nss_weight_per_index;
uint32_t band_weight_per_index;
uint32_t best_rssi_threshold;
uint32_t good_rssi_threshold;
uint32_t bad_rssi_threshold;
uint32_t good_rssi_pcnt;
uint32_t bad_rssi_pcnt;
uint32_t good_rssi_bucket_size;
uint32_t bad_rssi_bucket_size;
uint32_t rssi_pref_5g_rssi_thresh;
uint8_t num_esp_qbss_slots;
uint32_t esp_qbss_score_slots3_to_0;
uint32_t esp_qbss_score_slots7_to_4;
uint32_t esp_qbss_score_slots11_to_8;
uint32_t esp_qbss_score_slots15_to_12;
uint8_t num_oce_wan_slots;
uint32_t oce_wan_score_slots3_to_0;
uint32_t oce_wan_score_slots7_to_4;
uint32_t oce_wan_score_slots11_to_8;
uint32_t oce_wan_score_slots15_to_12;
bool enable_scoring_for_roam;
bool is_fils_enabled; bool is_fils_enabled;
uint16_t wlm_latency_enable; uint16_t wlm_latency_enable;
uint16_t wlm_latency_level; uint16_t wlm_latency_level;

View File

@@ -4141,237 +4141,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_LATENCY_FLAGS_ULTRALOW_MIN, CFG_LATENCY_FLAGS_ULTRALOW_MIN,
CFG_LATENCY_FLAGS_ULTRALOW_MAX), CFG_LATENCY_FLAGS_ULTRALOW_MAX),
REG_VARIABLE(CFG_RSSI_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, rssi_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_RSSI_WEIGHTAGE_DEFAULT,
CFG_RSSI_WEIGHTAGE_MIN,
CFG_RSSI_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_HT_CAPABILITY_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, ht_caps_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_HT_CAPABILITY_WEIGHTAGE_DEFAULT,
CFG_HT_CAPABILITY_WEIGHTAGE_MIN,
CFG_HT_CAPABILITY_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_VHT_CAPABILITY_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, vht_caps_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_VHT_CAPABILITY_WEIGHTAGE_DEFAULT,
CFG_VHT_CAPABILITY_WEIGHTAGE_MIN,
CFG_VHT_CAPABILITY_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_HE_CAPABILITY_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, he_caps_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_HE_CAPABILITY_WEIGHTAGE_DEFAULT,
CFG_HE_CAPABILITY_WEIGHTAGE_MIN,
CFG_HE_CAPABILITY_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_CHAN_WIDTH_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, chan_width_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CHAN_WIDTH_WEIGHTAGE_DEFAULT,
CFG_CHAN_WIDTH_WEIGHTAGE_MIN,
CFG_CHAN_WIDTH_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_CHAN_BAND_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, chan_band_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CHAN_BAND_WEIGHTAGE_DEFAULT,
CFG_CHAN_BAND_WEIGHTAGE_MIN,
CFG_CHAN_BAND_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_NSS_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, nss_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_NSS_WEIGHTAGE_DEFAULT,
CFG_NSS_WEIGHTAGE_MIN,
CFG_NSS_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_BEAMFORMING_CAP_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, beamforming_cap_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_BEAMFORMING_CAP_WEIGHTAGE_DEFAULT,
CFG_BEAMFORMING_CAP_WEIGHTAGE_MIN,
CFG_BEAMFORMING_CAP_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_PCL_WEIGHT_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, pcl_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_PCL_WEIGHT_DEFAULT,
CFG_PCL_WEIGHT_MIN,
CFG_PCL_WEIGHT_MAX),
REG_VARIABLE(CFG_CHANNEL_CONGESTION_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, channel_congestion_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CHANNEL_CONGESTION_WEIGHTAGE_DEFAULT,
CFG_CHANNEL_CONGESTION_WEIGHTAGE_MIN,
CFG_CHANNEL_CONGESTION_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_OCE_WAN_WEIGHTAGE_NAME, WLAN_PARAM_Integer,
struct hdd_config, oce_wan_weightage,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_OCE_WAN_WEIGHTAGE_DEFAULT,
CFG_OCE_WAN_WEIGHTAGE_MIN,
CFG_OCE_WAN_WEIGHTAGE_MAX),
REG_VARIABLE(CFG_BEST_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
struct hdd_config, best_rssi_threshold,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_BEST_RSSI_THRESHOLD_DEFAULT,
CFG_BEST_RSSI_THRESHOLD_MIN,
CFG_BEST_RSSI_THRESHOLD_MAX),
REG_VARIABLE(CFG_GOOD_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
struct hdd_config, good_rssi_threshold,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_GOOD_RSSI_THRESHOLD_DEFAULT,
CFG_GOOD_RSSI_THRESHOLD_MIN,
CFG_GOOD_RSSI_THRESHOLD_MAX),
REG_VARIABLE(CFG_BAD_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
struct hdd_config, bad_rssi_threshold,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_BAD_RSSI_THRESHOLD_DEFAULT,
CFG_BAD_RSSI_THRESHOLD_MIN,
CFG_BAD_RSSI_THRESHOLD_MAX),
REG_VARIABLE(CFG_GOOD_RSSI_PCNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, good_rssi_pcnt,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_GOOD_RSSI_PCNT_DEFAULT,
CFG_GOOD_RSSI_PCNT_MIN,
CFG_GOOD_RSSI_PCNT_MAX),
REG_VARIABLE(CFG_BAD_RSSI_PCNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, bad_rssi_pcnt,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_BAD_RSSI_PCNT_DEFAULT,
CFG_BAD_RSSI_PCNT_MIN,
CFG_BAD_RSSI_PCNT_MAX),
REG_VARIABLE(CFG_GOOD_RSSI_BUCKET_SIZE_NAME, WLAN_PARAM_Integer,
struct hdd_config, good_rssi_bucket_size,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_GOOD_RSSI_BUCKET_SIZE_DEFAULT,
CFG_GOOD_RSSI_BUCKET_SIZE_MIN,
CFG_GOOD_RSSI_BUCKET_SIZE_MAX),
REG_VARIABLE(CFG_BAD_RSSI_BUCKET_SIZE_NAME, WLAN_PARAM_Integer,
struct hdd_config, bad_rssi_bucket_size,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_BAD_RSSI_BUCKET_SIZE_DEFAULT,
CFG_BAD_RSSI_BUCKET_SIZE_MIN,
CFG_BAD_RSSI_BUCKET_SIZE_MAX),
REG_VARIABLE(CFG_RSSI_PERF_5G_THRESHOLD_NAME, WLAN_PARAM_Integer,
struct hdd_config, rssi_pref_5g_rssi_thresh,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_RSSI_PERF_5G_THRESHOLD_DEFAULT,
CFG_RSSI_PERF_5G_THRESHOLD_MIN,
CFG_RSSI_PERF_5G_THRESHOLD_MAX),
REG_VARIABLE(CFG_BAND_WIDTH_WEIGHT_PER_INDEX_NAME,
WLAN_PARAM_HexInteger,
struct hdd_config, bandwidth_weight_per_index,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_BAND_WIDTH_WEIGHT_PER_INDEX_DEFAULT,
CFG_BAND_WIDTH_WEIGHT_PER_INDEX_MIN,
CFG_BAND_WIDTH_WEIGHT_PER_INDEX_MAX),
REG_VARIABLE(CFG_NSS_WEIGHT_PER_INDEX_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, nss_weight_per_index,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_NSS_WEIGHT_PER_INDEX_DEFAULT,
CFG_NSS_WEIGHT_PER_INDEX_MIN,
CFG_NSS_WEIGHT_PER_INDEX_MAX),
REG_VARIABLE(CFG_BAND_WEIGHT_PER_INDEX_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, band_weight_per_index,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_BAND_WEIGHT_PER_INDEX_DEFAULT,
CFG_BAND_WEIGHT_PER_INDEX_MIN,
CFG_BAND_WEIGHT_PER_INDEX_MAX),
REG_VARIABLE(CFG_ESP_QBSS_SLOTS_NAME, WLAN_PARAM_Integer,
struct hdd_config, num_esp_qbss_slots,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ESP_QBSS_SLOTS_DEFAULT,
CFG_ESP_QBSS_SLOTS_MIN,
CFG_ESP_QBSS_SLOTS_MAX),
REG_VARIABLE(CFG_ESP_QBSS_SCORE_IDX3_TO_0_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, esp_qbss_score_slots3_to_0,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX3_TO_0_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX3_TO_0_MIN,
CFG_ESP_QBSS_SCORE_IDX3_TO_0_MAX),
REG_VARIABLE(CFG_ESP_QBSS_SCORE_IDX7_TO_4_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, esp_qbss_score_slots7_to_4,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX7_TO_4_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX7_TO_4_MIN,
CFG_ESP_QBSS_SCORE_IDX7_TO_4_MAX),
REG_VARIABLE(CFG_ESP_QBSS_SCORE_IDX11_TO_8_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, esp_qbss_score_slots11_to_8,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX11_TO_8_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX11_TO_8_MIN,
CFG_ESP_QBSS_SCORE_IDX11_TO_8_MAX),
REG_VARIABLE(CFG_ESP_QBSS_SCORE_IDX15_TO_12_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, esp_qbss_score_slots15_to_12,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX15_TO_12_DEFAULT,
CFG_ESP_QBSS_SCORE_IDX15_TO_12_MIN,
CFG_ESP_QBSS_SCORE_IDX15_TO_12_MAX),
REG_VARIABLE(CFG_OCE_WAN_SLOTS_NAME, WLAN_PARAM_Integer,
struct hdd_config, num_oce_wan_slots,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_OCE_WAN_SLOTS_DEFAULT,
CFG_OCE_WAN_SLOTS_MIN,
CFG_OCE_WAN_SLOTS_MAX),
REG_VARIABLE(CFG_OCE_WAN_SCORE_IDX3_TO_0_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, oce_wan_score_slots3_to_0,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_OCE_WAN_SCORE_IDX3_TO_0_DEFAULT,
CFG_OCE_WAN_SCORE_IDX3_TO_0_MIN,
CFG_OCE_WAN_SCORE_IDX3_TO_0_MAX),
REG_VARIABLE(CFG_OCE_WAN_SCORE_IDX7_TO_4_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, oce_wan_score_slots7_to_4,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_OCE_WAN_SCORE_IDX7_TO_4_DEFAULT,
CFG_OCE_WAN_SCORE_IDX7_TO_4_MIN,
CFG_OCE_WAN_SCORE_IDX7_TO_4_MAX),
REG_VARIABLE(CFG_OCE_WAN_SCORE_IDX11_TO_8_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, oce_wan_score_slots11_to_8,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_OCE_WAN_SCORE_IDX11_TO_8_DEFAULT,
CFG_OCE_WAN_SCORE_IDX11_TO_8_MIN,
CFG_OCE_WAN_SCORE_IDX11_TO_8_MAX),
REG_VARIABLE(CFG_OCE_WAN_SCORE_IDX15_TO_12_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, oce_wan_score_slots15_to_12,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_OCE_WAN_SCORE_IDX15_TO_12_DEFAULT,
CFG_OCE_WAN_SCORE_IDX15_TO_12_MIN,
CFG_OCE_WAN_SCORE_IDX15_TO_12_MAX),
REG_VARIABLE(CFG_ENABLE_SCORING_FOR_ROAM_NAME, WLAN_PARAM_Integer,
struct hdd_config, enable_scoring_for_roam,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_SCORING_FOR_ROAM_DEFAULT,
CFG_ENABLE_SCORING_FOR_ROAM_MIN,
CFG_ENABLE_SCORING_FOR_ROAM_MAX),
REG_VARIABLE(CFG_IS_FILS_ENABLED_NAME, WLAN_PARAM_Integer, REG_VARIABLE(CFG_IS_FILS_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, is_fils_enabled, struct hdd_config, is_fils_enabled,
@@ -6351,125 +6120,6 @@ eCsrRoamWmmUserModeType hdd_to_csr_wmm_mode(enum hdd_wmm_user_mode mode)
} }
} }
/**
* hdd_update_score_params() -initializes the sme config for bss score params
*
* @config: pointer to config
* @score_params: bss score params
*
* Return: None
*/
static void hdd_update_bss_score_params(struct hdd_config *config,
struct sir_score_config *score_params)
{
int total_weight;
score_params->enable_scoring_for_roam =
config->enable_scoring_for_roam;
score_params->weight_cfg.rssi_weightage = config->rssi_weightage;
score_params->weight_cfg.ht_caps_weightage = config->ht_caps_weightage;
score_params->weight_cfg.vht_caps_weightage =
config->vht_caps_weightage;
score_params->weight_cfg.he_caps_weightage =
config->he_caps_weightage;
score_params->weight_cfg.chan_width_weightage =
config->chan_width_weightage;
score_params->weight_cfg.chan_band_weightage =
config->chan_band_weightage;
score_params->weight_cfg.nss_weightage = config->nss_weightage;
score_params->weight_cfg.beamforming_cap_weightage =
config->beamforming_cap_weightage;
score_params->weight_cfg.pcl_weightage = config->pcl_weightage;
score_params->weight_cfg.channel_congestion_weightage =
config->channel_congestion_weightage;
score_params->weight_cfg.oce_wan_weightage = config->oce_wan_weightage;
total_weight = score_params->weight_cfg.rssi_weightage +
score_params->weight_cfg.ht_caps_weightage +
score_params->weight_cfg.vht_caps_weightage +
score_params->weight_cfg.he_caps_weightage +
score_params->weight_cfg.chan_width_weightage +
score_params->weight_cfg.chan_band_weightage +
score_params->weight_cfg.nss_weightage +
score_params->weight_cfg.beamforming_cap_weightage +
score_params->weight_cfg.pcl_weightage +
score_params->weight_cfg.channel_congestion_weightage +
score_params->weight_cfg.oce_wan_weightage;
if (total_weight > BEST_CANDIDATE_MAX_WEIGHT) {
hdd_err("total weight is greater than %d fallback to default values",
BEST_CANDIDATE_MAX_WEIGHT);
score_params->weight_cfg.rssi_weightage = RSSI_WEIGHTAGE;
score_params->weight_cfg.ht_caps_weightage =
HT_CAPABILITY_WEIGHTAGE;
score_params->weight_cfg.vht_caps_weightage = VHT_CAP_WEIGHTAGE;
score_params->weight_cfg.he_caps_weightage = HE_CAP_WEIGHTAGE;
score_params->weight_cfg.chan_width_weightage =
CHAN_WIDTH_WEIGHTAGE;
score_params->weight_cfg.chan_band_weightage =
CHAN_BAND_WEIGHTAGE;
score_params->weight_cfg.nss_weightage = NSS_WEIGHTAGE;
score_params->weight_cfg.beamforming_cap_weightage =
BEAMFORMING_CAP_WEIGHTAGE;
score_params->weight_cfg.pcl_weightage = PCL_WEIGHT;
score_params->weight_cfg.channel_congestion_weightage =
CHANNEL_CONGESTION_WEIGHTAGE;
score_params->weight_cfg.oce_wan_weightage = OCE_WAN_WEIGHTAGE;
}
score_params->bandwidth_weight_per_index =
hdd_limit_max_per_index_score(
config->bandwidth_weight_per_index);
score_params->nss_weight_per_index =
hdd_limit_max_per_index_score(config->nss_weight_per_index);
score_params->band_weight_per_index =
hdd_limit_max_per_index_score(config->band_weight_per_index);
score_params->rssi_score.best_rssi_threshold =
config->best_rssi_threshold;
score_params->rssi_score.good_rssi_threshold =
config->good_rssi_threshold;
score_params->rssi_score.bad_rssi_threshold =
config->bad_rssi_threshold;
score_params->rssi_score.good_rssi_pcnt = config->good_rssi_pcnt;
score_params->rssi_score.bad_rssi_pcnt = config->bad_rssi_pcnt;
score_params->rssi_score.good_rssi_bucket_size =
config->good_rssi_bucket_size;
score_params->rssi_score.bad_rssi_bucket_size =
config->bad_rssi_bucket_size;
score_params->rssi_score.rssi_pref_5g_rssi_thresh =
config->rssi_pref_5g_rssi_thresh;
score_params->esp_qbss_scoring.num_slot = config->num_esp_qbss_slots;
score_params->esp_qbss_scoring.score_pcnt3_to_0 =
hdd_limit_max_per_index_score(
config->esp_qbss_score_slots3_to_0);
score_params->esp_qbss_scoring.score_pcnt7_to_4 =
hdd_limit_max_per_index_score(
config->esp_qbss_score_slots7_to_4);
score_params->esp_qbss_scoring.score_pcnt11_to_8 =
hdd_limit_max_per_index_score(
config->esp_qbss_score_slots11_to_8);
score_params->esp_qbss_scoring.score_pcnt15_to_12 =
hdd_limit_max_per_index_score(
config->esp_qbss_score_slots15_to_12);
score_params->oce_wan_scoring.num_slot = config->num_oce_wan_slots;
score_params->oce_wan_scoring.score_pcnt3_to_0 =
hdd_limit_max_per_index_score(
config->oce_wan_score_slots3_to_0);
score_params->oce_wan_scoring.score_pcnt7_to_4 =
hdd_limit_max_per_index_score(
config->oce_wan_score_slots7_to_4);
score_params->oce_wan_scoring.score_pcnt11_to_8 =
hdd_limit_max_per_index_score(
config->oce_wan_score_slots11_to_8);
score_params->oce_wan_scoring.score_pcnt15_to_12 =
hdd_limit_max_per_index_score(
config->oce_wan_score_slots15_to_12);
}
/** /**
* hdd_update_11k_offload_params() - initializes the 11k offload related params * hdd_update_11k_offload_params() - initializes the 11k offload related params
* *
@@ -6883,8 +6533,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
hdd_ctx->config->btm_max_attempt_cnt; hdd_ctx->config->btm_max_attempt_cnt;
smeConfig->csrConfig.btm_sticky_time = smeConfig->csrConfig.btm_sticky_time =
hdd_ctx->config->btm_sticky_time; hdd_ctx->config->btm_sticky_time;
hdd_update_bss_score_params(hdd_ctx->config,
&smeConfig->csrConfig.bss_score_params);
hdd_update_11k_offload_params(hdd_ctx->config, hdd_update_11k_offload_params(hdd_ctx->config,
&smeConfig->csrConfig); &smeConfig->csrConfig);

View File

@@ -2938,6 +2938,8 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, bool reinit)
goto hdd_psoc_close; goto hdd_psoc_close;
} }
hdd_ctx->mac_handle = cds_get_context(QDF_MODULE_ID_SME);
if (hdd_ctx->config->rx_thread_affinity_mask) if (hdd_ctx->config->rx_thread_affinity_mask)
cds_set_rx_thread_cpu_mask( cds_set_rx_thread_cpu_mask(
hdd_ctx->config->rx_thread_affinity_mask); hdd_ctx->config->rx_thread_affinity_mask);
@@ -2964,8 +2966,6 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, bool reinit)
*/ */
hdd_nan_register_callbacks(hdd_ctx); hdd_nan_register_callbacks(hdd_ctx);
hdd_ctx->mac_handle = cds_get_context(QDF_MODULE_ID_SME);
status = cds_pre_enable(); status = cds_pre_enable();
if (!QDF_IS_STATUS_SUCCESS(status)) { if (!QDF_IS_STATUS_SUCCESS(status)) {
hdd_err("Failed to pre-enable CDS; status: %d", status); hdd_err("Failed to pre-enable CDS; status: %d", status);
@@ -13665,116 +13665,21 @@ uint32_t hdd_limit_max_per_index_score(uint32_t per_index_score)
* @score_config: score config to update * @score_config: score config to update
* @cfg: config params * @cfg: config params
* *
* Return: 0 if success else err * Return: QDF_STATUS
*/ */
static void hdd_update_score_config( static QDF_STATUS
struct scoring_config *score_config, struct hdd_config *cfg) hdd_update_score_config(struct scoring_config *score_config,
struct hdd_config *cfg)
{ {
int total_weight; struct hdd_context *hdd_ctx;
score_config->weight_cfg.rssi_weightage = cfg->rssi_weightage; hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
score_config->weight_cfg.ht_caps_weightage = cfg->ht_caps_weightage; if (!hdd_ctx) {
score_config->weight_cfg.vht_caps_weightage = hdd_err("HDD context is NULL");
cfg->vht_caps_weightage; return QDF_STATUS_E_FAILURE;
score_config->weight_cfg.he_caps_weightage =
cfg->he_caps_weightage;
score_config->weight_cfg.chan_width_weightage =
cfg->chan_width_weightage;
score_config->weight_cfg.chan_band_weightage =
cfg->chan_band_weightage;
score_config->weight_cfg.nss_weightage = cfg->nss_weightage;
score_config->weight_cfg.beamforming_cap_weightage =
cfg->beamforming_cap_weightage;
score_config->weight_cfg.pcl_weightage = cfg->pcl_weightage;
score_config->weight_cfg.channel_congestion_weightage =
cfg->channel_congestion_weightage;
score_config->weight_cfg.oce_wan_weightage = cfg->oce_wan_weightage;
total_weight = score_config->weight_cfg.rssi_weightage +
score_config->weight_cfg.ht_caps_weightage +
score_config->weight_cfg.vht_caps_weightage +
score_config->weight_cfg.he_caps_weightage +
score_config->weight_cfg.chan_width_weightage +
score_config->weight_cfg.chan_band_weightage +
score_config->weight_cfg.nss_weightage +
score_config->weight_cfg.beamforming_cap_weightage +
score_config->weight_cfg.pcl_weightage +
score_config->weight_cfg.channel_congestion_weightage +
score_config->weight_cfg.oce_wan_weightage;
if (total_weight > BEST_CANDIDATE_MAX_WEIGHT) {
hdd_err("total weight is greater than %d fallback to default values",
BEST_CANDIDATE_MAX_WEIGHT);
score_config->weight_cfg.rssi_weightage = RSSI_WEIGHTAGE;
score_config->weight_cfg.ht_caps_weightage =
HT_CAPABILITY_WEIGHTAGE;
score_config->weight_cfg.vht_caps_weightage = VHT_CAP_WEIGHTAGE;
score_config->weight_cfg.he_caps_weightage = HE_CAP_WEIGHTAGE;
score_config->weight_cfg.chan_width_weightage =
CHAN_WIDTH_WEIGHTAGE;
score_config->weight_cfg.chan_band_weightage =
CHAN_BAND_WEIGHTAGE;
score_config->weight_cfg.nss_weightage = NSS_WEIGHTAGE;
score_config->weight_cfg.beamforming_cap_weightage =
BEAMFORMING_CAP_WEIGHTAGE;
score_config->weight_cfg.pcl_weightage = PCL_WEIGHT;
score_config->weight_cfg.channel_congestion_weightage =
CHANNEL_CONGESTION_WEIGHTAGE;
score_config->weight_cfg.oce_wan_weightage = OCE_WAN_WEIGHTAGE;
} }
score_config->bandwidth_weight_per_index = sme_update_score_config(hdd_ctx->mac_handle, score_config);
hdd_limit_max_per_index_score(
cfg->bandwidth_weight_per_index);
score_config->nss_weight_per_index =
hdd_limit_max_per_index_score(cfg->nss_weight_per_index);
score_config->band_weight_per_index =
hdd_limit_max_per_index_score(cfg->band_weight_per_index);
score_config->rssi_score.best_rssi_threshold =
cfg->best_rssi_threshold;
score_config->rssi_score.good_rssi_threshold =
cfg->good_rssi_threshold;
score_config->rssi_score.bad_rssi_threshold =
cfg->bad_rssi_threshold;
score_config->rssi_score.good_rssi_pcnt = cfg->good_rssi_pcnt;
score_config->rssi_score.bad_rssi_pcnt = cfg->bad_rssi_pcnt;
score_config->rssi_score.good_rssi_bucket_size =
cfg->good_rssi_bucket_size;
score_config->rssi_score.bad_rssi_bucket_size =
cfg->bad_rssi_bucket_size;
score_config->rssi_score.rssi_pref_5g_rssi_thresh =
cfg->rssi_pref_5g_rssi_thresh;
score_config->esp_qbss_scoring.num_slot = cfg->num_esp_qbss_slots;
score_config->esp_qbss_scoring.score_pcnt3_to_0 =
hdd_limit_max_per_index_score(
cfg->esp_qbss_score_slots3_to_0);
score_config->esp_qbss_scoring.score_pcnt7_to_4 =
hdd_limit_max_per_index_score(
cfg->esp_qbss_score_slots7_to_4);
score_config->esp_qbss_scoring.score_pcnt11_to_8 =
hdd_limit_max_per_index_score(
cfg->esp_qbss_score_slots11_to_8);
score_config->esp_qbss_scoring.score_pcnt15_to_12 =
hdd_limit_max_per_index_score(
cfg->esp_qbss_score_slots15_to_12);
score_config->oce_wan_scoring.num_slot = cfg->num_oce_wan_slots;
score_config->oce_wan_scoring.score_pcnt3_to_0 =
hdd_limit_max_per_index_score(
cfg->oce_wan_score_slots3_to_0);
score_config->oce_wan_scoring.score_pcnt7_to_4 =
hdd_limit_max_per_index_score(
cfg->oce_wan_score_slots7_to_4);
score_config->oce_wan_scoring.score_pcnt11_to_8 =
hdd_limit_max_per_index_score(
cfg->oce_wan_score_slots11_to_8);
score_config->oce_wan_scoring.score_pcnt15_to_12 =
hdd_limit_max_per_index_score(
cfg->oce_wan_score_slots15_to_12);
score_config->cb_mode_24G = cfg->nChannelBondingMode24GHz; score_config->cb_mode_24G = cfg->nChannelBondingMode24GHz;
score_config->cb_mode_5G = cfg->nChannelBondingMode5GHz; score_config->cb_mode_5G = cfg->nChannelBondingMode5GHz;
@@ -13800,6 +13705,7 @@ static void hdd_update_score_config(
if (cfg->enableTxBF) if (cfg->enableTxBF)
score_config->beamformee_cap = 1; score_config->beamformee_cap = 1;
return QDF_STATUS_SUCCESS;
} }
/** /**
@@ -13865,7 +13771,12 @@ static int hdd_update_scan_config(struct hdd_context *hdd_ctx)
cfg->sta_miracast_mcc_rest_time_val; cfg->sta_miracast_mcc_rest_time_val;
hdd_update_pno_config(&scan_cfg.pno_cfg, cfg); hdd_update_pno_config(&scan_cfg.pno_cfg, cfg);
hdd_update_ie_whitelist_attr(&scan_cfg.ie_whitelist, cfg); hdd_update_ie_whitelist_attr(&scan_cfg.ie_whitelist, cfg);
hdd_update_score_config(&scan_cfg.score_config, cfg);
status = hdd_update_score_config(&scan_cfg.score_config, cfg);
if (QDF_IS_STATUS_ERROR(status)) {
hdd_err("Failed to update scoring config");
return -EINVAL;
}
status = ucfg_scan_update_user_config(psoc, &scan_cfg); status = ucfg_scan_update_user_config(psoc, &scan_cfg);
if (status != QDF_STATUS_SUCCESS) { if (status != QDF_STATUS_SUCCESS) {

View File

@@ -2678,93 +2678,6 @@ struct roam_ext_params {
uint32_t bg_scan_client_bitmap; uint32_t bg_scan_client_bitmap;
}; };
/**
* struct sir_weight_config - weight params to
* calculate best candidate
* @rssi_weightage: RSSI weightage
* @ht_caps_weightage: HT caps weightage
* @vht_caps_weightage: VHT caps weightage
* @he_caps_weightage: HE caps weightage
* @chan_width_weightage: Channel width weightage
* @chan_band_weightage: Channel band weightage
* @nss_weightage: NSS weightage
* @beamforming_cap_weightage: Beamforming caps weightage
* @pcl_weightage: PCL weightage
* @channel_congestion_weightage: channel congestion weightage
* @oce_wan_weightage: OCE WAN metrics weightage
*/
struct sir_weight_config {
uint8_t rssi_weightage;
uint8_t ht_caps_weightage;
uint8_t vht_caps_weightage;
uint8_t he_caps_weightage;
uint8_t chan_width_weightage;
uint8_t chan_band_weightage;
uint8_t nss_weightage;
uint8_t beamforming_cap_weightage;
uint8_t pcl_weightage;
uint8_t channel_congestion_weightage;
uint8_t oce_wan_weightage;
};
struct sir_rssi_cfg_score {
uint32_t best_rssi_threshold;
uint32_t good_rssi_threshold;
uint32_t bad_rssi_threshold;
uint32_t good_rssi_pcnt;
uint32_t bad_rssi_pcnt;
uint32_t good_rssi_bucket_size;
uint32_t bad_rssi_bucket_size;
uint32_t rssi_pref_5g_rssi_thresh;
};
/**
* struct sir_per_slot_scoring - define % score for differents slots for a
* scoring param.
* num_slot: number of slots in which the param will be divided.
* Max 15. index 0 is used for 'not_present. Num_slot will
* equally divide 100. e.g, if num_slot = 4 slot 0 = 0-25%, slot
* 1 = 26-50% slot 2 = 51-75%, slot 3 = 76-100%
* score_pcnt3_to_0: Conatins score percentage for slot 0-3
* BITS 0-7 :- the scoring pcnt when not present
* BITS 8-15 :- SLOT_1
* BITS 16-23 :- SLOT_2
* BITS 24-31 :- SLOT_3
* score_pcnt7_to_4: Conatins score percentage for slot 4-7
* BITS 0-7 :- SLOT_4
* BITS 8-15 :- SLOT_5
* BITS 16-23 :- SLOT_6
* BITS 24-31 :- SLOT_7
* score_pcnt11_to_8: Conatins score percentage for slot 8-11
* BITS 0-7 :- SLOT_8
* BITS 8-15 :- SLOT_9
* BITS 16-23 :- SLOT_10
* BITS 24-31 :- SLOT_11
* score_pcnt15_to_12: Conatins score percentage for slot 12-15
* BITS 0-7 :- SLOT_12
* BITS 8-15 :- SLOT_13
* BITS 16-23 :- SLOT_14
* BITS 24-31 :- SLOT_15
*/
struct sir_per_slot_scoring {
uint32_t num_slot;
uint32_t score_pcnt3_to_0;
uint32_t score_pcnt7_to_4;
uint32_t score_pcnt11_to_8;
uint32_t score_pcnt15_to_12;
};
struct sir_score_config {
bool enable_scoring_for_roam;
struct sir_weight_config weight_cfg;
struct sir_rssi_cfg_score rssi_score;
struct sir_per_slot_scoring esp_qbss_scoring;
struct sir_per_slot_scoring oce_wan_scoring;
uint32_t bandwidth_weight_per_index;
uint32_t nss_weight_per_index;
uint32_t band_weight_per_index;
};
/** /**
* struct pmkid_mode_bits - Bit flags for PMKID usage in RSN IE * struct pmkid_mode_bits - Bit flags for PMKID usage in RSN IE
* @fw_okc: Opportunistic key caching enable in firmware * @fw_okc: Opportunistic key caching enable in firmware

View File

@@ -1234,7 +1234,6 @@ typedef struct tagCsrConfigParam {
uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL]; uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL];
uint16_t pkt_err_disconn_th; uint16_t pkt_err_disconn_th;
bool is_force_1x1; bool is_force_1x1;
struct sir_score_config bss_score_params;
uint8_t oce_feature_bitmap; uint8_t oce_feature_bitmap;
uint32_t btm_offload_config; uint32_t btm_offload_config;
uint32_t btm_solicited_timeout; uint32_t btm_solicited_timeout;

View File

@@ -558,7 +558,6 @@ struct csr_config {
uint16_t wlm_latency_enable; uint16_t wlm_latency_enable;
uint16_t wlm_latency_level; uint16_t wlm_latency_level;
uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL]; uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL];
struct sir_score_config bss_score_params;
uint8_t oce_feature_bitmap; uint8_t oce_feature_bitmap;
uint32_t btm_offload_config; uint32_t btm_offload_config;
uint32_t btm_solicited_timeout; uint32_t btm_solicited_timeout;

View File

@@ -2793,4 +2793,13 @@ QDF_STATUS
sme_get_roam_scan_stats(tHalHandle hal, roam_scan_stats_cb cb, void *context, sme_get_roam_scan_stats(tHalHandle hal, roam_scan_stats_cb cb, void *context,
uint32_t vdev_id); uint32_t vdev_id);
/**
* sme_update_score_config() - Update the Scoring Config from MLME
* @hal: Mac Handle
* @score_config: Pointer to the scoring config structure to be populated
*
* Return: None
*/
void sme_update_score_config(tHalHandle hal,
struct scoring_config *score_config);
#endif /* #if !defined( __SME_API_H ) */ #endif /* #if !defined( __SME_API_H ) */

View File

@@ -16284,3 +16284,81 @@ sme_get_roam_scan_stats(tHalHandle hal, roam_scan_stats_cb cb, void *context,
return status; return status;
} }
void sme_update_score_config(tHalHandle hal,
struct scoring_config *score_config)
{
tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
struct wlan_mlme_scoring_cfg *mlme_scoring_cfg;
mlme_scoring_cfg = &mac_ctx->mlme_cfg->scoring;
score_config->weight_cfg.rssi_weightage =
mlme_scoring_cfg->weight_cfg.rssi_weightage;
score_config->weight_cfg.ht_caps_weightage =
mlme_scoring_cfg->weight_cfg.ht_caps_weightage;
score_config->weight_cfg.vht_caps_weightage =
mlme_scoring_cfg->weight_cfg.vht_caps_weightage;
score_config->weight_cfg.he_caps_weightage =
mlme_scoring_cfg->weight_cfg.he_caps_weightage;
score_config->weight_cfg.chan_width_weightage =
mlme_scoring_cfg->weight_cfg.chan_width_weightage;
score_config->weight_cfg.chan_band_weightage =
mlme_scoring_cfg->weight_cfg.chan_band_weightage;
score_config->weight_cfg.nss_weightage =
mlme_scoring_cfg->weight_cfg.nss_weightage;
score_config->weight_cfg.beamforming_cap_weightage =
mlme_scoring_cfg->weight_cfg.beamforming_cap_weightage;
score_config->weight_cfg.pcl_weightage =
mlme_scoring_cfg->weight_cfg.pcl_weightage;
score_config->weight_cfg.channel_congestion_weightage =
mlme_scoring_cfg->weight_cfg.channel_congestion_weightage;
score_config->weight_cfg.oce_wan_weightage =
mlme_scoring_cfg->weight_cfg.oce_wan_weightage;
score_config->bandwidth_weight_per_index =
mlme_scoring_cfg->bandwidth_weight_per_index;
score_config->nss_weight_per_index =
mlme_scoring_cfg->nss_weight_per_index;
score_config->band_weight_per_index =
mlme_scoring_cfg->band_weight_per_index;
score_config->rssi_score.best_rssi_threshold =
mlme_scoring_cfg->rssi_score.best_rssi_threshold;
score_config->rssi_score.good_rssi_threshold =
mlme_scoring_cfg->rssi_score.good_rssi_threshold;
score_config->rssi_score.bad_rssi_threshold =
mlme_scoring_cfg->rssi_score.bad_rssi_threshold;
score_config->rssi_score.good_rssi_pcnt =
mlme_scoring_cfg->rssi_score.good_rssi_pcnt;
score_config->rssi_score.bad_rssi_pcnt =
mlme_scoring_cfg->rssi_score.bad_rssi_pcnt;
score_config->rssi_score.good_rssi_bucket_size =
mlme_scoring_cfg->rssi_score.good_rssi_bucket_size;
score_config->rssi_score.bad_rssi_bucket_size =
mlme_scoring_cfg->rssi_score.bad_rssi_bucket_size;
score_config->rssi_score.rssi_pref_5g_rssi_thresh =
mlme_scoring_cfg->rssi_score.rssi_pref_5g_rssi_thresh;
score_config->esp_qbss_scoring.num_slot =
mlme_scoring_cfg->esp_qbss_scoring.num_slot;
score_config->esp_qbss_scoring.score_pcnt3_to_0 =
mlme_scoring_cfg->esp_qbss_scoring.score_pcnt3_to_0;
score_config->esp_qbss_scoring.score_pcnt7_to_4 =
mlme_scoring_cfg->esp_qbss_scoring.score_pcnt7_to_4;
score_config->esp_qbss_scoring.score_pcnt11_to_8 =
mlme_scoring_cfg->esp_qbss_scoring.score_pcnt11_to_8;
score_config->esp_qbss_scoring.score_pcnt15_to_12 =
mlme_scoring_cfg->esp_qbss_scoring.score_pcnt15_to_12;
score_config->oce_wan_scoring.num_slot =
mlme_scoring_cfg->oce_wan_scoring.num_slot;
score_config->oce_wan_scoring.score_pcnt3_to_0 =
mlme_scoring_cfg->oce_wan_scoring.score_pcnt3_to_0;
score_config->oce_wan_scoring.score_pcnt7_to_4 =
mlme_scoring_cfg->oce_wan_scoring.score_pcnt7_to_4;
score_config->oce_wan_scoring.score_pcnt11_to_8 =
mlme_scoring_cfg->oce_wan_scoring.score_pcnt11_to_8;
score_config->oce_wan_scoring.score_pcnt15_to_12 =
mlme_scoring_cfg->oce_wan_scoring.score_pcnt15_to_12;
}

View File

@@ -1747,27 +1747,6 @@ static void init_config_param(tpAniSirGlobal pMac)
pMac->roam.configParam.nInitialDwellTime = 0; pMac->roam.configParam.nInitialDwellTime = 0;
pMac->roam.configParam.initial_scan_no_dfs_chnl = 0; pMac->roam.configParam.initial_scan_no_dfs_chnl = 0;
pMac->roam.configParam.csr_mawc_config.mawc_enabled = true; pMac->roam.configParam.csr_mawc_config.mawc_enabled = true;
qdf_mem_zero(&pMac->roam.configParam.bss_score_params,
sizeof(struct sir_score_config));
pMac->roam.configParam.bss_score_params.weight_cfg.rssi_weightage =
RSSI_WEIGHTAGE;
pMac->roam.configParam.bss_score_params.weight_cfg.ht_caps_weightage =
HT_CAPABILITY_WEIGHTAGE;
pMac->roam.configParam.bss_score_params.weight_cfg.vht_caps_weightage =
VHT_CAP_WEIGHTAGE;
pMac->roam.configParam.bss_score_params.
weight_cfg.chan_width_weightage = CHAN_WIDTH_WEIGHTAGE;
pMac->roam.configParam.bss_score_params.
weight_cfg.chan_band_weightage = CHAN_BAND_WEIGHTAGE;
pMac->roam.configParam.bss_score_params.weight_cfg.nss_weightage =
NSS_WEIGHTAGE;
pMac->roam.configParam.bss_score_params.weight_cfg.
beamforming_cap_weightage = BEAMFORMING_CAP_WEIGHTAGE;
pMac->roam.configParam.bss_score_params.weight_cfg.pcl_weightage =
PCL_WEIGHT;
pMac->roam.configParam.bss_score_params.weight_cfg.
channel_congestion_weightage = CHANNEL_CONGESTION_WEIGHTAGE;
} }
enum band_info csr_get_current_band(tHalHandle hHal) enum band_info csr_get_current_band(tHalHandle hHal)
@@ -3159,9 +3138,6 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pMac->roam.configParam.roam_force_rssi_trigger = pMac->roam.configParam.roam_force_rssi_trigger =
pParam->roam_force_rssi_trigger; pParam->roam_force_rssi_trigger;
qdf_mem_copy(&pMac->roam.configParam.bss_score_params,
&pParam->bss_score_params,
sizeof(struct sir_score_config));
pMac->roam.configParam.btm_offload_config = pMac->roam.configParam.btm_offload_config =
pParam->btm_offload_config; pParam->btm_offload_config;
pMac->roam.configParam.btm_solicited_timeout = pMac->roam.configParam.btm_solicited_timeout =
@@ -3400,9 +3376,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pParam->oce_feature_bitmap = pParam->oce_feature_bitmap =
pMac->roam.configParam.oce_feature_bitmap; pMac->roam.configParam.oce_feature_bitmap;
pParam->roam_force_rssi_trigger = cfg_params->roam_force_rssi_trigger; pParam->roam_force_rssi_trigger = cfg_params->roam_force_rssi_trigger;
qdf_mem_copy(&pParam->bss_score_params,
&pMac->roam.configParam.bss_score_params,
sizeof(struct sir_score_config));
pParam->btm_offload_config = pMac->roam.configParam.btm_offload_config; pParam->btm_offload_config = pMac->roam.configParam.btm_offload_config;
pParam->btm_solicited_timeout = pParam->btm_solicited_timeout =
pMac->roam.configParam.btm_solicited_timeout; pMac->roam.configParam.btm_solicited_timeout;
@@ -19631,14 +19604,14 @@ static void csr_update_score_params(tpAniSirGlobal mac_ctx,
{ {
struct scoring_param *req_score_params; struct scoring_param *req_score_params;
struct rssi_scoring *req_rssi_score; struct rssi_scoring *req_rssi_score;
struct sir_score_config *bss_score_params; struct wlan_mlme_scoring_cfg *bss_score_params;
struct sir_weight_config *weight_config; struct wlan_mlme_weight_config *weight_config;
struct sir_rssi_cfg_score *rssi_score; struct wlan_mlme_rssi_cfg_score *rssi_score;
req_score_params = &req_buffer->score_params; req_score_params = &req_buffer->score_params;
req_rssi_score = &req_score_params->rssi_scoring; req_rssi_score = &req_score_params->rssi_scoring;
bss_score_params = &mac_ctx->roam.configParam.bss_score_params; bss_score_params = &mac_ctx->mlme_cfg->scoring;
weight_config = &bss_score_params->weight_cfg; weight_config = &bss_score_params->weight_cfg;
rssi_score = &bss_score_params->rssi_score; rssi_score = &bss_score_params->rssi_score;