mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
qcacld-3.0: Update 11AX - HE IE's based on new draft - 4/4
Update HE Capability/Operation IE based on new draft version D1.3. Update driver changes for the frame changes made as part of Ia295422fa697edea8a571be359f9983110bba969. Change-Id: I22e4641e8fd15d647eb655c41c61389da8775766 CRs-Fixed: 2092845
This commit is contained in:
parent
4051b0240e
commit
d8feac152e
24 changed files with 245 additions and 172 deletions
|
|
@ -55,7 +55,7 @@ void hdd_update_tgt_he_cap(struct hdd_context *hdd_ctx,
|
|||
{
|
||||
uint32_t ppet_size = sizeof(tDot11fIEppe_threshold);
|
||||
QDF_STATUS status;
|
||||
tDot11fIEvendor_he_cap *he_cap = &cfg->he_cap;
|
||||
tDot11fIEhe_cap *he_cap = &cfg->he_cap;
|
||||
|
||||
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_CONTROL, he_cap->htc_he);
|
||||
hdd_he_set_wni_cfg(hdd_ctx, WNI_CFG_HE_TWT_REQUESTOR,
|
||||
|
|
@ -180,7 +180,7 @@ void wlan_hdd_check_11ax_support(struct hdd_beacon_data *beacon,
|
|||
{
|
||||
const uint8_t *ie;
|
||||
|
||||
ie = wlan_get_vendor_ie_ptr_from_oui(HE_CAP_OUI_TYPE, HE_CAP_OUI_SIZE,
|
||||
ie = wlan_get_ext_ie_ptr_from_ext_id(HE_CAP_OUI_TYPE, HE_CAP_OUI_SIZE,
|
||||
beacon->tail, beacon->tail_len);
|
||||
if (ie)
|
||||
config->SapHw_mode = eCSR_DOT11_MODE_11ax;
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@
|
|||
#include <wlan_reg_ucfg_api.h>
|
||||
#include "wlan_utility.h"
|
||||
#include <wlan_p2p_ucfg_api.h>
|
||||
#include "sir_api.h"
|
||||
|
||||
#define IS_UP(_dev) \
|
||||
(((_dev)->flags & (IFF_RUNNING|IFF_UP)) == (IFF_RUNNING|IFF_UP))
|
||||
|
|
@ -6674,6 +6675,42 @@ static void wlan_hdd_check_11gmode(const u8 *pIe, u8 *require_ht,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
/**
|
||||
* wlan_hdd_add_extn_ie() - add extension IE
|
||||
* @adapter: Pointer to hostapd adapter
|
||||
* @genie: Pointer to ie to be added
|
||||
* @total_ielen: Pointer to store total ie length
|
||||
* @oui: Pointer to oui
|
||||
* @oui_size: Size of oui
|
||||
*
|
||||
* Return: 0 for success non-zero for failure
|
||||
*/
|
||||
static int wlan_hdd_add_extn_ie(struct hdd_adapter *adapter, uint8_t *genie,
|
||||
uint16_t *total_ielen, uint8_t *oui,
|
||||
uint8_t oui_size)
|
||||
{
|
||||
const uint8_t *ie;
|
||||
uint16_t ielen = 0;
|
||||
struct hdd_beacon_data *beacon = adapter->sessionCtx.ap.beacon;
|
||||
|
||||
ie = wlan_get_ext_ie_ptr_from_ext_id(oui, oui_size,
|
||||
beacon->tail,
|
||||
beacon->tail_len);
|
||||
if (ie) {
|
||||
ielen = ie[1] + 2;
|
||||
if ((*total_ielen + ielen) <= MAX_GENIE_LEN) {
|
||||
qdf_mem_copy(&genie[*total_ielen], ie, ielen);
|
||||
} else {
|
||||
hdd_err("**Ie Length is too big***");
|
||||
return -EINVAL;
|
||||
}
|
||||
*total_ielen += ielen;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_hdd_add_hostapd_conf_vsie() - configure Vendor IE in sap mode
|
||||
* @adapter: Pointer to hostapd adapter
|
||||
|
|
@ -6918,6 +6955,41 @@ static void wlan_hdd_add_sap_obss_scan_ie(
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_hdd_cfg80211_update_apies() - update ap mode 11ax ies
|
||||
* @adapter: Pointer to hostapd adapter
|
||||
* @genie: generic IE buffer
|
||||
* @total_ielen: out param to update total ielen
|
||||
*
|
||||
* Return: 0 for success non-zero for failure
|
||||
*/
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
static int hdd_update_11ax_apies(struct hdd_adapter *adapter,
|
||||
uint8_t *genie, uint16_t *total_ielen)
|
||||
{
|
||||
if (wlan_hdd_add_extn_ie(adapter, genie, total_ielen,
|
||||
HE_CAP_OUI_TYPE, HE_CAP_OUI_SIZE)) {
|
||||
hdd_err("Adding HE Cap ie failed");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (wlan_hdd_add_extn_ie(adapter, genie, total_ielen,
|
||||
HE_OP_OUI_TYPE, HE_OP_OUI_SIZE)) {
|
||||
hdd_err("Adding HE Op ie failed");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static int hdd_update_11ax_apies(struct hdd_adapter *adapter,
|
||||
uint8_t *genie, uint16_t *total_ielen)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_hdd_cfg80211_update_apies() - update ap mode ies
|
||||
* @adapter: Pointer to hostapd adapter
|
||||
|
|
@ -6963,6 +7035,10 @@ int wlan_hdd_cfg80211_update_apies(struct hdd_adapter *adapter)
|
|||
wlan_hdd_add_hostapd_conf_vsie(adapter, genie,
|
||||
&total_ielen);
|
||||
|
||||
ret = hdd_update_11ax_apies(adapter, genie, &total_ielen);
|
||||
if (ret)
|
||||
goto done;
|
||||
|
||||
wlan_hdd_add_sap_obss_scan_ie(adapter, genie, &total_ielen);
|
||||
|
||||
qdf_copy_macaddr(&updateIE.bssid, &adapter->macAddressCurrent);
|
||||
|
|
|
|||
|
|
@ -718,7 +718,7 @@ typedef struct sSirSmeStartBssReq {
|
|||
tSirHTConfig htConfig;
|
||||
struct sir_vht_config vht_config;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
tDot11fIEvendor_he_cap he_config;
|
||||
tDot11fIEhe_cap he_config;
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_11W
|
||||
bool pmfCapable;
|
||||
|
|
@ -1233,7 +1233,7 @@ typedef struct sSirSmeJoinReq {
|
|||
tSirHTConfig htConfig;
|
||||
struct sir_vht_config vht_config;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
tDot11fIEvendor_he_cap he_config;
|
||||
tDot11fIEhe_cap he_config;
|
||||
#endif
|
||||
uint8_t enableVhtpAid;
|
||||
uint8_t enableVhtGid;
|
||||
|
|
@ -7526,10 +7526,10 @@ struct wow_enable_params {
|
|||
};
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
#define HE_CAP_OUI_TYPE "\x00\x13\x74\x01"
|
||||
#define HE_CAP_OUI_SIZE 4
|
||||
#define HE_OP_OUI_TYPE "\x00\x13\x74\x02"
|
||||
#define HE_OP_OUI_SIZE 4
|
||||
#define HE_CAP_OUI_TYPE "\x23"
|
||||
#define HE_CAP_OUI_SIZE 1
|
||||
#define HE_OP_OUI_TYPE "\x24"
|
||||
#define HE_OP_OUI_SIZE 1
|
||||
|
||||
/* HE Op Mask is based on the HE Operation definition in the D1.0 spec */
|
||||
#define HE_OP_BSS_COLOR_MASK (0x3F << 0)
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ typedef struct sDphHashNode {
|
|||
uint8_t non_ecsa_capable;
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
tDot11fIEvendor_he_cap he_config;
|
||||
tDot11fIEhe_cap he_config;
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -282,8 +282,8 @@ typedef struct sSirProbeRespBeacon {
|
|||
bool assoc_disallowed;
|
||||
uint8_t assoc_disallowed_reason;
|
||||
tSirQCNIE QCN_IE;
|
||||
tDot11fIEvendor_he_cap vendor_he_cap;
|
||||
tDot11fIEvendor_he_op vendor_he_op;
|
||||
tDot11fIEhe_cap he_cap;
|
||||
tDot11fIEhe_op he_op;
|
||||
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
||||
tDot11fIEbss_color_change vendor_he_bss_color_change;
|
||||
#endif
|
||||
|
|
@ -305,7 +305,7 @@ typedef struct sSirProbeReq {
|
|||
uint8_t wscIePresent;
|
||||
uint8_t p2pIePresent;
|
||||
tDot11fIEVHTCaps VHTCaps;
|
||||
tDot11fIEvendor_he_cap vendor_he_cap;
|
||||
tDot11fIEhe_cap he_cap;
|
||||
} tSirProbeReq, *tpSirProbeReq;
|
||||
|
||||
/* / Association Request structure (one day to be replaced by */
|
||||
|
|
@ -359,7 +359,7 @@ typedef struct sSirAssocReq {
|
|||
tDot11fIEExtCap ExtCap;
|
||||
tDot11fIEvendor_vht_ie vendor_vht_ie;
|
||||
tDot11fIEhs20vendor_ie hs20vendor_ie;
|
||||
tDot11fIEvendor_he_cap he_cap;
|
||||
tDot11fIEhe_cap he_cap;
|
||||
} tSirAssocReq, *tpSirAssocReq;
|
||||
|
||||
/* / Association Response structure (one day to be replaced by */
|
||||
|
|
@ -412,8 +412,8 @@ typedef struct sSirAssocRsp {
|
|||
tDot11fIEOBSSScanParameters obss_scanparams;
|
||||
tDot11fTLVrssi_assoc_rej rssi_assoc_rej;
|
||||
tSirQCNIE QCN_IE;
|
||||
tDot11fIEvendor_he_cap vendor_he_cap;
|
||||
tDot11fIEvendor_he_op vendor_he_op;
|
||||
tDot11fIEhe_cap he_cap;
|
||||
tDot11fIEhe_op he_op;
|
||||
#ifdef WLAN_FEATURE_FILS_SK
|
||||
tDot11fIEfils_session fils_session;
|
||||
tDot11fIEfils_key_confirmation fils_key_auth;
|
||||
|
|
@ -1155,9 +1155,9 @@ void update_fils_data(struct sir_fils_indication *fils_ind,
|
|||
#endif
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal , tpPESession ,
|
||||
tDot11fIEvendor_he_cap *);
|
||||
tDot11fIEhe_cap *);
|
||||
QDF_STATUS populate_dot11f_he_operation(tpAniSirGlobal , tpPESession ,
|
||||
tDot11fIEvendor_he_op *);
|
||||
tDot11fIEhe_op *);
|
||||
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
||||
QDF_STATUS populate_dot11f_he_bss_color_change(tpAniSirGlobal mac_ctx,
|
||||
tpPESession session,
|
||||
|
|
@ -1173,13 +1173,13 @@ static inline QDF_STATUS populate_dot11f_he_bss_color_change(
|
|||
#endif
|
||||
#else
|
||||
static inline QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx,
|
||||
tpPESession session, tDot11fIEvendor_he_cap *he_cap)
|
||||
tpPESession session, tDot11fIEhe_cap *he_cap)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS populate_dot11f_he_operation(tpAniSirGlobal mac_ctx,
|
||||
tpPESession session, tDot11fIEvendor_he_op *he_op)
|
||||
tpPESession session, tDot11fIEhe_op *he_op)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -506,8 +506,8 @@ typedef struct sPESession /* Added to Support BT-AMP */
|
|||
uint8_t lim_non_ecsa_cap_num;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
bool he_capable;
|
||||
tDot11fIEvendor_he_cap he_config;
|
||||
tDot11fIEvendor_he_op he_op;
|
||||
tDot11fIEhe_cap he_config;
|
||||
tDot11fIEhe_op he_op;
|
||||
uint32_t he_sta_obsspd;
|
||||
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
||||
tDot11fIEbss_color_change he_bss_color_change;
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ lim_populate_own_rate_set(tpAniSirGlobal mac_ctx,
|
|||
tpSirSupportedRates rates, uint8_t *supported_mcs_set,
|
||||
uint8_t basic_only, tpPESession session_entry,
|
||||
struct sDot11fIEVHTCaps *vht_caps,
|
||||
struct sDot11fIEvendor_he_cap *he_caps)
|
||||
struct sDot11fIEhe_cap *he_caps)
|
||||
{
|
||||
tSirMacRateSet temp_rate_set;
|
||||
tSirMacRateSet temp_rate_set2;
|
||||
|
|
@ -1642,7 +1642,7 @@ tSirRetStatus
|
|||
lim_populate_peer_rate_set(tpAniSirGlobal pMac,
|
||||
tpSirSupportedRates pRates, uint8_t *pSupportedMCSSet,
|
||||
uint8_t basicOnly, tpPESession psessionEntry,
|
||||
tDot11fIEVHTCaps *pVHTCaps, tDot11fIEvendor_he_cap *he_caps)
|
||||
tDot11fIEVHTCaps *pVHTCaps, tDot11fIEhe_cap *he_caps)
|
||||
{
|
||||
tSirMacRateSet tempRateSet;
|
||||
tSirMacRateSet tempRateSet2;
|
||||
|
|
@ -1827,7 +1827,7 @@ tSirRetStatus lim_populate_matching_rate_set(tpAniSirGlobal mac_ctx,
|
|||
uint8_t *supported_mcs_set,
|
||||
tpPESession session_entry,
|
||||
tDot11fIEVHTCaps *vht_caps,
|
||||
tDot11fIEvendor_he_cap *he_caps)
|
||||
tDot11fIEhe_cap *he_caps)
|
||||
{
|
||||
tSirMacRateSet temp_rate_set;
|
||||
tSirMacRateSet temp_rate_set2;
|
||||
|
|
@ -3700,7 +3700,7 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
|
|||
pAddBssParams->ch_center_freq_seg1);
|
||||
|
||||
if (lim_is_session_he_capable(psessionEntry) &&
|
||||
(pAssocRsp->vendor_he_cap.present)) {
|
||||
(pAssocRsp->he_cap.present)) {
|
||||
lim_add_bss_he_cap(pAddBssParams, pAssocRsp);
|
||||
lim_add_bss_he_cfg(pAddBssParams, psessionEntry);
|
||||
}
|
||||
|
|
@ -3785,7 +3785,7 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
|
|||
sta_context->enable_su_tx_bformer = 1;
|
||||
}
|
||||
if (lim_is_session_he_capable(psessionEntry) &&
|
||||
pAssocRsp->vendor_he_cap.present)
|
||||
pAssocRsp->he_cap.present)
|
||||
lim_intersect_ap_he_caps(psessionEntry, pAddBssParams,
|
||||
NULL, pAssocRsp);
|
||||
|
||||
|
|
@ -4245,7 +4245,7 @@ tSirRetStatus lim_sta_send_add_bss_pre_assoc(tpAniSirGlobal pMac, uint8_t update
|
|||
}
|
||||
|
||||
if (lim_is_session_he_capable(psessionEntry) &&
|
||||
pBeaconStruct->vendor_he_cap.present) {
|
||||
pBeaconStruct->he_cap.present) {
|
||||
lim_update_bss_he_capable(pMac, pAddBssParams);
|
||||
lim_add_bss_he_cfg(pAddBssParams, psessionEntry);
|
||||
}
|
||||
|
|
@ -4322,7 +4322,7 @@ tSirRetStatus lim_sta_send_add_bss_pre_assoc(tpAniSirGlobal pMac, uint8_t update
|
|||
pAddBssParams->staContext.enable_su_tx_bformer);
|
||||
}
|
||||
if (lim_is_session_he_capable(psessionEntry) &&
|
||||
pBeaconStruct->vendor_he_cap.present)
|
||||
pBeaconStruct->he_cap.present)
|
||||
lim_intersect_ap_he_caps(psessionEntry, pAddBssParams,
|
||||
pBeaconStruct, NULL);
|
||||
|
||||
|
|
@ -4440,7 +4440,7 @@ tSirRetStatus lim_sta_send_add_bss_pre_assoc(tpAniSirGlobal pMac, uint8_t update
|
|||
pBeaconStruct->HTCaps.supportedMCSSet,
|
||||
false, psessionEntry,
|
||||
&pBeaconStruct->VHTCaps,
|
||||
&pBeaconStruct->vendor_he_cap);
|
||||
&pBeaconStruct->he_cap);
|
||||
|
||||
pAddBssParams->staContext.encryptType = psessionEntry->encryptType;
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ tSirRetStatus lim_populate_peer_rate_set(tpAniSirGlobal pMac,
|
|||
uint8_t basicOnly,
|
||||
tpPESession psessionEntry,
|
||||
tDot11fIEVHTCaps *pVHTCaps,
|
||||
tDot11fIEvendor_he_cap *he_caps);
|
||||
tDot11fIEhe_cap *he_caps);
|
||||
|
||||
tSirRetStatus lim_populate_own_rate_set(tpAniSirGlobal pMac,
|
||||
tpSirSupportedRates pRates,
|
||||
|
|
@ -79,7 +79,7 @@ tSirRetStatus lim_populate_own_rate_set(tpAniSirGlobal pMac,
|
|||
uint8_t basicOnly,
|
||||
tpPESession psessionEntry,
|
||||
tDot11fIEVHTCaps *pVHTCaps,
|
||||
tDot11fIEvendor_he_cap *he_caps);
|
||||
tDot11fIEhe_cap *he_caps);
|
||||
|
||||
tSirRetStatus
|
||||
lim_populate_matching_rate_set(tpAniSirGlobal pMac,
|
||||
|
|
@ -89,7 +89,7 @@ lim_populate_matching_rate_set(tpAniSirGlobal pMac,
|
|||
uint8_t *pSupportedMCSSet,
|
||||
tpPESession psessionEntry,
|
||||
tDot11fIEVHTCaps *pVHTCaps,
|
||||
tDot11fIEvendor_he_cap *he_caps);
|
||||
tDot11fIEhe_cap *he_caps);
|
||||
|
||||
tSirRetStatus lim_add_sta(tpAniSirGlobal, tpDphHashNode, uint8_t, tpPESession);
|
||||
tSirRetStatus lim_del_bss(tpAniSirGlobal, tpDphHashNode, uint16_t, tpPESession);
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ void lim_ft_prepare_add_bss_req(tpAniSirGlobal pMac,
|
|||
sta_ctx->enable_su_tx_bformer = 1;
|
||||
}
|
||||
if (lim_is_session_he_capable(pftSessionEntry) &&
|
||||
pBeaconStruct->vendor_he_cap.present)
|
||||
pBeaconStruct->he_cap.present)
|
||||
lim_intersect_ap_he_caps(pftSessionEntry,
|
||||
pAddBssParams, pBeaconStruct, NULL);
|
||||
|
||||
|
|
@ -439,7 +439,7 @@ void lim_ft_prepare_add_bss_req(tpAniSirGlobal pMac,
|
|||
pBeaconStruct->HTCaps.supportedMCSSet,
|
||||
false, pftSessionEntry,
|
||||
&pBeaconStruct->VHTCaps,
|
||||
&pBeaconStruct->vendor_he_cap);
|
||||
&pBeaconStruct->he_cap);
|
||||
}
|
||||
|
||||
pAddBssParams->maxTxPower = pftSessionEntry->maxTxPower;
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ void lim_update_assoc_sta_datas(tpAniSirGlobal mac_ctx,
|
|||
uint32_t phy_mode;
|
||||
bool qos_mode;
|
||||
tDot11fIEVHTCaps *vht_caps = NULL;
|
||||
tDot11fIEvendor_he_cap *he_cap = NULL;
|
||||
tDot11fIEhe_cap *he_cap = NULL;
|
||||
|
||||
lim_get_phy_mode(mac_ctx, &phy_mode, session_entry);
|
||||
sta_ds->staType = STA_ENTRY_SELF;
|
||||
|
|
@ -202,7 +202,7 @@ void lim_update_assoc_sta_datas(tpAniSirGlobal mac_ctx,
|
|||
lim_update_stads_he_caps(sta_ds, assoc_rsp, session_entry);
|
||||
|
||||
if (lim_is_sta_he_capable(sta_ds))
|
||||
he_cap = &assoc_rsp->vendor_he_cap;
|
||||
he_cap = &assoc_rsp->he_cap;
|
||||
|
||||
if (lim_populate_peer_rate_set(mac_ctx, &sta_ds->supportedRates,
|
||||
assoc_rsp->HTCaps.supportedMCSSet,
|
||||
|
|
|
|||
|
|
@ -315,7 +315,7 @@ void lim_send_reassoc_req_with_ft_ies_mgmt_frame(tpAniSirGlobal mac_ctx,
|
|||
if (lim_is_session_he_capable(pe_session)) {
|
||||
pe_debug("Populate HE IEs");
|
||||
populate_dot11f_he_caps(mac_ctx, pe_session,
|
||||
&frm.vendor_he_cap);
|
||||
&frm.he_cap);
|
||||
}
|
||||
|
||||
status = dot11f_get_packed_re_assoc_request_size(mac_ctx, &frm,
|
||||
|
|
@ -688,7 +688,7 @@ void lim_send_reassoc_req_mgmt_frame(tpAniSirGlobal pMac,
|
|||
if (lim_is_session_he_capable(psessionEntry)) {
|
||||
pe_debug("Populate HE IEs");
|
||||
populate_dot11f_he_caps(pMac, psessionEntry,
|
||||
&frm.vendor_he_cap);
|
||||
&frm.he_cap);
|
||||
}
|
||||
|
||||
nStatus =
|
||||
|
|
|
|||
|
|
@ -357,7 +357,7 @@ lim_send_probe_req_mgmt_frame(tpAniSirGlobal mac_ctx,
|
|||
lim_update_session_he_capable(mac_ctx, pesession);
|
||||
|
||||
pe_debug("Populate HE IEs");
|
||||
populate_dot11f_he_caps(mac_ctx, pesession, &pr.vendor_he_cap);
|
||||
populate_dot11f_he_caps(mac_ctx, pesession, &pr.he_cap);
|
||||
|
||||
if (addn_ielen) {
|
||||
qdf_mem_zero((uint8_t *)&extracted_ext_cap,
|
||||
|
|
@ -690,9 +690,9 @@ lim_send_probe_rsp_mgmt_frame(tpAniSirGlobal mac_ctx,
|
|||
if (lim_is_session_he_capable(pe_session)) {
|
||||
pe_debug("Populate HE IEs");
|
||||
populate_dot11f_he_caps(mac_ctx, pe_session,
|
||||
&frm->vendor_he_cap);
|
||||
&frm->he_cap);
|
||||
populate_dot11f_he_operation(mac_ctx, pe_session,
|
||||
&frm->vendor_he_op);
|
||||
&frm->he_op);
|
||||
}
|
||||
|
||||
populate_dot11f_ext_cap(mac_ctx, is_vht_enabled, &frm->ExtCap,
|
||||
|
|
@ -1262,9 +1262,9 @@ lim_send_assoc_rsp_mgmt_frame(tpAniSirGlobal mac_ctx,
|
|||
lim_is_session_he_capable(pe_session)) {
|
||||
pe_debug("Populate HE IEs");
|
||||
populate_dot11f_he_caps(mac_ctx, pe_session,
|
||||
&frm.vendor_he_cap);
|
||||
&frm.he_cap);
|
||||
populate_dot11f_he_operation(mac_ctx, pe_session,
|
||||
&frm.vendor_he_op);
|
||||
&frm.he_op);
|
||||
}
|
||||
#ifdef WLAN_FEATURE_11W
|
||||
if (eSIR_MAC_TRY_AGAIN_LATER == status_code) {
|
||||
|
|
@ -1873,7 +1873,7 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx,
|
|||
if (lim_is_session_he_capable(pe_session)) {
|
||||
pe_debug("Populate HE IEs");
|
||||
populate_dot11f_he_caps(mac_ctx, pe_session,
|
||||
&frm->vendor_he_cap);
|
||||
&frm->he_cap);
|
||||
}
|
||||
|
||||
if (pe_session->pLimJoinReq->is11Rconnection) {
|
||||
|
|
|
|||
|
|
@ -5911,7 +5911,7 @@ bool lim_check_vht_op_mode_change(tpAniSirGlobal pMac, tpPESession psessionEntry
|
|||
bool lim_send_he_ie_update(tpAniSirGlobal mac_ctx, tpPESession pe_session)
|
||||
{
|
||||
uint32_t he_ops = 0;
|
||||
tDot11fIEvendor_he_op *he_op = &pe_session->he_op;
|
||||
tDot11fIEhe_op *he_op = &pe_session->he_op;
|
||||
QDF_STATUS status;
|
||||
|
||||
WMI_HEOPS_COLOR_SET(he_ops, he_op->bss_color);
|
||||
|
|
@ -7217,9 +7217,9 @@ void lim_add_self_he_cap(tpAddStaParams add_sta_params, tpPESession session)
|
|||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void lim_intersect_he_caps(tDot11fIEvendor_he_cap *rcvd_he,
|
||||
tDot11fIEvendor_he_cap *session_he,
|
||||
tDot11fIEvendor_he_cap *peer_he)
|
||||
static void lim_intersect_he_caps(tDot11fIEhe_cap *rcvd_he,
|
||||
tDot11fIEhe_cap *session_he,
|
||||
tDot11fIEhe_cap *peer_he)
|
||||
{
|
||||
uint8_t val;
|
||||
|
||||
|
|
@ -7278,9 +7278,9 @@ static void lim_intersect_he_caps(tDot11fIEvendor_he_cap *rcvd_he,
|
|||
void lim_intersect_sta_he_caps(tpSirAssocReq assoc_req, tpPESession session,
|
||||
tpDphHashNode sta_ds)
|
||||
{
|
||||
tDot11fIEvendor_he_cap *rcvd_he = &assoc_req->he_cap;
|
||||
tDot11fIEvendor_he_cap *session_he = &session->he_config;
|
||||
tDot11fIEvendor_he_cap *peer_he = &sta_ds->he_config;
|
||||
tDot11fIEhe_cap *rcvd_he = &assoc_req->he_cap;
|
||||
tDot11fIEhe_cap *session_he = &session->he_config;
|
||||
tDot11fIEhe_cap *peer_he = &sta_ds->he_config;
|
||||
|
||||
if (sta_ds->mlmStaContext.he_capable)
|
||||
lim_intersect_he_caps(rcvd_he, session_he, peer_he);
|
||||
|
|
@ -7289,14 +7289,14 @@ void lim_intersect_sta_he_caps(tpSirAssocReq assoc_req, tpPESession session,
|
|||
void lim_intersect_ap_he_caps(tpPESession session, tpAddBssParams add_bss,
|
||||
tSchBeaconStruct *beacon, tpSirAssocRsp assoc_rsp)
|
||||
{
|
||||
tDot11fIEvendor_he_cap *rcvd_he;
|
||||
tDot11fIEvendor_he_cap *session_he = &session->he_config;
|
||||
tDot11fIEvendor_he_cap *peer_he = &add_bss->staContext.he_config;
|
||||
tDot11fIEhe_cap *rcvd_he;
|
||||
tDot11fIEhe_cap *session_he = &session->he_config;
|
||||
tDot11fIEhe_cap *peer_he = &add_bss->staContext.he_config;
|
||||
|
||||
if (beacon)
|
||||
rcvd_he = &beacon->vendor_he_cap;
|
||||
rcvd_he = &beacon->he_cap;
|
||||
else
|
||||
rcvd_he = &assoc_rsp->vendor_he_cap;
|
||||
rcvd_he = &assoc_rsp->he_cap;
|
||||
|
||||
lim_intersect_he_caps(rcvd_he, session_he, peer_he);
|
||||
add_bss->staContext.he_capable = true;
|
||||
|
|
@ -7304,11 +7304,11 @@ void lim_intersect_ap_he_caps(tpPESession session, tpAddBssParams add_bss,
|
|||
|
||||
void lim_add_bss_he_cap(tpAddBssParams add_bss, tpSirAssocRsp assoc_rsp)
|
||||
{
|
||||
tDot11fIEvendor_he_cap *he_cap;
|
||||
tDot11fIEvendor_he_op *he_op;
|
||||
tDot11fIEhe_cap *he_cap;
|
||||
tDot11fIEhe_op *he_op;
|
||||
|
||||
he_cap = &assoc_rsp->vendor_he_cap;
|
||||
he_op = &assoc_rsp->vendor_he_op;
|
||||
he_cap = &assoc_rsp->he_cap;
|
||||
he_op = &assoc_rsp->he_op;
|
||||
add_bss->he_capable = he_cap->present;
|
||||
if (he_cap)
|
||||
qdf_mem_copy(&add_bss->staContext.he_config,
|
||||
|
|
@ -7326,9 +7326,9 @@ void lim_add_bss_he_cfg(tpAddBssParams add_bss, tpPESession session)
|
|||
void lim_update_stads_he_caps(tpDphHashNode sta_ds, tpSirAssocRsp assoc_rsp,
|
||||
tpPESession session_entry)
|
||||
{
|
||||
tDot11fIEvendor_he_cap *he_cap;
|
||||
tDot11fIEhe_cap *he_cap;
|
||||
|
||||
he_cap = &assoc_rsp->vendor_he_cap;
|
||||
he_cap = &assoc_rsp->he_cap;
|
||||
sta_ds->mlmStaContext.he_capable = he_cap->present;
|
||||
|
||||
if (!he_cap->present)
|
||||
|
|
@ -7343,13 +7343,12 @@ void lim_update_usr_he_cap(tpAniSirGlobal mac_ctx, tpPESession session)
|
|||
const uint8_t *vendor_ie;
|
||||
const uint8_t *he_cap_data;
|
||||
tSirAddIeParams *add_ie = &session->addIeParams;
|
||||
tDot11fIEvendor_he_cap *he_cap = &session->he_config;
|
||||
tDot11fIEhe_cap *he_cap = &session->he_config;
|
||||
|
||||
vendor_ie = wlan_get_vendor_ie_ptr_from_oui(
|
||||
vendor_ie = wlan_get_ext_ie_ptr_from_ext_id(
|
||||
HE_CAP_OUI_TYPE, HE_CAP_OUI_SIZE,
|
||||
add_ie->probeRespBCNData_buff,
|
||||
add_ie->probeRespBCNDataLen);
|
||||
|
||||
if (!vendor_ie) {
|
||||
pe_err("11AX: Unable to parse HE Caps");
|
||||
return;
|
||||
|
|
@ -7375,14 +7374,13 @@ void lim_decide_he_op(tpAniSirGlobal mac_ctx, tpAddBssParams add_bss,
|
|||
{
|
||||
const uint8_t *vendor_ie;
|
||||
uint32_t he_op;
|
||||
tDot11fIEvendor_he_op *he_ops = &add_bss->he_op;
|
||||
tDot11fIEhe_op *he_ops = &add_bss->he_op;
|
||||
tSirAddIeParams *add_ie = &session->addIeParams;
|
||||
|
||||
vendor_ie = wlan_get_vendor_ie_ptr_from_oui(
|
||||
vendor_ie = wlan_get_ext_ie_ptr_from_ext_id(
|
||||
HE_OP_OUI_TYPE, HE_OP_OUI_SIZE,
|
||||
add_ie->probeRespBCNData_buff,
|
||||
add_ie->probeRespBCNDataLen);
|
||||
|
||||
if (!vendor_ie) {
|
||||
pe_err("11AX: Unable to parse HE Operation");
|
||||
return;
|
||||
|
|
@ -7428,7 +7426,7 @@ void lim_copy_join_req_he_cap(tpPESession session,
|
|||
sizeof(session->he_config));
|
||||
}
|
||||
|
||||
void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_cap *he_cap)
|
||||
void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap)
|
||||
{
|
||||
if (!he_cap->present)
|
||||
return;
|
||||
|
|
@ -7557,7 +7555,7 @@ void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_cap *he_cap)
|
|||
|
||||
}
|
||||
|
||||
void lim_log_he_op(tpAniSirGlobal mac, tDot11fIEvendor_he_op *he_ops)
|
||||
void lim_log_he_op(tpAniSirGlobal mac, tDot11fIEhe_op *he_ops)
|
||||
{
|
||||
pe_debug("bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, rts_threshold: %0x, vht_oper_present: %0x",
|
||||
he_ops->bss_color, he_ops->default_pe,
|
||||
|
|
@ -7624,14 +7622,13 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start,
|
|||
uint32_t num_bytes)
|
||||
{
|
||||
const uint8_t *ie = NULL;
|
||||
tDot11fIEvendor_he_cap dot11_cap;
|
||||
tDot11fIEhe_cap dot11_cap;
|
||||
struct he_capability_info *he_cap;
|
||||
|
||||
populate_dot11f_he_caps(mac, session, &dot11_cap);
|
||||
lim_log_he_cap(mac, &dot11_cap);
|
||||
ie = wlan_get_vendor_ie_ptr_from_oui(HE_CAP_OUI_TYPE,
|
||||
ie = wlan_get_ext_ie_ptr_from_ext_id(HE_CAP_OUI_TYPE,
|
||||
HE_CAP_OUI_SIZE, ie_start, num_bytes);
|
||||
|
||||
if (ie) {
|
||||
/* convert from unpacked to packed structure */
|
||||
he_cap = (struct he_capability_info *) &ie[2 + HE_CAP_OUI_SIZE];
|
||||
|
|
@ -7716,30 +7713,30 @@ void lim_set_he_caps(tpAniSirGlobal mac, tpPESession session, uint8_t *ie_start,
|
|||
QDF_STATUS lim_send_he_caps_ie(tpAniSirGlobal mac_ctx, tpPESession session,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
uint8_t he_caps[DOT11F_IE_VENDOR_HE_CAP_MIN_LEN + 2];
|
||||
uint8_t he_caps[DOT11F_IE_HE_CAP_MIN_LEN + 2];
|
||||
struct he_capability_info *he_cap;
|
||||
QDF_STATUS status_5g, status_2g;
|
||||
|
||||
/* Sending only minimal info(no PPET) to FW now, update if required */
|
||||
qdf_mem_zero(he_caps, DOT11F_IE_VENDOR_HE_CAP_MIN_LEN + 2);
|
||||
he_caps[0] = DOT11F_EID_VENDOR_HE_CAP;
|
||||
he_caps[1] = DOT11F_IE_VENDOR_HE_CAP_MIN_LEN;
|
||||
qdf_mem_zero(he_caps, DOT11F_IE_HE_CAP_MIN_LEN + 2);
|
||||
he_caps[0] = DOT11F_EID_HE_CAP;
|
||||
he_caps[1] = DOT11F_IE_HE_CAP_MIN_LEN;
|
||||
qdf_mem_copy(&he_caps[2], HE_CAP_OUI_TYPE, HE_CAP_OUI_SIZE);
|
||||
lim_set_he_caps(mac_ctx, session, he_caps,
|
||||
DOT11F_IE_VENDOR_HE_CAP_MIN_LEN + 2);
|
||||
DOT11F_IE_HE_CAP_MIN_LEN + 2);
|
||||
he_cap = (struct he_capability_info *) (&he_caps[2 + HE_CAP_OUI_SIZE]);
|
||||
he_cap->ppet_present = 0;
|
||||
|
||||
status_5g = lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_VENDOR_HE_CAP,
|
||||
status_5g = lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HE_CAP,
|
||||
CDS_BAND_5GHZ, &he_caps[2],
|
||||
DOT11F_IE_VENDOR_HE_CAP_MIN_LEN);
|
||||
DOT11F_IE_HE_CAP_MIN_LEN);
|
||||
if (QDF_IS_STATUS_ERROR(status_5g))
|
||||
pe_err("Unable send HE Cap IE for 5GHZ band, status: %d",
|
||||
status_5g);
|
||||
|
||||
status_2g = lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_VENDOR_HE_CAP,
|
||||
status_2g = lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HE_CAP,
|
||||
CDS_BAND_2GHZ, &he_caps[2],
|
||||
DOT11F_IE_VENDOR_HE_CAP_MIN_LEN);
|
||||
DOT11F_IE_HE_CAP_MIN_LEN);
|
||||
if (QDF_IS_STATUS_ERROR(status_2g))
|
||||
pe_err("Unable send HE Cap IE for 2GHZ band, status: %d",
|
||||
status_2g);
|
||||
|
|
@ -7768,7 +7765,7 @@ QDF_STATUS lim_send_he_caps_ie(tpAniSirGlobal mac_ctx, tpPESession session,
|
|||
*/
|
||||
QDF_STATUS lim_populate_he_mcs_set(tpAniSirGlobal mac_ctx,
|
||||
tpSirSupportedRates rates,
|
||||
tDot11fIEvendor_he_cap *peer_he_caps,
|
||||
tDot11fIEhe_cap *peer_he_caps,
|
||||
tpPESession session_entry, uint8_t nss)
|
||||
{
|
||||
uint32_t val;
|
||||
|
|
|
|||
|
|
@ -875,7 +875,7 @@ void lim_copy_join_req_he_cap(tpPESession session,
|
|||
*
|
||||
* Return: None
|
||||
*/
|
||||
void lim_log_he_op(tpAniSirGlobal mac, tDot11fIEvendor_he_op *he_ops);
|
||||
void lim_log_he_op(tpAniSirGlobal mac, tDot11fIEhe_op *he_ops);
|
||||
|
||||
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
||||
/**
|
||||
|
|
@ -902,7 +902,7 @@ void lim_log_he_bss_color(tpAniSirGlobal mac,
|
|||
*
|
||||
* Return: None
|
||||
*/
|
||||
void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEvendor_he_cap *he_cap);
|
||||
void lim_log_he_cap(tpAniSirGlobal mac, tDot11fIEhe_cap *he_cap);
|
||||
|
||||
/**
|
||||
* lim_update_stads_he_caps() - Copy HE capability into STA DPH hash table entry
|
||||
|
|
@ -1033,7 +1033,7 @@ QDF_STATUS lim_send_he_caps_ie(tpAniSirGlobal mac_ctx, tpPESession session,
|
|||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS lim_populate_he_mcs_set(tpAniSirGlobal mac_ctx,
|
||||
tpSirSupportedRates rates, tDot11fIEvendor_he_cap *peer_he_caps,
|
||||
tpSirSupportedRates rates, tDot11fIEhe_cap *peer_he_caps,
|
||||
tpPESession session_entry, uint8_t nss);
|
||||
|
||||
#else
|
||||
|
|
@ -1097,12 +1097,12 @@ static inline void lim_copy_join_req_he_cap(tpPESession session,
|
|||
}
|
||||
|
||||
static inline void lim_log_he_op(tpAniSirGlobal mac,
|
||||
tDot11fIEvendor_he_op *he_ops)
|
||||
tDot11fIEhe_op *he_ops)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void lim_log_he_cap(tpAniSirGlobal mac,
|
||||
tDot11fIEvendor_he_cap *he_cap)
|
||||
tDot11fIEhe_cap *he_cap)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -1156,7 +1156,7 @@ static inline QDF_STATUS lim_send_he_caps_ie(tpAniSirGlobal mac_ctx,
|
|||
|
||||
static inline QDF_STATUS lim_populate_he_mcs_set(tpAniSirGlobal mac_ctx,
|
||||
tpSirSupportedRates rates,
|
||||
tDot11fIEvendor_he_cap *peer_he_caps,
|
||||
tDot11fIEhe_cap *peer_he_caps,
|
||||
tpPESession session_entry, uint8_t nss)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
|
|
|||
|
|
@ -395,9 +395,9 @@ sch_set_fixed_beacon_fields(tpAniSirGlobal mac_ctx, tpPESession session)
|
|||
if (lim_is_session_he_capable(session)) {
|
||||
pe_warn("Populate HE IEs");
|
||||
populate_dot11f_he_caps(mac_ctx, session,
|
||||
&bcn_2->vendor_he_cap);
|
||||
&bcn_2->he_cap);
|
||||
populate_dot11f_he_operation(mac_ctx, session,
|
||||
&bcn_2->vendor_he_op);
|
||||
&bcn_2->he_op);
|
||||
populate_dot11f_he_bss_color_change(mac_ctx, session,
|
||||
&bcn_2->bss_color_change);
|
||||
}
|
||||
|
|
@ -769,19 +769,19 @@ void lim_update_probe_rsp_template_ie_bitmap_beacon2(tpAniSirGlobal pMac,
|
|||
sizeof(beacon2->ExtCap));
|
||||
}
|
||||
|
||||
if (beacon2->vendor_he_cap.present) {
|
||||
if (beacon2->he_cap.present) {
|
||||
set_probe_rsp_ie_bitmap(DefProbeRspIeBitmap,
|
||||
DOT11F_EID_VENDOR_HE_CAP);
|
||||
qdf_mem_copy((void *)&prb_rsp->vendor_he_cap,
|
||||
(void *)&beacon2->vendor_he_cap,
|
||||
sizeof(beacon2->vendor_he_cap));
|
||||
DOT11F_EID_HE_CAP);
|
||||
qdf_mem_copy((void *)&prb_rsp->he_cap,
|
||||
(void *)&beacon2->he_cap,
|
||||
sizeof(beacon2->he_cap));
|
||||
}
|
||||
if (beacon2->vendor_he_op.present) {
|
||||
if (beacon2->he_op.present) {
|
||||
set_probe_rsp_ie_bitmap(DefProbeRspIeBitmap,
|
||||
DOT11F_EID_VENDOR_HE_OP);
|
||||
qdf_mem_copy((void *)&prb_rsp->vendor_he_op,
|
||||
(void *)&beacon2->vendor_he_op,
|
||||
sizeof(beacon2->vendor_he_op));
|
||||
DOT11F_EID_HE_OP);
|
||||
qdf_mem_copy((void *)&prb_rsp->he_op,
|
||||
(void *)&beacon2->he_op,
|
||||
sizeof(beacon2->he_op));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -497,7 +497,7 @@ sch_bcn_update_he_ies(tpAniSirGlobal mac_ctx, tpDphHashNode sta_ds,
|
|||
uint8_t session_bss_col_disabled_flag;
|
||||
bool anything_changed = false;
|
||||
|
||||
if (session->he_op.present && bcn->vendor_he_op.present) {
|
||||
if (session->he_op.present && bcn->he_op.present) {
|
||||
if (bcn->vendor_he_bss_color_change.present &&
|
||||
(session->he_op.bss_color !=
|
||||
bcn->vendor_he_bss_color_change.new_color)) {
|
||||
|
|
@ -510,12 +510,12 @@ sch_bcn_update_he_ies(tpAniSirGlobal mac_ctx, tpDphHashNode sta_ds,
|
|||
}
|
||||
session_bss_col_disabled_flag = session->he_op.bss_col_disabled;
|
||||
if (session_bss_col_disabled_flag !=
|
||||
bcn->vendor_he_op.bss_col_disabled) {
|
||||
bcn->he_op.bss_col_disabled) {
|
||||
pe_debug("color disable flag changed from [%d] to [%d]",
|
||||
session->he_op.bss_col_disabled,
|
||||
bcn->vendor_he_op.bss_col_disabled);
|
||||
bcn->he_op.bss_col_disabled);
|
||||
session->he_op.bss_col_disabled =
|
||||
bcn->vendor_he_op.bss_col_disabled;
|
||||
bcn->he_op.bss_col_disabled;
|
||||
anything_changed = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -974,8 +974,8 @@ static void sch_check_bss_color_ie(tpAniSirGlobal mac_ctx,
|
|||
{
|
||||
/* check bss color in the beacon */
|
||||
if (ap_session->he_op.present && !ap_session->he_op.bss_color) {
|
||||
if (bcn->vendor_he_op.present &&
|
||||
(bcn->vendor_he_op.bss_color ==
|
||||
if (bcn->he_op.present &&
|
||||
(bcn->he_op.bss_color ==
|
||||
ap_session->he_op.bss_color)) {
|
||||
ap_session->he_op.bss_col_disabled = 1;
|
||||
bcn_prm->paramChangeBitmap |=
|
||||
|
|
@ -994,10 +994,10 @@ static void sch_check_bss_color_ie(tpAniSirGlobal mac_ctx,
|
|||
ap_session->bss_color_changing = 1;
|
||||
} else {
|
||||
/* update info for the bss color */
|
||||
if (bcn->vendor_he_op.present)
|
||||
if (bcn->he_op.present)
|
||||
ap_update_bss_color_info(mac_ctx,
|
||||
ap_session,
|
||||
bcn->vendor_he_op.bss_color);
|
||||
bcn->he_op.bss_color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2174,9 +2174,9 @@ sir_convert_probe_req_frame2_struct(tpAniSirGlobal pMac,
|
|||
if (pr.P2PProbeReq.present) {
|
||||
pProbeReq->p2pIePresent = 1;
|
||||
}
|
||||
if (pr.vendor_he_cap.present) {
|
||||
qdf_mem_copy(&pProbeReq->vendor_he_cap, &pr.vendor_he_cap,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
if (pr.he_cap.present) {
|
||||
qdf_mem_copy(&pProbeReq->he_cap, &pr.he_cap,
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
pe_debug("11AX: HE cap IE present");
|
||||
}
|
||||
return eSIR_SUCCESS;
|
||||
|
|
@ -2613,15 +2613,15 @@ tSirRetStatus sir_convert_probe_frame2_struct(tpAniSirGlobal pMac,
|
|||
}
|
||||
}
|
||||
|
||||
if (pr->vendor_he_cap.present) {
|
||||
if (pr->he_cap.present) {
|
||||
pe_debug("11AX: HE cap IE present");
|
||||
qdf_mem_copy(&pProbeResp->vendor_he_cap, &pr->vendor_he_cap,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
qdf_mem_copy(&pProbeResp->he_cap, &pr->he_cap,
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
}
|
||||
if (pr->vendor_he_op.present) {
|
||||
if (pr->he_op.present) {
|
||||
pe_debug("11AX: HE operation IE present");
|
||||
qdf_mem_copy(&pProbeResp->vendor_he_op, &pr->vendor_he_op,
|
||||
sizeof(tDot11fIEvendor_he_op));
|
||||
qdf_mem_copy(&pProbeResp->he_op, &pr->he_op,
|
||||
sizeof(tDot11fIEhe_op));
|
||||
}
|
||||
|
||||
qdf_mem_free(pr);
|
||||
|
|
@ -2815,9 +2815,9 @@ sir_convert_assoc_req_frame2_struct(tpAniSirGlobal pMac,
|
|||
lim_log_vht_cap(pMac, &pAssocReq->VHTCaps);
|
||||
}
|
||||
}
|
||||
if (ar->vendor_he_cap.present) {
|
||||
qdf_mem_copy(&pAssocReq->he_cap, &ar->vendor_he_cap,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
if (ar->he_cap.present) {
|
||||
qdf_mem_copy(&pAssocReq->he_cap, &ar->he_cap,
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
pe_debug("Received Assoc Req with HE Capability IE");
|
||||
}
|
||||
qdf_mem_free(ar);
|
||||
|
|
@ -3139,15 +3139,15 @@ sir_convert_assoc_resp_frame2_struct(tpAniSirGlobal pMac,
|
|||
lim_log_vht_operation(pMac, &pAssocRsp->VHTOperation);
|
||||
}
|
||||
|
||||
if (ar->vendor_he_cap.present) {
|
||||
if (ar->he_cap.present) {
|
||||
pe_debug("11AX: HE cap IE present");
|
||||
qdf_mem_copy(&pAssocRsp->vendor_he_cap, &ar->vendor_he_cap,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
qdf_mem_copy(&pAssocRsp->he_cap, &ar->he_cap,
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
}
|
||||
if (ar->vendor_he_op.present) {
|
||||
if (ar->he_op.present) {
|
||||
pe_debug("11AX: HE Operation IE present");
|
||||
qdf_mem_copy(&pAssocRsp->vendor_he_op, &ar->vendor_he_op,
|
||||
sizeof(tDot11fIEvendor_he_op));
|
||||
qdf_mem_copy(&pAssocRsp->he_op, &ar->he_op,
|
||||
sizeof(tDot11fIEhe_op));
|
||||
}
|
||||
|
||||
if (ar->MBO_IE.present && ar->MBO_IE.rssi_assoc_rej.present) {
|
||||
|
|
@ -3325,9 +3325,9 @@ sir_convert_reassoc_req_frame2_struct(tpAniSirGlobal pMac,
|
|||
ext_cap->timing_meas, ext_cap->fine_time_meas_initiator,
|
||||
ext_cap->fine_time_meas_responder);
|
||||
}
|
||||
if (ar.vendor_he_cap.present) {
|
||||
qdf_mem_copy(&pAssocReq->he_cap, &ar.vendor_he_cap,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
if (ar.he_cap.present) {
|
||||
qdf_mem_copy(&pAssocReq->he_cap, &ar.he_cap,
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
}
|
||||
|
||||
return eSIR_SUCCESS;
|
||||
|
|
@ -3900,15 +3900,15 @@ sir_parse_beacon_ie(tpAniSirGlobal pMac,
|
|||
}
|
||||
}
|
||||
|
||||
if (pBies->vendor_he_cap.present) {
|
||||
qdf_mem_copy(&pBeaconStruct->vendor_he_cap,
|
||||
&pBies->vendor_he_cap,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
if (pBies->he_cap.present) {
|
||||
qdf_mem_copy(&pBeaconStruct->he_cap,
|
||||
&pBies->he_cap,
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
}
|
||||
if (pBies->vendor_he_op.present) {
|
||||
qdf_mem_copy(&pBeaconStruct->vendor_he_op,
|
||||
&pBies->vendor_he_op,
|
||||
sizeof(tDot11fIEvendor_he_op));
|
||||
if (pBies->he_op.present) {
|
||||
qdf_mem_copy(&pBeaconStruct->he_op,
|
||||
&pBies->he_op,
|
||||
sizeof(tDot11fIEhe_op));
|
||||
}
|
||||
|
||||
qdf_mem_free(pBies);
|
||||
|
|
@ -4266,17 +4266,17 @@ sir_convert_beacon_frame2_struct(tpAniSirGlobal pMac,
|
|||
}
|
||||
}
|
||||
|
||||
if (pBeacon->vendor_he_cap.present) {
|
||||
if (pBeacon->he_cap.present) {
|
||||
pe_debug("11AX: HE cap IE present");
|
||||
qdf_mem_copy(&pBeaconStruct->vendor_he_cap,
|
||||
&pBeacon->vendor_he_cap,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
qdf_mem_copy(&pBeaconStruct->he_cap,
|
||||
&pBeacon->he_cap,
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
}
|
||||
if (pBeacon->vendor_he_op.present) {
|
||||
if (pBeacon->he_op.present) {
|
||||
pe_debug("11AX: HE operation IE present");
|
||||
qdf_mem_copy(&pBeaconStruct->vendor_he_op,
|
||||
&pBeacon->vendor_he_op,
|
||||
sizeof(tDot11fIEvendor_he_op));
|
||||
qdf_mem_copy(&pBeaconStruct->he_op,
|
||||
&pBeacon->he_op,
|
||||
sizeof(tDot11fIEhe_op));
|
||||
}
|
||||
|
||||
qdf_mem_free(pBeacon);
|
||||
|
|
@ -5978,7 +5978,7 @@ tSirRetStatus populate_dot11f_timing_advert_frame(tpAniSirGlobal mac_ctx,
|
|||
* Populdate the HE capability IE based on the session.
|
||||
*/
|
||||
QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session,
|
||||
tDot11fIEvendor_he_cap *he_cap)
|
||||
tDot11fIEhe_cap *he_cap)
|
||||
{
|
||||
uint32_t value = 0;
|
||||
tSirRetStatus status;
|
||||
|
|
@ -6155,7 +6155,7 @@ QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal mac_ctx, tpPESession session,
|
|||
* Populdate the HE Operation IE based on the session.
|
||||
*/
|
||||
QDF_STATUS populate_dot11f_he_operation(tpAniSirGlobal mac_ctx,
|
||||
tpPESession session, tDot11fIEvendor_he_op *he_op)
|
||||
tpPESession session, tDot11fIEhe_op *he_op)
|
||||
{
|
||||
he_op->present = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -969,7 +969,7 @@ struct csr_roam_session {
|
|||
tSirHTConfig htConfig;
|
||||
struct sir_vht_config vht_config;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
tDot11fIEvendor_he_cap he_config;
|
||||
tDot11fIEhe_cap he_config;
|
||||
uint32_t he_sta_obsspd;
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
|
|
|
|||
|
|
@ -2262,7 +2262,7 @@ static void csr_update_session_he_cap(tpAniSirGlobal mac_ctx,
|
|||
struct csr_roam_session *session)
|
||||
{
|
||||
uint32_t value = 0;
|
||||
tDot11fIEvendor_he_cap *he_cap = &session->he_config;
|
||||
tDot11fIEhe_cap *he_cap = &session->he_config;
|
||||
|
||||
he_cap->present = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -1961,7 +1961,7 @@ QDF_STATUS csr_get_phy_mode_from_bss(tpAniSirGlobal pMac,
|
|||
if (IS_BSS_VHT_CAPABLE(pIes->VHTCaps) ||
|
||||
IS_BSS_VHT_CAPABLE(pIes->vendor_vht_ie.VHTCaps))
|
||||
phyMode = eCSR_DOT11_MODE_11ac;
|
||||
if (pIes->vendor_he_cap.present)
|
||||
if (pIes->he_cap.present)
|
||||
phyMode = eCSR_DOT11_MODE_11ax;
|
||||
}
|
||||
*pPhyMode = phyMode;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
*
|
||||
* Return: None
|
||||
*/
|
||||
void wma_print_he_cap(tDot11fIEvendor_he_cap *he_cap);
|
||||
void wma_print_he_cap(tDot11fIEhe_cap *he_cap);
|
||||
|
||||
/**
|
||||
* wma_print_he_ppet() - Prints HE PPE Threshold
|
||||
|
|
@ -75,7 +75,7 @@ void wma_print_he_mac_cap(uint32_t mac_cap);
|
|||
*
|
||||
* Return: None
|
||||
*/
|
||||
void wma_print_he_op(tDot11fIEvendor_he_op *he_ops);
|
||||
void wma_print_he_op(tDot11fIEhe_op *he_ops);
|
||||
|
||||
/**
|
||||
* wma_update_target_ext_he_cap() - Update HE caps with given extended cap
|
||||
|
|
@ -230,7 +230,7 @@ uint32_t wma_get_he_vdev_param(struct wma_txrx_node *intr,
|
|||
WMI_VDEV_PARAM param_id);
|
||||
|
||||
#else
|
||||
static inline void wma_print_he_cap(tDot11fIEvendor_he_cap *he_cap)
|
||||
static inline void wma_print_he_cap(tDot11fIEhe_cap *he_cap)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -246,7 +246,7 @@ static inline void wma_print_he_mac_cap(uint32_t mac_cap)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void wma_print_he_op(tDot11fIEvendor_he_op *he_ops)
|
||||
static inline void wma_print_he_op(tDot11fIEhe_op *he_ops)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -330,8 +330,8 @@ typedef struct {
|
|||
uint32_t nss;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
bool he_capable;
|
||||
tDot11fIEvendor_he_cap he_config;
|
||||
tDot11fIEvendor_he_op he_op;
|
||||
tDot11fIEhe_cap he_config;
|
||||
tDot11fIEhe_op he_op;
|
||||
#endif
|
||||
uint8_t max_amsdu_num;
|
||||
} tAddStaParams, *tpAddStaParams;
|
||||
|
|
@ -530,8 +530,8 @@ typedef struct {
|
|||
uint32_t rx_aggregation_size;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
bool he_capable;
|
||||
tDot11fIEvendor_he_cap he_config;
|
||||
tDot11fIEvendor_he_op he_op;
|
||||
tDot11fIEhe_cap he_config;
|
||||
tDot11fIEhe_op he_op;
|
||||
uint32_t he_sta_obsspd;
|
||||
#endif
|
||||
uint32_t cac_duration_ms;
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ struct wma_tgt_cfg {
|
|||
bool sub_20_support;
|
||||
uint16_t wmi_max_len;
|
||||
#ifdef WLAN_FEATURE_11AX
|
||||
tDot11fIEvendor_he_cap he_cap;
|
||||
tDot11fIEhe_cap he_cap;
|
||||
#endif
|
||||
bool dfs_cac_offload;
|
||||
bool tx_bfee_8ss_enabled;
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ static void wma_convert_he_ppet(tDot11fIEppe_threshold *he_ppet,
|
|||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void wma_convert_he_cap(tDot11fIEvendor_he_cap *he_cap, uint32_t mac_cap,
|
||||
static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t mac_cap,
|
||||
uint32_t *phy_cap, void *he_ppet,
|
||||
uint32_t supp_mcs, uint32_t tx_chain_mask,
|
||||
uint32_t rx_chain_mask)
|
||||
|
|
@ -318,7 +318,7 @@ static void wma_convert_he_cap(tDot11fIEvendor_he_cap *he_cap, uint32_t mac_cap,
|
|||
* Return: none
|
||||
*/
|
||||
static void wma_derive_ext_he_cap(t_wma_handle *wma_handle,
|
||||
tDot11fIEvendor_he_cap *he_cap, tDot11fIEvendor_he_cap *new_cap)
|
||||
tDot11fIEhe_cap *he_cap, tDot11fIEhe_cap *new_cap)
|
||||
{
|
||||
if (!he_cap->present) {
|
||||
/* First time update, copy the capability as is */
|
||||
|
|
@ -457,7 +457,7 @@ static void wma_derive_ext_he_cap(t_wma_handle *wma_handle,
|
|||
}
|
||||
}
|
||||
|
||||
void wma_print_he_cap(tDot11fIEvendor_he_cap *he_cap)
|
||||
void wma_print_he_cap(tDot11fIEhe_cap *he_cap)
|
||||
{
|
||||
if (!he_cap->present) {
|
||||
WMA_LOGI(FL("HE Capabilities not present"));
|
||||
|
|
@ -737,12 +737,12 @@ void wma_print_he_mac_cap(uint32_t mac_cap)
|
|||
void wma_update_target_ext_he_cap(tp_wma_handle wma_handle,
|
||||
struct wma_tgt_cfg *tgt_cfg)
|
||||
{
|
||||
tDot11fIEvendor_he_cap *he_cap = &tgt_cfg->he_cap;
|
||||
tDot11fIEhe_cap *he_cap = &tgt_cfg->he_cap;
|
||||
int i, j = 0, max_mac;
|
||||
struct extended_caps *phy_caps;
|
||||
WMI_MAC_PHY_CAPABILITIES *mac_cap;
|
||||
tDot11fIEvendor_he_cap he_cap_mac;
|
||||
tDot11fIEvendor_he_cap tmp_he_cap = {0};
|
||||
tDot11fIEhe_cap he_cap_mac;
|
||||
tDot11fIEhe_cap tmp_he_cap = {0};
|
||||
|
||||
if (!wma_handle ||
|
||||
(0 == wma_handle->phy_caps.num_hw_modes.num_hw_modes)) {
|
||||
|
|
@ -765,7 +765,7 @@ void wma_update_target_ext_he_cap(tp_wma_handle wma_handle,
|
|||
max_mac = j + 1;
|
||||
for ( ; j < max_mac; j++) {
|
||||
qdf_mem_zero(&he_cap_mac,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
mac_cap = &phy_caps->each_phy_cap_per_hwmode[j];
|
||||
if (mac_cap->supported_bands & WLAN_2G_CAPABILITY) {
|
||||
wma_convert_he_cap(&he_cap_mac,
|
||||
|
|
@ -783,7 +783,7 @@ void wma_update_target_ext_he_cap(tp_wma_handle wma_handle,
|
|||
&he_cap_mac);
|
||||
|
||||
qdf_mem_zero(&he_cap_mac,
|
||||
sizeof(tDot11fIEvendor_he_cap));
|
||||
sizeof(tDot11fIEhe_cap));
|
||||
if (mac_cap->supported_bands & WLAN_5G_CAPABILITY) {
|
||||
wma_convert_he_cap(&he_cap_mac,
|
||||
mac_cap->he_cap_info_5G,
|
||||
|
|
@ -816,7 +816,7 @@ void wma_he_update_tgt_services(tp_wma_handle wma, struct wma_tgt_services *cfg)
|
|||
}
|
||||
}
|
||||
|
||||
void wma_print_he_op(tDot11fIEvendor_he_op *he_ops)
|
||||
void wma_print_he_op(tDot11fIEhe_op *he_ops)
|
||||
{
|
||||
WMA_LOGI(FL("bss_color: %0x, default_pe_duration: %0x, twt_required: %0x, rts_threshold: %0x, vht_oper_present: %0x"),
|
||||
he_ops->bss_color, he_ops->default_pe,
|
||||
|
|
@ -937,8 +937,8 @@ static void wma_parse_he_ppet(tDot11fIEppe_threshold *dot11f_ppet,
|
|||
void wma_populate_peer_he_cap(struct peer_assoc_params *peer,
|
||||
tpAddStaParams params)
|
||||
{
|
||||
tDot11fIEvendor_he_cap *he_cap = ¶ms->he_config;
|
||||
tDot11fIEvendor_he_op *he_op = ¶ms->he_op;
|
||||
tDot11fIEhe_cap *he_cap = ¶ms->he_config;
|
||||
tDot11fIEhe_op *he_op = ¶ms->he_op;
|
||||
uint32_t *phy_cap = peer->peer_he_cap_phyinfo;
|
||||
uint32_t mac_cap = 0, he_ops = 0;
|
||||
uint8_t temp, i;
|
||||
|
|
@ -1073,7 +1073,7 @@ void wma_update_vdev_he_ops(struct wma_vdev_start_req *req,
|
|||
tpAddBssParams add_bss)
|
||||
{
|
||||
uint32_t he_ops = 0;
|
||||
tDot11fIEvendor_he_op *he_op = &add_bss->he_op;
|
||||
tDot11fIEhe_op *he_op = &add_bss->he_op;
|
||||
|
||||
req->he_capable = add_bss->he_capable;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue