qcacld-3.0: Add additional HT Caps related INI Items to MLME CFG
Add the following HT Caps related INI/CFG items to MLME component. gShortPreamble, CFG_HT_AMPDU_PARAMS, CFG_EXT_HT_CAP_INFO, CFG_HT_INFO_FIELD, gEnableAMPDUPS and gMaxAmsduNum. Change-Id: I019961016a2f0e39c7c62066c04788d3bd3d37e7 CRs-Fixed: 2318579
This commit is contained in:

committed by
nshrivas

parent
0e5b1eb66b
commit
ddc89e5f41
@@ -438,21 +438,69 @@ static void mlme_init_ht_cap_in_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
uint16_t val_16;
|
uint16_t val_16;
|
||||||
struct mlme_ht_capabilities_info default_ht_cap_info;
|
struct mlme_ht_capabilities_info ht_cap_info;
|
||||||
} u;
|
} u1;
|
||||||
|
|
||||||
u.val_16 = (uint16_t)cfg_default(CFG_HT_CAP_INFO);
|
union {
|
||||||
|
uint16_t val_16;
|
||||||
|
struct mlme_ht_ext_cap_info ext_cap_info;
|
||||||
|
} u2;
|
||||||
|
|
||||||
u.default_ht_cap_info.adv_coding_cap =
|
union {
|
||||||
|
uint8_t val_8;
|
||||||
|
struct mlme_ht_info_field_1 info_field_1;
|
||||||
|
} u3;
|
||||||
|
|
||||||
|
union {
|
||||||
|
uint16_t val_16;
|
||||||
|
struct mlme_ht_info_field_2 info_field_2;
|
||||||
|
} u4;
|
||||||
|
|
||||||
|
union {
|
||||||
|
uint16_t val_16;
|
||||||
|
struct mlme_ht_info_field_3 info_field_3;
|
||||||
|
} u5;
|
||||||
|
|
||||||
|
/* HT Capabilities - HT Caps Info Field */
|
||||||
|
u1.val_16 = (uint16_t)cfg_default(CFG_HT_CAP_INFO);
|
||||||
|
u1.ht_cap_info.adv_coding_cap =
|
||||||
cfg_get(psoc, CFG_RX_LDPC_ENABLE);
|
cfg_get(psoc, CFG_RX_LDPC_ENABLE);
|
||||||
u.default_ht_cap_info.rx_stbc = cfg_get(psoc, CFG_RX_STBC_ENABLE);
|
u1.ht_cap_info.rx_stbc = cfg_get(psoc, CFG_RX_STBC_ENABLE);
|
||||||
u.default_ht_cap_info.tx_stbc = cfg_get(psoc, CFG_TX_STBC_ENABLE);
|
u1.ht_cap_info.tx_stbc = cfg_get(psoc, CFG_TX_STBC_ENABLE);
|
||||||
u.default_ht_cap_info.short_gi_20_mhz =
|
u1.ht_cap_info.short_gi_20_mhz =
|
||||||
cfg_get(psoc, CFG_SHORT_GI_20MHZ);
|
cfg_get(psoc, CFG_SHORT_GI_20MHZ);
|
||||||
u.default_ht_cap_info.short_gi_40_mhz =
|
u1.ht_cap_info.short_gi_40_mhz =
|
||||||
cfg_get(psoc, CFG_SHORT_GI_40MHZ);
|
cfg_get(psoc, CFG_SHORT_GI_40MHZ);
|
||||||
|
ht_caps->ht_cap_info = u1.ht_cap_info;
|
||||||
|
|
||||||
ht_caps->ht_cap_info = u.default_ht_cap_info;
|
/* HT Capapabilties - AMPDU Params */
|
||||||
|
ht_caps->ampdu_params.max_rx_ampdu_factor =
|
||||||
|
cfg_get(psoc, CFG_MAX_RX_AMPDU_FACTOR);
|
||||||
|
ht_caps->ampdu_params.mpdu_density =
|
||||||
|
cfg_get(psoc, CFG_MPDU_DENSITY);
|
||||||
|
ht_caps->ampdu_params.reserved = 0;
|
||||||
|
|
||||||
|
/* HT Capabilities - Extended Capabilities field */
|
||||||
|
u2.val_16 = (uint16_t)cfg_default(CFG_EXT_HT_CAP_INFO);
|
||||||
|
ht_caps->ext_cap_info = u2.ext_cap_info;
|
||||||
|
|
||||||
|
/* HT Operation - Information subset 1 of 3 */
|
||||||
|
u3.val_8 = (uint8_t)cfg_default(CFG_HT_INFO_FIELD_1);
|
||||||
|
ht_caps->info_field_1 = u3.info_field_1;
|
||||||
|
|
||||||
|
/* HT Operation - Information subset 2 of 3 */
|
||||||
|
u4.val_16 = (uint16_t)cfg_default(CFG_HT_INFO_FIELD_2);
|
||||||
|
ht_caps->info_field_2 = u4.info_field_2;
|
||||||
|
|
||||||
|
/* HT Operation - Information subset 3 of 3 */
|
||||||
|
u5.val_16 = (uint16_t)cfg_default(CFG_HT_INFO_FIELD_3);
|
||||||
|
ht_caps->info_field_3 = u5.info_field_3;
|
||||||
|
|
||||||
|
ht_caps->short_preamble = cfg_get(psoc, CFG_SHORT_PREAMBLE);
|
||||||
|
ht_caps->enable_ampdu_ps = cfg_get(psoc, CFG_ENABLE_AMPDUPS);
|
||||||
|
ht_caps->enable_smps = cfg_get(psoc, CFG_ENABLE_HT_SMPS);
|
||||||
|
ht_caps->smps = cfg_get(psoc, CFG_HT_SMPS_MODE);
|
||||||
|
ht_caps->max_num_amsdu = cfg_get(psoc, CFG_MAX_AMSDU_NUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mlme_init_qos_cfg(struct wlan_objmgr_psoc *psoc,
|
static void mlme_init_qos_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
@@ -173,6 +173,203 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"HT cap info")
|
"HT cap info")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* gShortPreamble - Set Short Preamble
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 1
|
||||||
|
*
|
||||||
|
* This ini is used to set default short Preamble
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_SHORT_PREAMBLE CFG_INI_BOOL( \
|
||||||
|
"gShortPreamble", \
|
||||||
|
1, \
|
||||||
|
"Short Preamble")
|
||||||
|
|
||||||
|
#define CFG_HT_AMPDU_PARAMS CFG_UINT( \
|
||||||
|
"ht_ampdu_params", \
|
||||||
|
0, \
|
||||||
|
255, \
|
||||||
|
0, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"HT AMPDU Params")
|
||||||
|
|
||||||
|
#define CFG_EXT_HT_CAP_INFO CFG_UINT( \
|
||||||
|
"ext_ht_cap_info", \
|
||||||
|
0, \
|
||||||
|
65535, \
|
||||||
|
1024, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"HT Ext Cap Info")
|
||||||
|
|
||||||
|
#define CFG_HT_INFO_FIELD_1 CFG_UINT( \
|
||||||
|
"ht_info_field_1", \
|
||||||
|
0, \
|
||||||
|
255, \
|
||||||
|
15, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"HT Info Field 1")
|
||||||
|
|
||||||
|
#define CFG_HT_INFO_FIELD_2 CFG_UINT( \
|
||||||
|
"ht_info_field_2", \
|
||||||
|
0, \
|
||||||
|
65535, \
|
||||||
|
0, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"HT Info Field 2")
|
||||||
|
|
||||||
|
#define CFG_HT_INFO_FIELD_3 CFG_UINT( \
|
||||||
|
"ht_info_field_3", \
|
||||||
|
0, \
|
||||||
|
65535, \
|
||||||
|
0, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"HT Info Field 3")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* gEnableHtSMPS - Enable the SM Power Save
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* This ini is used to enable SM Power Save
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_ENABLE_HT_SMPS CFG_INI_BOOL( \
|
||||||
|
"gEnableHtSMPS", \
|
||||||
|
0, \
|
||||||
|
"Enable HT SM PowerSave")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* gHtSMPS - SMPS Mode
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 3
|
||||||
|
* @Default: 3
|
||||||
|
*
|
||||||
|
* This ini is used to set default SM Power Save Antenna mode
|
||||||
|
* 0 - Static
|
||||||
|
* 1 - Dynamic
|
||||||
|
* 2 - Reserved/Invalid
|
||||||
|
* 3 - Disabled
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_HT_SMPS_MODE CFG_INI_UINT( \
|
||||||
|
"gHtSMPS", \
|
||||||
|
0, \
|
||||||
|
3, \
|
||||||
|
3, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"HT SM Power Save Config")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* gMaxAmsduNum - Max number of MSDU's in aggregate
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 3
|
||||||
|
* @Default: 1
|
||||||
|
* gMaxAmsduNum is the number of MSDU's transmitted in the 11n aggregate
|
||||||
|
* frame. Setting it to a value larger than 1 enables transmit aggregation.
|
||||||
|
* It is a PHY parameter that applies to all vdev's in firmware.
|
||||||
|
*
|
||||||
|
* Supported Feature: 11n aggregation
|
||||||
|
*
|
||||||
|
* Usage: Internal
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_MAX_AMSDU_NUM CFG_INI_UINT( \
|
||||||
|
"gMaxAmsduNum", \
|
||||||
|
0, \
|
||||||
|
3, \
|
||||||
|
1, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Max AMSDU Number")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* gMaxRxAmpduFactor - Provide the maximum ampdu factor.
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 3
|
||||||
|
* @Default: 3
|
||||||
|
*
|
||||||
|
* This ini is used to set default maxampdu factor
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_MAX_RX_AMPDU_FACTOR CFG_INI_UINT( \
|
||||||
|
"gMaxRxAmpduFactor", \
|
||||||
|
0, \
|
||||||
|
3, \
|
||||||
|
3, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Max Rx AMPDU Factor")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* ght_mpdu_density - Configuration option for HT MPDU density
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 7
|
||||||
|
* @Default: 7
|
||||||
|
*
|
||||||
|
* This ini is used to set default MDPU Density
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* As per (Table 8-125 802.11-2012)
|
||||||
|
* 0 for no restriction
|
||||||
|
* 1 for 1/4 micro sec
|
||||||
|
* 2 for 1/2 micro sec
|
||||||
|
* 3 for 1 micro sec
|
||||||
|
* 4 for 2 micro sec
|
||||||
|
* 5 for 4 micro sec
|
||||||
|
* 6 for 8 micro sec
|
||||||
|
* 7 for 16 micro sec
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_MPDU_DENSITY CFG_INI_UINT( \
|
||||||
|
"ght_mpdu_density", \
|
||||||
|
0, \
|
||||||
|
7, \
|
||||||
|
7, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"MPDU Density")
|
||||||
|
|
||||||
#define CFG_HT_CAPS_ALL \
|
#define CFG_HT_CAPS_ALL \
|
||||||
CFG(CFG_HT_CAP_INFO) \
|
CFG(CFG_HT_CAP_INFO) \
|
||||||
CFG(CFG_TX_LDPC_ENABLE) \
|
CFG(CFG_TX_LDPC_ENABLE) \
|
||||||
@@ -180,6 +377,17 @@
|
|||||||
CFG(CFG_TX_STBC_ENABLE) \
|
CFG(CFG_TX_STBC_ENABLE) \
|
||||||
CFG(CFG_RX_STBC_ENABLE) \
|
CFG(CFG_RX_STBC_ENABLE) \
|
||||||
CFG(CFG_SHORT_GI_20MHZ) \
|
CFG(CFG_SHORT_GI_20MHZ) \
|
||||||
CFG(CFG_SHORT_GI_40MHZ)
|
CFG(CFG_SHORT_GI_40MHZ) \
|
||||||
|
CFG(CFG_SHORT_PREAMBLE) \
|
||||||
|
CFG(CFG_HT_AMPDU_PARAMS) \
|
||||||
|
CFG(CFG_EXT_HT_CAP_INFO) \
|
||||||
|
CFG(CFG_HT_INFO_FIELD_1) \
|
||||||
|
CFG(CFG_HT_INFO_FIELD_2) \
|
||||||
|
CFG(CFG_HT_INFO_FIELD_3) \
|
||||||
|
CFG(CFG_ENABLE_HT_SMPS) \
|
||||||
|
CFG(CFG_HT_SMPS_MODE) \
|
||||||
|
CFG(CFG_MAX_AMSDU_NUM) \
|
||||||
|
CFG(CFG_MAX_RX_AMPDU_FACTOR) \
|
||||||
|
CFG(CFG_MPDU_DENSITY)
|
||||||
|
|
||||||
#endif /* __CFG_MLME_HT_CAPS_H */
|
#endif /* __CFG_MLME_HT_CAPS_H */
|
||||||
|
@@ -177,6 +177,46 @@ QDF_STATUS wlan_mlme_set_ht_cap_info(struct wlan_objmgr_psoc *psoc,
|
|||||||
struct mlme_ht_capabilities_info
|
struct mlme_ht_capabilities_info
|
||||||
ht_cap_info);
|
ht_cap_info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_max_amsdu_num() - get the max amsdu num
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: pointer to the value where the max_amsdu num is to be filled
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_get_max_amsdu_num(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_set_max_amsdu_num() - set the max amsdu num
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: value to be set for max_amsdu_num
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_set_max_amsdu_num(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_ht_mpdu_density() - get the ht mpdu density
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: pointer to the value where the ht mpdu density is to be filled
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_get_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_set_ht_mpdu_density() - set the ht mpdu density
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: value to be set for ht mpdu density
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_set_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_get_band_capability() - Get the Band capability config
|
* wlan_mlme_get_band_capability() - Get the Band capability config
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
|
@@ -301,12 +301,161 @@ struct mlme_ht_capabilities_info {
|
|||||||
} qdf_packed;
|
} qdf_packed;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct mlme_ht_param_info - HT AMPDU Parameters Info
|
||||||
|
* @reserved: reserved bits
|
||||||
|
* @mpdu_density: MPDU Density
|
||||||
|
* @max_rx_ampdu_factor: Max Rx AMPDU Factor
|
||||||
|
*/
|
||||||
|
#ifndef ANI_LITTLE_BIT_ENDIAN
|
||||||
|
struct mlme_ht_param_info {
|
||||||
|
uint8_t reserved:3;
|
||||||
|
uint8_t mpdu_density:3;
|
||||||
|
uint8_t max_rx_ampdu_factor:2;
|
||||||
|
} qdf_packed;
|
||||||
|
#else
|
||||||
|
struct mlme_ht_param_info {
|
||||||
|
uint8_t max_rx_ampdu_factor:2;
|
||||||
|
uint8_t mpdu_density:3;
|
||||||
|
uint8_t reserved:3;
|
||||||
|
#endif
|
||||||
|
} qdf_packed;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct mlme_ht_ext_cap_info - Extended HT Capabilities Info
|
||||||
|
* reserved_2: Reserved Bits
|
||||||
|
* mcs_feedback: MCS Feedback Capability
|
||||||
|
* reserved_1: Reserved Bits
|
||||||
|
* transition_time: Time needed for transition between 20Mhz and 40 Mhz
|
||||||
|
* pco: PCO (Phased Coexistence Operation) Support
|
||||||
|
*/
|
||||||
|
#ifndef ANI_LITTLE_BIT_ENDIAN
|
||||||
|
struct mlme_ht_ext_cap_info {
|
||||||
|
uint16_t reserved_2:6;
|
||||||
|
uint16_t mcs_feedback:2;
|
||||||
|
uint16_t reserved_1:5;
|
||||||
|
uint16_t transition_time:2;
|
||||||
|
uint16_t pco:1;
|
||||||
|
} qdf_packed;
|
||||||
|
#else
|
||||||
|
struct mlme_ht_ext_cap_info {
|
||||||
|
uint16_t pco:1;
|
||||||
|
uint16_t transition_time:2;
|
||||||
|
uint16_t reserved1:5;
|
||||||
|
uint16_t mcs_feedback:2;
|
||||||
|
uint16_t reserved2:6;
|
||||||
|
} qdf_packed;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct mlme_ht_info_field_1 - Additional HT IE Field1
|
||||||
|
* @service_interval_granularity: Shortest Service Interval
|
||||||
|
* @controlled_access_only: Access Control for assoc requests
|
||||||
|
* @rifs_mode: Reduced Interframe Spacing mode
|
||||||
|
* @recommended_tx_width_set: Recommended Tx Channel Width
|
||||||
|
* @secondary_channel_offset: Secondary Channel Offset
|
||||||
|
*/
|
||||||
|
#ifndef ANI_LITTLE_BIT_ENDIAN
|
||||||
|
struct mlme_ht_info_field_1 {
|
||||||
|
uint8_t service_interval_granularity:3;
|
||||||
|
uint8_t controlled_access_only:1;
|
||||||
|
uint8_t rifs_mode:1;
|
||||||
|
uint8_t recommended_tx_width_set:1;
|
||||||
|
uint8_t secondary_channel_offset:2;
|
||||||
|
} qdf_packed;
|
||||||
|
#else
|
||||||
|
struct mlme_ht_info_field_1 {
|
||||||
|
uint8_t secondary_channel_offset:2;
|
||||||
|
uint8_t recommended_tx_width_set:1;
|
||||||
|
uint8_t rifs_mode:1;
|
||||||
|
uint8_t controlled_access_only:1;
|
||||||
|
uint8_t service_interval_granularity:3;
|
||||||
|
} qdf_packed;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* struct mlme_ht_info_field_2 - Additional HT IE Field2
|
||||||
|
* @reserved: reserved bits
|
||||||
|
* @obss_non_ht_sta_present: Protection for non-HT STAs by Overlapping BSS
|
||||||
|
* @transmit_burst_limit: Transmit Burst Limit
|
||||||
|
* @non_gf_devices_present: Non Greenfield devices present
|
||||||
|
* @op_mode: Operation Mode
|
||||||
|
*/
|
||||||
|
#ifndef ANI_LITTLE_BIT_ENDIAN
|
||||||
|
struct mlme_ht_info_field_2 {
|
||||||
|
uint16_t reserved:11;
|
||||||
|
uint16_t obss_non_ht_sta_present:1;
|
||||||
|
uint16_t transmit_burst_limit:1;
|
||||||
|
uint16_t non_gf_devices_present:1;
|
||||||
|
uint16_t op_mode:2;
|
||||||
|
} qdf_packed;
|
||||||
|
#else
|
||||||
|
struct mlme_ht_info_field_2 {
|
||||||
|
uint16_t op_mode:2;
|
||||||
|
uint16_t nonGFDevicesPresent:1;
|
||||||
|
uint16_t transmit_burst_limit:1;
|
||||||
|
uint16_t obss_non_ht_sta_present:1;
|
||||||
|
uint16_t reserved:11;
|
||||||
|
} qdf_packed;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct mlme_ht_info_field_3 - Additional HT IE Field3
|
||||||
|
* @reserved: reserved bits
|
||||||
|
* @pco_phase: PCO Phase
|
||||||
|
* @pco_active: PCO state
|
||||||
|
* @lsig_txop_protection_full_support: L-Sig TXOP Protection Full Support
|
||||||
|
* @secondary_beacon: Beacon ID
|
||||||
|
* @dual_cts_protection: Dual CTS protection Required
|
||||||
|
* @basic_stbc_mcs: Basic STBC MCS
|
||||||
|
*/
|
||||||
|
#ifndef ANI_LITTLE_BIT_ENDIAN
|
||||||
|
struct mlme_ht_info_field_3 {
|
||||||
|
uint16_t reserved:4;
|
||||||
|
uint16_t pco_phase:1;
|
||||||
|
uint16_t pco_active:1;
|
||||||
|
uint16_t lsig_txop_protection_full_support:1;
|
||||||
|
uint16_t secondary_beacon:1;
|
||||||
|
uint16_t dual_cts_protection:1;
|
||||||
|
uint16_t basic_stbc_mcs:7;
|
||||||
|
} qdf_packed;
|
||||||
|
#else
|
||||||
|
struct mlme_ht_info_field_3 {
|
||||||
|
uint16_t basic_stbc_mcs:7;
|
||||||
|
uint16_t dual_cts_protection:1;
|
||||||
|
uint16_t secondary_beacon:1;
|
||||||
|
uint16_t lsig_txop_protection_full_support:1;
|
||||||
|
uint16_t pco_active:1;
|
||||||
|
uint16_t pco_phase:1;
|
||||||
|
uint16_t reserved:4;
|
||||||
|
} qdf_packed;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_mlme_ht_caps - HT Capabilities related config items
|
* struct wlan_mlme_ht_caps - HT Capabilities related config items
|
||||||
* @ht_cap_info: HT capabilities Info Structure
|
* @ht_cap_info: HT capabilities Info Structure
|
||||||
|
* @ampdu_params: AMPDU parameters
|
||||||
|
* @ext_cap_info: HT EXT capabilities info
|
||||||
|
* @info_field_1: HT Information Subset 1
|
||||||
|
* @info_field_2: HT Information Subset 2
|
||||||
|
* @info_field_3: HT Information Subset 3
|
||||||
|
* @short_preamble: Short Preamble support
|
||||||
|
* @enable_ampdu_ps: Enable AMPDU Power Save
|
||||||
|
* @enable_smps: Enabled SM Power Save
|
||||||
|
* @smps : SM Power Save mode
|
||||||
|
* @max_num_amsdu: Max number of AMSDU
|
||||||
*/
|
*/
|
||||||
struct wlan_mlme_ht_caps {
|
struct wlan_mlme_ht_caps {
|
||||||
struct mlme_ht_capabilities_info ht_cap_info;
|
struct mlme_ht_capabilities_info ht_cap_info;
|
||||||
|
struct mlme_ht_param_info ampdu_params;
|
||||||
|
struct mlme_ht_ext_cap_info ext_cap_info;
|
||||||
|
struct mlme_ht_info_field_1 info_field_1;
|
||||||
|
struct mlme_ht_info_field_2 info_field_2;
|
||||||
|
struct mlme_ht_info_field_3 info_field_3;
|
||||||
|
bool short_preamble;
|
||||||
|
bool enable_ampdu_ps;
|
||||||
|
bool enable_smps;
|
||||||
|
uint8_t smps;
|
||||||
|
uint8_t max_num_amsdu;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -149,6 +149,62 @@ QDF_STATUS ucfg_mlme_set_ht_cap_info(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_set_ht_cap_info(psoc, ht_cap_info);
|
return wlan_mlme_set_ht_cap_info(psoc, ht_cap_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_max_amsdu_num() - get the max amsdu num
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: pointer to the value where the max_amsdu num is to be filled
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_get_max_amsdu_num(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_max_amsdu_num(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_set_max_amsdu_num() - set the max amsdu num
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: value to be set for max_amsdu_num
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_set_max_amsdu_num(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_set_max_amsdu_num(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_ht_mpdu_density() - get the ht mpdu density
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: pointer to the value where the ht mpdu density is to be filled
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_get_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_ht_mpdu_density(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_set_ht_mpdu_density() - set the ht mpdu density
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: value to be set for ht mpdu density
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_set_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_set_ht_mpdu_density(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_get_band_capability() - Get the Band capability config
|
* ucfg_mlme_get_band_capability() - Get the Band capability config
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
|
@@ -90,6 +90,80 @@ QDF_STATUS wlan_mlme_set_ht_cap_info(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_get_max_amsdu_num(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.ht_caps.max_num_amsdu;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_set_max_amsdu_num(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;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cfg_in_range(CFG_MAX_AMSDU_NUM, value)) {
|
||||||
|
mlme_err("Error in setting Max AMSDU Num");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mlme_obj->cfg.ht_caps.max_num_amsdu = value;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_get_ht_mpdu_density(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 = (uint8_t)mlme_obj->cfg.ht_caps.ampdu_params.mpdu_density;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_set_ht_mpdu_density(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;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cfg_in_range(CFG_MPDU_DENSITY, value)) {
|
||||||
|
mlme_err("Invalid value %d", value);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mlme_obj->cfg.ht_caps.ampdu_params.mpdu_density = value;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS wlan_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t *band_capability)
|
uint8_t *band_capability)
|
||||||
{
|
{
|
||||||
|
@@ -178,44 +178,6 @@ struct hdd_context;
|
|||||||
#define CFG_COUNTRY_CODE_PRIORITY_MAX (1)
|
#define CFG_COUNTRY_CODE_PRIORITY_MAX (1)
|
||||||
#define CFG_COUNTRY_CODE_PRIORITY_DEFAULT (0)
|
#define CFG_COUNTRY_CODE_PRIORITY_DEFAULT (0)
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* gMaxRxAmpduFactor - Provide the maximum ampdu factor.
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 3
|
|
||||||
* @Default: 3
|
|
||||||
*
|
|
||||||
* This ini is used to set default maxampdu factor
|
|
||||||
*
|
|
||||||
* Related: None
|
|
||||||
*
|
|
||||||
* Supported Feature: STA
|
|
||||||
*
|
|
||||||
* Usage: Internal/External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CFG_MAX_RX_AMPDU_FACTOR_NAME "gMaxRxAmpduFactor"
|
|
||||||
#define CFG_MAX_RX_AMPDU_FACTOR_MIN WNI_CFG_MAX_RX_AMPDU_FACTOR_STAMIN
|
|
||||||
#define CFG_MAX_RX_AMPDU_FACTOR_MAX WNI_CFG_MAX_RX_AMPDU_FACTOR_STAMAX
|
|
||||||
#define CFG_MAX_RX_AMPDU_FACTOR_DEFAULT WNI_CFG_MAX_RX_AMPDU_FACTOR_STADEF
|
|
||||||
|
|
||||||
/* Configuration option for HT MPDU density (Table 8-125 802.11-2012)
|
|
||||||
* 0 for no restriction
|
|
||||||
* 1 for 1/4 micro sec
|
|
||||||
* 2 for 1/2 micro sec
|
|
||||||
* 3 for 1 micro sec
|
|
||||||
* 4 for 2 micro sec
|
|
||||||
* 5 for 4 micro sec
|
|
||||||
* 6 for 8 micro sec
|
|
||||||
* 7 for 16 micro sec
|
|
||||||
*/
|
|
||||||
#define CFG_HT_MPDU_DENSITY_NAME "ght_mpdu_density"
|
|
||||||
#define CFG_HT_MPDU_DENSITY_MIN WNI_CFG_MPDU_DENSITY_STAMIN
|
|
||||||
#define CFG_HT_MPDU_DENSITY_MAX WNI_CFG_MPDU_DENSITY_STAMAX
|
|
||||||
#define CFG_HT_MPDU_DENSITY_DEFAULT WNI_CFG_MPDU_DENSITY_STADEF
|
|
||||||
|
|
||||||
#define CFG_REG_CHANGE_DEF_COUNTRY_NAME "gRegulatoryChangeCountry"
|
#define CFG_REG_CHANGE_DEF_COUNTRY_NAME "gRegulatoryChangeCountry"
|
||||||
#define CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT (0)
|
#define CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT (0)
|
||||||
#define CFG_REG_CHANGE_DEF_COUNTRY_MIN (0)
|
#define CFG_REG_CHANGE_DEF_COUNTRY_MIN (0)
|
||||||
@@ -1611,29 +1573,6 @@ enum hdd_dot11_mode {
|
|||||||
#define CFG_ROAM_FORCE_RSSI_TRIGGER_MAX (1)
|
#define CFG_ROAM_FORCE_RSSI_TRIGGER_MAX (1)
|
||||||
#define CFG_ROAM_FORCE_RSSI_TRIGGER_DEFAULT (1)
|
#define CFG_ROAM_FORCE_RSSI_TRIGGER_DEFAULT (1)
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* gShortPreamble - Set Short Preamble
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 1
|
|
||||||
* @Default: 1
|
|
||||||
*
|
|
||||||
* This ini is used to set default short Preamble
|
|
||||||
*
|
|
||||||
* Related: None
|
|
||||||
*
|
|
||||||
* Supported Feature: STA
|
|
||||||
*
|
|
||||||
* Usage: Internal/External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CFG_SHORT_PREAMBLE_NAME "gShortPreamble"
|
|
||||||
#define CFG_SHORT_PREAMBLE_MIN WNI_CFG_SHORT_PREAMBLE_STAMIN
|
|
||||||
#define CFG_SHORT_PREAMBLE_MAX WNI_CFG_SHORT_PREAMBLE_STAMAX
|
|
||||||
#define CFG_SHORT_PREAMBLE_DEFAULT WNI_CFG_SHORT_PREAMBLE_STADEF
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* gIbssBssid - Default IBSS BSSID if BSSID is not provided by supplicant
|
* gIbssBssid - Default IBSS BSSID if BSSID is not provided by supplicant
|
||||||
@@ -3078,16 +3017,6 @@ enum hdd_link_speed_rpt_type {
|
|||||||
#define CFG_VDEV_TYPE_NSS_5G_MAX (0xAAAA)
|
#define CFG_VDEV_TYPE_NSS_5G_MAX (0xAAAA)
|
||||||
#define CFG_VDEV_TYPE_NSS_5G_DEFAULT (0xAAAA)
|
#define CFG_VDEV_TYPE_NSS_5G_DEFAULT (0xAAAA)
|
||||||
|
|
||||||
#define CFG_HT_ENABLE_SMPS_CAP_FEATURE "gEnableHtSMPS"
|
|
||||||
#define CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN (0)
|
|
||||||
#define CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX (1)
|
|
||||||
#define CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT (0)
|
|
||||||
|
|
||||||
#define CFG_HT_SMPS_CAP_FEATURE "gHtSMPS"
|
|
||||||
#define CFG_HT_SMPS_CAP_FEATURE_MIN (0)
|
|
||||||
#define CFG_HT_SMPS_CAP_FEATURE_MAX (3)
|
|
||||||
#define CFG_HT_SMPS_CAP_FEATURE_DEFAULT (3)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* gDisableDFSChSwitch - Disable channel switch if radar is found
|
* gDisableDFSChSwitch - Disable channel switch if radar is found
|
||||||
@@ -3965,27 +3894,6 @@ enum hdd_link_speed_rpt_type {
|
|||||||
#define CFG_ENABLE_MEMORY_DEBUG_DEFAULT (1)
|
#define CFG_ENABLE_MEMORY_DEBUG_DEFAULT (1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* gMaxAmsduNum - Max number of MSDU's in aggregate
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 3
|
|
||||||
* @Default: 1
|
|
||||||
* gMaxAmsduNum is the number of MSDU's transmitted in the 11n aggregate
|
|
||||||
* frame. Setting it to a value larger than 1 enables transmit aggregation.
|
|
||||||
* It is a PHY parameter that applies to all vdev's in firmware.
|
|
||||||
*
|
|
||||||
* Supported Feature: 11n aggregation
|
|
||||||
*
|
|
||||||
* Usage: Internal
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_MAX_AMSDU_NUM_NAME "gMaxAmsduNum"
|
|
||||||
#define CFG_MAX_AMSDU_NUM_MIN (0)
|
|
||||||
#define CFG_MAX_AMSDU_NUM_MAX (3)
|
|
||||||
#define CFG_MAX_AMSDU_NUM_DEFAULT (1)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* gInitialDwellTime - Used to set initial dwell time
|
* gInitialDwellTime - Used to set initial dwell time
|
||||||
@@ -6488,10 +6396,8 @@ struct hdd_config {
|
|||||||
uint32_t nChannelBondingMode24GHz;
|
uint32_t nChannelBondingMode24GHz;
|
||||||
bool override_ht20_40_24g;
|
bool override_ht20_40_24g;
|
||||||
uint32_t nChannelBondingMode5GHz;
|
uint32_t nChannelBondingMode5GHz;
|
||||||
uint32_t MaxRxAmpduFactor;
|
|
||||||
uint32_t ScanResultAgeCount;
|
uint32_t ScanResultAgeCount;
|
||||||
uint8_t nRssiCatGap;
|
uint8_t nRssiCatGap;
|
||||||
bool fIsShortPreamble;
|
|
||||||
struct qdf_mac_addr IbssBssid;
|
struct qdf_mac_addr IbssBssid;
|
||||||
uint32_t AdHocChannel5G;
|
uint32_t AdHocChannel5G;
|
||||||
uint32_t AdHocChannel24G;
|
uint32_t AdHocChannel24G;
|
||||||
@@ -6681,9 +6587,6 @@ struct hdd_config {
|
|||||||
#endif
|
#endif
|
||||||
uint32_t vdev_type_nss_2g;
|
uint32_t vdev_type_nss_2g;
|
||||||
uint32_t vdev_type_nss_5g;
|
uint32_t vdev_type_nss_5g;
|
||||||
uint8_t enableAmpduPs;
|
|
||||||
uint8_t enableHtSmps;
|
|
||||||
uint8_t htSmps;
|
|
||||||
bool enableFirstScan2GOnly;
|
bool enableFirstScan2GOnly;
|
||||||
uint8_t enable_tx_ldpc;
|
uint8_t enable_tx_ldpc;
|
||||||
uint8_t enable_rx_ldpc;
|
uint8_t enable_rx_ldpc;
|
||||||
@@ -6699,7 +6602,6 @@ struct hdd_config {
|
|||||||
uint32_t configPNOScanTimerRepeatValue;
|
uint32_t configPNOScanTimerRepeatValue;
|
||||||
uint32_t pno_slow_scan_multiplier;
|
uint32_t pno_slow_scan_multiplier;
|
||||||
#endif
|
#endif
|
||||||
uint8_t max_amsdu_num;
|
|
||||||
uint8_t isCoalesingInIBSSAllowed;
|
uint8_t isCoalesingInIBSSAllowed;
|
||||||
|
|
||||||
/* IBSS Power Save related parameters */
|
/* IBSS Power Save related parameters */
|
||||||
@@ -6777,7 +6679,6 @@ struct hdd_config {
|
|||||||
int8_t early_stop_scan_min_threshold;
|
int8_t early_stop_scan_min_threshold;
|
||||||
int8_t early_stop_scan_max_threshold;
|
int8_t early_stop_scan_max_threshold;
|
||||||
int8_t first_scan_bucket_threshold;
|
int8_t first_scan_bucket_threshold;
|
||||||
uint8_t ht_mpdu_density;
|
|
||||||
#ifdef FEATURE_LFR_SUBNET_DETECTION
|
#ifdef FEATURE_LFR_SUBNET_DETECTION
|
||||||
bool enable_lfr_subnet_detection;
|
bool enable_lfr_subnet_detection;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -490,20 +490,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_CHANNEL_BONDING_MODE_MIN,
|
CFG_CHANNEL_BONDING_MODE_MIN,
|
||||||
CFG_CHANNEL_BONDING_MODE_MAX),
|
CFG_CHANNEL_BONDING_MODE_MAX),
|
||||||
|
|
||||||
REG_VARIABLE(CFG_MAX_RX_AMPDU_FACTOR_NAME, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, MaxRxAmpduFactor,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
|
|
||||||
CFG_MAX_RX_AMPDU_FACTOR_DEFAULT,
|
|
||||||
CFG_MAX_RX_AMPDU_FACTOR_MIN,
|
|
||||||
CFG_MAX_RX_AMPDU_FACTOR_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_HT_MPDU_DENSITY_NAME, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, ht_mpdu_density,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
|
|
||||||
CFG_HT_MPDU_DENSITY_DEFAULT,
|
|
||||||
CFG_HT_MPDU_DENSITY_MIN,
|
|
||||||
CFG_HT_MPDU_DENSITY_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
|
REG_VARIABLE(CFG_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, ScanResultAgeCount,
|
struct hdd_config, ScanResultAgeCount,
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
|
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
|
||||||
@@ -518,13 +504,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_RSSI_CATEGORY_GAP_MIN,
|
CFG_RSSI_CATEGORY_GAP_MIN,
|
||||||
CFG_RSSI_CATEGORY_GAP_MAX),
|
CFG_RSSI_CATEGORY_GAP_MAX),
|
||||||
|
|
||||||
REG_VARIABLE(CFG_SHORT_PREAMBLE_NAME, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, fIsShortPreamble,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_SHORT_PREAMBLE_DEFAULT,
|
|
||||||
CFG_SHORT_PREAMBLE_MIN,
|
|
||||||
CFG_SHORT_PREAMBLE_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE_STRING(CFG_IBSS_BSSID_NAME, WLAN_PARAM_MacAddr,
|
REG_VARIABLE_STRING(CFG_IBSS_BSSID_NAME, WLAN_PARAM_MacAddr,
|
||||||
struct hdd_config, IbssBssid,
|
struct hdd_config, IbssBssid,
|
||||||
VAR_FLAGS_OPTIONAL,
|
VAR_FLAGS_OPTIONAL,
|
||||||
@@ -557,7 +536,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_AP_QOS_UAPSD_MODE_MIN,
|
CFG_AP_QOS_UAPSD_MODE_MIN,
|
||||||
CFG_AP_QOS_UAPSD_MODE_MAX),
|
CFG_AP_QOS_UAPSD_MODE_MAX),
|
||||||
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
|
REG_VARIABLE(CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, apRandomBssidEnabled,
|
struct hdd_config, apRandomBssidEnabled,
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||||
@@ -1443,21 +1421,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_VDEV_TYPE_NSS_5G_MIN,
|
CFG_VDEV_TYPE_NSS_5G_MIN,
|
||||||
CFG_VDEV_TYPE_NSS_5G_MAX),
|
CFG_VDEV_TYPE_NSS_5G_MAX),
|
||||||
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_HT_ENABLE_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, enableHtSmps,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT,
|
|
||||||
CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN,
|
|
||||||
CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_HT_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, htSmps,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_HT_SMPS_CAP_FEATURE_DEFAULT,
|
|
||||||
CFG_HT_SMPS_CAP_FEATURE_MIN,
|
|
||||||
CFG_HT_SMPS_CAP_FEATURE_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
|
REG_VARIABLE(CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, disableDFSChSwitch,
|
struct hdd_config, disableDFSChSwitch,
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||||
@@ -1580,13 +1543,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_PNO_SLOW_SCAN_MULTIPLIER_MIN,
|
CFG_PNO_SLOW_SCAN_MULTIPLIER_MIN,
|
||||||
CFG_PNO_SLOW_SCAN_MULTIPLIER_MAX),
|
CFG_PNO_SLOW_SCAN_MULTIPLIER_MAX),
|
||||||
#endif
|
#endif
|
||||||
REG_VARIABLE(CFG_MAX_AMSDU_NUM_NAME, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, max_amsdu_num,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_MAX_AMSDU_NUM_DEFAULT,
|
|
||||||
CFG_MAX_AMSDU_NUM_MIN,
|
|
||||||
CFG_MAX_AMSDU_NUM_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_COALESING_IN_IBSS_NAME, WLAN_PARAM_Integer,
|
REG_VARIABLE(CFG_COALESING_IN_IBSS_NAME, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, isCoalesingInIBSSAllowed,
|
struct hdd_config, isCoalesingInIBSSAllowed,
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||||
@@ -3840,26 +3796,6 @@ bool hdd_update_config_cfg(struct hdd_context *hdd_ctx)
|
|||||||
|
|
||||||
mac_handle = hdd_ctx->mac_handle;
|
mac_handle = hdd_ctx->mac_handle;
|
||||||
|
|
||||||
if (sme_cfg_set_int(mac_handle, WNI_CFG_MAX_RX_AMPDU_FACTOR,
|
|
||||||
config->MaxRxAmpduFactor) ==
|
|
||||||
QDF_STATUS_E_FAILURE) {
|
|
||||||
status = false;
|
|
||||||
hdd_err("Couldn't pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CFG");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sme_cfg_set_int(mac_handle, WNI_CFG_MPDU_DENSITY,
|
|
||||||
config->ht_mpdu_density) ==
|
|
||||||
QDF_STATUS_E_FAILURE) {
|
|
||||||
status = false;
|
|
||||||
hdd_err("Couldn't pass on WNI_CFG_MPDU_DENSITY to CFG");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sme_cfg_set_int(mac_handle, WNI_CFG_SHORT_PREAMBLE,
|
|
||||||
config->fIsShortPreamble) == QDF_STATUS_E_FAILURE) {
|
|
||||||
status = false;
|
|
||||||
hdd_err("Couldn't pass on WNI_CFG_SHORT_PREAMBLE to CFG");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sme_cfg_set_int(mac_handle,
|
if (sme_cfg_set_int(mac_handle,
|
||||||
WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME,
|
WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME,
|
||||||
config->nPassiveMaxChnTime)
|
config->nPassiveMaxChnTime)
|
||||||
@@ -4124,8 +4060,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
|
|||||||
/* Remaining config params not obtained from registry
|
/* Remaining config params not obtained from registry
|
||||||
* On RF EVB beacon using channel 1.
|
* On RF EVB beacon using channel 1.
|
||||||
*/
|
*/
|
||||||
smeConfig->csrConfig.enableHtSmps = pConfig->enableHtSmps;
|
|
||||||
smeConfig->csrConfig.htSmps = pConfig->htSmps;
|
|
||||||
/* This param cannot be configured from INI */
|
/* This param cannot be configured from INI */
|
||||||
smeConfig->csrConfig.send_smps_action = true;
|
smeConfig->csrConfig.send_smps_action = true;
|
||||||
smeConfig->csrConfig.AdHocChannel5G = pConfig->AdHocChannel5G;
|
smeConfig->csrConfig.AdHocChannel5G = pConfig->AdHocChannel5G;
|
||||||
@@ -4236,8 +4170,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
|
|||||||
smeConfig->csrConfig.enable_tx_ldpc = pConfig->enable_tx_ldpc;
|
smeConfig->csrConfig.enable_tx_ldpc = pConfig->enable_tx_ldpc;
|
||||||
smeConfig->csrConfig.enable_rx_ldpc = pConfig->enable_rx_ldpc;
|
smeConfig->csrConfig.enable_rx_ldpc = pConfig->enable_rx_ldpc;
|
||||||
|
|
||||||
smeConfig->csrConfig.max_amsdu_num = pConfig->max_amsdu_num;
|
|
||||||
|
|
||||||
smeConfig->csrConfig.isCoalesingInIBSSAllowed =
|
smeConfig->csrConfig.isCoalesingInIBSSAllowed =
|
||||||
hdd_ctx->config->isCoalesingInIBSSAllowed;
|
hdd_ctx->config->isCoalesingInIBSSAllowed;
|
||||||
/* update SSR config */
|
/* update SSR config */
|
||||||
|
@@ -1430,17 +1430,16 @@ static void hdd_update_tgt_ht_cap(struct hdd_context *hdd_ctx,
|
|||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
qdf_size_t value_len;
|
qdf_size_t value_len;
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
|
uint8_t mpdu_density;
|
||||||
struct mlme_ht_capabilities_info ht_cap_info;
|
struct mlme_ht_capabilities_info ht_cap_info;
|
||||||
uint8_t mcs_set[SIZE_OF_SUPPORTED_MCS_SET];
|
uint8_t mcs_set[SIZE_OF_SUPPORTED_MCS_SET];
|
||||||
mac_handle_t mac_handle = hdd_ctx->mac_handle;
|
|
||||||
bool b_enable1x1;
|
bool b_enable1x1;
|
||||||
|
|
||||||
/* get the MPDU density */
|
/* get the MPDU density */
|
||||||
status = sme_cfg_get_int(mac_handle, WNI_CFG_MPDU_DENSITY, &value);
|
status = ucfg_mlme_get_ht_mpdu_density(hdd_ctx->psoc, &mpdu_density);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
if (status != QDF_STATUS_SUCCESS) {
|
hdd_err("could not get HT MPDU Density");
|
||||||
hdd_err("could not get MPDU DENSITY");
|
return;
|
||||||
value = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1448,12 +1447,11 @@ static void hdd_update_tgt_ht_cap(struct hdd_context *hdd_ctx,
|
|||||||
* override user's setting if value is larger
|
* override user's setting if value is larger
|
||||||
* than the one supported by target
|
* than the one supported by target
|
||||||
*/
|
*/
|
||||||
if (value > cfg->mpdu_density) {
|
if (mpdu_density > cfg->mpdu_density) {
|
||||||
status = sme_cfg_set_int(mac_handle, WNI_CFG_MPDU_DENSITY,
|
status = ucfg_mlme_set_ht_mpdu_density(hdd_ctx->psoc,
|
||||||
cfg->mpdu_density);
|
cfg->mpdu_density);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
if (status == QDF_STATUS_E_FAILURE)
|
hdd_err("could not set HT capability to CCM");
|
||||||
hdd_err("could not set MPDU DENSITY to CCM");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get the HT capability info */
|
/* get the HT capability info */
|
||||||
@@ -4497,6 +4495,7 @@ int hdd_set_fw_params(struct hdd_adapter *adapter)
|
|||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
struct hdd_context *hdd_ctx;
|
struct hdd_context *hdd_ctx;
|
||||||
bool bval = false;
|
bool bval = false;
|
||||||
|
uint8_t max_amsdu_len;
|
||||||
|
|
||||||
hdd_enter_dev(adapter->dev);
|
hdd_enter_dev(adapter->dev);
|
||||||
|
|
||||||
@@ -4642,11 +4641,17 @@ int hdd_set_fw_params(struct hdd_adapter *adapter)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
hdd_debug("SET AMSDU num %d", hdd_ctx->config->max_amsdu_num);
|
status = ucfg_mlme_get_max_amsdu_num(hdd_ctx->psoc, &max_amsdu_len);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
|
hdd_err("Failed to get Max AMSDU Num");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
hdd_debug("SET AMSDU num %d", max_amsdu_len);
|
||||||
|
|
||||||
ret = wma_cli_set_command(adapter->session_id,
|
ret = wma_cli_set_command(adapter->session_id,
|
||||||
GEN_VDEV_PARAM_AMSDU,
|
GEN_VDEV_PARAM_AMSDU,
|
||||||
hdd_ctx->config->max_amsdu_num,
|
max_amsdu_len,
|
||||||
GEN_CMD);
|
GEN_CMD);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
hdd_err("GEN_VDEV_PARAM_AMSDU set failed %d", ret);
|
hdd_err("GEN_VDEV_PARAM_AMSDU set failed %d", ret);
|
||||||
|
@@ -4452,6 +4452,7 @@ static int hdd_we_set_amsdu(struct hdd_adapter *adapter, int amsdu)
|
|||||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||||
mac_handle_t mac_handle = hdd_ctx->mac_handle;
|
mac_handle_t mac_handle = hdd_ctx->mac_handle;
|
||||||
int errno;
|
int errno;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
hdd_debug("AMSDU %d", amsdu);
|
hdd_debug("AMSDU %d", amsdu);
|
||||||
|
|
||||||
@@ -4473,7 +4474,10 @@ static int hdd_we_set_amsdu(struct hdd_adapter *adapter, int amsdu)
|
|||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
hdd_ctx->config->max_amsdu_num = amsdu;
|
status = ucfg_mlme_set_max_amsdu_num(hdd_ctx->psoc,
|
||||||
|
amsdu);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
hdd_err("Failed to set Max AMSDU Num to cfg");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -1871,61 +1871,6 @@ typedef struct sSirMacASCapabilityInfo {
|
|||||||
#endif
|
#endif
|
||||||
} qdf_packed tSirMacASCapabilityInfo;
|
} qdf_packed tSirMacASCapabilityInfo;
|
||||||
|
|
||||||
/* Additional HT IE Field1 */
|
|
||||||
typedef struct sSirMacHTInfoField1 {
|
|
||||||
#ifndef ANI_LITTLE_BIT_ENDIAN
|
|
||||||
uint8_t serviceIntervalGranularity:3; /* Dynamic state */
|
|
||||||
uint8_t controlledAccessOnly:1; /* Static via CFG */
|
|
||||||
uint8_t rifsMode:1; /* Dynamic state */
|
|
||||||
uint8_t recommendedTxWidthSet:1; /* Dynamic state */
|
|
||||||
uint8_t secondaryChannelOffset:2; /* Dynamic state */
|
|
||||||
#else
|
|
||||||
uint8_t secondaryChannelOffset:2;
|
|
||||||
uint8_t recommendedTxWidthSet:1;
|
|
||||||
uint8_t rifsMode:1;
|
|
||||||
uint8_t controlledAccessOnly:1;
|
|
||||||
uint8_t serviceIntervalGranularity:3;
|
|
||||||
#endif
|
|
||||||
} qdf_packed tSirMacHTInfoField1;
|
|
||||||
|
|
||||||
/* Additional HT IE Field2 */
|
|
||||||
typedef struct sSirMacHTInfoField2 {
|
|
||||||
#ifndef ANI_LITTLE_BIT_ENDIAN
|
|
||||||
uint16_t reserved:11;
|
|
||||||
uint16_t obssNonHTStaPresent:1; /*added for Obss */
|
|
||||||
uint16_t transmitBurstLimit:1;
|
|
||||||
uint16_t nonGFDevicesPresent:1;
|
|
||||||
uint16_t opMode:2; /* Dynamic state */
|
|
||||||
#else
|
|
||||||
uint16_t opMode:2;
|
|
||||||
uint16_t nonGFDevicesPresent:1;
|
|
||||||
uint16_t transmitBurstLimit:1;
|
|
||||||
uint16_t obssNonHTStaPresent:1; /*added for Obss */
|
|
||||||
uint16_t reserved:11;
|
|
||||||
#endif
|
|
||||||
} qdf_packed tSirMacHTInfoField2;
|
|
||||||
|
|
||||||
/* Additional HT IE Field3 */
|
|
||||||
typedef struct sSirMacHTInfoField3 {
|
|
||||||
#ifndef ANI_LITTLE_BIT_ENDIAN
|
|
||||||
uint16_t reserved:4;
|
|
||||||
uint16_t pcoPhase:1; /* Dynamic state */
|
|
||||||
uint16_t pcoActive:1; /* Dynamic state */
|
|
||||||
uint16_t lsigTXOPProtectionFullSupport:1; /* Dynamic state */
|
|
||||||
uint16_t secondaryBeacon:1; /* Dynamic state */
|
|
||||||
uint16_t dualCTSProtection:1; /* Dynamic state */
|
|
||||||
uint16_t basicSTBCMCS:7; /* Dynamic state */
|
|
||||||
#else
|
|
||||||
uint16_t basicSTBCMCS:7;
|
|
||||||
uint16_t dualCTSProtection:1;
|
|
||||||
uint16_t secondaryBeacon:1;
|
|
||||||
uint16_t lsigTXOPProtectionFullSupport:1;
|
|
||||||
uint16_t pcoActive:1;
|
|
||||||
uint16_t pcoPhase:1;
|
|
||||||
uint16_t reserved:4;
|
|
||||||
#endif
|
|
||||||
} qdf_packed tSirMacHTInfoField3;
|
|
||||||
|
|
||||||
typedef struct sSirMacProbeReqFrame {
|
typedef struct sSirMacProbeReqFrame {
|
||||||
tSirMacSSidIE ssIdIE;
|
tSirMacSSidIE ssIdIE;
|
||||||
tSirMacRateSetIE rateSetIE;
|
tSirMacRateSetIE rateSetIE;
|
||||||
|
@@ -707,13 +707,9 @@ QDF_STATUS cfg_get_capability_info(tpAniSirGlobal pMac, uint16_t *pCap,
|
|||||||
pCapInfo->privacy = 1;
|
pCapInfo->privacy = 1;
|
||||||
|
|
||||||
/* Short preamble bit */
|
/* Short preamble bit */
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_SHORT_PREAMBLE, &val) !=
|
if (pMac->mlme_cfg->ht_caps.short_preamble)
|
||||||
QDF_STATUS_SUCCESS) {
|
pCapInfo->shortPreamble =
|
||||||
pe_err("cfg get WNI_CFG_SHORT_PREAMBLE failed");
|
pMac->mlme_cfg->ht_caps.short_preamble;
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
if (val)
|
|
||||||
pCapInfo->shortPreamble = 1;
|
|
||||||
|
|
||||||
/* PBCC bit */
|
/* PBCC bit */
|
||||||
pCapInfo->pbcc = 0;
|
pCapInfo->pbcc = 0;
|
||||||
|
@@ -265,46 +265,27 @@ static void __lim_init_ht_vars(tpAniSirGlobal pMac)
|
|||||||
|
|
||||||
static QDF_STATUS __lim_init_config(tpAniSirGlobal pMac)
|
static QDF_STATUS __lim_init_config(tpAniSirGlobal pMac)
|
||||||
{
|
{
|
||||||
uint32_t val1, val2, val3;
|
uint32_t val1;
|
||||||
uint16_t val16;
|
|
||||||
uint8_t val8;
|
|
||||||
bool valb;
|
bool valb;
|
||||||
struct mlme_ht_capabilities_info *ht_cap_info;
|
struct mlme_ht_capabilities_info *ht_cap_info;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
tSirMacHTInfoField1 *pHTInfoField1;
|
|
||||||
tSirMacHTParametersInfo *pAmpduParamInfo;
|
|
||||||
|
|
||||||
/* Read all the CFGs here that were updated before pe_start is called */
|
/* Read all the CFGs here that were updated before pe_start is called */
|
||||||
/* All these CFG READS/WRITES are only allowed in init, at start when there is no session
|
/* All these CFG READS/WRITES are only allowed in init, at start when there is no session
|
||||||
* and they will be used throughout when there is no session
|
* and they will be used throughout when there is no session
|
||||||
*/
|
*/
|
||||||
|
pMac->lim.gLimIbssStaLimit = pMac->mlme_cfg->sap_cfg.assoc_sta_limit;
|
||||||
val1 = pMac->mlme_cfg->sap_cfg.assoc_sta_limit;
|
|
||||||
pMac->lim.gLimIbssStaLimit = val1;
|
|
||||||
ht_cap_info = &pMac->mlme_cfg->ht_caps.ht_cap_info;
|
ht_cap_info = &pMac->mlme_cfg->ht_caps.ht_cap_info;
|
||||||
|
|
||||||
val2 = pMac->mlme_cfg->feature_flags.channel_bonding_mode;
|
|
||||||
|
|
||||||
/* channel bonding mode could be set to anything from 0 to 4(Titan had these */
|
/* channel bonding mode could be set to anything from 0 to 4(Titan had these */
|
||||||
/* modes But for Taurus we have only two modes: enable(>0) or disable(=0) */
|
/* modes But for Taurus we have only two modes: enable(>0) or disable(=0) */
|
||||||
ht_cap_info->supported_channel_width_set = val2 ?
|
ht_cap_info->supported_channel_width_set =
|
||||||
|
pMac->mlme_cfg->feature_flags.channel_bonding_mode ?
|
||||||
WNI_CFG_CHANNEL_BONDING_MODE_ENABLE :
|
WNI_CFG_CHANNEL_BONDING_MODE_ENABLE :
|
||||||
WNI_CFG_CHANNEL_BONDING_MODE_DISABLE;
|
WNI_CFG_CHANNEL_BONDING_MODE_DISABLE;
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_INFO_FIELD1, &val1) != QDF_STATUS_SUCCESS) {
|
pMac->mlme_cfg->ht_caps.info_field_1.recommended_tx_width_set =
|
||||||
pe_err("could not retrieve HT INFO Field1 CFG");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
val8 = (uint8_t) val1;
|
|
||||||
pHTInfoField1 = (tSirMacHTInfoField1 *) &val8;
|
|
||||||
pHTInfoField1->recommendedTxWidthSet =
|
|
||||||
ht_cap_info->supported_channel_width_set;
|
ht_cap_info->supported_channel_width_set;
|
||||||
if (cfg_set_int(pMac, WNI_CFG_HT_INFO_FIELD1, *(uint8_t *) pHTInfoField1)
|
|
||||||
!= QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not update HT Info Field");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pMac->mlme_cfg->timeouts.heart_beat_threshold) {
|
if (!pMac->mlme_cfg->timeouts.heart_beat_threshold) {
|
||||||
pMac->sys.gSysEnableLinkMonitorMode = 0;
|
pMac->sys.gSysEnableLinkMonitorMode = 0;
|
||||||
@@ -313,42 +294,6 @@ static QDF_STATUS __lim_init_config(tpAniSirGlobal pMac)
|
|||||||
pMac->sys.gSysEnableLinkMonitorMode = 1;
|
pMac->sys.gSysEnableLinkMonitorMode = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* WNI_CFG_MAX_RX_AMPDU_FACTOR */
|
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_AMPDU_PARAMS, &val1) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve HT AMPDU Param");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_MAX_RX_AMPDU_FACTOR, &val2) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve AMPDU Factor CFG");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_MPDU_DENSITY, &val3) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve MPDU Density CFG");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
val16 = (uint16_t) val1;
|
|
||||||
pAmpduParamInfo = (tSirMacHTParametersInfo *) &val16;
|
|
||||||
pAmpduParamInfo->maxRxAMPDUFactor = (uint8_t) val2;
|
|
||||||
pAmpduParamInfo->mpduDensity = (uint8_t)val3;
|
|
||||||
if (cfg_set_int
|
|
||||||
(pMac, WNI_CFG_HT_AMPDU_PARAMS,
|
|
||||||
*(uint8_t *) pAmpduParamInfo) != QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("cfg get short preamble failed");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* WNI_CFG_SHORT_PREAMBLE - this one is not updated in
|
|
||||||
lim_handle_cf_gparam_update do we want to update this? */
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_SHORT_PREAMBLE, &val1) != QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("cfg get short preamble failed");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA - not needed */
|
/* WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA - not needed */
|
||||||
|
|
||||||
/* This was initially done after resume notification from HAL. Now, DAL is
|
/* This was initially done after resume notification from HAL. Now, DAL is
|
||||||
|
@@ -2720,7 +2720,6 @@ lim_add_sta_self(tpAniSirGlobal pMac, uint16_t staIdx, uint8_t updateSta,
|
|||||||
* responsibility of SME to evict the selfSta and reissue a new AddStaSelf
|
* responsibility of SME to evict the selfSta and reissue a new AddStaSelf
|
||||||
* command.*/
|
* command.*/
|
||||||
uint32_t selfStaDot11Mode = 0, selfTxWidth = 0;
|
uint32_t selfStaDot11Mode = 0, selfTxWidth = 0;
|
||||||
uint32_t val;
|
|
||||||
|
|
||||||
wlan_cfg_get_int(pMac, WNI_CFG_DOT11_MODE, &selfStaDot11Mode);
|
wlan_cfg_get_int(pMac, WNI_CFG_DOT11_MODE, &selfStaDot11Mode);
|
||||||
wlan_cfg_get_int(pMac, WNI_CFG_HT_CAP_INFO_SUPPORTED_CHAN_WIDTH_SET,
|
wlan_cfg_get_int(pMac, WNI_CFG_HT_CAP_INFO_SUPPORTED_CHAN_WIDTH_SET,
|
||||||
@@ -2760,13 +2759,8 @@ lim_add_sta_self(tpAniSirGlobal pMac, uint16_t staIdx, uint8_t updateSta,
|
|||||||
pAddStaParams->staIdx = staIdx;
|
pAddStaParams->staIdx = staIdx;
|
||||||
pAddStaParams->updateSta = updateSta;
|
pAddStaParams->updateSta = updateSta;
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_SHORT_PREAMBLE, &val) !=
|
pAddStaParams->shortPreambleSupported =
|
||||||
QDF_STATUS_SUCCESS) {
|
pMac->mlme_cfg->ht_caps.short_preamble;
|
||||||
pe_err("Couldn't get SHORT_PREAMBLE, set default");
|
|
||||||
pAddStaParams->shortPreambleSupported = 1;
|
|
||||||
} else {
|
|
||||||
pAddStaParams->shortPreambleSupported = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
lim_populate_own_rate_set(pMac, &pAddStaParams->supportedRates, NULL, false,
|
lim_populate_own_rate_set(pMac, &pAddStaParams->supportedRates, NULL, false,
|
||||||
psessionEntry, NULL, NULL);
|
psessionEntry, NULL, NULL);
|
||||||
|
@@ -137,89 +137,6 @@ void lim_handle_param_update(tpAniSirGlobal pMac, eUpdateIEsType cfgId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* lim_handle_cf_gparam_update()
|
|
||||||
*
|
|
||||||
***FUNCTION:
|
|
||||||
* This function is called by lim_process_messages() to
|
|
||||||
* whenever SIR_CFG_PARAM_UPDATE_IND message is posted
|
|
||||||
* to LIM (due to a set operation on a CFG parameter).
|
|
||||||
*
|
|
||||||
***PARAMS:
|
|
||||||
*
|
|
||||||
***LOGIC:
|
|
||||||
*
|
|
||||||
***ASSUMPTIONS:
|
|
||||||
* NA
|
|
||||||
*
|
|
||||||
***NOTE:
|
|
||||||
*
|
|
||||||
* @param pMac - Pointer to Global MAC structure
|
|
||||||
* @param cfgId - ID of CFG parameter that got updated
|
|
||||||
* @return None
|
|
||||||
*/
|
|
||||||
|
|
||||||
void lim_handle_cf_gparam_update(tpAniSirGlobal pMac, uint32_t cfgId)
|
|
||||||
{
|
|
||||||
uint32_t val1, val2;
|
|
||||||
uint16_t val16;
|
|
||||||
tSirMacHTParametersInfo *pAmpduParamInfo;
|
|
||||||
|
|
||||||
pe_debug("Handling CFG parameter id %X update", cfgId);
|
|
||||||
|
|
||||||
switch (cfgId) {
|
|
||||||
case WNI_CFG_MPDU_DENSITY:
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_AMPDU_PARAMS, &val1) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve HT AMPDU Param CFG");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_MPDU_DENSITY, &val2) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve MPDU Density CFG");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
val16 = (uint16_t) val1;
|
|
||||||
pAmpduParamInfo = (tSirMacHTParametersInfo *) &val16;
|
|
||||||
pAmpduParamInfo->mpduDensity = (uint8_t) val2;
|
|
||||||
if (cfg_set_int
|
|
||||||
(pMac, WNI_CFG_HT_AMPDU_PARAMS,
|
|
||||||
*(uint8_t *) pAmpduParamInfo) != QDF_STATUS_SUCCESS)
|
|
||||||
pe_err("could not update HT AMPDU Param CFG");
|
|
||||||
break;
|
|
||||||
case WNI_CFG_MAX_RX_AMPDU_FACTOR:
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_AMPDU_PARAMS, &val1) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve HT AMPDU Param CFG");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_MAX_RX_AMPDU_FACTOR, &val2) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve AMPDU Factor CFG");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
val16 = (uint16_t) val1;
|
|
||||||
pAmpduParamInfo = (tSirMacHTParametersInfo *) &val16;
|
|
||||||
pAmpduParamInfo->maxRxAMPDUFactor = (uint8_t) val2;
|
|
||||||
if (cfg_set_int
|
|
||||||
(pMac, WNI_CFG_HT_AMPDU_PARAMS,
|
|
||||||
*(uint8_t *) pAmpduParamInfo) != QDF_STATUS_SUCCESS)
|
|
||||||
pe_err("could not update HT AMPDU Param CFG");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WNI_CFG_DOT11_MODE:
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_DOT11_MODE, &val1) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("could not retrieve Dot11 Mode CFG");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} /*** end lim_handle_cf_gparam_update() ***/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lim_apply_configuration()
|
* lim_apply_configuration()
|
||||||
*
|
*
|
||||||
@@ -299,9 +216,8 @@ static void lim_update_config(tpAniSirGlobal pMac, tpPESession psessionEntry)
|
|||||||
uint32_t val;
|
uint32_t val;
|
||||||
bool enabled;
|
bool enabled;
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_SHORT_PREAMBLE, &val) != QDF_STATUS_SUCCESS)
|
psessionEntry->beaconParams.fShortPreamble =
|
||||||
pe_err("cfg get short preamble failed");
|
pMac->mlme_cfg->ht_caps.short_preamble;
|
||||||
psessionEntry->beaconParams.fShortPreamble = (val) ? 1 : 0;
|
|
||||||
|
|
||||||
/* In STA case this parameter is filled during the join request */
|
/* In STA case this parameter is filled during the join request */
|
||||||
if (LIM_IS_AP_ROLE(psessionEntry) ||
|
if (LIM_IS_AP_ROLE(psessionEntry) ||
|
||||||
|
@@ -1513,10 +1513,8 @@ static void lim_process_messages(tpAniSirGlobal mac_ctx,
|
|||||||
lim_update_beacon(mac_ctx);
|
lim_update_beacon(mac_ctx);
|
||||||
break;
|
break;
|
||||||
case SIR_CFG_PARAM_UPDATE_IND:
|
case SIR_CFG_PARAM_UPDATE_IND:
|
||||||
if (!lim_is_system_in_scan_state(mac_ctx)) {
|
if (!lim_is_system_in_scan_state(mac_ctx))
|
||||||
lim_handle_cf_gparam_update(mac_ctx, msg->bodyval);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
/* System is in DFS (Learn) mode.
|
/* System is in DFS (Learn) mode.
|
||||||
* Defer processing this message
|
* Defer processing this message
|
||||||
*/
|
*/
|
||||||
@@ -2216,12 +2214,6 @@ handle_ht_capabilityand_ht_info(struct sAniSirGlobal *pMac,
|
|||||||
tpPESession psessionEntry)
|
tpPESession psessionEntry)
|
||||||
{
|
{
|
||||||
struct mlme_ht_capabilities_info *ht_cap_info;
|
struct mlme_ht_capabilities_info *ht_cap_info;
|
||||||
tSirMacHTParametersInfo macHTParametersInfo;
|
|
||||||
tSirMacHTInfoField1 macHTInfoField1;
|
|
||||||
tSirMacHTInfoField2 macHTInfoField2;
|
|
||||||
tSirMacHTInfoField3 macHTInfoField3;
|
|
||||||
uint32_t cfgValue;
|
|
||||||
uint8_t *ptr;
|
|
||||||
|
|
||||||
ht_cap_info = &pMac->mlme_cfg->ht_caps.ht_cap_info;
|
ht_cap_info = &pMac->mlme_cfg->ht_caps.ht_cap_info;
|
||||||
pMac->lim.gHTLsigTXOPProtection =
|
pMac->lim.gHTLsigTXOPProtection =
|
||||||
@@ -2237,54 +2229,32 @@ handle_ht_capabilityand_ht_info(struct sAniSirGlobal *pMac,
|
|||||||
pMac->lim.gHTDsssCckRate40MHzSupport =
|
pMac->lim.gHTDsssCckRate40MHzSupport =
|
||||||
(uint8_t)ht_cap_info->dsss_cck_mode_40_mhz;
|
(uint8_t)ht_cap_info->dsss_cck_mode_40_mhz;
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_AMPDU_PARAMS, &cfgValue) !=
|
pMac->lim.gHTAMpduDensity =
|
||||||
QDF_STATUS_SUCCESS) {
|
(uint8_t)pMac->mlme_cfg->ht_caps.ampdu_params.mpdu_density;
|
||||||
pe_err("Fail to retrieve WNI_CFG_HT_PARAM_INFO value");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ptr = (uint8_t *) &macHTParametersInfo;
|
|
||||||
*ptr = (uint8_t) (cfgValue & 0xff);
|
|
||||||
pMac->lim.gHTAMpduDensity = (uint8_t) macHTParametersInfo.mpduDensity;
|
|
||||||
pMac->lim.gHTMaxRxAMpduFactor =
|
pMac->lim.gHTMaxRxAMpduFactor =
|
||||||
(uint8_t) macHTParametersInfo.maxRxAMPDUFactor;
|
(uint8_t)pMac->mlme_cfg->ht_caps.ampdu_params.
|
||||||
|
max_rx_ampdu_factor;
|
||||||
|
|
||||||
/* Get HT IE Info */
|
/* Get HT IE Info */
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_INFO_FIELD1, &cfgValue) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("Fail to retrieve WNI_CFG_HT_INFO_FIELD1 value");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ptr = (uint8_t *) &macHTInfoField1;
|
|
||||||
*((uint8_t *) ptr) = (uint8_t) (cfgValue & 0xff);
|
|
||||||
pMac->lim.gHTServiceIntervalGranularity =
|
pMac->lim.gHTServiceIntervalGranularity =
|
||||||
(uint8_t) macHTInfoField1.serviceIntervalGranularity;
|
(uint8_t)pMac->mlme_cfg->ht_caps.info_field_1.
|
||||||
|
service_interval_granularity;
|
||||||
pMac->lim.gHTControlledAccessOnly =
|
pMac->lim.gHTControlledAccessOnly =
|
||||||
(uint8_t) macHTInfoField1.controlledAccessOnly;
|
(uint8_t)pMac->mlme_cfg->ht_caps.info_field_1.
|
||||||
pMac->lim.gHTRifsMode = (uint8_t) macHTInfoField1.rifsMode;
|
controlled_access_only;
|
||||||
|
pMac->lim.gHTRifsMode = (uint8_t)pMac->mlme_cfg->ht_caps.info_field_1.
|
||||||
|
rifs_mode;
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_INFO_FIELD2, &cfgValue) !=
|
pMac->lim.gHTPCOActive = (uint8_t)pMac->mlme_cfg->ht_caps.info_field_3.
|
||||||
QDF_STATUS_SUCCESS) {
|
pco_active;
|
||||||
pe_err("Fail to retrieve WNI_CFG_HT_INFO_FIELD2 value");
|
pMac->lim.gHTPCOPhase = (uint8_t)pMac->mlme_cfg->ht_caps.info_field_3.
|
||||||
return;
|
pco_phase;
|
||||||
}
|
|
||||||
ptr = (uint8_t *) &macHTInfoField2;
|
|
||||||
*((uint16_t *) ptr) = (uint16_t) (cfgValue & 0xffff);
|
|
||||||
pMac->lim.gHTOperMode = (tSirMacHTOperatingMode) macHTInfoField2.opMode;
|
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_INFO_FIELD3, &cfgValue) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
pe_err("Fail to retrieve WNI_CFG_HT_INFO_FIELD3 value");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ptr = (uint8_t *) &macHTInfoField3;
|
|
||||||
*((uint16_t *) ptr) = (uint16_t) (cfgValue & 0xffff);
|
|
||||||
pMac->lim.gHTPCOActive = (uint8_t) macHTInfoField3.pcoActive;
|
|
||||||
pMac->lim.gHTPCOPhase = (uint8_t) macHTInfoField3.pcoPhase;
|
|
||||||
pMac->lim.gHTSecondaryBeacon =
|
pMac->lim.gHTSecondaryBeacon =
|
||||||
(uint8_t) macHTInfoField3.secondaryBeacon;
|
(uint8_t)pMac->mlme_cfg->ht_caps.info_field_3.secondary_beacon;
|
||||||
pMac->lim.gHTDualCTSProtection =
|
pMac->lim.gHTDualCTSProtection = (uint8_t)pMac->mlme_cfg->ht_caps.
|
||||||
(uint8_t) macHTInfoField3.dualCTSProtection;
|
info_field_3.dual_cts_protection;
|
||||||
pMac->lim.gHTSTBCBasicMCS = (uint8_t) macHTInfoField3.basicSTBCMCS;
|
pMac->lim.gHTSTBCBasicMCS = (uint8_t)pMac->mlme_cfg->ht_caps.
|
||||||
|
info_field_3.basic_stbc_mcs;
|
||||||
|
|
||||||
/* The lim globals for channelwidth and secondary chnl have been removed and should not be used during no session;
|
/* The lim globals for channelwidth and secondary chnl have been removed and should not be used during no session;
|
||||||
* instead direct cfg is read and used when no session for transmission of mgmt frames (same as old);
|
* instead direct cfg is read and used when no session for transmission of mgmt frames (same as old);
|
||||||
@@ -2295,7 +2265,8 @@ handle_ht_capabilityand_ht_info(struct sAniSirGlobal *pMac,
|
|||||||
psessionEntry->htCapability =
|
psessionEntry->htCapability =
|
||||||
IS_DOT11_MODE_HT(psessionEntry->dot11mode);
|
IS_DOT11_MODE_HT(psessionEntry->dot11mode);
|
||||||
psessionEntry->beaconParams.fLsigTXOPProtectionFullSupport =
|
psessionEntry->beaconParams.fLsigTXOPProtectionFullSupport =
|
||||||
(uint8_t) macHTInfoField3.lsigTXOPProtectionFullSupport;
|
(uint8_t)pMac->mlme_cfg->ht_caps.info_field_3.
|
||||||
|
lsig_txop_protection_full_support;
|
||||||
lim_init_obss_params(pMac, psessionEntry);
|
lim_init_obss_params(pMac, psessionEntry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -341,10 +341,8 @@ static void mlm_add_sta(tpAniSirGlobal mac_ctx, tpAddStaParams sta_param,
|
|||||||
val = mac_ctx->mlme_cfg->sap_cfg.listen_interval;
|
val = mac_ctx->mlme_cfg->sap_cfg.listen_interval;
|
||||||
sta_param->listenInterval = (uint16_t) val;
|
sta_param->listenInterval = (uint16_t) val;
|
||||||
|
|
||||||
if (QDF_STATUS_SUCCESS != wlan_cfg_get_int(mac_ctx, WNI_CFG_SHORT_PREAMBLE,
|
sta_param->shortPreambleSupported =
|
||||||
&val))
|
mac_ctx->mlme_cfg->ht_caps.short_preamble;
|
||||||
pe_warn("Couldn't get SHORT_PREAMBLE");
|
|
||||||
sta_param->shortPreambleSupported = (uint8_t) val;
|
|
||||||
|
|
||||||
sta_param->assocId = 0; /* Is SMAC OK with this? */
|
sta_param->assocId = 0; /* Is SMAC OK with this? */
|
||||||
sta_param->wmmEnabled = 0;
|
sta_param->wmmEnabled = 0;
|
||||||
|
@@ -436,9 +436,6 @@ void lim_get_random_bssid(tpAniSirGlobal pMac, uint8_t *data);
|
|||||||
void handle_ht_capabilityand_ht_info(struct sAniSirGlobal *pMac,
|
void handle_ht_capabilityand_ht_info(struct sAniSirGlobal *pMac,
|
||||||
tpPESession psessionEntry);
|
tpPESession psessionEntry);
|
||||||
|
|
||||||
/* Function to handle CFG parameter updates */
|
|
||||||
void lim_handle_cf_gparam_update(tpAniSirGlobal, uint32_t);
|
|
||||||
|
|
||||||
void lim_handle_param_update(tpAniSirGlobal pMac, eUpdateIEsType cfgId);
|
void lim_handle_param_update(tpAniSirGlobal pMac, eUpdateIEsType cfgId);
|
||||||
|
|
||||||
/* Function to apply CFG parameters before join/reassoc/start BSS */
|
/* Function to apply CFG parameters before join/reassoc/start BSS */
|
||||||
|
@@ -2742,8 +2742,6 @@ uint8_t lim_get_ht_capability(tpAniSirGlobal pMac,
|
|||||||
uint8_t retVal = 0;
|
uint8_t retVal = 0;
|
||||||
uint8_t *ptr;
|
uint8_t *ptr;
|
||||||
uint32_t cfgValue;
|
uint32_t cfgValue;
|
||||||
struct mlme_ht_capabilities_info ht_cap_info = { 0 };
|
|
||||||
tSirMacExtendedHTCapabilityInfo macExtHTCapabilityInfo = { 0 };
|
|
||||||
tSirMacTxBFCapabilityInfo macTxBFCapabilityInfo = { 0 };
|
tSirMacTxBFCapabilityInfo macTxBFCapabilityInfo = { 0 };
|
||||||
tSirMacASCapabilityInfo macASCapabilityInfo = { 0 };
|
tSirMacASCapabilityInfo macASCapabilityInfo = { 0 };
|
||||||
|
|
||||||
@@ -2759,8 +2757,7 @@ uint8_t lim_get_ht_capability(tpAniSirGlobal pMac,
|
|||||||
cfgValue = 0;
|
cfgValue = 0;
|
||||||
ptr = (uint8_t *) &macASCapabilityInfo;
|
ptr = (uint8_t *) &macASCapabilityInfo;
|
||||||
*((uint8_t *) ptr) = (uint8_t) (cfgValue & 0xff);
|
*((uint8_t *) ptr) = (uint8_t) (cfgValue & 0xff);
|
||||||
} else {
|
} else if (htCap >= eHT_TX_BEAMFORMING &&
|
||||||
if (htCap >= eHT_TX_BEAMFORMING &&
|
|
||||||
htCap < eHT_ANTENNA_SELECTION) {
|
htCap < eHT_ANTENNA_SELECTION) {
|
||||||
/* Get Transmit Beam Forming HT Capabilities */
|
/* Get Transmit Beam Forming HT Capabilities */
|
||||||
if (QDF_STATUS_SUCCESS !=
|
if (QDF_STATUS_SUCCESS !=
|
||||||
@@ -2768,30 +2765,6 @@ uint8_t lim_get_ht_capability(tpAniSirGlobal pMac,
|
|||||||
cfgValue = 0;
|
cfgValue = 0;
|
||||||
ptr = (uint8_t *)&macTxBFCapabilityInfo;
|
ptr = (uint8_t *)&macTxBFCapabilityInfo;
|
||||||
*((uint32_t *)ptr) = (uint32_t)(cfgValue);
|
*((uint32_t *)ptr) = (uint32_t)(cfgValue);
|
||||||
} else {
|
|
||||||
if (htCap >= eHT_PCO && htCap < eHT_TX_BEAMFORMING) {
|
|
||||||
/* Get Extended HT Capabilities */
|
|
||||||
if (QDF_STATUS_SUCCESS !=
|
|
||||||
wlan_cfg_get_int(pMac,
|
|
||||||
WNI_CFG_EXT_HT_CAP_INFO,
|
|
||||||
&cfgValue))
|
|
||||||
cfgValue = 0;
|
|
||||||
ptr = (uint8_t *) &macExtHTCapabilityInfo;
|
|
||||||
*((uint16_t *) ptr) =
|
|
||||||
(uint16_t) (cfgValue & 0xffff);
|
|
||||||
} else {
|
|
||||||
if (htCap < eHT_MAX_RX_AMPDU_FACTOR) {
|
|
||||||
/* Get HT Capabilities */
|
|
||||||
cfgValue = *(uint32_t *)
|
|
||||||
&pMac->mlme_cfg->ht_caps.
|
|
||||||
ht_cap_info;
|
|
||||||
ptr = (uint8_t *)&ht_cap_info;
|
|
||||||
/* CR 265282 MDM SoftAP 2.4PL: SoftAP boot up crash in 2.4 PL builds while same WLAN SU is working on 2.1 PL */
|
|
||||||
*ptr++ = cfgValue & 0xff;
|
|
||||||
*ptr = (cfgValue >> 8) & 0xff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (htCap) {
|
switch (htCap) {
|
||||||
@@ -2800,7 +2773,8 @@ uint8_t lim_get_ht_capability(tpAniSirGlobal pMac,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_STBC_CONTROL_FRAME:
|
case eHT_STBC_CONTROL_FRAME:
|
||||||
retVal = (uint8_t)ht_cap_info.stbc_control_frame;
|
retVal = (uint8_t)pMac->mlme_cfg->ht_caps.ht_cap_info.
|
||||||
|
stbc_control_frame;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_PSMP:
|
case eHT_PSMP:
|
||||||
@@ -2812,7 +2786,8 @@ uint8_t lim_get_ht_capability(tpAniSirGlobal pMac,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_MAX_AMSDU_LENGTH:
|
case eHT_MAX_AMSDU_LENGTH:
|
||||||
retVal = (uint8_t)ht_cap_info.maximal_amsdu_size;
|
retVal = (uint8_t)pMac->mlme_cfg->ht_caps.ht_cap_info.
|
||||||
|
maximal_amsdu_size;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_MAX_AMSDU_NUM:
|
case eHT_MAX_AMSDU_NUM:
|
||||||
@@ -2829,16 +2804,17 @@ uint8_t lim_get_ht_capability(tpAniSirGlobal pMac,
|
|||||||
|
|
||||||
case eHT_SHORT_GI_40MHZ:
|
case eHT_SHORT_GI_40MHZ:
|
||||||
retVal = (uint8_t)(psessionEntry->htConfig.ht_sgi40) ?
|
retVal = (uint8_t)(psessionEntry->htConfig.ht_sgi40) ?
|
||||||
ht_cap_info.short_gi_40_mhz : 0;
|
pMac->mlme_cfg->ht_caps.ht_cap_info.short_gi_40_mhz : 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_SHORT_GI_20MHZ:
|
case eHT_SHORT_GI_20MHZ:
|
||||||
retVal = (uint8_t)(psessionEntry->htConfig.ht_sgi20) ?
|
retVal = (uint8_t)(psessionEntry->htConfig.ht_sgi20) ?
|
||||||
ht_cap_info.short_gi_20_mhz : 0;
|
pMac->mlme_cfg->ht_caps.ht_cap_info.short_gi_20_mhz : 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_GREENFIELD:
|
case eHT_GREENFIELD:
|
||||||
retVal = (uint8_t)ht_cap_info.green_field;
|
retVal = (uint8_t)pMac->mlme_cfg->ht_caps.ht_cap_info.
|
||||||
|
green_field;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_MIMO_POWER_SAVE:
|
case eHT_MIMO_POWER_SAVE:
|
||||||
@@ -2862,15 +2838,17 @@ uint8_t lim_get_ht_capability(tpAniSirGlobal pMac,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_PCO:
|
case eHT_PCO:
|
||||||
retVal = (uint8_t) macExtHTCapabilityInfo.pco;
|
retVal = (uint8_t)pMac->mlme_cfg->ht_caps.ext_cap_info.pco;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_TRANSITION_TIME:
|
case eHT_TRANSITION_TIME:
|
||||||
retVal = (uint8_t) macExtHTCapabilityInfo.transitionTime;
|
retVal = (uint8_t)pMac->mlme_cfg->ht_caps.ext_cap_info.
|
||||||
|
transition_time;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_MCS_FEEDBACK:
|
case eHT_MCS_FEEDBACK:
|
||||||
retVal = (uint8_t) macExtHTCapabilityInfo.mcsFeedback;
|
retVal = (uint8_t)pMac->mlme_cfg->ht_caps.ext_cap_info.
|
||||||
|
mcs_feedback;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eHT_TX_BEAMFORMING:
|
case eHT_TX_BEAMFORMING:
|
||||||
@@ -4156,15 +4134,7 @@ lim_enable_short_preamble(tpAniSirGlobal pMac, uint8_t enable,
|
|||||||
tpUpdateBeaconParams pBeaconParams,
|
tpUpdateBeaconParams pBeaconParams,
|
||||||
tpPESession psessionEntry)
|
tpPESession psessionEntry)
|
||||||
{
|
{
|
||||||
uint32_t val;
|
if (!pMac->mlme_cfg->ht_caps.short_preamble)
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_SHORT_PREAMBLE, &val) != QDF_STATUS_SUCCESS) {
|
|
||||||
/* Could not get short preamble enabled flag from CFG. Log error. */
|
|
||||||
pe_err("could not retrieve short preamble flag");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!val)
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
/* 11G short preamble switching is disabled. */
|
/* 11G short preamble switching is disabled. */
|
||||||
|
@@ -612,12 +612,7 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac,
|
|||||||
uint8_t nCfgValue8;
|
uint8_t nCfgValue8;
|
||||||
qdf_size_t ncfglen;
|
qdf_size_t ncfglen;
|
||||||
QDF_STATUS nSirStatus;
|
QDF_STATUS nSirStatus;
|
||||||
tSirMacHTParametersInfo *pHTParametersInfo;
|
|
||||||
uint8_t disable_high_ht_mcs_2x2 = 0;
|
uint8_t disable_high_ht_mcs_2x2 = 0;
|
||||||
union {
|
|
||||||
uint16_t nCfgValue16;
|
|
||||||
tSirMacExtendedHTCapabilityInfo extHtCapInfo;
|
|
||||||
} uHTCapabilityInfo;
|
|
||||||
|
|
||||||
tSirMacTxBFCapabilityInfo *pTxBFCapabilityInfo;
|
tSirMacTxBFCapabilityInfo *pTxBFCapabilityInfo;
|
||||||
tSirMacASCapabilityInfo *pASCapabilityInfo;
|
tSirMacASCapabilityInfo *pASCapabilityInfo;
|
||||||
@@ -659,14 +654,11 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac,
|
|||||||
pDot11f->shortGI40MHz = 0;
|
pDot11f->shortGI40MHz = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_HT_AMPDU_PARAMS, nCfgValue);
|
pDot11f->maxRxAMPDUFactor =
|
||||||
|
pMac->mlme_cfg->ht_caps.ampdu_params.max_rx_ampdu_factor;
|
||||||
nCfgValue8 = (uint8_t) nCfgValue;
|
pDot11f->mpduDensity =
|
||||||
pHTParametersInfo = (tSirMacHTParametersInfo *) &nCfgValue8;
|
pMac->mlme_cfg->ht_caps.ampdu_params.mpdu_density;
|
||||||
|
pDot11f->reserved1 = pMac->mlme_cfg->ht_caps.ampdu_params.reserved;
|
||||||
pDot11f->maxRxAMPDUFactor = pHTParametersInfo->maxRxAMPDUFactor;
|
|
||||||
pDot11f->mpduDensity = pHTParametersInfo->mpduDensity;
|
|
||||||
pDot11f->reserved1 = pHTParametersInfo->reserved;
|
|
||||||
|
|
||||||
ncfglen = SIZE_OF_SUPPORTED_MCS_SET;
|
ncfglen = SIZE_OF_SUPPORTED_MCS_SET;
|
||||||
nSirStatus = wlan_mlme_get_cfg_str(
|
nSirStatus = wlan_mlme_get_cfg_str(
|
||||||
@@ -709,13 +701,11 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac,
|
|||||||
pDot11f->mimoPowerSave = psessionEntry->htSmpsvalue;
|
pDot11f->mimoPowerSave = psessionEntry->htSmpsvalue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_EXT_HT_CAP_INFO, nCfgValue);
|
pDot11f->pco = pMac->mlme_cfg->ht_caps.ext_cap_info.pco;
|
||||||
|
pDot11f->transitionTime =
|
||||||
uHTCapabilityInfo.nCfgValue16 = nCfgValue & 0xFFFF;
|
pMac->mlme_cfg->ht_caps.ext_cap_info.transition_time;
|
||||||
|
pDot11f->mcsFeedback =
|
||||||
pDot11f->pco = uHTCapabilityInfo.extHtCapInfo.pco;
|
pMac->mlme_cfg->ht_caps.ext_cap_info.mcs_feedback;
|
||||||
pDot11f->transitionTime = uHTCapabilityInfo.extHtCapInfo.transitionTime;
|
|
||||||
pDot11f->mcsFeedback = uHTCapabilityInfo.extHtCapInfo.mcsFeedback;
|
|
||||||
|
|
||||||
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_TX_BF_CAP, nCfgValue);
|
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_TX_BF_CAP, nCfgValue);
|
||||||
|
|
||||||
@@ -1155,23 +1145,8 @@ QDF_STATUS
|
|||||||
populate_dot11f_ht_info(tpAniSirGlobal pMac,
|
populate_dot11f_ht_info(tpAniSirGlobal pMac,
|
||||||
tDot11fIEHTInfo *pDot11f, tpPESession psessionEntry)
|
tDot11fIEHTInfo *pDot11f, tpPESession psessionEntry)
|
||||||
{
|
{
|
||||||
uint32_t nCfgValue;
|
|
||||||
qdf_size_t ncfglen;
|
qdf_size_t ncfglen;
|
||||||
uint8_t htInfoField1;
|
|
||||||
uint16_t htInfoField2;
|
|
||||||
QDF_STATUS nSirStatus;
|
QDF_STATUS nSirStatus;
|
||||||
tSirMacHTInfoField1 *pHTInfoField1;
|
|
||||||
tSirMacHTInfoField2 *pHTInfoField2;
|
|
||||||
union {
|
|
||||||
uint16_t nCfgValue16;
|
|
||||||
tSirMacHTInfoField3 infoField3;
|
|
||||||
} uHTInfoField;
|
|
||||||
union {
|
|
||||||
uint16_t nCfgValue16;
|
|
||||||
tSirMacHTInfoField2 infoField2;
|
|
||||||
} uHTInfoField2 = {
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
if (NULL == psessionEntry) {
|
if (NULL == psessionEntry) {
|
||||||
pe_err("Invalid session entry");
|
pe_err("Invalid session entry");
|
||||||
@@ -1180,84 +1155,39 @@ populate_dot11f_ht_info(tpAniSirGlobal pMac,
|
|||||||
|
|
||||||
pDot11f->primaryChannel = psessionEntry->currentOperChannel;
|
pDot11f->primaryChannel = psessionEntry->currentOperChannel;
|
||||||
|
|
||||||
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_HT_INFO_FIELD1, nCfgValue);
|
pDot11f->secondaryChannelOffset =
|
||||||
|
psessionEntry->htSecondaryChannelOffset;
|
||||||
htInfoField1 = (uint8_t) nCfgValue;
|
pDot11f->recommendedTxWidthSet =
|
||||||
|
psessionEntry->htRecommendedTxWidthSet;
|
||||||
pHTInfoField1 = (tSirMacHTInfoField1 *) &htInfoField1;
|
pDot11f->rifsMode = psessionEntry->beaconParams.fRIFSMode;
|
||||||
pHTInfoField1->rifsMode = psessionEntry->beaconParams.fRIFSMode;
|
pDot11f->controlledAccessOnly =
|
||||||
pHTInfoField1->serviceIntervalGranularity =
|
pMac->mlme_cfg->ht_caps.info_field_1.controlled_access_only;
|
||||||
|
pDot11f->serviceIntervalGranularity =
|
||||||
pMac->lim.gHTServiceIntervalGranularity;
|
pMac->lim.gHTServiceIntervalGranularity;
|
||||||
|
|
||||||
pHTInfoField1->secondaryChannelOffset =
|
if (LIM_IS_AP_ROLE(psessionEntry)) {
|
||||||
psessionEntry->htSecondaryChannelOffset;
|
pDot11f->opMode = psessionEntry->htOperMode;
|
||||||
pHTInfoField1->recommendedTxWidthSet =
|
pDot11f->nonGFDevicesPresent =
|
||||||
psessionEntry->htRecommendedTxWidthSet;
|
|
||||||
|
|
||||||
if ((psessionEntry) && LIM_IS_AP_ROLE(psessionEntry)) {
|
|
||||||
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_HT_INFO_FIELD2,
|
|
||||||
nCfgValue);
|
|
||||||
|
|
||||||
uHTInfoField2.nCfgValue16 = nCfgValue & 0xFFFF; /* this is added for fixing CRs on MDM9K platform - 257951, 259577 */
|
|
||||||
|
|
||||||
uHTInfoField2.infoField2.opMode = psessionEntry->htOperMode;
|
|
||||||
uHTInfoField2.infoField2.nonGFDevicesPresent =
|
|
||||||
psessionEntry->beaconParams.llnNonGFCoexist;
|
psessionEntry->beaconParams.llnNonGFCoexist;
|
||||||
uHTInfoField2.infoField2.obssNonHTStaPresent = psessionEntry->beaconParams.gHTObssMode; /*added for Obss */
|
pDot11f->obssNonHTStaPresent =
|
||||||
|
psessionEntry->beaconParams.gHTObssMode;
|
||||||
uHTInfoField2.infoField2.reserved = 0;
|
pDot11f->reserved = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_HT_INFO_FIELD2,
|
pDot11f->opMode = 0;
|
||||||
nCfgValue);
|
pDot11f->nonGFDevicesPresent = 0;
|
||||||
|
pDot11f->obssNonHTStaPresent = 0;
|
||||||
htInfoField2 = (uint16_t) nCfgValue;
|
pDot11f->reserved = 0;
|
||||||
|
|
||||||
pHTInfoField2 = (tSirMacHTInfoField2 *) &htInfoField2;
|
|
||||||
pHTInfoField2->opMode = pMac->lim.gHTOperMode;
|
|
||||||
pHTInfoField2->nonGFDevicesPresent =
|
|
||||||
pMac->lim.gHTNonGFDevicesPresent;
|
|
||||||
pHTInfoField2->obssNonHTStaPresent = pMac->lim.gHTObssMode; /*added for Obss */
|
|
||||||
|
|
||||||
pHTInfoField2->reserved = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CFG_GET_INT(nSirStatus, pMac, WNI_CFG_HT_INFO_FIELD3, nCfgValue);
|
pDot11f->basicSTBCMCS = pMac->lim.gHTSTBCBasicMCS;
|
||||||
|
pDot11f->dualCTSProtection = pMac->lim.gHTDualCTSProtection;
|
||||||
uHTInfoField.nCfgValue16 = nCfgValue & 0xFFFF;
|
pDot11f->secondaryBeacon = pMac->lim.gHTSecondaryBeacon;
|
||||||
|
|
||||||
uHTInfoField.infoField3.basicSTBCMCS = pMac->lim.gHTSTBCBasicMCS;
|
|
||||||
uHTInfoField.infoField3.dualCTSProtection =
|
|
||||||
pMac->lim.gHTDualCTSProtection;
|
|
||||||
uHTInfoField.infoField3.secondaryBeacon = pMac->lim.gHTSecondaryBeacon;
|
|
||||||
uHTInfoField.infoField3.lsigTXOPProtectionFullSupport =
|
|
||||||
psessionEntry->beaconParams.fLsigTXOPProtectionFullSupport;
|
|
||||||
uHTInfoField.infoField3.pcoActive = pMac->lim.gHTPCOActive;
|
|
||||||
uHTInfoField.infoField3.pcoPhase = pMac->lim.gHTPCOPhase;
|
|
||||||
uHTInfoField.infoField3.reserved = 0;
|
|
||||||
|
|
||||||
pDot11f->secondaryChannelOffset = pHTInfoField1->secondaryChannelOffset;
|
|
||||||
pDot11f->recommendedTxWidthSet = pHTInfoField1->recommendedTxWidthSet;
|
|
||||||
pDot11f->rifsMode = pHTInfoField1->rifsMode;
|
|
||||||
pDot11f->controlledAccessOnly = pHTInfoField1->controlledAccessOnly;
|
|
||||||
pDot11f->serviceIntervalGranularity =
|
|
||||||
pHTInfoField1->serviceIntervalGranularity;
|
|
||||||
|
|
||||||
pDot11f->opMode = uHTInfoField2.infoField2.opMode;
|
|
||||||
pDot11f->nonGFDevicesPresent =
|
|
||||||
uHTInfoField2.infoField2.nonGFDevicesPresent;
|
|
||||||
pDot11f->obssNonHTStaPresent =
|
|
||||||
uHTInfoField2.infoField2.obssNonHTStaPresent;
|
|
||||||
pDot11f->reserved = uHTInfoField2.infoField2.reserved;
|
|
||||||
|
|
||||||
pDot11f->basicSTBCMCS = uHTInfoField.infoField3.basicSTBCMCS;
|
|
||||||
pDot11f->dualCTSProtection = uHTInfoField.infoField3.dualCTSProtection;
|
|
||||||
pDot11f->secondaryBeacon = uHTInfoField.infoField3.secondaryBeacon;
|
|
||||||
pDot11f->lsigTXOPProtectionFullSupport =
|
pDot11f->lsigTXOPProtectionFullSupport =
|
||||||
uHTInfoField.infoField3.lsigTXOPProtectionFullSupport;
|
psessionEntry->beaconParams.fLsigTXOPProtectionFullSupport;
|
||||||
pDot11f->pcoActive = uHTInfoField.infoField3.pcoActive;
|
pDot11f->pcoActive = pMac->lim.gHTPCOActive;
|
||||||
pDot11f->pcoPhase = uHTInfoField.infoField3.pcoPhase;
|
pDot11f->pcoPhase = pMac->lim.gHTPCOPhase;
|
||||||
pDot11f->reserved2 = uHTInfoField.infoField3.reserved;
|
pDot11f->reserved2 = 0;
|
||||||
|
|
||||||
ncfglen = SIZE_OF_BASIC_MCS_SET;
|
ncfglen = SIZE_OF_BASIC_MCS_SET;
|
||||||
nSirStatus = wlan_mlme_get_cfg_str(pDot11f->basicMCSSet,
|
nSirStatus = wlan_mlme_get_cfg_str(pDot11f->basicMCSSet,
|
||||||
&pMac->mlme_cfg->rates.basic_mcs_set,
|
&pMac->mlme_cfg->rates.basic_mcs_set,
|
||||||
@@ -5931,8 +5861,7 @@ populate_dot11f_timing_advert_frame(tpAniSirGlobal mac_ctx,
|
|||||||
if (val)
|
if (val)
|
||||||
frame->Capabilities.privacy = 1;
|
frame->Capabilities.privacy = 1;
|
||||||
|
|
||||||
wlan_cfg_get_int(mac_ctx, WNI_CFG_SHORT_PREAMBLE, &val);
|
if (mac_ctx->mlme_cfg->ht_caps.short_preamble)
|
||||||
if (val)
|
|
||||||
frame->Capabilities.shortPreamble = 1;
|
frame->Capabilities.shortPreamble = 1;
|
||||||
|
|
||||||
wlan_cfg_get_int(mac_ctx, WNI_CFG_11H_ENABLED, &val);
|
wlan_cfg_get_int(mac_ctx, WNI_CFG_11H_ENABLED, &val);
|
||||||
|
@@ -1137,9 +1137,6 @@ typedef struct tagCsrConfigParam {
|
|||||||
bool fScanTwice;
|
bool fScanTwice;
|
||||||
bool enableVhtFor24GHz;
|
bool enableVhtFor24GHz;
|
||||||
bool vendor_vht_sap;
|
bool vendor_vht_sap;
|
||||||
uint8_t enableAmpduPs;
|
|
||||||
uint8_t enableHtSmps;
|
|
||||||
uint8_t htSmps;
|
|
||||||
bool send_smps_action;
|
bool send_smps_action;
|
||||||
/*
|
/*
|
||||||
* To enable/disable scanning only 2.4Ghz channels on first scan
|
* To enable/disable scanning only 2.4Ghz channels on first scan
|
||||||
@@ -1156,7 +1153,6 @@ typedef struct tagCsrConfigParam {
|
|||||||
uint8_t enable_tx_ldpc;
|
uint8_t enable_tx_ldpc;
|
||||||
uint8_t enable_rx_ldpc;
|
uint8_t enable_rx_ldpc;
|
||||||
uint8_t disable_high_ht_mcs_2x2;
|
uint8_t disable_high_ht_mcs_2x2;
|
||||||
uint8_t max_amsdu_num;
|
|
||||||
uint32_t ho_delay_for_rx;
|
uint32_t ho_delay_for_rx;
|
||||||
uint32_t min_delay_btw_roam_scans;
|
uint32_t min_delay_btw_roam_scans;
|
||||||
uint32_t roam_trigger_reason_bitmask;
|
uint32_t roam_trigger_reason_bitmask;
|
||||||
|
@@ -488,8 +488,6 @@ struct csr_config {
|
|||||||
/* To enable scanning 2g channels twice on single scan req from HDD */
|
/* To enable scanning 2g channels twice on single scan req from HDD */
|
||||||
bool fScanTwice;
|
bool fScanTwice;
|
||||||
uint32_t nVhtChannelWidth;
|
uint32_t nVhtChannelWidth;
|
||||||
uint8_t enableHtSmps;
|
|
||||||
uint8_t htSmps;
|
|
||||||
bool send_smps_action;
|
bool send_smps_action;
|
||||||
uint8_t tx_ldpc_enable;
|
uint8_t tx_ldpc_enable;
|
||||||
uint8_t rx_ldpc_enable;
|
uint8_t rx_ldpc_enable;
|
||||||
@@ -498,7 +496,6 @@ struct csr_config {
|
|||||||
* Enable/Disable heartbeat offload
|
* Enable/Disable heartbeat offload
|
||||||
*/
|
*/
|
||||||
bool enableHeartBeatOffload;
|
bool enableHeartBeatOffload;
|
||||||
uint8_t max_amsdu_num;
|
|
||||||
uint32_t ho_delay_for_rx;
|
uint32_t ho_delay_for_rx;
|
||||||
uint32_t min_delay_btw_roam_scans;
|
uint32_t min_delay_btw_roam_scans;
|
||||||
uint32_t roam_trigger_reason_bitmask;
|
uint32_t roam_trigger_reason_bitmask;
|
||||||
|
@@ -13670,9 +13670,9 @@ QDF_STATUS sme_update_mimo_power_save(tHalHandle hal,
|
|||||||
sme_debug("SMPS enable: %d mode: %d send action: %d",
|
sme_debug("SMPS enable: %d mode: %d send action: %d",
|
||||||
is_ht_smps_enabled, ht_smps_mode,
|
is_ht_smps_enabled, ht_smps_mode,
|
||||||
send_smps_action);
|
send_smps_action);
|
||||||
mac_ctx->roam.configParam.enableHtSmps =
|
mac_ctx->mlme_cfg->ht_caps.enable_smps =
|
||||||
is_ht_smps_enabled;
|
is_ht_smps_enabled;
|
||||||
mac_ctx->roam.configParam.htSmps = ht_smps_mode;
|
mac_ctx->mlme_cfg->ht_caps.smps = ht_smps_mode;
|
||||||
mac_ctx->roam.configParam.send_smps_action =
|
mac_ctx->roam.configParam.send_smps_action =
|
||||||
send_smps_action;
|
send_smps_action;
|
||||||
|
|
||||||
|
@@ -2966,16 +2966,12 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
|
|||||||
/* Remove this code once SLM_Sessionization is supported */
|
/* Remove this code once SLM_Sessionization is supported */
|
||||||
/* BMPS_WORKAROUND_NOT_NEEDED */
|
/* BMPS_WORKAROUND_NOT_NEEDED */
|
||||||
pMac->roam.configParam.doBMPSWorkaround = 0;
|
pMac->roam.configParam.doBMPSWorkaround = 0;
|
||||||
pMac->roam.configParam.enableHtSmps = pParam->enableHtSmps;
|
|
||||||
pMac->roam.configParam.htSmps = pParam->htSmps;
|
|
||||||
pMac->roam.configParam.send_smps_action =
|
pMac->roam.configParam.send_smps_action =
|
||||||
pParam->send_smps_action;
|
pParam->send_smps_action;
|
||||||
pMac->roam.configParam.tx_ldpc_enable = pParam->enable_tx_ldpc;
|
pMac->roam.configParam.tx_ldpc_enable = pParam->enable_tx_ldpc;
|
||||||
pMac->roam.configParam.rx_ldpc_enable = pParam->enable_rx_ldpc;
|
pMac->roam.configParam.rx_ldpc_enable = pParam->enable_rx_ldpc;
|
||||||
pMac->roam.configParam.disable_high_ht_mcs_2x2 =
|
pMac->roam.configParam.disable_high_ht_mcs_2x2 =
|
||||||
pParam->disable_high_ht_mcs_2x2;
|
pParam->disable_high_ht_mcs_2x2;
|
||||||
pMac->roam.configParam.max_amsdu_num =
|
|
||||||
pParam->max_amsdu_num;
|
|
||||||
pMac->roam.configParam.ho_delay_for_rx =
|
pMac->roam.configParam.ho_delay_for_rx =
|
||||||
pParam->ho_delay_for_rx;
|
pParam->ho_delay_for_rx;
|
||||||
pMac->roam.configParam.min_delay_btw_roam_scans =
|
pMac->roam.configParam.min_delay_btw_roam_scans =
|
||||||
@@ -3190,7 +3186,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
|
|||||||
pParam->enable_rx_ldpc = cfg_params->rx_ldpc_enable;
|
pParam->enable_rx_ldpc = cfg_params->rx_ldpc_enable;
|
||||||
pParam->wep_tkip_in_he = cfg_params->wep_tkip_in_he;
|
pParam->wep_tkip_in_he = cfg_params->wep_tkip_in_he;
|
||||||
pParam->disable_high_ht_mcs_2x2 = cfg_params->disable_high_ht_mcs_2x2;
|
pParam->disable_high_ht_mcs_2x2 = cfg_params->disable_high_ht_mcs_2x2;
|
||||||
pParam->max_amsdu_num = cfg_params->max_amsdu_num;
|
|
||||||
pParam->ho_delay_for_rx = cfg_params->ho_delay_for_rx;
|
pParam->ho_delay_for_rx = cfg_params->ho_delay_for_rx;
|
||||||
pParam->min_delay_btw_roam_scans = cfg_params->min_delay_btw_roam_scans;
|
pParam->min_delay_btw_roam_scans = cfg_params->min_delay_btw_roam_scans;
|
||||||
pParam->roam_trigger_reason_bitmask =
|
pParam->roam_trigger_reason_bitmask =
|
||||||
@@ -3239,8 +3234,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
|
|||||||
pMac->sme.ps_global_info.auto_bmps_timer_val;
|
pMac->sme.ps_global_info.auto_bmps_timer_val;
|
||||||
pParam->f_sta_miracast_mcc_rest_time_val =
|
pParam->f_sta_miracast_mcc_rest_time_val =
|
||||||
pMac->f_sta_miracast_mcc_rest_time_val;
|
pMac->f_sta_miracast_mcc_rest_time_val;
|
||||||
pParam->enableHtSmps = pMac->roam.configParam.enableHtSmps;
|
|
||||||
pParam->htSmps = pMac->roam.configParam.htSmps;
|
|
||||||
pParam->send_smps_action = pMac->roam.configParam.send_smps_action;
|
pParam->send_smps_action = pMac->roam.configParam.send_smps_action;
|
||||||
pParam->sta_roam_policy_params.dfs_mode =
|
pParam->sta_roam_policy_params.dfs_mode =
|
||||||
pMac->roam.configParam.sta_roam_policy.dfs_mode;
|
pMac->roam.configParam.sta_roam_policy.dfs_mode;
|
||||||
@@ -15785,17 +15778,17 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
|
|||||||
pMac->mlme_cfg->vht_caps.vht_cap_info.enable_gid;
|
pMac->mlme_cfg->vht_caps.vht_cap_info.enable_gid;
|
||||||
|
|
||||||
csr_join_req->enableAmpduPs =
|
csr_join_req->enableAmpduPs =
|
||||||
(uint8_t)pMac->mlme_cfg->feature_flags.enable_ampdu;
|
(uint8_t)pMac->mlme_cfg->ht_caps.enable_ampdu_ps;
|
||||||
|
|
||||||
csr_join_req->enableHtSmps =
|
csr_join_req->enableHtSmps =
|
||||||
(uint8_t) pMac->roam.configParam.enableHtSmps;
|
(uint8_t)pMac->mlme_cfg->ht_caps.enable_smps;
|
||||||
|
|
||||||
csr_join_req->htSmps = (uint8_t) pMac->roam.configParam.htSmps;
|
csr_join_req->htSmps = (uint8_t)pMac->mlme_cfg->ht_caps.smps;
|
||||||
csr_join_req->send_smps_action =
|
csr_join_req->send_smps_action =
|
||||||
pMac->roam.configParam.send_smps_action;
|
pMac->roam.configParam.send_smps_action;
|
||||||
|
|
||||||
csr_join_req->max_amsdu_num =
|
csr_join_req->max_amsdu_num =
|
||||||
(uint8_t) pMac->roam.configParam.max_amsdu_num;
|
(uint8_t)pMac->mlme_cfg->ht_caps.max_num_amsdu;
|
||||||
|
|
||||||
if (pMac->roam.roamSession[sessionId].fWMMConnection)
|
if (pMac->roam.roamSession[sessionId].fWMMConnection)
|
||||||
csr_join_req->isWMEenabled = true;
|
csr_join_req->isWMEenabled = true;
|
||||||
|
@@ -2655,11 +2655,6 @@ QDF_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
|
|||||||
uint16_t *pCfgValue16;
|
uint16_t *pCfgValue16;
|
||||||
uint8_t nCfgValue8, *pCfgValue8;
|
uint8_t nCfgValue8, *pCfgValue8;
|
||||||
tSirMacQosInfoStation macQosInfoSta;
|
tSirMacQosInfoStation macQosInfoSta;
|
||||||
union {
|
|
||||||
uint16_t nCfgValue16;
|
|
||||||
struct mlme_ht_capabilities_info htCapInfo;
|
|
||||||
tSirMacExtendedHTCapabilityInfo extHtCapInfo;
|
|
||||||
} uHTCapabilityInfo;
|
|
||||||
|
|
||||||
qdf_mem_set(&macQosInfoSta, sizeof(tSirMacQosInfoStation), 0);
|
qdf_mem_set(&macQosInfoSta, sizeof(tSirMacQosInfoStation), 0);
|
||||||
/* Roaming is done only for INFRA STA type.
|
/* Roaming is done only for INFRA STA type.
|
||||||
@@ -2678,13 +2673,8 @@ QDF_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
|
|||||||
val = pMac->mlme_cfg->wep_params.is_privacy_enabled;
|
val = pMac->mlme_cfg->wep_params.is_privacy_enabled;
|
||||||
if (val)
|
if (val)
|
||||||
selfCaps.privacy = 1;
|
selfCaps.privacy = 1;
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_SHORT_PREAMBLE, &val) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
if (pMac->mlme_cfg->ht_caps.short_preamble)
|
||||||
QDF_TRACE(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_ERROR,
|
|
||||||
"Failed to get WNI_CFG_SHORT_PREAMBLE");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
if (val)
|
|
||||||
selfCaps.shortPreamble = 1;
|
selfCaps.shortPreamble = 1;
|
||||||
|
|
||||||
selfCaps.pbcc = 0;
|
selfCaps.pbcc = 0;
|
||||||
@@ -2735,19 +2725,14 @@ QDF_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
|
|||||||
roam_offload_params->capability <<= RSN_CAPS_SHIFT;
|
roam_offload_params->capability <<= RSN_CAPS_SHIFT;
|
||||||
roam_offload_params->capability |= ((*pCfgValue16) & 0xFFFF);
|
roam_offload_params->capability |= ((*pCfgValue16) & 0xFFFF);
|
||||||
|
|
||||||
nCfgValue = *(uint32_t *)&pMac->mlme_cfg->ht_caps.ht_cap_info;
|
|
||||||
uHTCapabilityInfo.nCfgValue16 = nCfgValue & 0xFFFF;
|
|
||||||
roam_offload_params->ht_caps_info =
|
roam_offload_params->ht_caps_info =
|
||||||
uHTCapabilityInfo.nCfgValue16 & 0xFFFF;
|
*(uint32_t *)&pMac->mlme_cfg->ht_caps.ht_cap_info;
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_HT_AMPDU_PARAMS, &nCfgValue) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
roam_offload_params->ampdu_param =
|
||||||
QDF_TRACE(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_ERROR,
|
*(uint32_t *)&pMac->mlme_cfg->ht_caps.ampdu_params;
|
||||||
"Failed to get WNI_CFG_HT_AMPDU_PARAMS");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
roam_offload_params->ht_ext_cap =
|
||||||
}
|
*(uint32_t *)&pMac->mlme_cfg->ht_caps.ext_cap_info;
|
||||||
/* tSirMacHTParametersInfo */
|
|
||||||
nCfgValue8 = (uint8_t) nCfgValue;
|
|
||||||
roam_offload_params->ampdu_param = (nCfgValue8) & 0xFF;
|
|
||||||
|
|
||||||
val_len = ROAM_OFFLOAD_NUM_MCS_SET;
|
val_len = ROAM_OFFLOAD_NUM_MCS_SET;
|
||||||
if (wlan_mlme_get_cfg_str((uint8_t *)roam_offload_params->mcsset,
|
if (wlan_mlme_get_cfg_str((uint8_t *)roam_offload_params->mcsset,
|
||||||
@@ -2757,16 +2742,6 @@ QDF_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
|
|||||||
"Failed to get CFG_SUPPORTED_MCS_SET");
|
"Failed to get CFG_SUPPORTED_MCS_SET");
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_EXT_HT_CAP_INFO, &nCfgValue) !=
|
|
||||||
QDF_STATUS_SUCCESS) {
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_ERROR,
|
|
||||||
"Failed to get WNI_CFG_EXT_HT_CAP_INFO");
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
/* uHTCapabilityInfo.extHtCapInfo */
|
|
||||||
uHTCapabilityInfo.nCfgValue16 = nCfgValue & 0xFFFF;
|
|
||||||
roam_offload_params->ht_ext_cap =
|
|
||||||
uHTCapabilityInfo.nCfgValue16 & 0xFFFF;
|
|
||||||
|
|
||||||
if (wlan_cfg_get_int(pMac, WNI_CFG_TX_BF_CAP, &nCfgValue) !=
|
if (wlan_cfg_get_int(pMac, WNI_CFG_TX_BF_CAP, &nCfgValue) !=
|
||||||
QDF_STATUS_SUCCESS) {
|
QDF_STATUS_SUCCESS) {
|
||||||
|
Reference in New Issue
Block a user