diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 1e0c170dc8..5422ba145d 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2019 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 @@ -2027,6 +2027,12 @@ static void mlme_init_reg_cfg(struct wlan_objmgr_psoc *psoc, reg->scan_11d_interval = cfg_get(psoc, CFG_SCAN_11D_INTERVAL); } +static void +mlme_init_dot11_mode_cfg(struct wlan_mlme_dot11_mode *dot11_mode) +{ + dot11_mode->dot11_mode = cfg_default(CFG_DOT11_MODE); +} + QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) { struct wlan_mlme_psoc_obj *mlme_obj; @@ -2065,6 +2071,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) mlme_init_ibss_cfg(psoc, &mlme_cfg->ibss); mlme_init_feature_flag_in_cfg(psoc, &mlme_cfg->feature_flags); mlme_init_scoring_cfg(psoc, &mlme_cfg->scoring); + mlme_init_dot11_mode_cfg(&mlme_cfg->dot11_mode); mlme_init_threshold_cfg(psoc, &mlme_cfg->threshold); mlme_init_acs_cfg(psoc, &mlme_cfg->acs); mlme_init_power_cfg(psoc, &mlme_cfg->power); diff --git a/components/mlme/dispatcher/inc/cfg_mlme.h b/components/mlme/dispatcher/inc/cfg_mlme.h index c0a45a40f0..94484241fc 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme.h +++ b/components/mlme/dispatcher/inc/cfg_mlme.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2019 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 @@ -35,6 +35,7 @@ #include "cfg_mlme_obss_ht40.h" #include "cfg_mlme_dfs.h" #include "cfg_mlme_mbo.h" +#include "cfg_mlme_dot11mode.h" #include "cfg_mlme_nss_chains.h" #include "cfg_mlme_vht_caps.h" #include "cfg_qos.h" @@ -66,6 +67,7 @@ CFG_BTM_ALL \ CFG_CHAINMASK_ALL \ CFG_DFS_ALL \ + CFG_DOT11_MODE_ALL \ CFG_EDCA_PARAMS_ALL \ CFG_FE_RRM_ALL \ CFG_FE_WLM_ALL \ diff --git a/components/mlme/dispatcher/inc/cfg_mlme_dot11mode.h b/components/mlme/dispatcher/inc/cfg_mlme_dot11mode.h new file mode 100644 index 0000000000..0125a62402 --- /dev/null +++ b/components/mlme/dispatcher/inc/cfg_mlme_dot11mode.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2012-2019 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 converged configuration. + */ + +#ifndef __CFG_MLME_DOT11MODE_H +#define __CFG_MLME_DOT11MODE_H + +#define CFG_DOT11_MODE CFG_UINT( \ + "dot11_mode", \ + 0, \ + 10, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "dot 11 mode") + +#define CFG_DOT11_MODE_ALL \ + CFG(CFG_DOT11_MODE) \ + +#endif /* __CFG_MLME_DOT11MODE_H */ + diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index b7c954cee7..011d3349d6 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2019 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 @@ -142,6 +142,43 @@ struct mlme_edca_ac_vo { uint32_t vo_aifs; }; +/** + * enum dot11_mode - Dot11 mode of the vdev + * MLME_DOT11_MODE_ALL: vdev supports all dot11 modes + * MLME_DOT11_MODE_11A: vdev just supports 11A mode + * MLME_DOT11_MODE_11B: vdev supports 11B mode, and modes above it + * MLME_DOT11_MODE_11G: vdev supports 11G mode, and modes above it + * MLME_DOT11_MODE_11N: vdev supports 11N mode, and modes above it + * MLME_DOT11_MODE_11G_ONLY: vdev just supports 11G mode + * MLME_DOT11_MODE_1N_ONLYA: vdev just supports 11N mode + * MLME_DOT11_MODE_11AC: vdev supports 11AC mode, and modes above it + * MLME_DOT11_MODE_11AC_ONLY: vdev just supports 11AC mode + * MLME_DOT11_MODE_11AX: vdev supports 11AX mode, and modes above it + * MLME_DOT11_MODE_11AX_ONLY: vdev just supports 11AX mode + */ +enum mlme_dot11_mode { + MLME_DOT11_MODE_ALL, + MLME_DOT11_MODE_11A, + MLME_DOT11_MODE_11B, + MLME_DOT11_MODE_11G, + MLME_DOT11_MODE_11N, + MLME_DOT11_MODE_11G_ONLY, + MLME_DOT11_MODE_11N_ONLY, + MLME_DOT11_MODE_11AC, + MLME_DOT11_MODE_11AC_ONLY, + MLME_DOT11_MODE_11AX, + MLME_DOT11_MODE_11AX_ONLY +}; + +/** + * struct wlan_mlme_dot11_mode - dot11 mode + * + * @dot11_mode: dot11 mode supported + */ +struct wlan_mlme_dot11_mode { + enum mlme_dot11_mode dot11_mode; +}; + /** * struct mlme_edca_ac_vi - cwmin, cwmax and aifs value for edca_ac_vi * @@ -1906,6 +1943,7 @@ struct wlan_mlme_ibss_cfg { * @wlm_config: WLM related CFG items * @rrm_config: RRM related CFG items * @mwc: MWC related CFG items + * @dot11_mode: dot11 mode supported * @reg: REG related CFG itmes */ struct wlan_mlme_cfg { @@ -1947,6 +1985,7 @@ struct wlan_mlme_cfg { struct wlan_mlme_fe_wlm wlm_config; struct wlan_mlme_fe_rrm rrm_config; struct wlan_mlme_mwc mwc; + struct wlan_mlme_dot11_mode dot11_mode; struct wlan_mlme_reg reg; }; diff --git a/core/mac/inc/wni_cfg.h b/core/mac/inc/wni_cfg.h index 58a4f90e61..b0b1456801 100644 --- a/core/mac/inc/wni_cfg.h +++ b/core/mac/inc/wni_cfg.h @@ -25,7 +25,6 @@ enum { WNI_CFG_STA_ID, - WNI_CFG_DOT11_MODE, WNI_CFG_VALID_CHANNEL_LIST, WNI_CFG_APSD_ENABLED, WNI_CFG_CURRENT_TX_POWER_LEVEL, diff --git a/core/mac/src/cfg/cfg_param_name.c b/core/mac/src/cfg/cfg_param_name.c index a4ac0d01de..bbde9de828 100644 --- a/core/mac/src/cfg/cfg_param_name.c +++ b/core/mac/src/cfg/cfg_param_name.c @@ -40,7 +40,6 @@ const char *cfg_get_string(uint16_t cfg_id) default: break; CASE_RETURN_STRING(WNI_CFG_STA_ID); - CASE_RETURN_STRING(WNI_CFG_DOT11_MODE); CASE_RETURN_STRING(WNI_CFG_VALID_CHANNEL_LIST); CASE_RETURN_STRING(WNI_CFG_APSD_ENABLED); CASE_RETURN_STRING(WNI_CFG_CURRENT_TX_POWER_LEVEL); diff --git a/core/mac/src/cfg/cfg_proc_msg.c b/core/mac/src/cfg/cfg_proc_msg.c index 4f6c45b8bc..dd8a05a77a 100644 --- a/core/mac/src/cfg/cfg_proc_msg.c +++ b/core/mac/src/cfg/cfg_proc_msg.c @@ -29,12 +29,6 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { {WNI_CFG_STA_ID, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RELOAD, 0, 255, 1}, - {WNI_CFG_DOT11_MODE, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT | CFG_CTL_RESTART | - CFG_CTL_NTF_LIM, - WNI_CFG_DOT11_MODE_STAMIN, - WNI_CFG_DOT11_MODE_STAMAX, - WNI_CFG_DOT11_MODE_STADEF}, {WNI_CFG_VALID_CHANNEL_LIST, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART | CFG_CTL_NTF_LIM, diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index 227bd5dfa4..8936ebcc3a 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -2663,7 +2663,7 @@ QDF_STATUS lim_update_ext_cap_ie(struct mac_context *mac_ctx, /* from here ext cap ie starts, set EID */ local_ie_buf[*local_ie_len] = DOT11F_EID_EXTCAP; - wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &dot11mode); + dot11mode = mac_ctx->mlme_cfg->dot11_mode.dot11_mode; if (IS_DOT11_MODE_VHT(dot11mode)) vht_enabled = true; diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c index 39816f12e7..557db39062 100644 --- a/core/mac/src/pe/lim/lim_assoc_utils.c +++ b/core/mac/src/pe/lim/lim_assoc_utils.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2019 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 @@ -1343,7 +1343,7 @@ QDF_STATUS lim_populate_vht_mcs_set(struct mac_context *mac_ctx, uint16_t mcs_map_mask2x2 = 0; struct mlme_vht_capabilities_info *vht_cap_info; - wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &self_sta_dot11mode); + self_sta_dot11mode = mac_ctx->mlme_cfg->dot11_mode.dot11_mode; if (!IS_DOT11_MODE_VHT(self_sta_dot11mode)) return QDF_STATUS_SUCCESS; @@ -1495,7 +1495,7 @@ lim_populate_own_rate_set(struct mac_context *mac_ctx, is_arate = 0; - wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &self_sta_dot11mode); + self_sta_dot11mode = mac_ctx->mlme_cfg->dot11_mode.dot11_mode; lim_get_phy_mode(mac_ctx, &phy_mode, session_entry); /* @@ -2728,7 +2728,7 @@ lim_add_sta_self(struct mac_context *mac, uint16_t staIdx, uint8_t updateSta, * command.*/ uint32_t selfStaDot11Mode = 0, selfTxWidth = 0; - wlan_cfg_get_int(mac, WNI_CFG_DOT11_MODE, &selfStaDot11Mode); + selfStaDot11Mode = mac->mlme_cfg->dot11_mode.dot11_mode; wlan_cfg_get_int(mac, WNI_CFG_HT_CAP_INFO_SUPPORTED_CHAN_WIDTH_SET, &selfTxWidth); pe_debug("cfgDot11Mode: %d selfTxWidth: %d", diff --git a/core/mac/src/pe/lim/lim_ft.c b/core/mac/src/pe/lim/lim_ft.c index d12549411a..28dfcca22b 100644 --- a/core/mac/src/pe/lim/lim_ft.c +++ b/core/mac/src/pe/lim/lim_ft.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019 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 @@ -490,7 +490,7 @@ static void lim_fill_dot11mode(struct mac_context *mac_ctx, ft_session->dot11mode = pe_session->ftPEContext.pFTPreAuthReq->dot11mode; } else { - wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &self_dot11_mode); + self_dot11_mode = mac_ctx->mlme_cfg->dot11_mode.dot11_mode; pe_debug("selfDot11Mode: %d", self_dot11_mode); ft_session->dot11mode = self_dot11_mode; } diff --git a/core/mac/src/pe/lim/lim_process_mlm_host_roam.c b/core/mac/src/pe/lim/lim_process_mlm_host_roam.c index b920548144..ab364946e2 100644 --- a/core/mac/src/pe/lim/lim_process_mlm_host_roam.c +++ b/core/mac/src/pe/lim/lim_process_mlm_host_roam.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2019 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 @@ -516,7 +516,7 @@ void lim_process_sta_mlm_add_bss_rsp_ft(struct mac_context *mac, listenInterval = mac->mlme_cfg->sap_cfg.listen_interval; pAddStaParams->listenInterval = (uint16_t) listenInterval; - wlan_cfg_get_int(mac, WNI_CFG_DOT11_MODE, &selfStaDot11Mode); + selfStaDot11Mode = mac->mlme_cfg->dot11_mode.dot11_mode; pAddStaParams->encryptType = pe_session->encryptType; pAddStaParams->maxTxPower = pe_session->maxTxPower; diff --git a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c index 181f3b9670..8869b58d5f 100644 --- a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c @@ -182,9 +182,8 @@ static void mlm_add_sta(struct mac_context *mac_ctx, tpAddStaParams sta_param, uint8_t *bssid, uint8_t ht_capable, struct pe_session *session_entry) { uint32_t val; - uint32_t self_dot11mode = 0; + uint32_t self_dot11mode = mac_ctx->mlme_cfg->dot11_mode.dot11_mode; - wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &self_dot11mode); sta_param->staType = STA_ENTRY_SELF; /* Identifying self */ qdf_mem_copy(sta_param->bssId, bssid, sizeof(tSirMacAddr)); diff --git a/core/mac/src/pe/lim/lim_process_tdls.c b/core/mac/src/pe/lim/lim_process_tdls.c index 521e75c06b..93aafb0c49 100644 --- a/core/mac/src/pe/lim/lim_process_tdls.c +++ b/core/mac/src/pe/lim/lim_process_tdls.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019 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 @@ -861,7 +861,7 @@ static QDF_STATUS lim_send_tdls_dis_rsp_frame(struct mac_context *mac, pe_session, &tdlsDisRsp.ExtCap); - wlan_cfg_get_int(mac, WNI_CFG_DOT11_MODE, &selfDot11Mode); + selfDot11Mode = mac->mlme_cfg->dot11_mode.dot11_mode; /* Populate HT/VHT Capabilities */ populate_dot11f_tdls_ht_vht_cap(mac, selfDot11Mode, &tdlsDisRsp.HTCaps, @@ -1222,7 +1222,7 @@ QDF_STATUS lim_send_tdls_link_setup_req_frame(struct mac_context *mac, * of peer caps */ - wlan_cfg_get_int(mac, WNI_CFG_DOT11_MODE, &selfDot11Mode); + selfDot11Mode = mac->mlme_cfg->dot11_mode.dot11_mode; /* Populate HT/VHT Capabilities */ populate_dot11f_tdls_ht_vht_cap(mac, selfDot11Mode, &tdlsSetupReq.HTCaps, @@ -1673,7 +1673,7 @@ static QDF_STATUS lim_send_tdls_setup_rsp_frame(struct mac_context *mac, (mac->lim.gLimTDLSUapsdMask & 0x01); } - wlan_cfg_get_int(mac, WNI_CFG_DOT11_MODE, &selfDot11Mode); + selfDot11Mode = mac->mlme_cfg->dot11_mode.dot11_mode; /* Populate HT/VHT Capabilities */ populate_dot11f_tdls_ht_vht_cap(mac, selfDot11Mode, &tdlsSetupRsp.HTCaps, diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index dbae0cc24b..8ba430cb7c 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -6041,7 +6041,7 @@ QDF_STATUS lim_send_ext_cap_ie(struct mac_context *mac_ctx, struct scheduler_msg msg = {0}; QDF_STATUS status; - wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &dot11mode); + dot11mode = mac_ctx->mlme_cfg->dot11_mode.dot11_mode; if (IS_DOT11_MODE_VHT(dot11mode)) vht_enabled = true; @@ -7511,9 +7511,7 @@ QDF_STATUS lim_populate_he_mcs_set(struct mac_context *mac_ctx, struct pe_session *session_entry, uint8_t nss) { bool support_2x2 = false; - uint32_t self_sta_dot11mode = 0; - - wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &self_sta_dot11mode); + uint32_t self_sta_dot11mode = mac_ctx->mlme_cfg->dot11_mode.dot11_mode; if (!IS_DOT11_MODE_HE(self_sta_dot11mode)) return QDF_STATUS_SUCCESS; diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c index 64a8b5ac52..f0b4f86261 100644 --- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c +++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019 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 @@ -1551,7 +1551,7 @@ populate_dot11f_rates_tdls(struct mac_context *p_mac, uint32_t self_dot11mode = 0; qdf_size_t num_rates; - wlan_cfg_get_int(p_mac, WNI_CFG_DOT11_MODE, &self_dot11mode); + self_dot11mode = p_mac->mlme_cfg->dot11_mode.dot11_mode; /** * Include 11b rates only when the device configured in diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index d251a1161c..0be4bf47e6 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019 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 @@ -1296,11 +1296,9 @@ QDF_STATUS csr_ready(struct mac_context *mac) void csr_set_default_dot11_mode(struct mac_context *mac) { - uint32_t wniDot11mode = 0; - - wniDot11mode = csr_translate_to_wni_cfg_dot11_mode(mac, - mac->roam.configParam.uCfgDot11Mode); - cfg_set_int(mac, WNI_CFG_DOT11_MODE, wniDot11mode); + mac->mlme_cfg->dot11_mode.dot11_mode = + csr_translate_to_wni_cfg_dot11_mode(mac, + mac->roam.configParam.uCfgDot11Mode); } void csr_set_global_cfgs(struct mac_context *mac) diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index 1b3eca30fc..9fb8ab847f 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -3126,7 +3126,7 @@ static void wma_get_phy_mode_cb(uint8_t chan, uint32_t chan_width, return; } - wlan_cfg_get_int(mac, WNI_CFG_DOT11_MODE, &dot11_mode); + dot11_mode = mac->mlme_cfg->dot11_mode.dot11_mode; *phy_mode = wma_chan_phy_mode(chan, chan_width, dot11_mode); }