qcacld-3.0: Refactor MLME CFG items and APIs for VHT
VHT Part3: Add the basic infra for MLME CFG items and the APIs to be used from other components for VHT. Change-Id: I8cd30439d7ac3de7b550aa5042353cf30e04cbda CRs-Fixed: 2322304
This commit is contained in:
@@ -25,6 +25,8 @@
|
|||||||
#include "wlan_scan_public_structs.h"
|
#include "wlan_scan_public_structs.h"
|
||||||
#include "cfg_mlme_threshold.h"
|
#include "cfg_mlme_threshold.h"
|
||||||
|
|
||||||
|
#define NUM_OF_SOUNDING_DIMENSIONS 1 /*Nss - 1, (Nss = 2 for 2x2)*/
|
||||||
|
|
||||||
struct wlan_mlme_psoc_obj *mlme_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
|
struct wlan_mlme_psoc_obj *mlme_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
struct wlan_mlme_psoc_obj *mlme_obj;
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
@@ -462,8 +464,6 @@ static void mlme_init_vht_cap_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
{
|
{
|
||||||
vht_cap_info->supp_chan_width =
|
vht_cap_info->supp_chan_width =
|
||||||
cfg_default(CFG_VHT_SUPP_CHAN_WIDTH);
|
cfg_default(CFG_VHT_SUPP_CHAN_WIDTH);
|
||||||
vht_cap_info->tx_bfee_ant_supp =
|
|
||||||
cfg_default(CFG_VHT_BEAMFORMEE_ANT_SUPP);
|
|
||||||
vht_cap_info->num_soundingdim =
|
vht_cap_info->num_soundingdim =
|
||||||
cfg_default(CFG_VHT_NUM_SOUNDING_DIMENSIONS);
|
cfg_default(CFG_VHT_NUM_SOUNDING_DIMENSIONS);
|
||||||
vht_cap_info->htc_vhtc =
|
vht_cap_info->htc_vhtc =
|
||||||
@@ -478,39 +478,47 @@ static void mlme_init_vht_cap_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
cfg_default(CFG_VHT_RX_SUPP_DATA_RATE);
|
cfg_default(CFG_VHT_RX_SUPP_DATA_RATE);
|
||||||
vht_cap_info->tx_supp_data_rate =
|
vht_cap_info->tx_supp_data_rate =
|
||||||
cfg_default(CFG_VHT_TX_SUPP_DATA_RATE);
|
cfg_default(CFG_VHT_TX_SUPP_DATA_RATE);
|
||||||
vht_cap_info->enable_txbf_20mhz =
|
vht_cap_info->txop_ps =
|
||||||
cfg_default(CFG_VHT_ENABLE_TXBF_20MHZ);
|
cfg_default(CFG_VHT_TXOP_PS);
|
||||||
|
vht_cap_info->rx_mcs_map =
|
||||||
|
WNI_CFG_VHT_RX_MCS_MAP_STADEF;
|
||||||
|
vht_cap_info->tx_mcs_map =
|
||||||
|
WNI_CFG_VHT_TX_MCS_MAP_STADEF;
|
||||||
|
vht_cap_info->basic_mcs_set =
|
||||||
|
CFG_VHT_BASIC_MCS_SET_STADEF;
|
||||||
|
vht_cap_info->su_bformer =
|
||||||
|
cfg_default(CFG_VHT_SU_BEAMFORMER_CAP);
|
||||||
|
|
||||||
|
vht_cap_info->tx_bfee_ant_supp =
|
||||||
|
cfg_get(psoc, CFG_VHT_BEAMFORMEE_ANT_SUPP);
|
||||||
|
|
||||||
|
vht_cap_info->enable_txbf_20mhz =
|
||||||
|
cfg_get(psoc, CFG_VHT_ENABLE_TXBF_20MHZ);
|
||||||
vht_cap_info->ampdu_len =
|
vht_cap_info->ampdu_len =
|
||||||
cfg_get(psoc, CFG_VHT_MPDU_LEN);
|
cfg_get(psoc, CFG_VHT_MPDU_LEN);
|
||||||
|
|
||||||
vht_cap_info->ldpc_coding_cap =
|
vht_cap_info->ldpc_coding_cap =
|
||||||
cfg_get(psoc, CFG_VHT_LDPC_CODING_CAP);
|
cfg_get(psoc, CFG_RX_LDPC_ENABLE);
|
||||||
vht_cap_info->short_gi_80mhz =
|
vht_cap_info->short_gi_80mhz =
|
||||||
cfg_get(psoc, CFG_VHT_SHORT_GI_80MHZ);
|
cfg_get(psoc, CFG_SHORT_GI_40MHZ);
|
||||||
vht_cap_info->short_gi_160mhz =
|
vht_cap_info->short_gi_160mhz =
|
||||||
cfg_get(psoc, CFG_VHT_SHORT_GI_160_AND_80_PLUS_80MHZ);
|
cfg_get(psoc, CFG_SHORT_GI_40MHZ);
|
||||||
vht_cap_info->tx_stbc =
|
vht_cap_info->tx_stbc =
|
||||||
cfg_get(psoc, CFG_VHT_TXSTBC);
|
cfg_get(psoc, CFG_TX_STBC_ENABLE);
|
||||||
vht_cap_info->rx_stbc =
|
vht_cap_info->rx_stbc =
|
||||||
cfg_get(psoc, CFG_VHT_RXSTBC);
|
cfg_get(psoc, CFG_RX_STBC_ENABLE);
|
||||||
vht_cap_info->su_bformer =
|
|
||||||
cfg_get(psoc, CFG_VHT_SU_BEAMFORMER_CAP);
|
if (vht_cap_info->enable_txbf_20mhz)
|
||||||
vht_cap_info->su_bformee =
|
vht_cap_info->su_bformee =
|
||||||
cfg_get(psoc, CFG_VHT_SU_BEAMFORMEE_CAP);
|
cfg_default(CFG_VHT_SU_BEAMFORMEE_CAP);
|
||||||
|
|
||||||
vht_cap_info->mu_bformer =
|
vht_cap_info->mu_bformer =
|
||||||
cfg_get(psoc, CFG_VHT_MU_BEAMFORMER_CAP);
|
cfg_default(CFG_VHT_MU_BEAMFORMER_CAP);
|
||||||
|
|
||||||
vht_cap_info->enable_mu_bformee =
|
vht_cap_info->enable_mu_bformee =
|
||||||
cfg_get(psoc, CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE);
|
cfg_get(psoc, CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE);
|
||||||
vht_cap_info->txop_ps =
|
|
||||||
cfg_get(psoc, CFG_VHT_TXOP_PS);
|
|
||||||
vht_cap_info->ampdu_len_exponent =
|
vht_cap_info->ampdu_len_exponent =
|
||||||
cfg_get(psoc, CFG_VHT_AMPDU_LEN_EXPONENT);
|
cfg_get(psoc, CFG_VHT_AMPDU_LEN_EXPONENT);
|
||||||
vht_cap_info->rx_mcs_map =
|
|
||||||
cfg_get(psoc, CFG_VHT_RX_MCS_MAP);
|
|
||||||
vht_cap_info->tx_mcs_map =
|
|
||||||
cfg_get(psoc, CFG_VHT_TX_MCS_MAP);
|
|
||||||
vht_cap_info->basic_mcs_set =
|
|
||||||
cfg_get(psoc, CFG_VHT_BASIC_MCS_SET);
|
|
||||||
vht_cap_info->channel_width =
|
vht_cap_info->channel_width =
|
||||||
cfg_get(psoc, CFG_VHT_CHANNEL_WIDTH);
|
cfg_get(psoc, CFG_VHT_CHANNEL_WIDTH);
|
||||||
vht_cap_info->rx_mcs =
|
vht_cap_info->rx_mcs =
|
||||||
@@ -533,6 +541,17 @@ static void mlme_init_vht_cap_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
cfg_get(psoc, CFG_ENABLE_VHT_FOR_24GHZ);
|
cfg_get(psoc, CFG_ENABLE_VHT_FOR_24GHZ);
|
||||||
vht_cap_info->vendor_24ghz_band =
|
vht_cap_info->vendor_24ghz_band =
|
||||||
cfg_get(psoc, CFG_ENABLE_VENDOR_VHT_FOR_24GHZ);
|
cfg_get(psoc, CFG_ENABLE_VENDOR_VHT_FOR_24GHZ);
|
||||||
|
vht_cap_info->tx_bfee_sap =
|
||||||
|
cfg_get(psoc, CFG_VHT_ENABLE_TXBF_SAP_MODE);
|
||||||
|
vht_cap_info->vendor_vhtie =
|
||||||
|
cfg_get(psoc, CFG_ENABLE_SUBFEE_IN_VENDOR_VHTIE);
|
||||||
|
|
||||||
|
if (vht_cap_info->enable2x2)
|
||||||
|
vht_cap_info->enable_tx_su =
|
||||||
|
cfg_get(psoc, CFG_VHT_ENABLE_TX_SU_BEAM_FORMER);
|
||||||
|
|
||||||
|
if (vht_cap_info->enable2x2 && vht_cap_info->enable_tx_su)
|
||||||
|
vht_cap_info->num_soundingdim = NUM_OF_SOUNDING_DIMENSIONS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mlme_init_rates_in_cfg(struct wlan_objmgr_psoc *psoc,
|
static void mlme_init_rates_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
@@ -31,14 +31,39 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"VHT SUPPORTED CHAN WIDTH SET")
|
"VHT SUPPORTED CHAN WIDTH SET")
|
||||||
|
|
||||||
#define CFG_VHT_BEAMFORMEE_ANT_SUPP CFG_UINT( \
|
/*
|
||||||
"tx_bfee_ant_supp", \
|
* <ini>
|
||||||
|
* gTxBFCsnValue - ini to set VHT/HE STS Caps field
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 7
|
||||||
|
* @Default: 7
|
||||||
|
*
|
||||||
|
* This ini is used to configure the STS capability shown in AC/AX mode
|
||||||
|
* MGMT frame IE, the final STS field shown in VHT/HE IE will be calculated
|
||||||
|
* by MIN of (INI set, target report value). Only if gTxBFEnable is enabled
|
||||||
|
* and SU/MU BEAMFORMEE Caps is shown, then STS Caps make sense.
|
||||||
|
*
|
||||||
|
* Related: gTxBFEnable.
|
||||||
|
*
|
||||||
|
* Supported Feature: STA/SAP
|
||||||
|
*
|
||||||
|
* Usage: Internal
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_VHT_BEAMFORMEE_ANT_SUPP CFG_INI_UINT( \
|
||||||
|
"txBFCsnValue", \
|
||||||
0, \
|
0, \
|
||||||
8, \
|
7, \
|
||||||
8, \
|
7, \
|
||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"VHT BEAMFORMEE ANTENNA SUPPORTED CAP")
|
"VHT BEAMFORMEE ANTENNA SUPPORTED CAP")
|
||||||
|
|
||||||
|
#define CFG_VHT_ENABLE_TX_SU_BEAM_FORMER CFG_INI_BOOL( \
|
||||||
|
"gEnableTxSUBeamformer", \
|
||||||
|
0, \
|
||||||
|
"vht tx su beam former")
|
||||||
|
|
||||||
#define CFG_VHT_NUM_SOUNDING_DIMENSIONS CFG_UINT( \
|
#define CFG_VHT_NUM_SOUNDING_DIMENSIONS CFG_UINT( \
|
||||||
"num_soundingdim", \
|
"num_soundingdim", \
|
||||||
0, \
|
0, \
|
||||||
@@ -86,80 +111,31 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"VHT TX SUPP DATA RATE")
|
"VHT TX SUPP DATA RATE")
|
||||||
|
|
||||||
#define CFG_VHT_ENABLE_TXBF_20MHZ CFG_BOOL( \
|
#define CFG_VHT_ENABLE_TXBF_20MHZ CFG_INI_BOOL( \
|
||||||
"enable_txbf_20mhz", \
|
"gTxBFEnable", \
|
||||||
0, \
|
0, \
|
||||||
"VHT ENABLE TXBF 20MHZ")
|
"VHT ENABLE TXBF 20MHZ")
|
||||||
|
|
||||||
#define CFG_VHT_LDPC_CODING_CAP CFG_INI_BOOL( \
|
#define CFG_VHT_SU_BEAMFORMER_CAP CFG_BOOL( \
|
||||||
"ldpc_coding_cap", \
|
|
||||||
0, \
|
|
||||||
"VHT LDPC CODING CAP")
|
|
||||||
|
|
||||||
#define CFG_VHT_SHORT_GI_80MHZ CFG_INI_BOOL( \
|
|
||||||
"short_gi_80mhz", \
|
|
||||||
1, \
|
|
||||||
"VHT SHORT GI 80MHZ")
|
|
||||||
|
|
||||||
#define CFG_VHT_SHORT_GI_160_AND_80_PLUS_80MHZ CFG_INI_BOOL( \
|
|
||||||
"short_gi_160mhz", \
|
|
||||||
0, \
|
|
||||||
"VHT SHORT GI 160 AND 80 PLUS 80MHZ")
|
|
||||||
|
|
||||||
#define CFG_VHT_TXSTBC CFG_INI_BOOL( \
|
|
||||||
"tx_stbc", \
|
|
||||||
0, \
|
|
||||||
"VHT Tx STBC")
|
|
||||||
|
|
||||||
#define CFG_VHT_RXSTBC CFG_INI_BOOL( \
|
|
||||||
"rx_stbc", \
|
|
||||||
1, \
|
|
||||||
"VHT Rx STBC")
|
|
||||||
|
|
||||||
#define CFG_VHT_SU_BEAMFORMER_CAP CFG_INI_BOOL( \
|
|
||||||
"su_bformer", \
|
"su_bformer", \
|
||||||
0, \
|
0, \
|
||||||
"VHT SU BEAMFORMER CAP")
|
"VHT SU BEAMFORMER CAP")
|
||||||
|
|
||||||
#define CFG_VHT_SU_BEAMFORMEE_CAP CFG_INI_BOOL( \
|
#define CFG_VHT_SU_BEAMFORMEE_CAP CFG_BOOL( \
|
||||||
"su_bformee", \
|
"su_bformee", \
|
||||||
1, \
|
1, \
|
||||||
"VHT SU BEAMFORMEE CAP")
|
"VHT SU BEAMFORMEE CAP")
|
||||||
|
|
||||||
#define CFG_VHT_MU_BEAMFORMER_CAP CFG_INI_BOOL( \
|
#define CFG_VHT_MU_BEAMFORMER_CAP CFG_BOOL( \
|
||||||
"mu_bformer", \
|
"mu_bformer", \
|
||||||
0, \
|
0, \
|
||||||
"VHT MU BEAMFORMER CAP")
|
"VHT MU BEAMFORMER CAP")
|
||||||
|
|
||||||
#define CFG_VHT_TXOP_PS CFG_INI_BOOL( \
|
#define CFG_VHT_TXOP_PS CFG_BOOL( \
|
||||||
"txop_ps", \
|
"txop_ps", \
|
||||||
0, \
|
0, \
|
||||||
"VHT TXOP PS")
|
"VHT TXOP PS")
|
||||||
|
|
||||||
#define CFG_VHT_RX_MCS_MAP CFG_INI_UINT( \
|
|
||||||
"rx_mcs_map", \
|
|
||||||
0, \
|
|
||||||
65535, \
|
|
||||||
65534, \
|
|
||||||
CFG_VALUE_OR_DEFAULT, \
|
|
||||||
"VHT RX MCS MAP")
|
|
||||||
|
|
||||||
#define CFG_VHT_TX_MCS_MAP CFG_INI_UINT( \
|
|
||||||
"tx_mcs_map", \
|
|
||||||
0, \
|
|
||||||
65535, \
|
|
||||||
65534, \
|
|
||||||
CFG_VALUE_OR_DEFAULT, \
|
|
||||||
"VHT TX MCS MAP")
|
|
||||||
|
|
||||||
#define CFG_VHT_BASIC_MCS_SET CFG_INI_UINT( \
|
|
||||||
"basic_mcs_set", \
|
|
||||||
0, \
|
|
||||||
65535, \
|
|
||||||
65534, \
|
|
||||||
CFG_VALUE_OR_DEFAULT, \
|
|
||||||
"VHT BASIC MCS SET")
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* gVhtChannelWidth - Channel width capability for 11ac
|
* gVhtChannelWidth - Channel width capability for 11ac
|
||||||
@@ -427,16 +403,44 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"VHT MPDU Length")
|
"VHT MPDU Length")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable / Disable Tx beamformee in SAP mode
|
||||||
|
* Default: Disable
|
||||||
|
*/
|
||||||
|
#define CFG_VHT_ENABLE_TXBF_SAP_MODE CFG_INI_BOOL( \
|
||||||
|
"gEnableTxBFeeSAP", \
|
||||||
|
0, \
|
||||||
|
"Enable tx bf sap mode")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* enable_subfee_vendor_vhtie - ini to enable/disable SU Bformee in vendor VHTIE
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 1
|
||||||
|
*
|
||||||
|
* This ini is used to enable/disable SU Bformee in vendor vht ie if gTxBFEnable
|
||||||
|
* is enabled. if gTxBFEnable is 0 this will not have any effect.
|
||||||
|
*
|
||||||
|
* Related: gTxBFEnable.
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_ENABLE_SUBFEE_IN_VENDOR_VHTIE CFG_INI_BOOL( \
|
||||||
|
"enable_subfee_vendor_vhtie", \
|
||||||
|
0, \
|
||||||
|
"Enable subfee in vendor vht ie")
|
||||||
|
|
||||||
#define CFG_VHT_CAPS_ALL \
|
#define CFG_VHT_CAPS_ALL \
|
||||||
CFG(CFG_VHT_SUPP_CHAN_WIDTH) \
|
CFG(CFG_VHT_SUPP_CHAN_WIDTH) \
|
||||||
CFG(CFG_VHT_LDPC_CODING_CAP) \
|
|
||||||
CFG(CFG_VHT_SHORT_GI_80MHZ) \
|
|
||||||
CFG(CFG_VHT_SHORT_GI_160_AND_80_PLUS_80MHZ) \
|
|
||||||
CFG(CFG_VHT_TXSTBC) \
|
|
||||||
CFG(CFG_VHT_RXSTBC) \
|
|
||||||
CFG(CFG_VHT_SU_BEAMFORMER_CAP) \
|
CFG(CFG_VHT_SU_BEAMFORMER_CAP) \
|
||||||
CFG(CFG_VHT_SU_BEAMFORMEE_CAP) \
|
CFG(CFG_VHT_SU_BEAMFORMEE_CAP) \
|
||||||
CFG(CFG_VHT_BEAMFORMEE_ANT_SUPP) \
|
CFG(CFG_VHT_BEAMFORMEE_ANT_SUPP) \
|
||||||
|
CFG(CFG_VHT_ENABLE_TX_SU_BEAM_FORMER) \
|
||||||
CFG(CFG_VHT_NUM_SOUNDING_DIMENSIONS) \
|
CFG(CFG_VHT_NUM_SOUNDING_DIMENSIONS) \
|
||||||
CFG(CFG_VHT_MU_BEAMFORMER_CAP) \
|
CFG(CFG_VHT_MU_BEAMFORMER_CAP) \
|
||||||
CFG(CFG_VHT_TXOP_PS) \
|
CFG(CFG_VHT_TXOP_PS) \
|
||||||
@@ -444,11 +448,8 @@
|
|||||||
CFG(CFG_VHT_LINK_ADAPTATION_CAP) \
|
CFG(CFG_VHT_LINK_ADAPTATION_CAP) \
|
||||||
CFG(CFG_VHT_RX_ANT_PATTERN) \
|
CFG(CFG_VHT_RX_ANT_PATTERN) \
|
||||||
CFG(CFG_VHT_TX_ANT_PATTERN) \
|
CFG(CFG_VHT_TX_ANT_PATTERN) \
|
||||||
CFG(CFG_VHT_RX_MCS_MAP) \
|
|
||||||
CFG(CFG_VHT_TX_MCS_MAP) \
|
|
||||||
CFG(CFG_VHT_RX_SUPP_DATA_RATE) \
|
CFG(CFG_VHT_RX_SUPP_DATA_RATE) \
|
||||||
CFG(CFG_VHT_TX_SUPP_DATA_RATE) \
|
CFG(CFG_VHT_TX_SUPP_DATA_RATE) \
|
||||||
CFG(CFG_VHT_BASIC_MCS_SET) \
|
|
||||||
CFG(CFG_VHT_ENABLE_TXBF_20MHZ) \
|
CFG(CFG_VHT_ENABLE_TXBF_20MHZ) \
|
||||||
CFG(CFG_VHT_CHANNEL_WIDTH) \
|
CFG(CFG_VHT_CHANNEL_WIDTH) \
|
||||||
CFG(CFG_VHT_ENABLE_RX_MCS_8_9) \
|
CFG(CFG_VHT_ENABLE_RX_MCS_8_9) \
|
||||||
@@ -463,6 +464,8 @@
|
|||||||
CFG(CFG_ENABLE_VHT_FOR_24GHZ) \
|
CFG(CFG_ENABLE_VHT_FOR_24GHZ) \
|
||||||
CFG(CFG_ENABLE_VENDOR_VHT_FOR_24GHZ) \
|
CFG(CFG_ENABLE_VENDOR_VHT_FOR_24GHZ) \
|
||||||
CFG(CFG_VHT_AMPDU_LEN_EXPONENT) \
|
CFG(CFG_VHT_AMPDU_LEN_EXPONENT) \
|
||||||
CFG(CFG_VHT_MPDU_LEN)
|
CFG(CFG_VHT_MPDU_LEN) \
|
||||||
|
CFG(CFG_VHT_ENABLE_TXBF_SAP_MODE) \
|
||||||
|
CFG(CFG_ENABLE_SUBFEE_IN_VENDOR_VHTIE)
|
||||||
|
|
||||||
#endif /* __CFG_MLME_VHT_CAPS_H */
|
#endif /* __CFG_MLME_VHT_CAPS_H */
|
||||||
|
@@ -726,7 +726,18 @@ QDF_STATUS wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc,
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t value);
|
uint8_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_cfg_get_vht_chan_width() - sets vht supported channel width into
|
||||||
|
* cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_get_vht_ldpc_coding_cap() - gets vht ldpc coding cap from
|
* wlan_mlme_cfg_get_vht_ldpc_coding_cap() - gets vht ldpc coding cap from
|
||||||
@@ -737,7 +748,7 @@ QDF_STATUS wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc,
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wlan_mlme_cfg_get_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_cfg_get_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *value);
|
bool *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into
|
* wlan_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into
|
||||||
@@ -773,26 +784,26 @@ QDF_STATUS wlan_mlme_cfg_set_vht_short_gi_80mhz(struct wlan_objmgr_psoc *psoc,
|
|||||||
bool value);
|
bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_get_vht_short_gi_160mhz() - gets vht short gi 160MHz from
|
* wlan_mlme_cfg_get_short_gi_160_mhz() - gets vht short gi 160MHz from
|
||||||
* cfg item
|
* cfg item
|
||||||
* @psoc: psoc context
|
* @psoc: psoc context
|
||||||
* @value: pointer to get required data
|
* @value: pointer to get required data
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wlan_mlme_cfg_get_vht_short_gi_160mhz(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_cfg_get_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *value);
|
bool *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_set_vht_short_gi_160mhz() - sets vht short gi 160MHz into
|
* wlan_mlme_cfg_set_short_gi_160_mhz() - sets vht short gi 160MHz into
|
||||||
* cfg item
|
* cfg item
|
||||||
* @psoc: psoc context
|
* @psoc: psoc context
|
||||||
* @value: data to be set
|
* @value: data to be set
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wlan_mlme_cfg_set_vht_short_gi_160mhz(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_cfg_set_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc,
|
||||||
bool value);
|
bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from
|
* wlan_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from
|
||||||
@@ -805,6 +816,17 @@ QDF_STATUS wlan_mlme_cfg_set_vht_short_gi_160mhz(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *value);
|
bool *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_cfg_get_vht_rx_stbc() - gets vht rx stbc from
|
||||||
|
* cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: pointer to get required data
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_set_vht_tx_stbc() - sets vht tx stbc into
|
* wlan_mlme_cfg_set_vht_tx_stbc() - sets vht tx stbc into
|
||||||
* cfg item
|
* cfg item
|
||||||
@@ -872,7 +894,8 @@ QDF_STATUS wlan_mlme_cfg_set_vht_su_bformee(struct wlan_objmgr_psoc *psoc,
|
|||||||
bool value);
|
bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna support cap
|
* wlan_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna
|
||||||
|
* support cap
|
||||||
* into cfg item
|
* into cfg item
|
||||||
* @psoc: psoc context
|
* @psoc: psoc context
|
||||||
* @value: data to be set
|
* @value: data to be set
|
||||||
@@ -882,6 +905,18 @@ QDF_STATUS wlan_mlme_cfg_set_vht_su_bformee(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t value);
|
uint8_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_cfg_get_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna
|
||||||
|
* support cap
|
||||||
|
* into cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_cfg_get_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_cfg_set_vht_num_sounding_dim() - sets vht no of sounding dimensions
|
* wlan_mlme_cfg_set_vht_num_sounding_dim() - sets vht no of sounding dimensions
|
||||||
* into cfg item
|
* into cfg item
|
||||||
@@ -1071,6 +1106,26 @@ QDF_STATUS wlan_mlme_cfg_get_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS wlan_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t value);
|
uint32_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_vht_enable_tx_bf() - VHT Rx MCS capability for 1x1 mode
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_get_vht_enable_tx_bf(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_vht_enable_tx_su_beam() - VHT enable tx su beam
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_get_vht_enable_tx_su_beam(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_get_vht_channel_width() - gets Channel width capability
|
* wlan_mlme_get_vht_channel_width() - gets Channel width capability
|
||||||
* for 11ac
|
* for 11ac
|
||||||
@@ -1192,4 +1247,23 @@ QDF_STATUS wlan_mlme_get_vht_for_24ghz(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS wlan_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *value);
|
bool *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_update_vht_cap() - update vht capabilities
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @cfg: data to be set
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS mlme_update_vht_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wma_tgt_vht_cap *cfg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_update_nss_vht_cap() - Update the number of spatial
|
||||||
|
* streams supported for vht
|
||||||
|
* @psoc: psoc context
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS mlme_update_nss_vht_cap(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
#endif /* _WLAN_MLME_API_H_ */
|
#endif /* _WLAN_MLME_API_H_ */
|
||||||
|
@@ -29,6 +29,16 @@
|
|||||||
#define CFG_PMKID_MODES_OKC (0x1)
|
#define CFG_PMKID_MODES_OKC (0x1)
|
||||||
#define CFG_PMKID_MODES_PMKSA_CACHING (0x2)
|
#define CFG_PMKID_MODES_PMKSA_CACHING (0x2)
|
||||||
|
|
||||||
|
#define CFG_VHT_BASIC_MCS_SET_STADEF 0xFFFE
|
||||||
|
|
||||||
|
#define CFG_VHT_RX_MCS_MAP_STAMIN 0
|
||||||
|
#define CFG_VHT_RX_MCS_MAP_STAMAX 65535
|
||||||
|
#define CFG_VHT_RX_MCS_MAP_STADEF 65534
|
||||||
|
|
||||||
|
#define CFG_VHT_TX_MCS_MAP_STAMIN 0
|
||||||
|
#define CFG_VHT_TX_MCS_MAP_STAMAX 65535
|
||||||
|
#define CFG_VHT_TX_MCS_MAP_STADEF 65534
|
||||||
|
|
||||||
#define CFG_STR_DATA_LEN 17
|
#define CFG_STR_DATA_LEN 17
|
||||||
#define CFG_EDCA_DATA_LEN 17
|
#define CFG_EDCA_DATA_LEN 17
|
||||||
|
|
||||||
@@ -312,6 +322,7 @@ struct wlan_mlme_mbo {
|
|||||||
* @tx_supp_data_rate: Tx highest supported data rate
|
* @tx_supp_data_rate: Tx highest supported data rate
|
||||||
* @basic_mcs_set: Basic MCS set
|
* @basic_mcs_set: Basic MCS set
|
||||||
* @enable_txbf_20mhz: enable tx bf for 20mhz
|
* @enable_txbf_20mhz: enable tx bf for 20mhz
|
||||||
|
* @enable_tx_su: enable VHT tx su beam former
|
||||||
* @channel_width: Channel width capability for 11ac
|
* @channel_width: Channel width capability for 11ac
|
||||||
* @rx_mcs: VHT Rx MCS capability for 1x1 mode
|
* @rx_mcs: VHT Rx MCS capability for 1x1 mode
|
||||||
* @tx_mcs: VHT Tx MCS capability for 1x1 mode
|
* @tx_mcs: VHT Tx MCS capability for 1x1 mode
|
||||||
@@ -328,6 +339,8 @@ struct wlan_mlme_mbo {
|
|||||||
* ie in 2.4 GHz band
|
* ie in 2.4 GHz band
|
||||||
* @ampdu_len_exponent: To handle maximum receive AMPDU ampdu len exponent
|
* @ampdu_len_exponent: To handle maximum receive AMPDU ampdu len exponent
|
||||||
* @ampdu_len: To handle maximum receive AMPDU ampdu len
|
* @ampdu_len: To handle maximum receive AMPDU ampdu len
|
||||||
|
* @tx_bfee_sap: enable tx bfee SAp
|
||||||
|
* @subfee_vendor_vhtie: enable subfee vendor vht ie
|
||||||
*/
|
*/
|
||||||
struct mlme_vht_capabilities_info {
|
struct mlme_vht_capabilities_info {
|
||||||
uint8_t supp_chan_width;
|
uint8_t supp_chan_width;
|
||||||
@@ -352,9 +365,10 @@ struct mlme_vht_capabilities_info {
|
|||||||
uint32_t tx_supp_data_rate;
|
uint32_t tx_supp_data_rate;
|
||||||
uint32_t basic_mcs_set;
|
uint32_t basic_mcs_set;
|
||||||
bool enable_txbf_20mhz;
|
bool enable_txbf_20mhz;
|
||||||
|
bool enable_tx_su;
|
||||||
uint8_t channel_width;
|
uint8_t channel_width;
|
||||||
uint8_t rx_mcs;
|
uint32_t rx_mcs;
|
||||||
uint8_t tx_mcs;
|
uint32_t tx_mcs;
|
||||||
uint8_t rx_mcs2x2;
|
uint8_t rx_mcs2x2;
|
||||||
uint8_t tx_mcs2x2;
|
uint8_t tx_mcs2x2;
|
||||||
bool enable_vht20_mcs9;
|
bool enable_vht20_mcs9;
|
||||||
@@ -366,6 +380,8 @@ struct mlme_vht_capabilities_info {
|
|||||||
bool vendor_24ghz_band;
|
bool vendor_24ghz_band;
|
||||||
uint8_t ampdu_len_exponent;
|
uint8_t ampdu_len_exponent;
|
||||||
uint8_t ampdu_len;
|
uint8_t ampdu_len;
|
||||||
|
bool tx_bfee_sap;
|
||||||
|
bool vendor_vhtie;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1045,6 +1045,23 @@ QDF_STATUS ucfg_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_cfg_set_vht_chan_width(psoc, value);
|
return wlan_mlme_cfg_set_vht_chan_width(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_cfg_get_vht_chan_width() - gets vht supported channel width into
|
||||||
|
* cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_cfg_get_vht_chan_width(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into
|
* ucfg_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into
|
||||||
* cfg item
|
* cfg item
|
||||||
@@ -1062,6 +1079,42 @@ ucfg_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_cfg_set_vht_ldpc_coding_cap(psoc, value);
|
return wlan_mlme_cfg_set_vht_ldpc_coding_cap(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_cfg_get_short_gi_160_mhz() - gets basic set SHORT GI 160MHZ from
|
||||||
|
* cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers to get the
|
||||||
|
* ignore_peer_ht_opmode flag value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_cfg_get_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_cfg_get_short_gi_160_mhz(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_cfg_set_short_gi_160_mhz() - sets basic set SHORT GI 160MHZ into
|
||||||
|
* cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers to get the
|
||||||
|
* ignore_peer_ht_opmode flag value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_cfg_set_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_cfg_set_short_gi_160_mhz(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from
|
* ucfg_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from
|
||||||
* cfg item
|
* cfg item
|
||||||
@@ -1080,6 +1133,24 @@ ucfg_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_cfg_get_vht_tx_stbc(psoc, value);
|
return wlan_mlme_cfg_get_vht_tx_stbc(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_cfg_get_vht_rx_stbc() - gets vht tx stbc from
|
||||||
|
* cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: pointer to get required data
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers to get the
|
||||||
|
* ignore_peer_ht_opmode flag value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_cfg_get_vht_rx_stbc(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna
|
* ucfg_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna
|
||||||
* support cap into cfg item
|
* support cap into cfg item
|
||||||
@@ -1097,6 +1168,23 @@ ucfg_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(psoc, value);
|
return wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_cfg_get_vht_tx_bfee_ant_supp() - gets vht Beamformee antenna
|
||||||
|
* support cap into cfg item
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_cfg_get_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_cfg_get_vht_tx_bfee_ant_supp(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_cfg_get_vht_rx_mcs_map() - gets vht rx mcs map from
|
* ucfg_mlme_cfg_get_vht_rx_mcs_map() - gets vht rx mcs map from
|
||||||
* cfg item
|
* cfg item
|
||||||
@@ -1237,6 +1325,40 @@ ucfg_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_cfg_set_vht_basic_mcs_set(psoc, value);
|
return wlan_mlme_cfg_set_vht_basic_mcs_set(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_vht_enable_tx_bf() - gets enable TXBF for 20MHZ
|
||||||
|
* for 11ac
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers to get the
|
||||||
|
* ignore_peer_ht_opmode flag value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_get_vht_enable_tx_bf(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_vht_enable_tx_bf(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_vht_enable_tx_su_beam() - gets enable enable_tx_su_beam
|
||||||
|
* for 11ac
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers to get the
|
||||||
|
* ignore_peer_ht_opmode flag value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_get_vht_enable_tx_su_beam(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_vht_enable_tx_su_beam(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_get_vht_channel_width() - gets Channel width capability
|
* ucfg_mlme_get_vht_channel_width() - gets Channel width capability
|
||||||
* for 11ac
|
* for 11ac
|
||||||
@@ -1433,4 +1555,39 @@ ucfg_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value)
|
|||||||
{
|
{
|
||||||
return wlan_mlme_get_vendor_vht_for_24ghz(psoc, value);
|
return wlan_mlme_get_vendor_vht_for_24ghz(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_update_vht_cap() - Update vht capabilities
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers to get the
|
||||||
|
* ignore_peer_ht_opmode flag value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_update_vht_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wma_tgt_vht_cap *cfg)
|
||||||
|
{
|
||||||
|
return mlme_update_vht_cap(psoc, cfg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_update_nss_vht_cap() -Update the number of spatial
|
||||||
|
* streams supported for vht
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: data to be set
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers to get the
|
||||||
|
* ignore_peer_ht_opmode flag value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_update_nss_vht_cap(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return mlme_update_nss_vht_cap(psoc);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _WLAN_MLME_UCFG_API_H_ */
|
#endif /* _WLAN_MLME_UCFG_API_H_ */
|
||||||
|
@@ -1230,6 +1230,21 @@ wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc, uint8_t value)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc, uint8_t *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.vht_caps.vht_cap_info.supp_chan_width;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
@@ -1248,6 +1263,39 @@ wlan_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_cfg_set_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
mlme_obj->cfg.vht_caps.vht_cap_info.short_gi_160mhz = value;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_cfg_get_short_gi_160_mhz(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.vht_caps.vht_cap_info.short_gi_160mhz;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, bool *value)
|
wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||||
{
|
{
|
||||||
@@ -1264,6 +1312,21 @@ wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, bool *value)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.vht_caps.vht_cap_info.rx_stbc;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
||||||
@@ -1282,6 +1345,23 @@ wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_cfg_get_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.vht_caps.vht_cap_info.tx_bfee_ant_supp;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_cfg_get_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_cfg_get_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t *value)
|
uint32_t *value)
|
||||||
@@ -1418,6 +1498,38 @@ wlan_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_vht_enable_tx_bf(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.vht_caps.vht_cap_info.enable_txbf_20mhz;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_vht_enable_tx_su_beam(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.vht_caps.vht_cap_info.enable_tx_su;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_get_vht_channel_width(struct wlan_objmgr_psoc *psoc, uint8_t *value)
|
wlan_mlme_get_vht_channel_width(struct wlan_objmgr_psoc *psoc, uint8_t *value)
|
||||||
{
|
{
|
||||||
@@ -1610,3 +1722,142 @@ wlan_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value)
|
|||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS mlme_update_vht_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wma_tgt_vht_cap *cfg)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
struct mlme_vht_capabilities_info vht_cap_info;
|
||||||
|
uint32_t value = 0;
|
||||||
|
bool hw_rx_ldpc_enabled;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
vht_cap_info = mlme_obj->cfg.vht_caps.vht_cap_info;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VHT max MPDU length:
|
||||||
|
* override if user configured value is too high
|
||||||
|
* that the target cannot support
|
||||||
|
*/
|
||||||
|
if (vht_cap_info.ampdu_len > cfg->vht_max_mpdu)
|
||||||
|
vht_cap_info.ampdu_len = cfg->vht_max_mpdu;
|
||||||
|
|
||||||
|
value = (CFG_VHT_BASIC_MCS_SET_STADEF & VHT_MCS_1x1) |
|
||||||
|
vht_cap_info.basic_mcs_set;
|
||||||
|
if (vht_cap_info.enable2x2)
|
||||||
|
value = (value & VHT_MCS_2x2) | (vht_cap_info.rx_mcs2x2 << 2);
|
||||||
|
vht_cap_info.basic_mcs_set = value;
|
||||||
|
|
||||||
|
value = (CFG_VHT_RX_MCS_MAP_STADEF & VHT_MCS_1x1) | vht_cap_info.rx_mcs;
|
||||||
|
if (vht_cap_info.enable2x2)
|
||||||
|
value = (value & VHT_MCS_2x2) | (vht_cap_info.rx_mcs2x2 << 2);
|
||||||
|
vht_cap_info.rx_mcs_map = value;
|
||||||
|
|
||||||
|
value = (CFG_VHT_TX_MCS_MAP_STADEF & VHT_MCS_1x1) | vht_cap_info.tx_mcs;
|
||||||
|
if (vht_cap_info.enable2x2)
|
||||||
|
value = (value & VHT_MCS_2x2) | (vht_cap_info.tx_mcs2x2 << 2);
|
||||||
|
vht_cap_info.tx_mcs_map = value;
|
||||||
|
|
||||||
|
/* Set HW RX LDPC capability */
|
||||||
|
hw_rx_ldpc_enabled = !!cfg->vht_rx_ldpc;
|
||||||
|
if (hw_rx_ldpc_enabled != vht_cap_info.ldpc_coding_cap)
|
||||||
|
vht_cap_info.ldpc_coding_cap = hw_rx_ldpc_enabled;
|
||||||
|
|
||||||
|
/* set the Guard interval 80MHz */
|
||||||
|
if (vht_cap_info.short_gi_80mhz && !cfg->vht_short_gi_80)
|
||||||
|
vht_cap_info.short_gi_80mhz = cfg->vht_short_gi_80;
|
||||||
|
|
||||||
|
/* Set VHT TX STBC cap */
|
||||||
|
if (vht_cap_info.tx_stbc && !cfg->vht_tx_stbc)
|
||||||
|
vht_cap_info.tx_stbc = cfg->vht_tx_stbc;
|
||||||
|
|
||||||
|
/* Set VHT RX STBC cap */
|
||||||
|
if (vht_cap_info.rx_stbc && !cfg->vht_rx_stbc)
|
||||||
|
vht_cap_info.rx_stbc = cfg->vht_rx_stbc;
|
||||||
|
|
||||||
|
/* Set VHT SU Beamformer cap */
|
||||||
|
if (vht_cap_info.su_bformer && !cfg->vht_su_bformer)
|
||||||
|
vht_cap_info.su_bformer = cfg->vht_su_bformer;
|
||||||
|
|
||||||
|
/* check and update SU BEAMFORMEE capabality */
|
||||||
|
if (vht_cap_info.enable_txbf_20mhz && !cfg->vht_su_bformee)
|
||||||
|
vht_cap_info.su_bformee = cfg->vht_su_bformee;
|
||||||
|
|
||||||
|
/* Set VHT MU Beamformer cap */
|
||||||
|
if (vht_cap_info.mu_bformer && !cfg->vht_mu_bformer)
|
||||||
|
vht_cap_info.mu_bformer = cfg->vht_mu_bformer;
|
||||||
|
|
||||||
|
/* Set VHT MU Beamformee cap */
|
||||||
|
if (vht_cap_info.enable_mu_bformee && !cfg->vht_mu_bformee)
|
||||||
|
vht_cap_info.enable_mu_bformee = cfg->vht_mu_bformee;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VHT max AMPDU len exp:
|
||||||
|
* override if user configured value is too high
|
||||||
|
* that the target cannot support.
|
||||||
|
* Even though Rome publish ampdu_len=7, it can
|
||||||
|
* only support 4 because of some h/w bug.
|
||||||
|
*/
|
||||||
|
if (vht_cap_info.ampdu_len_exponent > cfg->vht_max_ampdu_len_exp)
|
||||||
|
vht_cap_info.ampdu_len_exponent = cfg->vht_max_ampdu_len_exp;
|
||||||
|
|
||||||
|
/* Set VHT TXOP PS CAP */
|
||||||
|
if (vht_cap_info.txop_ps && !cfg->vht_txop_ps)
|
||||||
|
vht_cap_info.txop_ps = cfg->vht_txop_ps;
|
||||||
|
|
||||||
|
/* set the Guard interval 160MHz */
|
||||||
|
if (vht_cap_info.short_gi_160mhz && !cfg->vht_short_gi_160)
|
||||||
|
vht_cap_info.short_gi_160mhz = cfg->vht_short_gi_160;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS mlme_update_nss_vht_cap(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj;
|
||||||
|
struct mlme_vht_capabilities_info vht_cap_info;
|
||||||
|
uint32_t temp = 0;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
vht_cap_info = mlme_obj->cfg.vht_caps.vht_cap_info;
|
||||||
|
|
||||||
|
temp = vht_cap_info.basic_mcs_set;
|
||||||
|
temp = (temp & 0xFFFC) | vht_cap_info.rx_mcs;
|
||||||
|
if (vht_cap_info.enable2x2)
|
||||||
|
temp = (temp & 0xFFF3) | (vht_cap_info.rx_mcs2x2 << 2);
|
||||||
|
else
|
||||||
|
temp |= 0x000C;
|
||||||
|
|
||||||
|
vht_cap_info.basic_mcs_set = temp;
|
||||||
|
|
||||||
|
temp = vht_cap_info.rx_mcs_map;
|
||||||
|
temp = (temp & 0xFFFC) | vht_cap_info.rx_mcs;
|
||||||
|
if (vht_cap_info.enable2x2)
|
||||||
|
temp = (temp & 0xFFF3) | (vht_cap_info.rx_mcs2x2 << 2);
|
||||||
|
else
|
||||||
|
temp |= 0x000C;
|
||||||
|
|
||||||
|
vht_cap_info.rx_mcs_map = temp;
|
||||||
|
|
||||||
|
temp = vht_cap_info.tx_mcs_map;
|
||||||
|
temp = (temp & 0xFFFC) | vht_cap_info.tx_mcs;
|
||||||
|
if (vht_cap_info.enable2x2)
|
||||||
|
temp = (temp & 0xFFF3) | (vht_cap_info.tx_mcs2x2 << 2);
|
||||||
|
else
|
||||||
|
temp |= 0x000C;
|
||||||
|
|
||||||
|
vht_cap_info.tx_mcs_map = temp;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user