Procházet zdrojové kódy

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
Vignesh Viswanathan před 6 roky
rodič
revize
987f0bba09

+ 147 - 0
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;
 }

+ 3 - 1
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 */

+ 0 - 903
core/hdd/inc/wlan_hdd_cfg.h

@@ -10091,143 +10091,6 @@ enum hdd_external_acs_policy {
 #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
  * @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)
-
-/*
- * <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>
  * 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;

+ 0 - 352
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);

+ 22 - 111
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)
-{
-	int total_weight;
-
-	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;
-	}
-
-	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);
+static QDF_STATUS
+hdd_update_score_config(struct scoring_config *score_config,
+			struct hdd_config *cfg)
+{
+	struct hdd_context *hdd_ctx;
+
+	hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
+	if (!hdd_ctx) {
+		hdd_err("HDD context is NULL");
+		return QDF_STATUS_E_FAILURE;
+	}
 
+	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) {

+ 0 - 87
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

+ 0 - 1
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;

+ 0 - 1
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;

+ 9 - 0
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 ) */

+ 78 - 0
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;
+}

+ 4 - 31
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;