qcacld-3.0: Refine mlme sta configurations

Define mlme sta configures based on converged cfg component, add
APIs to get and set mlme sta configurations.

Change-Id: I1a03037081ebe27760d23405adc3cc9042ba7698
CRs-Fixed: 2312002
Esse commit está contido em:
Wu Gao
2018-09-10 13:51:37 +08:00
commit 5f91ff23cb
6 arquivos alterados com 719 adições e 1 exclusões

Ver arquivo

@@ -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;
}

Ver arquivo

@@ -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 */

Ver arquivo

@@ -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"
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_INFRA_STA_KEEP_ALIVE_PERIOD CFG_INI_UINT( \
"gStaKeepAlivePeriod", \
0, \
1000, \
60, \
CFG_VALUE_OR_DEFAULT, \
"send default NULL frame to AP")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_TGT_GTX_USR_CFG CFG_INI_UINT( \
"tgt_gtx_usr_cfg", \
0, \
32, \
32, \
CFG_VALUE_OR_DEFAULT, \
"target gtx user config")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_PMKID_MODES CFG_INI_UINT( \
"pmkidModes", \
0, \
3, \
3, \
CFG_VALUE_OR_DEFAULT, \
"PMKID feature options")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_IGNORE_PEER_ERP_INFO CFG_INI_BOOL( \
"gIgnorePeerErpInfo", \
0, \
"ignore default peer info")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_STA_PREFER_80MHZ_OVER_160MHZ CFG_INI_BOOL( \
"gStaPrefer80MHzOver160MHz", \
1, \
"Sta preference to connect in 80HZ/160HZ")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_PPS_ENABLE_5G_EBT CFG_INI_BOOL( \
"gEnable5gEBT", \
1, \
"5G early beacon termination")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_ENABLE_DEAUTH_BEFORE_CONNECTION CFG_INI_BOOL( \
"gSendDeauthBeforeCon", \
0, \
"send deauth before connection")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_DOT11P_MODE CFG_INI_UINT( \
"gDot11PMode", \
CFG_11P_DISABLED, \
CFG_11P_CONCURRENT, \
CFG_11P_DISABLED, \
CFG_VALUE_OR_DEFAULT, \
"802.11p mode")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_ENABLE_GO_CTS2SELF_FOR_STA CFG_INI_BOOL( \
"gEnable_go_cts2self_for_sta", \
0, \
"firmware to stop NOA and start using cts2self")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_QCN_IE_SUPPORT CFG_INI_BOOL( \
"g_qcn_ie_support", \
1, \
"QCN IE support")
/*
* <ini>
* 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
*
* </ini>
*/
#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")
/*
* <ini>
* 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
*
* </ini>
*/
#define CFG_FORCE_RSNE_OVERRIDE CFG_INI_BOOL( \
"force_rsne_override", \
0, \
"Set obss active dwelltime")
/*
* <ini>
* 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
*
* </ini>
*/
#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__ */

Ver arquivo

@@ -25,6 +25,9 @@
#include <wlan_cmn.h>
#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

Ver arquivo

@@ -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_ */

Ver arquivo

@@ -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;
}