diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c
index 436ed80ddcc0..2c3247f459e0 100644
--- a/components/mlme/core/src/wlan_mlme_main.c
+++ b/components/mlme/core/src/wlan_mlme_main.c
@@ -244,6 +244,41 @@ static void mlme_init_obss_ht40_cfg(struct wlan_objmgr_psoc *psoc,
cfg_default(CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD);
}
+static void mlme_init_sta_cfg(struct wlan_objmgr_psoc *psoc,
+ struct wlan_mlme_sta_cfg *sta)
+{
+ sta->sta_keep_alive_period =
+ cfg_get(psoc, CFG_INFRA_STA_KEEP_ALIVE_PERIOD);
+ sta->tgt_gtx_usr_cfg =
+ cfg_get(psoc, CFG_TGT_GTX_USR_CFG);
+ sta->pmkid_modes =
+ cfg_get(psoc, CFG_PMKID_MODES);
+ sta->ignore_peer_erp_info =
+ cfg_get(psoc, CFG_IGNORE_PEER_ERP_INFO);
+ sta->sta_prefer_80mhz_over_160mhz =
+ cfg_get(psoc, CFG_STA_PREFER_80MHZ_OVER_160MHZ);
+ sta->enable_5g_ebt =
+ cfg_get(psoc, CFG_PPS_ENABLE_5G_EBT);
+ sta->deauth_before_connection =
+ cfg_get(psoc, CFG_ENABLE_DEAUTH_BEFORE_CONNECTION);
+ sta->dot11p_mode =
+ cfg_get(psoc, CFG_DOT11P_MODE);
+ sta->enable_go_cts2self_for_sta =
+ cfg_get(psoc, CFG_ENABLE_GO_CTS2SELF_FOR_STA);
+ sta->qcn_ie_support =
+ cfg_get(psoc, CFG_QCN_IE_SUPPORT);
+ sta->fils_max_chan_guard_time =
+ cfg_get(psoc, CFG_FILS_MAX_CHAN_GUARD_TIME);
+ sta->force_rsne_override =
+ cfg_get(psoc, CFG_FORCE_RSNE_OVERRIDE);
+ sta->single_tid =
+ cfg_get(psoc, CFG_SINGLE_TID_RC);
+ sta->wait_cnf_timeout =
+ (uint32_t)cfg_default(CFG_WT_CNF_TIMEOUT);
+ sta->current_rssi =
+ (uint32_t)cfg_default(CFG_CURRENT_RSSI);
+}
+
QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
{
struct wlan_mlme_psoc_obj *mlme_obj;
@@ -264,6 +299,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
mlme_init_chainmask_cfg(psoc, &mlme_cfg->chainmask_cfg);
mlme_update_sap_cfg(psoc, &mlme_cfg->sap_cfg);
mlme_init_obss_ht40_cfg(psoc, &mlme_cfg->obss_ht40);
+ mlme_init_sta_cfg(psoc, &mlme_cfg->sta);
return status;
}
diff --git a/components/mlme/dispatcher/inc/cfg_mlme.h b/components/mlme/dispatcher/inc/cfg_mlme.h
index 81f7cc30e650..954824c6ffd0 100644
--- a/components/mlme/dispatcher/inc/cfg_mlme.h
+++ b/components/mlme/dispatcher/inc/cfg_mlme.h
@@ -29,6 +29,7 @@
#include "cfg_mlme_vht_caps.h"
#include "cfg_qos.h"
#include "cfg_mlme_rates.h"
+#include "cfg_mlme_sta.h"
#include "cfg_sap_protection.h"
#include "cfg_mlme_sap.h"
@@ -40,6 +41,7 @@
CFG_QOS_ALL \
CFG_RATES_ALL \
CFG_SAP_PROTECTION_ALL \
- CFG_SAP_ALL
+ CFG_SAP_ALL \
+ CFG_STA_ALL
#endif /* __CFG_MLME_H */
diff --git a/components/mlme/dispatcher/inc/cfg_mlme_sta.h b/components/mlme/dispatcher/inc/cfg_mlme_sta.h
new file mode 100644
index 000000000000..2fc1d1b8a592
--- /dev/null
+++ b/components/mlme/dispatcher/inc/cfg_mlme_sta.h
@@ -0,0 +1,395 @@
+/*
+ * 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 configuration definitions for MLME STA.
+ */
+
+#ifndef CFG_MLME_STA_H__
+#define CFG_MLME_STA_H__
+
+#include "wlan_mlme_public_struct.h"
+
+/*
+ *
+ * gStaKeepAlivePeriod - Sends NULL frame to AP periodically in
+ * seconds to notify STA's existence
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 60
+ *
+ * This ini is used to send default NULL frame to AP
+ *
+ * Related: None
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_INFRA_STA_KEEP_ALIVE_PERIOD CFG_INI_UINT( \
+ "gStaKeepAlivePeriod", \
+ 0, \
+ 1000, \
+ 60, \
+ CFG_VALUE_OR_DEFAULT, \
+ "send default NULL frame to AP")
+
+/*
+ *
+ * tgt_gtx_usr_cfg - target gtx user config
+ * @Min: 0
+ * @Max: 32
+ * @Default: 32
+ *
+ * This ini is used to set target gtx user config.
+ *
+ * Related: None
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_TGT_GTX_USR_CFG CFG_INI_UINT( \
+ "tgt_gtx_usr_cfg", \
+ 0, \
+ 32, \
+ 32, \
+ CFG_VALUE_OR_DEFAULT, \
+ "target gtx user config")
+
+/*
+ *
+ * pmkidModes - Enable PMKID modes
+ * This INI is used to enable PMKID feature options
+ * @Min: 0
+ * @Max: 3
+ * @Default: 3
+ *
+ * Related: None
+ *
+ * Supported Feature: Scan
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_PMKID_MODES CFG_INI_UINT( \
+ "pmkidModes", \
+ 0, \
+ 3, \
+ 3, \
+ CFG_VALUE_OR_DEFAULT, \
+ "PMKID feature options")
+
+/*
+ *
+ * gIgnorePeerErpInfo - Ignore peer information
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to ignore default peer info
+ *
+ * Related: None
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_IGNORE_PEER_ERP_INFO CFG_INI_BOOL( \
+ "gIgnorePeerErpInfo", \
+ 0, \
+ "ignore default peer info")
+
+/*
+ *
+ * gStaPrefer80MHzOver160MHz - set sta preference to connect in 80HZ/160HZ
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini is used to set sta preference to connect in 80HZ/160HZ
+ *
+ * 0 - Connects in 160MHz 1x1 when AP is 160MHz 2x2
+ * 1 - Connects in 80MHz 2x2 when AP is 160MHz 2x2
+ *
+ * Related: NA
+ *
+ * Supported Feature: 11AC
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_STA_PREFER_80MHZ_OVER_160MHZ CFG_INI_BOOL( \
+ "gStaPrefer80MHzOver160MHz", \
+ 1, \
+ "Sta preference to connect in 80HZ/160HZ")
+
+/*
+ *
+ * gEnable5gEBT - Enables/disables 5G early beacon termination. When enabled
+ * terminate the reception of beacon if the TIM element is
+ * clear for the power saving
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini is used to set default 5G early beacon termination
+ *
+ * Related: None
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_PPS_ENABLE_5G_EBT CFG_INI_BOOL( \
+ "gEnable5gEBT", \
+ 1, \
+ "5G early beacon termination")
+
+/*
+ *
+ * gSendDeauthBeforeCon - Send deauth before connection or not
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to set whether send deauth before connection or
+ * not. If last disconnection was due to HB failure and we reconnect
+ * to same AP next time, send deauth before starting connection.
+ *
+ * Related: None
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_ENABLE_DEAUTH_BEFORE_CONNECTION CFG_INI_BOOL( \
+ "gSendDeauthBeforeCon", \
+ 0, \
+ "send deauth before connection")
+
+/*
+ *
+ * CFG_DOT11P_MODE - 802.11p mode
+ * @Min: CFG_11P_DISABLED
+ * @Max: CFG_11P_CONCURRENT
+ * @Default: CFG_11P_DISABLED
+ *
+ * This ini used to set 802.11p mode.
+ *
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_DOT11P_MODE CFG_INI_UINT( \
+ "gDot11PMode", \
+ CFG_11P_DISABLED, \
+ CFG_11P_CONCURRENT, \
+ CFG_11P_DISABLED, \
+ CFG_VALUE_OR_DEFAULT, \
+ "802.11p mode")
+
+/*
+ *
+ * gEnable_go_cts2self_for_sta - Indicate firmware to stop NOA and
+ * start using cts2self
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * When gEnable_go_cts2self_for_sta is enabled then if a legacy
+ * client connects to P2P GO, Host will send a WMI VDEV command
+ * to FW to stop using NOA for P2P GO
+ * and start using CTS2SELF.
+ *
+ *
+ * Supported Feature: P2P
+ *
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_ENABLE_GO_CTS2SELF_FOR_STA CFG_INI_BOOL( \
+ "gEnable_go_cts2self_for_sta", \
+ 0, \
+ "firmware to stop NOA and start using cts2self")
+
+/*
+ *
+ * g_qcn_ie_support - QCN IE support
+ * @Min: 0 (disabled)
+ * @Max: 1 (enabled)
+ * @Default: 1 (enabled)
+ *
+ * This config item is used to support QCN IE in probe/assoc/reassoc request
+ * for STA mode. QCN IE support is not added for SAP mode.
+ *
+ * Related: N/A
+ *
+ * Supported Feature: N/A
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_QCN_IE_SUPPORT CFG_INI_BOOL( \
+ "g_qcn_ie_support", \
+ 1, \
+ "QCN IE support")
+
+/*
+ *
+ * g_fils_max_chan_guard_time - Set maximum channel guard time(ms)
+ * @Min: 0
+ * @Max: 10
+ * @Default: 0
+ *
+ * This ini is used to set maximum channel guard time in milliseconds.
+ *
+ * Related: None
+ *
+ * Supported Feature: FILS
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_FILS_MAX_CHAN_GUARD_TIME CFG_INI_UINT( \
+ "g_fils_max_chan_guard_time", \
+ 0, \
+ 10, \
+ 0, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Set maximum channel guard time")
+
+/*
+ *
+ * force_rsne_override - force rsnie override from user
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to enable/disable test mode to force rsne override used in
+ * security enhancement test cases to pass the RSNIE sent by user in
+ * assoc request.
+ *
+ * Related: None
+ *
+ * Supported Feature: STA
+ *
+ * Usage: internal
+ *
+ *
+ */
+#define CFG_FORCE_RSNE_OVERRIDE CFG_INI_BOOL( \
+ "force_rsne_override", \
+ 0, \
+ "Set obss active dwelltime")
+
+/*
+ *
+ * SingleTIDRC - Set replay counter for all TID's
+ * @Min: 0 Separate replay counter for all TID
+ * @Max: 1 Single replay counter for all TID
+ * @Default: 1
+ *
+ * This ini is used to set replay counter for all TID's
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ *
+ */
+#define CFG_SINGLE_TID_RC CFG_INI_BOOL( \
+ "SingleTIDRC", \
+ 1, \
+ "replay counter for all TID")
+
+/*
+ * wait_cnf_timeout - Wait assoc cnf timeout
+ * @Min: 10
+ * @Max: 3000
+ * @Default: 1000
+ *
+ * This is internal configure for waiting assoc cnf timeout
+ *
+ * Related: None
+ *
+ * Usage: Internal
+ *
+ */
+#define CFG_WT_CNF_TIMEOUT CFG_UINT( \
+ "wait_cnf_timeout", \
+ 10, \
+ 3000, \
+ 1000, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Wait confirm timeout")
+
+/*
+ * current_rssi - current rssi
+ * @Min: 0
+ * @Max: 127
+ * @Default: 0
+ *
+ * This is internal configure for current rssi
+ *
+ * Related: None
+ *
+ * Usage: Internal
+ *
+ */
+#define CFG_CURRENT_RSSI CFG_UINT( \
+ "current_rssi", \
+ 0, \
+ 127, \
+ 0, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Current RSSI")
+
+#define CFG_STA_ALL \
+ CFG(CFG_INFRA_STA_KEEP_ALIVE_PERIOD) \
+ CFG(CFG_TGT_GTX_USR_CFG) \
+ CFG(CFG_PMKID_MODES) \
+ CFG(CFG_IGNORE_PEER_ERP_INFO) \
+ CFG(CFG_STA_PREFER_80MHZ_OVER_160MHZ) \
+ CFG(CFG_PPS_ENABLE_5G_EBT) \
+ CFG(CFG_ENABLE_DEAUTH_BEFORE_CONNECTION) \
+ CFG(CFG_DOT11P_MODE) \
+ CFG(CFG_ENABLE_GO_CTS2SELF_FOR_STA) \
+ CFG(CFG_QCN_IE_SUPPORT) \
+ CFG(CFG_FILS_MAX_CHAN_GUARD_TIME) \
+ CFG(CFG_FORCE_RSNE_OVERRIDE) \
+ CFG(CFG_SINGLE_TID_RC) \
+ CFG(CFG_WT_CNF_TIMEOUT) \
+ CFG(CFG_CURRENT_RSSI)
+
+#endif /* CFG_MLME_STA_H__ */
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
index 535f67a4e178..7c393e760ad7 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
@@ -25,6 +25,9 @@
#include
+#define CFG_PMKID_MODES_OKC (0x1)
+#define CFG_PMKID_MODES_PMKSA_CACHING (0x2)
+
/**
* struct mlme_ht_capabilities_info - HT Capabilities Info
* @l_sig_tx_op_protection: L-SIG TXOP Protection Mechanism support
@@ -228,6 +231,54 @@ struct wlan_mlme_obss_ht40 {
uint32_t scan_activity_threshold;
};
+/**
+ * enum dot11p_mode - The 802.11p mode of operation
+ * @WLAN_HDD_11P_DISABLED: 802.11p mode is disabled
+ * @WLAN_HDD_11P_STANDALONE: 802.11p-only operation
+ * @WLAN_HDD_11P_CONCURRENT: 802.11p and WLAN operate concurrently
+ */
+enum dot11p_mode {
+ CFG_11P_DISABLED = 0,
+ CFG_11P_STANDALONE,
+ CFG_11P_CONCURRENT,
+};
+
+/**
+ * struct wlan_mlme_sta_cfg - MLME STA configuration items
+ * @sta_keep_alive_period: Sends NULL frame to AP period
+ * @tgt_gtx_usr_cfg: Target gtx user config
+ * @pmkid_modes: Enable PMKID modes
+ * @wait_cnf_timeout: Wait assoc cnf timeout
+ * @dot11p_mode: Set 802.11p mode
+ * @fils_max_chan_guard_time: Set maximum channel guard time
+ * @current_rssi: Current rssi
+ * @ignore_peer_erp_info: Ignore peer infrormation
+ * @sta_prefer_80mhz_over_160mhz: Set Sta preference to connect in 80HZ/160HZ
+ * @enable_5g_ebt: Set default 5G early beacon termination
+ * @deauth_before_connection: Send deauth before connection or not
+ * @enable_go_cts2self_for_sta: Stop NOA and start using cts2self
+ * @qcn_ie_support: QCN IE support
+ * @force_rsne_override: Force rsnie override from user
+ * @single_tid: Set replay counter for all TID
+ */
+struct wlan_mlme_sta_cfg {
+ uint32_t sta_keep_alive_period;
+ uint32_t tgt_gtx_usr_cfg;
+ uint32_t pmkid_modes;
+ uint32_t wait_cnf_timeout;
+ uint8_t dot11p_mode;
+ uint8_t fils_max_chan_guard_time;
+ uint8_t current_rssi;
+ bool ignore_peer_erp_info;
+ bool sta_prefer_80mhz_over_160mhz;
+ bool enable_5g_ebt;
+ bool deauth_before_connection;
+ bool enable_go_cts2self_for_sta;
+ bool qcn_ie_support;
+ bool force_rsne_override;
+ bool single_tid;
+};
+
/**
* struct wlan_mlme_cfg - MLME config items
* @ht_cfg: HT related CFG Items
@@ -235,6 +286,7 @@ struct wlan_mlme_obss_ht40 {
* @vht_cfg: VHT related CFG Items
* @rates: Rates related cfg items
* @sap_protection_cfg: SAP erp protection related CFG items
+ * @sta: sta CFG Items
*/
struct wlan_mlme_cfg {
struct wlan_mlme_ht_caps ht_caps;
@@ -245,6 +297,7 @@ struct wlan_mlme_cfg {
struct wlan_mlme_sap_protection sap_protection_cfg;
struct wlan_mlme_chainmask chainmask_cfg;
struct wlan_mlme_cfg_sap sap_cfg;
+ struct wlan_mlme_sta_cfg sta;
};
#endif
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
index 0e3e7a857a3a..30c58edf8d9c 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
@@ -246,4 +246,91 @@ QDF_STATUS ucfg_mlme_configure_chain_mask(struct wlan_objmgr_psoc *psoc,
return wlan_mlme_configure_chain_mask(psoc, session_id);
}
+/*
+ * ucfg_mlme_get_sta_keep_alive_period() - Get the sta keep alive period
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_sta_keep_alive_period(struct wlan_objmgr_psoc *psoc,
+ uint32_t *val);
+
+/**
+ * ucfg_mlme_get_pmkid_modes() - Get PMKID modes
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_pmkid_modes(struct wlan_objmgr_psoc *psoc,
+ uint32_t *val);
+
+/**
+ * ucfg_mlme_set_pmkid_modes() - Set PMKID modes
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_set_pmkid_modes(struct wlan_objmgr_psoc *psoc,
+ uint32_t val);
+
+/**
+ * ucfg_mlme_get_dot11p_mode() - Get the setting about 802.11p mode
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_dot11p_mode(struct wlan_objmgr_psoc *psoc,
+ uint8_t *val);
+
+/**
+ * ucfg_mlme_get_go_cts2self_for_sta() - Stop NOA and start using cts2self
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_go_cts2self_for_sta(struct wlan_objmgr_psoc *psoc,
+ bool *val);
+
+/**
+ * ucfg_mlme_get_force_rsne_override() - Force rsnie override from user
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_force_rsne_override(struct wlan_objmgr_psoc *psoc,
+ bool *val);
+
+/**
+ * ucfg_mlme_get_qcn_ie_support() - QCN IE support or not
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_qcn_ie_support(struct wlan_objmgr_psoc *psoc,
+ bool *val);
+
+/**
+ * ucfg_mlme_get_tgt_gtx_usr_cfg() - Get the target gtx user config
+ * @psoc: pointer to psoc object
+ * @val: Pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_tgt_gtx_usr_cfg(struct wlan_objmgr_psoc *psoc,
+ uint32_t *val);
#endif /* _WLAN_MLME_UCFG_API_H_ */
diff --git a/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c b/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c
index 861b166d1317..31dc81b62c74 100644
--- a/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c
+++ b/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c
@@ -19,6 +19,8 @@
* DOC: define UCFG APIs exposed by the mlme component
*/
+#include "cfg_ucfg_api.h"
+#include "cfg_mlme_sta.h"
#include "wlan_mlme_main.h"
#include "wlan_mlme_api.h"
#include "wlan_mlme_ucfg_api.h"
@@ -100,3 +102,146 @@ QDF_STATUS ucfg_mlme_pdev_close(struct wlan_objmgr_pdev *pdev)
return QDF_STATUS_SUCCESS;
}
#endif
+
+QDF_STATUS
+ucfg_mlme_get_sta_keep_alive_period(struct wlan_objmgr_psoc *psoc,
+ uint32_t *val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ *val = cfg_default(CFG_INFRA_STA_KEEP_ALIVE_PERIOD);
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ *val = mlme_obj->cfg.sta.sta_keep_alive_period;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_get_pmkid_modes(struct wlan_objmgr_psoc *psoc,
+ uint32_t *val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ *val = cfg_default(CFG_PMKID_MODES);
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ *val = mlme_obj->cfg.sta.pmkid_modes;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_set_pmkid_modes(struct wlan_objmgr_psoc *psoc,
+ uint32_t val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ mlme_obj->cfg.sta.pmkid_modes = val;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_get_dot11p_mode(struct wlan_objmgr_psoc *psoc,
+ uint8_t *val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ *val = cfg_default(CFG_DOT11P_MODE);
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ *val = mlme_obj->cfg.sta.dot11p_mode;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_get_go_cts2self_for_sta(struct wlan_objmgr_psoc *psoc,
+ bool *val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ *val = cfg_default(CFG_ENABLE_GO_CTS2SELF_FOR_STA);
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ *val = mlme_obj->cfg.sta.enable_go_cts2self_for_sta;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_get_force_rsne_override(struct wlan_objmgr_psoc *psoc,
+ bool *val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ *val = cfg_default(CFG_FORCE_RSNE_OVERRIDE);
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ *val = mlme_obj->cfg.sta.force_rsne_override;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_get_qcn_ie_support(struct wlan_objmgr_psoc *psoc,
+ bool *val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ *val = cfg_default(CFG_QCN_IE_SUPPORT);
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ *val = mlme_obj->cfg.sta.qcn_ie_support;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_get_tgt_gtx_usr_cfg(struct wlan_objmgr_psoc *psoc,
+ uint32_t *val)
+{
+ struct wlan_mlme_psoc_obj *mlme_obj;
+
+ mlme_obj = mlme_get_psoc_obj(psoc);
+ if (!mlme_obj) {
+ *val = cfg_default(CFG_TGT_GTX_USR_CFG);
+ mlme_err("mlme obj null");
+ return QDF_STATUS_E_INVAL;
+ }
+
+ *val = mlme_obj->cfg.sta.tgt_gtx_usr_cfg;
+
+ return QDF_STATUS_SUCCESS;
+}