diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c
index 8ebae5956d49..fab5ba4673f2 100644
--- a/components/mlme/core/src/wlan_mlme_main.c
+++ b/components/mlme/core/src/wlan_mlme_main.c
@@ -21,6 +21,7 @@
#include "wlan_mlme_main.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)
{
@@ -375,6 +376,151 @@ static void wlan_mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
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)
{
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_sta_cfg(psoc, &mlme_cfg->sta);
wlan_mlme_init_lfr_cfg(psoc, &mlme_cfg->lfr);
+ mlme_init_scoring_cfg(psoc, &mlme_cfg->scoring);
return status;
}
diff --git a/components/mlme/dispatcher/inc/cfg_mlme.h b/components/mlme/dispatcher/inc/cfg_mlme.h
index e034cee5a57c..f99f384e09cd 100644
--- a/components/mlme/dispatcher/inc/cfg_mlme.h
+++ b/components/mlme/dispatcher/inc/cfg_mlme.h
@@ -34,6 +34,7 @@
#include "cfg_mlme_sta.h"
#include "cfg_sap_protection.h"
#include "cfg_mlme_sap.h"
+#include "cfg_mlme_scoring.h"
#define CFG_MLME_ALL \
CFG_CHAINMASK_ALL \
@@ -46,6 +47,7 @@
CFG_RATES_ALL \
CFG_SAP_PROTECTION_ALL \
CFG_SAP_ALL \
- CFG_STA_ALL
+ CFG_STA_ALL \
+ CFG_SCORING_ALL
#endif /* __CFG_MLME_H */
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 9511358620f4..7a2e83f30cb4 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -10091,143 +10091,6 @@ enum hdd_external_acs_policy {
#define CFG_IS_BSSID_HINT_PRIORITY_MAX (1)
/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
* gEnableFastPwrTransition - Configuration for fast power transition
* @Min: 0
* @Max: 2
@@ -10270,739 +10133,6 @@ enum hdd_external_acs_policy {
#define CFG_IS_SAE_ENABLED_MIN (0)
#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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
- *
- *
- */
-#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)
-
-/*
- *
- * 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_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)
-
/*
*
* gChanSwitchHostapdRateEnabled - Enable/disable hostapd rate when doing SAP
@@ -12848,39 +11978,6 @@ struct hdd_config {
uint32_t scan_11d_interval;
bool chan_switch_hostapd_rate_enabled;
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;
uint16_t wlm_latency_enable;
uint16_t wlm_latency_level;
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 3e733313fcb3..f007d77c1e4a 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -4141,237 +4141,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_LATENCY_FLAGS_ULTRALOW_MIN,
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,
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
*
@@ -6883,8 +6533,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
hdd_ctx->config->btm_max_attempt_cnt;
smeConfig->csrConfig.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,
&smeConfig->csrConfig);
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 0fb8c55c090d..a9884c3835f9 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -2938,6 +2938,8 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, bool reinit)
goto hdd_psoc_close;
}
+ hdd_ctx->mac_handle = cds_get_context(QDF_MODULE_ID_SME);
+
if (hdd_ctx->config->rx_thread_affinity_mask)
cds_set_rx_thread_cpu_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_ctx->mac_handle = cds_get_context(QDF_MODULE_ID_SME);
-
status = cds_pre_enable();
if (!QDF_IS_STATUS_SUCCESS(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
* @cfg: config params
*
- * Return: 0 if success else err
+ * Return: QDF_STATUS
*/
-static void hdd_update_score_config(
- struct scoring_config *score_config, struct hdd_config *cfg)
+static QDF_STATUS
+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;
- score_config->weight_cfg.ht_caps_weightage = cfg->ht_caps_weightage;
- score_config->weight_cfg.vht_caps_weightage =
- cfg->vht_caps_weightage;
- 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;
+ hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
+ if (!hdd_ctx) {
+ hdd_err("HDD context is NULL");
+ return QDF_STATUS_E_FAILURE;
}
- score_config->bandwidth_weight_per_index =
- 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);
-
+ sme_update_score_config(hdd_ctx->mac_handle, score_config);
score_config->cb_mode_24G = cfg->nChannelBondingMode24GHz;
score_config->cb_mode_5G = cfg->nChannelBondingMode5GHz;
@@ -13800,6 +13705,7 @@ static void hdd_update_score_config(
if (cfg->enableTxBF)
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;
hdd_update_pno_config(&scan_cfg.pno_cfg, 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);
if (status != QDF_STATUS_SUCCESS) {
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index 7acc327651a9..09bf2c660543 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -2678,93 +2678,6 @@ struct roam_ext_params {
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
* @fw_okc: Opportunistic key caching enable in firmware
diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h
index 71422271db3d..84c934aaa3a6 100644
--- a/core/sme/inc/csr_api.h
+++ b/core/sme/inc/csr_api.h
@@ -1234,7 +1234,6 @@ typedef struct tagCsrConfigParam {
uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL];
uint16_t pkt_err_disconn_th;
bool is_force_1x1;
- struct sir_score_config bss_score_params;
uint8_t oce_feature_bitmap;
uint32_t btm_offload_config;
uint32_t btm_solicited_timeout;
diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h
index aaa87485ad19..fb30fad0333e 100644
--- a/core/sme/inc/csr_internal.h
+++ b/core/sme/inc/csr_internal.h
@@ -558,7 +558,6 @@ struct csr_config {
uint16_t wlm_latency_enable;
uint16_t 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;
uint32_t btm_offload_config;
uint32_t btm_solicited_timeout;
diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h
index 2d5a22efbb3a..169c17ab62c3 100644
--- a/core/sme/inc/sme_api.h
+++ b/core/sme/inc/sme_api.h
@@ -2793,4 +2793,13 @@ QDF_STATUS
sme_get_roam_scan_stats(tHalHandle hal, roam_scan_stats_cb cb, void *context,
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 ) */
diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c
index bd85a1ab2820..fe9ac8753031 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -16284,3 +16284,81 @@ sme_get_roam_scan_stats(tHalHandle hal, roam_scan_stats_cb cb, void *context,
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;
+}
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index 76889f30abb7..e0bd1998890e 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -1747,27 +1747,6 @@ static void init_config_param(tpAniSirGlobal pMac)
pMac->roam.configParam.nInitialDwellTime = 0;
pMac->roam.configParam.initial_scan_no_dfs_chnl = 0;
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)
@@ -3159,9 +3138,6 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pMac->roam.configParam.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 =
pParam->btm_offload_config;
pMac->roam.configParam.btm_solicited_timeout =
@@ -3400,9 +3376,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pParam->oce_feature_bitmap =
pMac->roam.configParam.oce_feature_bitmap;
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_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 rssi_scoring *req_rssi_score;
- struct sir_score_config *bss_score_params;
- struct sir_weight_config *weight_config;
- struct sir_rssi_cfg_score *rssi_score;
+ struct wlan_mlme_scoring_cfg *bss_score_params;
+ struct wlan_mlme_weight_config *weight_config;
+ struct wlan_mlme_rssi_cfg_score *rssi_score;
req_score_params = &req_buffer->score_params;
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;
rssi_score = &bss_score_params->rssi_score;