qcacld-3.0: Add MLME CFG items of MBO INI configs

Add the MBO ini configs to mlme for the following:
1. CFG_MBO_CANDIDATE_RSSI_THRESHOLD
2. CFG_MBO_CURRENT_RSSI_THRESHOLD
3. CFG_MBO_CUR_RSSI_MCC_THRESHOLD
4. CFG_MBO_CAND_RSSI_BTC_THRESHOLD

Change-Id: I9e779c912538973c8281170ec8c212a4f05b7e2e
CRs-Fixed: 2314168
This commit is contained in:
Pragaspathi Thilagaraj 2018-09-11 20:30:23 +05:30 • committed by nshrivas
commit cd6aef0bd3
10 changed files with 183 additions and 191 deletions

View file

@ -164,6 +164,19 @@ static void mlme_init_qos_cfg(struct wlan_objmgr_psoc *psoc,
cfg_get(psoc, CFG_SAP_MAX_INACTIVITY_OVERRIDE);
}
static void mlme_init_mbo_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_mbo *mbo_params)
{
mbo_params->mbo_candidate_rssi_thres =
cfg_get(psoc, CFG_MBO_CANDIDATE_RSSI_THRESHOLD);
mbo_params->mbo_current_rssi_thres =
cfg_get(psoc, CFG_MBO_CURRENT_RSSI_THRESHOLD);
mbo_params->mbo_current_rssi_mcc_thres =
cfg_get(psoc, CFG_MBO_CUR_RSSI_MCC_THRESHOLD);
mbo_params->mbo_candidate_rssi_btc_thres =
cfg_get(psoc, CFG_MBO_CAND_RSSI_BTC_THRESHOLD);
}
static void mlme_update_rates_in_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_rates *rates)
{
@ -293,6 +306,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
mlme_cfg = &mlme_obj->cfg;
mlme_update_ht_cap_in_cfg(psoc, &mlme_cfg->ht_caps.ht_cap_info);
mlme_init_mbo_cfg(psoc, &mlme_cfg->mbo_cfg);
mlme_init_qos_cfg(psoc, &mlme_cfg->qos_mlme_params);
mlme_update_rates_in_cfg(psoc, &mlme_cfg->rates);
mlme_update_sap_protection_cfg(psoc, &mlme_cfg->sap_protection_cfg);

View file

@ -26,6 +26,7 @@
#include "cfg_mlme_chainmask.h"
#include "cfg_mlme_ht_caps.h"
#include "cfg_mlme_obss_ht40.h"
#include "cfg_mlme_mbo.h"
#include "cfg_mlme_vht_caps.h"
#include "cfg_qos.h"
#include "cfg_mlme_rates.h"
@ -37,6 +38,7 @@
CFG_CHAINMASK_ALL \
CFG_HT_CAPS_ALL \
CFG_OBSS_HT40_ALL \
CFG_MBO_ALL \
CFG_VHT_CAPS_ALL \
CFG_QOS_ALL \
CFG_RATES_ALL \

View file

@ -0,0 +1,139 @@
/*
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file contains centralized definitions of QOS related
* converged configurations.
*/
#ifndef __CFG_MLME_MBO_H
#define __CFG_MLME_MBO_H
/*
* <ini>
* g_mbo_candidate_rssi_thres - Candidate AP's minimum RSSI to accept
* @Min: -120
* @Max: 0
* @Default: -72
*
* This ini specifies the minimum RSSI value a candidate should have to accept
* it as a target for transition.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CANDIDATE_RSSI_THRESHOLD CFG_INI_INT( \
"g_mbo_candidate_rssi_thres", \
-120, \
0, \
-72, \
CFG_VALUE_OR_DEFAULT, \
"candidate AP rssi threshold")
/*
* <ini>
* g_mbo_current_rssi_thres - Connected AP's RSSI threshold to consider a
* transition
* @Min: -120
* @Max: 0
* @Default: -65
*
* This ini is used to configure connected AP's RSSI threshold value to consider
* a transition.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CURRENT_RSSI_THRESHOLD CFG_INI_INT( \
"g_mbo_current_rssi_thres", \
-120, \
0, \
-65, \
CFG_VALUE_OR_DEFAULT, \
"current AP rssi threshold")
/*
* <ini>
* g_mbo_current_rssi_mcc_thres - connected AP's RSSI threshold value to prefer
* against a MCC
* @Min: -120
* @Max: 0
* @Default: -75
*
* This ini is used to configure connected AP's minimum RSSI threshold that is
* preferred against a MCC case, if the candidate can cause MCC.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD CFG_INI_INT( \
"g_mbo_current_rssi_mcc_thres", \
-120, \
0, \
-75, \
CFG_VALUE_OR_DEFAULT, \
"current AP mcc rssi threshold")
/*
* <ini>
* g_mbo_candidate_rssi_btc_thres - Candidate AP's minimum RSSI threshold to
* prefer it even in case of BT coex
* @Min: -120
* @Max: 0
* @Default: -70
*
* This ini is used to configure candidate AP's minimum RSSI threshold to prefer
* it for transition even in case of BT coex.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD CFG_INI_INT( \
"g_mbo_candidate_rssi_btc_thres", \
-120, \
0, \
-70, \
CFG_VALUE_OR_DEFAULT, \
"candidate AP rssi threshold")
#define CFG_MBO_ALL \
CFG(CFG_MBO_CANDIDATE_RSSI_THRESHOLD) \
CFG(CFG_MBO_CURRENT_RSSI_THRESHOLD) \
CFG(CFG_MBO_CUR_RSSI_MCC_THRESHOLD) \
CFG(CFG_MBO_CAND_RSSI_BTC_THRESHOLD)
#endif /* __CFG_MLME_MBO_H */

View file

@ -119,6 +119,20 @@ struct wlan_mlme_cfg_sap {
uint8_t reduced_beacon_interval;
};
/**
* struct wlan_mlme_mbo - Multiband Operation related ini configs
* @mbo_candidate_rssi_thres:
* @mbo_current_rssi_thres:
* @mbo_current_rssi_mcc_thres:
* @mbo_candidate_rssi_btc_thres:
*/
struct wlan_mlme_mbo {
int8_t mbo_candidate_rssi_thres;
int8_t mbo_current_rssi_thres;
int8_t mbo_current_rssi_mcc_thres;
int8_t mbo_candidate_rssi_btc_thres;
};
struct wlan_mlme_vht_caps {
/* VHT related configs */
};
@ -291,6 +305,7 @@ struct wlan_mlme_sta_cfg {
struct wlan_mlme_cfg {
struct wlan_mlme_ht_caps ht_caps;
struct wlan_mlme_obss_ht40 obss_ht40;
struct wlan_mlme_mbo mbo_cfg;
struct wlan_mlme_vht_caps vht_caps;
struct wlan_mlme_qos qos_mlme_params;
struct wlan_mlme_rates rates;

View file

@ -11735,101 +11735,6 @@ enum hdd_external_acs_policy {
#define CFG_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_MAX (1)
#define CFG_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_DEFAULT (0)
/*
* <ini>
* g_mbo_candidate_rssi_thres - Candidate AP's minimum RSSI to accept
* @Min: -120
* @Max: 0
* @Default: -72
*
* This ini specifies the minimum RSSI value a candidate should have to accept
* it as a target for transition.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CANDIDATE_RSSI_THRESHOLD_NAME "g_mbo_candidate_rssi_thres"
#define CFG_CANDIDATE_RSSI_THRESHOLD_DEFAULT (-72)
#define CFG_CANDIDATE_RSSI_THRESHOLD_MIN (-120)
#define CFG_CANDIDATE_RSSI_THRESHOLD_MAX (0)
/*
* <ini>
* g_mbo_current_rssi_thres - Connected AP's RSSI threshold to consider a
* transition
* @Min: -120
* @Max: 0
* @Default: -65
*
* This ini is used to configure connected AP's RSSI threshold value to consider
* a transition.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CURRENT_RSSI_THRESHOLD_NAME "g_mbo_current_rssi_thres"
#define CFG_CURRENT_RSSI_THRESHOLD_DEFAULT (-65)
#define CFG_CURRENT_RSSI_THRESHOLD_MIN (-120)
#define CFG_CURRENT_RSSI_THRESHOLD_MAX (0)
/*
* <ini>
* g_mbo_current_rssi_mcc_thres - connected AP's RSSI threshold value to prefer
* against a MCC
* @Min: -120
* @Max: 0
* @Default: -75
*
* This ini is used to configure connected AP's minimum RSSI threshold that is
* preferred against a MCC case, if the candidate can cause MCC.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_NAME "g_mbo_current_rssi_mcc_thres"
#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_DEFAULT (-75)
#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MIN (-120)
#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MAX (0)
/*
* <ini>
* g_mbo_candidate_rssi_btc_thres - Candidate AP's minimum RSSI threshold to
* prefer it even in case of BT coex
* @Min: -120
* @Max: 0
* @Default: -70
*
* This ini is used to configure candidate AP's minimum RSSI threshold to prefer
* it for transition even in case of BT coex.
*
* Related: N/A
*
* Supported Feature: MBO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_NAME "g_mbo_candidate_rssi_btc_thres"
#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_DEFAULT (-70)
#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MIN (-120)
#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MAX (0)
#ifdef WLAN_FEATURE_PACKET_FILTERING
/*
* <ini>
@ -13714,11 +13619,6 @@ struct hdd_config {
uint32_t wlm_latency_flags_moderate;
uint32_t wlm_latency_flags_low;
uint32_t wlm_latency_flags_ultralow;
/* mbo related thresholds */
int8_t mbo_candidate_rssi_thres;
int8_t mbo_current_rssi_thres;
int8_t mbo_current_rssi_mcc_thres;
int8_t mbo_candidate_rssi_btc_thres;
#ifdef WLAN_FEATURE_PACKET_FILTERING
uint8_t packet_filters_bitmap;
#endif

View file

@ -4645,37 +4645,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_ENABLE_SCORING_FOR_ROAM_MIN,
CFG_ENABLE_SCORING_FOR_ROAM_MAX),
REG_VARIABLE(CFG_MBO_CANDIDATE_RSSI_THRESHOLD_NAME,
WLAN_PARAM_SignedInteger, struct hdd_config,
mbo_candidate_rssi_thres,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CANDIDATE_RSSI_THRESHOLD_DEFAULT,
CFG_CANDIDATE_RSSI_THRESHOLD_MIN,
CFG_CANDIDATE_RSSI_THRESHOLD_MAX),
REG_VARIABLE(CFG_MBO_CURRENT_RSSI_THRESHOLD_NAME,
WLAN_PARAM_SignedInteger, struct hdd_config,
mbo_current_rssi_thres,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CURRENT_RSSI_THRESHOLD_DEFAULT,
CFG_CURRENT_RSSI_THRESHOLD_MIN,
CFG_CURRENT_RSSI_THRESHOLD_MAX),
REG_VARIABLE(CFG_MBO_CUR_RSSI_MCC_THRESHOLD_NAME,
WLAN_PARAM_SignedInteger, struct hdd_config,
mbo_current_rssi_mcc_thres,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_MBO_CUR_RSSI_MCC_THRESHOLD_DEFAULT,
CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MIN,
CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MAX),
REG_VARIABLE(CFG_MBO_CAND_RSSI_BTC_THRESHOLD_NAME,
WLAN_PARAM_SignedInteger, struct hdd_config,
mbo_candidate_rssi_btc_thres,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_MBO_CAND_RSSI_BTC_THRESHOLD_DEFAULT,
CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MIN,
CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MAX),
REG_VARIABLE(CFG_IS_FILS_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, is_fils_enabled,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@ -7269,14 +7238,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
(pConfig->rssi_assoc_reject_enabled *
WMI_VDEV_OCE_REASSOC_REJECT_FEATURE_BITMAP);
smeConfig->csrConfig.oce_feature_bitmap = val;
smeConfig->csrConfig.mbo_thresholds.mbo_candidate_rssi_thres =
hdd_ctx->config->mbo_candidate_rssi_thres;
smeConfig->csrConfig.mbo_thresholds.mbo_current_rssi_thres =
hdd_ctx->config->mbo_current_rssi_thres;
smeConfig->csrConfig.mbo_thresholds.mbo_current_rssi_mcc_thres =
hdd_ctx->config->mbo_current_rssi_mcc_thres;
smeConfig->csrConfig.mbo_thresholds.mbo_candidate_rssi_btc_thres =
hdd_ctx->config->mbo_candidate_rssi_btc_thres;
smeConfig->csrConfig.btm_offload_config =
hdd_ctx->config->btm_offload_config;
smeConfig->csrConfig.btm_solicited_timeout =

View file

@ -1014,20 +1014,6 @@ struct csr_sta_roam_policy_params {
uint8_t sap_operating_band;
};
/**
* struct csr_mbo_thresholds - mbo related thresholds
* @mbo_candidate_rssi_thres - Candidate RSSI threshold
* @mbo_current_rssi_thres - Current RSSI threshold
* @mbo_current_rssi_mcc_thres - Current RSSI MCC threshold
* mbo_candidate_rssi_btc_thres - Candidate RSSI BTC threshold
*/
struct csr_mbo_thresholds {
int8_t mbo_candidate_rssi_thres;
int8_t mbo_current_rssi_thres;
int8_t mbo_current_rssi_mcc_thres;
int8_t mbo_candidate_rssi_btc_thres;
};
/**
* struct csr_neighbor_report_offload_params - neighbor report offload params
* @params_bitmask: bitmask to specify which of the below are enabled
@ -1263,7 +1249,6 @@ typedef struct tagCsrConfigParam {
uint32_t num_disallowed_aps;
struct sir_score_config bss_score_params;
uint8_t oce_feature_bitmap;
struct csr_mbo_thresholds mbo_thresholds;
uint32_t btm_offload_config;
uint32_t btm_solicited_timeout;
uint32_t btm_max_attempt_cnt;

View file

@ -574,7 +574,6 @@ struct csr_config {
uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL];
struct sir_score_config bss_score_params;
uint8_t oce_feature_bitmap;
struct csr_mbo_thresholds mbo_thresholds;
uint32_t btm_offload_config;
uint32_t btm_solicited_timeout;
uint32_t btm_max_attempt_cnt;

View file

@ -15734,6 +15734,14 @@ static bool sme_get_status_for_candidate(tHalHandle hal,
bool is_bt_in_progress)
{
tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
struct wlan_mlme_mbo *mbo_cfg;
int8_t current_rssi_mcc_thres;
if (!(mac_ctx->mlme_cfg)) {
pe_err("mlme cfg is NULL");
return false;
}
mbo_cfg = &mac_ctx->mlme_cfg->mbo_cfg;
/*
* Low RSSI based rejection
@ -15741,10 +15749,8 @@ static bool sme_get_status_for_candidate(tHalHandle hal,
* bss rssi is greater than mbo_current_rssi_thres, then reject the
* candidate with MBO reason code 4.
*/
if ((bss_desc->rssi < mac_ctx->roam.configParam.mbo_thresholds.
mbo_candidate_rssi_thres) &&
(conn_bss_desc->rssi > mac_ctx->roam.configParam.mbo_thresholds.
mbo_current_rssi_thres)) {
if ((bss_desc->rssi < mbo_cfg->mbo_candidate_rssi_thres) &&
(conn_bss_desc->rssi > mbo_cfg->mbo_current_rssi_thres)) {
sme_err("Candidate BSS "MAC_ADDRESS_STR" has LOW RSSI(%d), hence reject",
MAC_ADDR_ARRAY(bss_desc->bssId), bss_desc->rssi);
info->status = QCA_STATUS_REJECT_LOW_RSSI;
@ -15760,9 +15766,8 @@ static bool sme_get_status_for_candidate(tHalHandle hal,
* mbo_current_rssi_mss_thres, then reject the candidate with
* MBO reason code 3.
*/
if ((conn_bss_desc->rssi >
mac_ctx->roam.configParam.mbo_thresholds.
mbo_current_rssi_mcc_thres) &&
current_rssi_mcc_thres = mbo_cfg->mbo_current_rssi_mcc_thres;
if ((conn_bss_desc->rssi > current_rssi_mcc_thres) &&
csr_is_mcc_channel(mac_ctx, bss_desc->channelId)) {
sme_err("Candidate BSS "MAC_ADDRESS_STR" causes MCC, hence reject",
MAC_ADDR_ARRAY(bss_desc->bssId));
@ -15781,9 +15786,7 @@ static bool sme_get_status_for_candidate(tHalHandle hal,
if (WLAN_REG_IS_5GHZ_CH(conn_bss_desc->channelId) &&
WLAN_REG_IS_24GHZ_CH(bss_desc->channelId) &&
is_bt_in_progress &&
(bss_desc->rssi <
mac_ctx->roam.configParam.mbo_thresholds.
mbo_candidate_rssi_btc_thres)) {
(bss_desc->rssi < mbo_cfg->mbo_candidate_rssi_btc_thres)) {
sme_err("Candidate BSS "MAC_ADDRESS_STR" causes BT coex, hence reject",
MAC_ADDR_ARRAY(bss_desc->bssId));
info->status =

View file

@ -3221,19 +3221,6 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pMac->roam.configParam.roam_force_rssi_trigger =
pParam->roam_force_rssi_trigger;
pMac->roam.configParam.mbo_thresholds.
mbo_candidate_rssi_thres =
pParam->mbo_thresholds.mbo_candidate_rssi_thres;
pMac->roam.configParam.mbo_thresholds.
mbo_current_rssi_thres =
pParam->mbo_thresholds.mbo_current_rssi_thres;
pMac->roam.configParam.mbo_thresholds.
mbo_current_rssi_mcc_thres =
pParam->mbo_thresholds.mbo_current_rssi_mcc_thres;
pMac->roam.configParam.mbo_thresholds.
mbo_candidate_rssi_btc_thres =
pParam->mbo_thresholds.mbo_candidate_rssi_btc_thres;
qdf_mem_copy(&pMac->roam.configParam.bss_score_params,
&pParam->bss_score_params,
sizeof(struct sir_score_config));
@ -3535,19 +3522,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pMac->roam.configParam.btm_max_attempt_cnt;
pParam->btm_sticky_time = pMac->roam.configParam.btm_sticky_time;
pParam->mbo_thresholds.mbo_candidate_rssi_thres =
pMac->roam.configParam.mbo_thresholds.
mbo_candidate_rssi_thres;
pParam->mbo_thresholds.mbo_current_rssi_thres =
pMac->roam.configParam.mbo_thresholds.
mbo_current_rssi_thres;
pParam->mbo_thresholds.mbo_current_rssi_mcc_thres =
pMac->roam.configParam.mbo_thresholds.
mbo_current_rssi_mcc_thres;
pParam->mbo_thresholds.mbo_candidate_rssi_btc_thres =
pMac->roam.configParam.mbo_thresholds.
mbo_candidate_rssi_btc_thres;
csr_get_he_config_param(pParam, pMac);
csr_get_11k_offload_config_param(&pMac->roam.configParam, pParam);