mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
qcacmn: Change max AP score from 100 to 200
Change max AP score limit from 100 to 200 and thus change BEST_CANDIDATE_MAX_WEIGHT to 200 from 100. Also remove duplicate sanity check, which is already done while getting values from INI. Change-Id: I4f87a00e90b7d5d829007d89cbf7cfd9b70fa4dc CRs-Fixed: 2673980
This commit is contained in:
parent
ea52f9b7d4
commit
201e307efb
4 changed files with 13 additions and 124 deletions
|
|
@ -79,105 +79,6 @@ bool scm_is_better_bss(struct scan_default_params *params,
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* scm_limit_max_per_index_score() -check if per index score does not exceed
|
||||
* 100% (0x64). If it exceed make it 100%
|
||||
*
|
||||
* @per_index_score: per_index_score as input
|
||||
*
|
||||
* Return: per_index_score within the max limit
|
||||
*/
|
||||
static uint32_t scm_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;
|
||||
}
|
||||
|
||||
void scm_validate_scoring_config(struct scoring_config *score_cfg)
|
||||
{
|
||||
int total_weight;
|
||||
|
||||
total_weight = score_cfg->weight_cfg.rssi_weightage +
|
||||
score_cfg->weight_cfg.ht_caps_weightage +
|
||||
score_cfg->weight_cfg.vht_caps_weightage +
|
||||
score_cfg->weight_cfg.chan_width_weightage +
|
||||
score_cfg->weight_cfg.chan_band_weightage +
|
||||
score_cfg->weight_cfg.nss_weightage +
|
||||
score_cfg->weight_cfg.beamforming_cap_weightage +
|
||||
score_cfg->weight_cfg.pcl_weightage +
|
||||
score_cfg->weight_cfg.channel_congestion_weightage +
|
||||
score_cfg->weight_cfg.oce_wan_weightage +
|
||||
score_cfg->weight_cfg.oce_ap_tx_pwr_weightage;
|
||||
|
||||
if (total_weight > BEST_CANDIDATE_MAX_WEIGHT) {
|
||||
|
||||
scm_err("total weight is greater than %d fallback to default values",
|
||||
BEST_CANDIDATE_MAX_WEIGHT);
|
||||
|
||||
score_cfg->weight_cfg.rssi_weightage = RSSI_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.ht_caps_weightage =
|
||||
HT_CAPABILITY_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.vht_caps_weightage = VHT_CAP_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.chan_width_weightage =
|
||||
CHAN_WIDTH_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.chan_band_weightage =
|
||||
CHAN_BAND_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.nss_weightage = NSS_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.beamforming_cap_weightage =
|
||||
BEAMFORMING_CAP_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.pcl_weightage = PCL_WEIGHT;
|
||||
score_cfg->weight_cfg.channel_congestion_weightage =
|
||||
CHANNEL_CONGESTION_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.oce_wan_weightage = OCE_WAN_WEIGHTAGE;
|
||||
score_cfg->weight_cfg.oce_ap_tx_pwr_weightage =
|
||||
OCE_AP_TX_POWER_WEIGHTAGE;
|
||||
}
|
||||
|
||||
score_cfg->bandwidth_weight_per_index =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->bandwidth_weight_per_index);
|
||||
score_cfg->nss_weight_per_index =
|
||||
scm_limit_max_per_index_score(score_cfg->nss_weight_per_index);
|
||||
score_cfg->band_weight_per_index =
|
||||
scm_limit_max_per_index_score(score_cfg->band_weight_per_index);
|
||||
|
||||
|
||||
score_cfg->esp_qbss_scoring.score_pcnt3_to_0 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->esp_qbss_scoring.score_pcnt3_to_0);
|
||||
score_cfg->esp_qbss_scoring.score_pcnt7_to_4 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->esp_qbss_scoring.score_pcnt7_to_4);
|
||||
score_cfg->esp_qbss_scoring.score_pcnt11_to_8 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->esp_qbss_scoring.score_pcnt11_to_8);
|
||||
score_cfg->esp_qbss_scoring.score_pcnt15_to_12 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->esp_qbss_scoring.score_pcnt15_to_12);
|
||||
|
||||
score_cfg->oce_wan_scoring.score_pcnt3_to_0 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->oce_wan_scoring.score_pcnt3_to_0);
|
||||
score_cfg->oce_wan_scoring.score_pcnt7_to_4 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->oce_wan_scoring.score_pcnt7_to_4);
|
||||
score_cfg->oce_wan_scoring.score_pcnt11_to_8 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->oce_wan_scoring.score_pcnt11_to_8);
|
||||
score_cfg->oce_wan_scoring.score_pcnt15_to_12 =
|
||||
scm_limit_max_per_index_score(
|
||||
score_cfg->oce_wan_scoring.score_pcnt15_to_12);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* scm_get_rssi_pcnt_for_slot () - calculate rssi % score based on the slot
|
||||
* index between the high rssi and low rssi threshold
|
||||
|
|
@ -245,7 +146,7 @@ static int32_t scm_calculate_rssi_score(
|
|||
good_bucket_size = score_param->good_rssi_bucket_size;
|
||||
bad_bucket_size = score_param->bad_rssi_bucket_size;
|
||||
|
||||
total_rssi_score = (BEST_CANDIDATE_MAX_WEIGHT * rssi_weightage);
|
||||
total_rssi_score = (MAX_PCT_SCORE * rssi_weightage);
|
||||
|
||||
/*
|
||||
* If RSSI is better than the best rssi threshold then it return full
|
||||
|
|
@ -297,7 +198,7 @@ static int32_t scm_calculate_pcl_score(int pcl_chan_weight,
|
|||
if (pcl_score < 0)
|
||||
pcl_score = 0;
|
||||
}
|
||||
return pcl_score * BEST_CANDIDATE_MAX_WEIGHT;
|
||||
return pcl_score * MAX_PCT_SCORE;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -350,7 +251,7 @@ static int8_t scm_roam_calculate_prorated_pcnt_by_rssi(
|
|||
|
||||
/* If RSSI is greater than good rssi return full weight */
|
||||
if (rssi > good_rssi_threshold)
|
||||
return BEST_CANDIDATE_MAX_WEIGHT;
|
||||
return MAX_PCT_SCORE;
|
||||
|
||||
same_bucket = scm_rssi_is_same_bucket(good_rssi_threshold,
|
||||
rssi, rssi_pref_5g_rssi_thresh,
|
||||
|
|
@ -423,8 +324,7 @@ static int32_t scm_calculate_bandwidth_score(
|
|||
SCM_20MHZ_BW_INDEX);
|
||||
|
||||
return (prorated_pct * score *
|
||||
score_config->weight_cfg.chan_width_weightage) /
|
||||
BEST_CANDIDATE_MAX_WEIGHT;
|
||||
score_config->weight_cfg.chan_width_weightage) / MAX_PCT_SCORE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -481,7 +381,7 @@ static int32_t scm_get_congestion_pct(struct scan_cache_entry *entry)
|
|||
congestion = SCM_MAX_CHANNEL_UTILIZATION -
|
||||
est_air_time_percentage;
|
||||
} else if (entry->qbss_chan_load) {
|
||||
ap_load = (entry->qbss_chan_load * BEST_CANDIDATE_MAX_WEIGHT);
|
||||
ap_load = (entry->qbss_chan_load * MAX_PCT_SCORE);
|
||||
/*
|
||||
* Calculate ap_load in % from qbss channel load from
|
||||
* 0-255 range
|
||||
|
|
@ -536,8 +436,7 @@ static int32_t scm_calculate_congestion_score(
|
|||
score_params->esp_qbss_scoring.score_pcnt3_to_0,
|
||||
SCM_SCORE_INDEX_0);
|
||||
|
||||
window_size = BEST_CANDIDATE_MAX_WEIGHT /
|
||||
score_params->esp_qbss_scoring.num_slot;
|
||||
window_size = MAX_PCT_SCORE / score_params->esp_qbss_scoring.num_slot;
|
||||
|
||||
/* Desired values are from 1 to 15, as 0 is for not present. so do +1 */
|
||||
index = qdf_do_div(*congestion_pct, window_size) + 1;
|
||||
|
|
@ -588,7 +487,7 @@ static int32_t scm_calculate_nss_score(struct wlan_objmgr_psoc *psoc,
|
|||
SCM_NSS_1x1_INDEX);
|
||||
|
||||
return (score_config->weight_cfg.nss_weightage * score_pct *
|
||||
prorated_pct) / BEST_CANDIDATE_MAX_WEIGHT;
|
||||
prorated_pct) / MAX_PCT_SCORE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -685,7 +584,7 @@ scm_calculate_oce_ap_tx_pwr_weightage(struct scan_cache_entry *entry,
|
|||
|
||||
/* Uplink RSSI is better than best rssi threshold */
|
||||
if (normalized_ap_tx_pwr > best_rssi_threshold) {
|
||||
ap_tx_pwr_factor = BEST_CANDIDATE_MAX_WEIGHT;
|
||||
ap_tx_pwr_factor = MAX_PCT_SCORE;
|
||||
} else if (normalized_ap_tx_pwr <= bad_rssi_threshold) {
|
||||
/* Uplink RSSI is less or equal to bad rssi threshold */
|
||||
ap_tx_pwr_factor = rssi_score_param->bad_rssi_pcnt;
|
||||
|
|
@ -845,7 +744,7 @@ int scm_calculate_bss_score(struct wlan_objmgr_psoc *psoc,
|
|||
ap_su_beam_former = true;
|
||||
if (is_vht && ap_su_beam_former &&
|
||||
(entry->rssi_raw > rssi_pref_5g_rssi_thresh) && !same_bucket)
|
||||
beamformee_score = BEST_CANDIDATE_MAX_WEIGHT *
|
||||
beamformee_score = MAX_PCT_SCORE *
|
||||
weight_config->beamforming_cap_weightage;
|
||||
score += beamformee_score;
|
||||
|
||||
|
|
|
|||
|
|
@ -264,15 +264,6 @@ QDF_STATUS scm_channel_list_db_deinit(struct wlan_objmgr_psoc *psoc)
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* scm_validate_scoring_config() - validate score config
|
||||
* @score_cfg: config to be validated
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void scm_validate_scoring_config(
|
||||
struct scoring_config *score_cfg);
|
||||
|
||||
/**
|
||||
* scm_scan_update_mlme_by_bssinfo() - updates scan entry with mlme data
|
||||
* @pdev: pdev object
|
||||
|
|
|
|||
|
|
@ -62,16 +62,16 @@ typedef uint32_t wlan_scan_id;
|
|||
#define HT_CAPABILITY_WEIGHTAGE 2
|
||||
#define VHT_CAP_WEIGHTAGE 1
|
||||
#define HE_CAP_WEIGHTAGE 2
|
||||
#define CHAN_WIDTH_WEIGHTAGE 17
|
||||
#define CHAN_WIDTH_WEIGHTAGE 12
|
||||
#define CHAN_BAND_WEIGHTAGE 2
|
||||
#define NSS_WEIGHTAGE 16
|
||||
#define BEAMFORMING_CAP_WEIGHTAGE 2
|
||||
#define PCL_WEIGHT 10
|
||||
#define CHANNEL_CONGESTION_WEIGHTAGE 5
|
||||
#define OCE_WAN_WEIGHTAGE 0
|
||||
#define OCE_WAN_WEIGHTAGE 2
|
||||
#define OCE_AP_TX_POWER_WEIGHTAGE 5
|
||||
#define BEST_CANDIDATE_MAX_WEIGHT 100
|
||||
#define MAX_INDEX_SCORE 100
|
||||
#define BEST_CANDIDATE_MAX_WEIGHT 200
|
||||
#define MAX_PCT_SCORE 100
|
||||
#define MAX_INDEX_PER_INI 4
|
||||
|
||||
#define WLAN_GET_BITS(_val, _index, _num_bits) \
|
||||
|
|
|
|||
|
|
@ -1505,7 +1505,6 @@ QDF_STATUS ucfg_scan_update_user_config(struct wlan_objmgr_psoc *psoc,
|
|||
|
||||
qdf_mem_copy(&scan_def->score_config, &scan_cfg->score_config,
|
||||
sizeof(struct scoring_config));
|
||||
scm_validate_scoring_config(&scan_def->score_config);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue