diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index b53cbb3c57d8..0009e39b23d6 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -1080,6 +1080,8 @@ static void mlme_init_he_cap_in_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_HE_STA_OBSSPD); qdf_mem_zero(he_caps->he_ppet_2g, MLME_HE_PPET_LEN); qdf_mem_zero(he_caps->he_ppet_5g, MLME_HE_PPET_LEN); + mlme_cfg->he_caps.he_mcs_12_13_supp_2g = 0; + mlme_cfg->he_caps.he_mcs_12_13_supp_5g = 0; } #else static void mlme_init_he_cap_in_cfg(struct wlan_objmgr_psoc *psoc, diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 6e055b3b2b6b..305ea7f1106d 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -929,6 +929,8 @@ struct wlan_mlme_he_caps { uint8_t enable_ul_mimo; uint8_t enable_ul_ofdm; uint32_t he_sta_obsspd; + uint16_t he_mcs_12_13_supp_2g; + uint16_t he_mcs_12_13_supp_5g; }; #endif diff --git a/components/mlme/dispatcher/src/wlan_mlme_api.c b/components/mlme/dispatcher/src/wlan_mlme_api.c index 20341e8860cd..414ba3f45c28 100644 --- a/components/mlme/dispatcher/src/wlan_mlme_api.c +++ b/components/mlme/dispatcher/src/wlan_mlme_api.c @@ -831,6 +831,11 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc, HE_MAX_PPET_SIZE); mlme_obj->cfg.he_caps.he_cap_orig = mlme_obj->cfg.he_caps.dot11_he_cap; + mlme_obj->cfg.he_caps.he_mcs_12_13_supp_2g = + wma_cfg->he_mcs_12_13_supp_2g; + mlme_obj->cfg.he_caps.he_mcs_12_13_supp_5g = + wma_cfg->he_mcs_12_13_supp_5g; + return status; } #endif diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index d427add83bbd..32c084761aba 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/core/mac/src/cfg/cfgUtil/dot11f.frms @@ -1,5 +1,6 @@ /* - * Copyright (c) 2006-2007, 2014-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2006-2007, 2014-2018, 2020 The Linux Foundation. + * All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -2617,6 +2618,7 @@ IE TimeAdvertisement (EID_TIME_ADVERTISEMENT) // 8.4.2.63 const QTI_VERSION_ATTR_ID = 1; const QTI_VHT_MCS_10_11_ATTR_ID = 2; +const QTI_HE_MCS_11_12_ATTR_ID = 9; IE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 ) { @@ -2630,6 +2632,11 @@ IE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 ) { vht_mcs_10_11_supp, 1; } + + OPTIE IE he_mcs13_attr (QTI_HE_MCS_11_12_ATTR_ID) + { + he_mcs_12_13_supp, 2; + } } IE esp_information (EID_EXTN_ID_ELEMENT) OUI ( 0x0B ) diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h index 0617946be281..464512175008 100644 --- a/core/mac/src/include/dot11f.h +++ b/core/mac/src/include/dot11f.h @@ -26,7 +26,7 @@ * * * This file was automatically generated by 'framesc' - * Wed Feb 12 21:00:55 2020 from the following file(s): + * Mon Mar 16 12:19:32 2020 from the following file(s): * * dot11f.frms * @@ -2730,6 +2730,45 @@ uint32_t dot11f_get_packed_ie_R1KH_ID( }; /* End extern "C". */ #endif /* C++ */ +/* EID 9 (0x09) */ +typedef struct sDot11fIEhe_mcs13_attr { + uint8_t present; + uint16_t he_mcs_12_13_supp; +} tDot11fIEhe_mcs13_attr; + +#define DOT11F_EID_HE_MCS13_ATTR (9) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HE_MCS13_ATTR_MIN_LEN (2) + +#define DOT11F_IE_HE_MCS13_ATTR_MAX_LEN (2) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_he_mcs13_attr( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEhe_mcs13_attr*, + bool); + +uint32_t dot11f_pack_ie_he_mcs13_attr( + tpAniSirGlobal, + tDot11fIEhe_mcs13_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_he_mcs13_attr( + tpAniSirGlobal, + tDot11fIEhe_mcs13_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 1 (0x01) */ typedef struct sDot11fIEversion_attr { uint8_t present; @@ -9376,6 +9415,7 @@ typedef struct sDot11fIEqcn_ie { uint8_t present; tDot11fIEversion_attr version_attr; tDot11fIEvht_mcs11_attr vht_mcs11_attr; + tDot11fIEhe_mcs13_attr he_mcs13_attr; } tDot11fIEqcn_ie; #define DOT11F_EID_QCN_IE (221) @@ -9383,7 +9423,7 @@ typedef struct sDot11fIEqcn_ie { /* N.B. These #defines do *not* include the EID & length */ #define DOT11F_IE_QCN_IE_MIN_LEN (4) -#define DOT11F_IE_QCN_IE_MAX_LEN (11) +#define DOT11F_IE_QCN_IE_MAX_LEN (15) #ifdef __cplusplus extern "C" { diff --git a/core/mac/src/include/dph_global.h b/core/mac/src/include/dph_global.h index f9ed4cad6e5b..bfb8e67c9652 100644 --- a/core/mac/src/include/dph_global.h +++ b/core/mac/src/include/dph_global.h @@ -181,6 +181,7 @@ typedef struct sDphHashNode { #ifdef WLAN_FEATURE_11AX tDot11fIEhe_cap he_config; + uint16_t he_mcs_12_13_map; #endif /* Peer operation class, extracted from ASSOC request frame*/ tDot11fIESuppOperatingClasses supp_operating_classes; diff --git a/core/mac/src/include/parser_api.h b/core/mac/src/include/parser_api.h index 32079b16a0c9..57c77fe67949 100644 --- a/core/mac/src/include/parser_api.h +++ b/core/mac/src/include/parser_api.h @@ -1068,6 +1068,7 @@ populate_dot11f_ext_cap(struct mac_context *mac, bool isVHTEnabled, tDot11fIEExtCap *pDot11f, struct pe_session *pe_session); void populate_dot11f_qcn_ie(struct mac_context *mac, + struct pe_session *pe_session, tDot11fIEqcn_ie *qcn_ie, uint8_t attr_id); diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c index 24b2be10f20b..ceaf07523785 100644 --- a/core/mac/src/pe/lim/lim_assoc_utils.c +++ b/core/mac/src/pe/lim/lim_assoc_utils.c @@ -2015,9 +2015,21 @@ static void lim_update_he_stbc_capable(tpAddStaParams add_sta_params) add_sta_params->stbc_capable = add_sta_params->he_config.rx_stbc_lt_80mhz; } + +static void lim_update_he_mcs_12_13(tpAddStaParams add_sta_params, + tpDphHashNode sta_ds) +{ + if (sta_ds->he_mcs_12_13_map) + add_sta_params->he_mcs_12_13_map = sta_ds->he_mcs_12_13_map; +} + #else static void lim_update_he_stbc_capable(tpAddStaParams add_sta_params) {} + +static void lim_update_he_mcs_12_13(tpAddStaParams add_sta_params, + tpDphHashNode sta_ds) +{} #endif /** @@ -2443,6 +2455,7 @@ lim_add_sta(struct mac_context *mac_ctx, } lim_update_he_stbc_capable(add_sta_params); + lim_update_he_mcs_12_13(add_sta_params, sta_ds); msg_q.type = WMA_ADD_STA_REQ; msg_q.reserved = 0; @@ -3539,6 +3552,8 @@ QDF_STATUS lim_sta_send_add_bss(struct mac_context *mac, tpSirAssocRsp pAssocRsp NULL, pAssocRsp); lim_update_he_stbc_capable(&pAddBssParams->staContext); + lim_update_he_mcs_12_13(&pAddBssParams->staContext, + sta); } /* diff --git a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c index 734e213d3f11..ed33a7fa71eb 100644 --- a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c +++ b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c @@ -1701,7 +1701,7 @@ static bool lim_update_sta_ds(struct mac_context *mac_ctx, tpSirMacMgmtHdr hdr, assoc_req->qcn_ie.vht_mcs11_attr. vht_mcs_10_11_supp; } - lim_intersect_sta_he_caps(assoc_req, session, sta_ds); + lim_intersect_sta_he_caps(mac_ctx, assoc_req, session, sta_ds); if (lim_populate_matching_rate_set(mac_ctx, sta_ds, &(assoc_req->supportedRates), diff --git a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c index 9e2a70172124..807ad9be1dba 100644 --- a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c +++ b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c @@ -186,7 +186,8 @@ void lim_update_assoc_sta_datas(struct mac_context *mac_ctx, } if (IS_DOT11_MODE_HE(session_entry->dot11mode)) - lim_update_stads_he_caps(sta_ds, assoc_rsp, session_entry); + lim_update_stads_he_caps(mac_ctx, sta_ds, assoc_rsp, + session_entry); if (lim_is_sta_he_capable(sta_ds)) he_cap = &assoc_rsp->he_cap; diff --git a/core/mac/src/pe/lim/lim_send_management_frames.c b/core/mac/src/pe/lim/lim_send_management_frames.c index 970e19a3d2a7..80d51ed81bcc 100644 --- a/core/mac/src/pe/lim/lim_send_management_frames.c +++ b/core/mac/src/pe/lim/lim_send_management_frames.c @@ -352,10 +352,11 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx, } /* Add qcn_ie only if qcn ie is not present in additional_ie */ if (!qcn_ie) - populate_dot11f_qcn_ie(mac_ctx, &pr.qcn_ie, QCN_IE_ATTR_ID_ALL); + populate_dot11f_qcn_ie(mac_ctx, pesession, + &pr.qcn_ie, QCN_IE_ATTR_ID_ALL); else - populate_dot11f_qcn_ie(mac_ctx, &pr.qcn_ie, - QCN_IE_ATTR_ID_VHT_MCS11); + populate_dot11f_qcn_ie(mac_ctx, pesession, + &pr.qcn_ie, QCN_IE_ATTR_ID_VHT_MCS11); /* * Extcap IE now support variable length, merge Extcap IE from addn_ie @@ -1374,7 +1375,7 @@ lim_send_assoc_rsp_mgmt_frame( populate_dot11f_vht_operation(mac_ctx, pe_session, &frm.vendor_vht_ie.VHTOperation); is_vht = true; - populate_dot11f_qcn_ie(mac_ctx, &frm.qcn_ie, + populate_dot11f_qcn_ie(mac_ctx, pe_session, &frm.qcn_ie, QCN_IE_ATTR_ID_ALL); } populate_dot11f_ext_cap(mac_ctx, is_vht, &frm.ExtCap, @@ -2088,7 +2089,8 @@ lim_send_assoc_req_mgmt_frame(struct mac_context *mac_ctx, populate_dot11f_ext_cap(mac_ctx, vht_enabled, &frm->ExtCap, pe_session); - populate_dot11f_qcn_ie(mac_ctx, &frm->qcn_ie, QCN_IE_ATTR_ID_ALL); + populate_dot11f_qcn_ie(mac_ctx, pe_session, + &frm->qcn_ie, QCN_IE_ATTR_ID_ALL); if (lim_is_session_he_capable(pe_session)) { pe_debug("Populate HE IEs"); diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index c2c4f24e46a2..e17fa554e0e8 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -6601,6 +6601,9 @@ void lim_add_he_cap(struct mac_context *mac_ctx, struct pe_session *pe_session, qdf_mem_copy(&add_sta_params->he_config, &assoc_req->he_cap, sizeof(add_sta_params->he_config)); + add_sta_params->he_mcs_12_13_map = + assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp; + if (lim_is_he_6ghz_band(pe_session)) lim_update_he_6ghz_band_caps(mac_ctx, &assoc_req->he_6ghz_band_cap, @@ -6686,15 +6689,40 @@ static void lim_intersect_he_caps(tDot11fIEhe_cap *rcvd_he, peer_he->twt_responder : 0; } -void lim_intersect_sta_he_caps(tpSirAssocReq assoc_req, struct pe_session *session, - tpDphHashNode sta_ds) +void lim_intersect_sta_he_caps(struct mac_context *mac_ctx, + tpSirAssocReq assoc_req, + struct pe_session *session, + tpDphHashNode sta_ds) { 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); + if (!sta_ds->mlmStaContext.he_capable) + return; + + /* If HE is not supported, do not fill sta_ds and return */ + if (!IS_DOT11_MODE_HE(session->dot11mode)) + return; + + lim_intersect_he_caps(rcvd_he, session_he, peer_he); + + /* If MCS 12/13 is supported from assoc QCN IE */ + if (assoc_req->qcn_ie.present && + assoc_req->qcn_ie.he_mcs13_attr.present) { + sta_ds->he_mcs_12_13_map = + assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp; + } else { + return; + } + + /* Take intersection of FW capability for HE MCS 12/13 */ + if (wlan_reg_is_24ghz_ch_freq(session->curr_op_freq)) + sta_ds->he_mcs_12_13_map &= + mac_ctx->mlme_cfg->he_caps.he_mcs_12_13_supp_2g; + else + sta_ds->he_mcs_12_13_map &= + mac_ctx->mlme_cfg->he_caps.he_mcs_12_13_supp_5g; } void lim_intersect_ap_he_caps(struct pe_session *session, struct bss_params *add_bss, @@ -6756,7 +6784,8 @@ void lim_update_he_6gop_assoc_resp(struct bss_params *pAddBssParams, pAddBssParams->staContext.ch_width = pAddBssParams->ch_width; } -void lim_update_stads_he_caps(tpDphHashNode sta_ds, tpSirAssocRsp assoc_rsp, +void lim_update_stads_he_caps(struct mac_context *mac_ctx, + tpDphHashNode sta_ds, tpSirAssocRsp assoc_rsp, struct pe_session *session_entry) { tDot11fIEhe_cap *he_cap; @@ -6769,6 +6798,26 @@ void lim_update_stads_he_caps(tpDphHashNode sta_ds, tpSirAssocRsp assoc_rsp, qdf_mem_copy(&sta_ds->he_config, he_cap, sizeof(*he_cap)); + /* If HE is not supported, do not fill sta_ds and return */ + if (!IS_DOT11_MODE_HE(session_entry->dot11mode)) + return; + + /* If MCS 12/13 is supported by the assoc resp QCN IE */ + if (assoc_rsp->qcn_ie.present && + assoc_rsp->qcn_ie.he_mcs13_attr.present) { + sta_ds->he_mcs_12_13_map = + assoc_rsp->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp; + } else { + return; + } + + /* Take intersection of the FW capability for HE MCS 12/13 */ + if (wlan_reg_is_24ghz_ch_freq(session_entry->curr_op_freq)) + sta_ds->he_mcs_12_13_map &= + mac_ctx->mlme_cfg->he_caps.he_mcs_12_13_supp_2g; + else + sta_ds->he_mcs_12_13_map &= + mac_ctx->mlme_cfg->he_caps.he_mcs_12_13_supp_5g; } void lim_update_stads_he_6ghz_op(struct pe_session *session, @@ -7096,6 +7145,7 @@ void lim_update_sta_he_capable(struct mac_context *mac, else add_sta_params->he_capable = session_entry->he_capable; + add_sta_params->he_mcs_12_13_map = sta_ds->he_mcs_12_13_map; pe_debug("he_capable: %d", add_sta_params->he_capable); } @@ -7430,6 +7480,7 @@ QDF_STATUS lim_populate_he_mcs_set(struct mac_context *mac_ctx, peer_he_caps->tx_he_mcs_map_lt_80, nss, mac_ctx->mlme_cfg->he_caps.dot11_he_cap.rx_he_mcs_map_lt_80, mac_ctx->mlme_cfg->he_caps.dot11_he_cap.tx_he_mcs_map_lt_80); + if (session_entry->ch_width == CH_WIDTH_160MHZ) { lim_populate_he_mcs_per_bw( mac_ctx, &rates->rx_he_mcs_map_160, diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h index 843e0328fc90..db7deec59ee3 100644 --- a/core/mac/src/pe/lim/lim_utils.h +++ b/core/mac/src/pe/lim/lim_utils.h @@ -1059,14 +1059,17 @@ void lim_intersect_ap_he_caps(struct pe_session *session, struct bss_params *add /** * lim_intersect_sta_he_caps() - Intersect STA capability with SAP capability + * @mac_ctx: pointer to the MAC context * @assoc_req: pointer to assoc request * @session: pointer to PE session * @sta_ds: pointer to STA dph hash table entry * * Return: None */ -void lim_intersect_sta_he_caps(tpSirAssocReq assoc_req, struct pe_session *session, - tpDphHashNode sta_ds); +void lim_intersect_sta_he_caps(struct mac_context *mac_ctx, + tpSirAssocReq assoc_req, + struct pe_session *session, + tpDphHashNode sta_ds); /** * lim_add_he_cap() - Copy HE capability into Add sta params @@ -1193,13 +1196,15 @@ void lim_log_he_cap(struct mac_context *mac, tDot11fIEhe_cap *he_cap); /** * lim_update_stads_he_caps() - Copy HE capability into STA DPH hash table entry + * @mac_ctx: pointer to mac context * @sta_ds: pointer to sta dph hash table entry * @assoc_rsp: pointer to assoc response * @session_entry: pointer to PE session * * Return: None */ -void lim_update_stads_he_caps(tpDphHashNode sta_ds, tpSirAssocRsp assoc_rsp, +void lim_update_stads_he_caps(struct mac_context *mac_ctx, + tpDphHashNode sta_ds, tpSirAssocRsp assoc_rsp, struct pe_session *session_entry); /** @@ -1420,13 +1425,17 @@ static inline void lim_intersect_ap_he_caps(struct pe_session *session, return; } -static inline void lim_intersect_sta_he_caps(tpSirAssocReq assoc_req, - struct pe_session *session, tpDphHashNode sta_ds) +static inline void lim_intersect_sta_he_caps(struct mac_context *mac_ctx, + tpSirAssocReq assoc_req, + struct pe_session *session, + tpDphHashNode sta_ds) { } -static inline void lim_update_stads_he_caps(tpDphHashNode sta_ds, tpSirAssocRsp assoc_rsp, - struct pe_session *session_entry) +static inline void lim_update_stads_he_caps(struct mac_context *mac_ctx, + tpDphHashNode sta_ds, + tpSirAssocRsp assoc_rsp, + struct pe_session *session_entry) { return; } diff --git a/core/mac/src/pe/sch/sch_beacon_gen.c b/core/mac/src/pe/sch/sch_beacon_gen.c index c8bf6e176d71..b6d66d7e5e66 100644 --- a/core/mac/src/pe/sch/sch_beacon_gen.c +++ b/core/mac/src/pe/sch/sch_beacon_gen.c @@ -467,7 +467,7 @@ sch_set_fixed_beacon_fields(struct mac_context *mac_ctx, struct pe_session *sess &bcn_2->vht_transmit_power_env, session->ch_width, session->curr_op_freq); - populate_dot11f_qcn_ie(mac_ctx, &bcn_2->qcn_ie, + populate_dot11f_qcn_ie(mac_ctx, session, &bcn_2->qcn_ie, QCN_IE_ATTR_ID_ALL); } diff --git a/core/mac/src/sys/legacy/src/utils/src/dot11f.c b/core/mac/src/sys/legacy/src/utils/src/dot11f.c index 3bd788abd344..0c7e6d941d20 100644 --- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c +++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c @@ -24,7 +24,7 @@ * * * This file was automatically generated by 'framesc' - * Wed Feb 12 21:00:55 2020 from the following file(s): + * Mon Mar 16 12:19:33 2020 from the following file(s): * * dot11f.frms * @@ -1846,6 +1846,30 @@ uint32_t dot11f_unpack_ie_r1_kh_id(tpAniSirGlobal pCtx, #define SigIeR1KH_ID (0x0004) +uint32_t dot11f_unpack_ie_he_mcs13_attr(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEhe_mcs13_attr *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + return DOT11F_DUPLICATE_IE; + pDst->present = 1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->he_mcs_12_13_supp, pBuf, 0); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_he_mcs13_attr. */ + +#define SigIehe_mcs13_attr (0x0005) + + uint32_t dot11f_unpack_ie_version_attr(tpAniSirGlobal pCtx, uint8_t *pBuf, uint8_t ielen, @@ -1875,7 +1899,7 @@ uint32_t dot11f_unpack_ie_version_attr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_version_attr. */ -#define SigIeversion_attr (0x0005) +#define SigIeversion_attr (0x0006) uint32_t dot11f_unpack_ie_vht_mcs11_attr(tpAniSirGlobal pCtx, @@ -1899,7 +1923,7 @@ uint32_t dot11f_unpack_ie_vht_mcs11_attr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_mcs11_attr. */ -#define SigIevht_mcs11_attr (0x0006) +#define SigIevht_mcs11_attr (0x0007) uint32_t dot11f_unpack_ie_ap_channel_report(tpAniSirGlobal pCtx, @@ -1932,7 +1956,7 @@ uint32_t dot11f_unpack_ie_ap_channel_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ap_channel_report. */ -#define SigIeAPChannelReport (0x0007) +#define SigIeAPChannelReport (0x0008) uint32_t dot11f_unpack_ie_bcn_reporting_detail(tpAniSirGlobal pCtx, @@ -1956,7 +1980,7 @@ uint32_t dot11f_unpack_ie_bcn_reporting_detail(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_bcn_reporting_detail. */ -#define SigIeBcnReportingDetail (0x0008) +#define SigIeBcnReportingDetail (0x0009) uint32_t dot11f_unpack_ie_beacon_report_frm_body(tpAniSirGlobal pCtx, @@ -1981,7 +2005,7 @@ uint32_t dot11f_unpack_ie_beacon_report_frm_body(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_beacon_report_frm_body. */ -#define SigIeBeaconReportFrmBody (0x0009) +#define SigIeBeaconReportFrmBody (0x000a) uint32_t dot11f_unpack_ie_beacon_reporting(tpAniSirGlobal pCtx, @@ -2013,7 +2037,7 @@ uint32_t dot11f_unpack_ie_beacon_reporting(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_beacon_reporting. */ -#define SigIeBeaconReporting (0x000a) +#define SigIeBeaconReporting (0x000b) uint32_t dot11f_unpack_ie_condensed_country_str(tpAniSirGlobal pCtx, @@ -2037,7 +2061,7 @@ uint32_t dot11f_unpack_ie_condensed_country_str(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_condensed_country_str. */ -#define SigIeCondensedCountryStr (0x000b) +#define SigIeCondensedCountryStr (0x000c) uint32_t dot11f_unpack_ie_measurement_pilot(tpAniSirGlobal pCtx, @@ -2065,7 +2089,7 @@ uint32_t dot11f_unpack_ie_measurement_pilot(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_pilot. */ -#define SigIeMeasurementPilot (0x000c) +#define SigIeMeasurementPilot (0x000d) uint32_t dot11f_unpack_ie_multi_bssid(tpAniSirGlobal pCtx, @@ -2093,7 +2117,7 @@ uint32_t dot11f_unpack_ie_multi_bssid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_multi_bssid. */ -#define SigIeMultiBssid (0x000d) +#define SigIeMultiBssid (0x000e) uint32_t dot11f_unpack_ie_ric_data(tpAniSirGlobal pCtx, @@ -2133,7 +2157,7 @@ uint32_t dot11f_unpack_ie_ric_data(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_data. */ -#define SigIeRICData (0x000e) +#define SigIeRICData (0x000f) uint32_t dot11f_unpack_ie_ric_descriptor(tpAniSirGlobal pCtx, @@ -2161,7 +2185,7 @@ uint32_t dot11f_unpack_ie_ric_descriptor(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_descriptor. */ -#define SigIeRICDescriptor (0x000f) +#define SigIeRICDescriptor (0x0010) uint32_t dot11f_unpack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, @@ -2253,7 +2277,7 @@ uint32_t dot11f_unpack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rrm_enabled_cap. */ -#define SigIeRRMEnabledCap (0x0010) +#define SigIeRRMEnabledCap (0x0011) uint32_t dot11f_unpack_ie_requested_info(tpAniSirGlobal pCtx, @@ -2273,7 +2297,7 @@ uint32_t dot11f_unpack_ie_requested_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_requested_info. */ -#define SigIeRequestedInfo (0x0011) +#define SigIeRequestedInfo (0x0012) uint32_t dot11f_unpack_ie_ssid(tpAniSirGlobal pCtx, @@ -2300,7 +2324,7 @@ uint32_t dot11f_unpack_ie_ssid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ssid. */ -#define SigIeSSID (0x0012) +#define SigIeSSID (0x0013) uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, @@ -2361,7 +2385,7 @@ uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_schedule. */ -#define SigIeSchedule (0x0013) +#define SigIeSchedule (0x0014) uint32_t dot11f_unpack_ie_tclas(tpAniSirGlobal pCtx, @@ -2553,10 +2577,10 @@ uint32_t dot11f_unpack_ie_tclas(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tclas. */ -#define SigIeTCLAS (0x0014) +#define SigIeTCLAS (0x0015) -#define SigIeTCLASSPROC (0x0015) +#define SigIeTCLASSPROC (0x0016) uint32_t dot11f_unpack_ie_ts_delay(tpAniSirGlobal pCtx, @@ -2580,7 +2604,7 @@ uint32_t dot11f_unpack_ie_ts_delay(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ts_delay. */ -#define SigIeTSDelay (0x0016) +#define SigIeTSDelay (0x0017) uint32_t dot11f_unpack_ie_tsf_info(tpAniSirGlobal pCtx, @@ -2612,7 +2636,7 @@ uint32_t dot11f_unpack_ie_tsf_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tsf_info. */ -#define SigIeTSFInfo (0x0017) +#define SigIeTSFInfo (0x0018) uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, @@ -2779,7 +2803,7 @@ uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tspec. */ -#define SigIeTSPEC (0x0018) +#define SigIeTSPEC (0x0019) uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, @@ -2863,7 +2887,7 @@ uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_caps. */ -#define SigIeVHTCaps (0x0019) +#define SigIeVHTCaps (0x001a) uint32_t dot11f_unpack_ie_vht_operation(tpAniSirGlobal pCtx, @@ -2911,7 +2935,7 @@ uint32_t dot11f_unpack_ie_vht_operation(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_operation. */ -#define SigIeVHTOperation (0x001a) +#define SigIeVHTOperation (0x001b) uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, @@ -2984,7 +3008,7 @@ uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_schedule. */ -#define SigIeWMMSchedule (0x001b) +#define SigIeWMMSchedule (0x001c) uint32_t dot11f_unpack_ie_wmmtclas(tpAniSirGlobal pCtx, @@ -3188,7 +3212,7 @@ uint32_t dot11f_unpack_ie_wmmtclas(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtclas. */ -#define SigIeWMMTCLAS (0x001c) +#define SigIeWMMTCLAS (0x001d) uint32_t dot11f_unpack_ie_wmmtclasproc(tpAniSirGlobal pCtx, @@ -3224,7 +3248,7 @@ uint32_t dot11f_unpack_ie_wmmtclasproc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtclasproc. */ -#define SigIeWMMTCLASPROC (0x001d) +#define SigIeWMMTCLASPROC (0x001e) uint32_t dot11f_unpack_ie_wmmts_delay(tpAniSirGlobal pCtx, @@ -3260,7 +3284,7 @@ uint32_t dot11f_unpack_ie_wmmts_delay(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmts_delay. */ -#define SigIeWMMTSDelay (0x001e) +#define SigIeWMMTSDelay (0x001f) uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, @@ -3439,7 +3463,7 @@ uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtspec. */ -#define SigIeWMMTSPEC (0x001f) +#define SigIeWMMTSPEC (0x0020) uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann(tpAniSirGlobal pCtx, @@ -3479,7 +3503,7 @@ uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wider_bw_chan_switch_ann. */ -#define SigIeWiderBWChanSwitchAnn (0x0020) +#define SigIeWiderBWChanSwitchAnn (0x0021) uint32_t dot11f_unpack_ie_azimuth_req(tpAniSirGlobal pCtx, @@ -3503,7 +3527,7 @@ uint32_t dot11f_unpack_ie_azimuth_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_azimuth_req. */ -#define SigIeazimuth_req (0x0021) +#define SigIeazimuth_req (0x0022) uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, @@ -3531,7 +3555,7 @@ uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx return status; } /* End dot11f_unpack_ie_beacon_report_frm_body_fragment_id. */ -#define SigIebeacon_report_frm_body_fragment_id (0x0022) +#define SigIebeacon_report_frm_body_fragment_id (0x0023) uint32_t dot11f_unpack_ie_last_beacon_report_indication(tpAniSirGlobal pCtx, @@ -3555,7 +3579,7 @@ uint32_t dot11f_unpack_ie_last_beacon_report_indication(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_last_beacon_report_indication. */ -#define SigIelast_beacon_report_indication (0x0023) +#define SigIelast_beacon_report_indication (0x0024) uint32_t dot11f_unpack_ie_max_age(tpAniSirGlobal pCtx, @@ -3579,7 +3603,7 @@ uint32_t dot11f_unpack_ie_max_age(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_max_age. */ -#define SigIemax_age (0x0024) +#define SigIemax_age (0x0025) static const tFFDefn FFS_neighbor_rpt[] = { @@ -3701,7 +3725,7 @@ uint32_t dot11f_unpack_ie_neighbor_rpt(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_rpt. */ -#define SigIeneighbor_rpt (0x0025) +#define SigIeneighbor_rpt (0x0026) uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, @@ -3725,7 +3749,7 @@ uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_req_mac_addr. */ -#define SigIereq_mac_addr (0x0026) +#define SigIereq_mac_addr (0x0027) uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, @@ -3749,7 +3773,7 @@ uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tgt_mac_addr. */ -#define SigIetgt_mac_addr (0x0027) +#define SigIetgt_mac_addr (0x0028) uint32_t dot11f_unpack_ie_vht_transmit_power_env(tpAniSirGlobal pCtx, @@ -3774,7 +3798,7 @@ uint32_t dot11f_unpack_ie_vht_transmit_power_env(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_transmit_power_env. */ -#define SigIevht_transmit_power_env (0x0028) +#define SigIevht_transmit_power_env (0x0029) uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, @@ -3798,7 +3822,7 @@ uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_aid. */ -#define SigIeAID (0x0029) +#define SigIeAID (0x002a) uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, @@ -3846,7 +3870,7 @@ uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_cf_params. */ -#define SigIeCFParams (0x002a) +#define SigIeCFParams (0x002b) uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, @@ -3871,7 +3895,7 @@ uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_challenge_text. */ -#define SigIeChallengeText (0x002b) +#define SigIeChallengeText (0x002c) uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, @@ -3911,7 +3935,7 @@ uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_chan_switch_ann. */ -#define SigIeChanSwitchAnn (0x002c) +#define SigIeChanSwitchAnn (0x002d) static const tFFDefn FFS_ChannelSwitchWrapper[] = { @@ -3953,7 +3977,7 @@ uint32_t dot11f_unpack_ie_channel_switch_wrapper(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_channel_switch_wrapper. */ -#define SigIeChannelSwitchWrapper (0x002d) +#define SigIeChannelSwitchWrapper (0x002e) uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, @@ -3991,10 +4015,10 @@ uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_country. */ -#define SigIeCountry (0x002e) +#define SigIeCountry (0x002f) -#define SigIeDSParams (0x002f) +#define SigIeDSParams (0x0030) uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, @@ -4154,7 +4178,7 @@ uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_edca_param_set. */ -#define SigIeEDCAParamSet (0x0030) +#define SigIeEDCAParamSet (0x0031) uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, @@ -4183,7 +4207,7 @@ uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_erp_info. */ -#define SigIeERPInfo (0x0031) +#define SigIeERPInfo (0x0032) uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, @@ -4208,7 +4232,7 @@ uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_cckm_opaque. */ -#define SigIeESECckmOpaque (0x0032) +#define SigIeESECckmOpaque (0x0033) uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, @@ -4243,7 +4267,7 @@ uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_rad_mgmt_cap. */ -#define SigIeESERadMgmtCap (0x0033) +#define SigIeESERadMgmtCap (0x0034) uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, @@ -4283,7 +4307,7 @@ uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_traf_strm_met. */ -#define SigIeESETrafStrmMet (0x0034) +#define SigIeESETrafStrmMet (0x0035) uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(tpAniSirGlobal pCtx, @@ -4316,7 +4340,7 @@ uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_traf_strm_rate_set. */ -#define SigIeESETrafStrmRateSet (0x0035) +#define SigIeESETrafStrmRateSet (0x0036) uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, @@ -4348,7 +4372,7 @@ uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_txmit_power. */ -#define SigIeESETxmitPower (0x0036) +#define SigIeESETxmitPower (0x0037) uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, @@ -4372,7 +4396,7 @@ uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_version. */ -#define SigIeESEVersion (0x0037) +#define SigIeESEVersion (0x0038) uint32_t dot11f_unpack_ie_ext_cap(tpAniSirGlobal pCtx, @@ -4402,7 +4426,7 @@ endUnpackIeExtCap: return status; } /* End dot11f_unpack_ie_ext_cap. */ -#define SigIeExtCap (0x0038) +#define SigIeExtCap (0x0039) uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, @@ -4435,7 +4459,7 @@ uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ext_supp_rates. */ -#define SigIeExtSuppRates (0x0039) +#define SigIeExtSuppRates (0x003a) uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, @@ -4483,7 +4507,7 @@ uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_param_set. */ -#define SigIeFHParamSet (0x003a) +#define SigIeFHParamSet (0x003b) uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, @@ -4515,7 +4539,7 @@ uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_params. */ -#define SigIeFHParams (0x003b) +#define SigIeFHParams (0x003c) uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, @@ -4572,7 +4596,7 @@ uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_patt_table. */ -#define SigIeFHPattTable (0x003c) +#define SigIeFHPattTable (0x003d) static const tFFDefn FFS_FTInfo[] = { @@ -4652,7 +4676,7 @@ uint32_t dot11f_unpack_ie_ft_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ft_info. */ -#define SigIeFTInfo (0x003d) +#define SigIeFTInfo (0x003e) uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, @@ -4776,7 +4800,7 @@ uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht_caps. */ -#define SigIeHTCaps (0x003e) +#define SigIeHTCaps (0x003f) uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, @@ -4862,7 +4886,7 @@ uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht_info. */ -#define SigIeHTInfo (0x003f) +#define SigIeHTInfo (0x0040) uint32_t dot11f_unpack_ie_ibss_params(tpAniSirGlobal pCtx, @@ -4886,7 +4910,7 @@ uint32_t dot11f_unpack_ie_ibss_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ibss_params. */ -#define SigIeIBSSParams (0x0040) +#define SigIeIBSSParams (0x0041) uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, @@ -4926,7 +4950,7 @@ uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_link_identifier. */ -#define SigIeLinkIdentifier (0x0041) +#define SigIeLinkIdentifier (0x0042) static const tTLVDefn TLVS_MBO_IE[] = { @@ -4989,7 +5013,7 @@ uint32_t dot11f_unpack_ie_MBO_IE(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_MBO_IE. */ -#define SigIeMBO_IE (0x0042) +#define SigIeMBO_IE (0x0043) static const tFFDefn FFS_reportBeacon[] = { @@ -5324,7 +5348,7 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_report. */ -#define SigIeMeasurementReport (0x0043) +#define SigIeMeasurementReport (0x0044) static const tFFDefn FFS_measurement_requestBeacon[] = { @@ -5628,7 +5652,7 @@ uint32_t dot11f_unpack_ie_measurement_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_request. */ -#define SigIeMeasurementRequest (0x0044) +#define SigIeMeasurementRequest (0x0045) uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, @@ -5664,7 +5688,7 @@ uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_mobility_domain. */ -#define SigIeMobilityDomain (0x0045) +#define SigIeMobilityDomain (0x0046) static const tFFDefn FFS_NeighborReport[] = { @@ -5786,7 +5810,7 @@ uint32_t dot11f_unpack_ie_neighbor_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_report. */ -#define SigIeNeighborReport (0x0046) +#define SigIeNeighborReport (0x0047) uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, @@ -5858,7 +5882,7 @@ uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_obss_scan_parameters. */ -#define SigIeOBSSScanParameters (0x0047) +#define SigIeOBSSScanParameters (0x0048) uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, @@ -5888,7 +5912,7 @@ uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_operating_mode. */ -#define SigIeOperatingMode (0x0048) +#define SigIeOperatingMode (0x0049) static const tTLVDefn TLVS_P2PAssocReq[] = { @@ -5920,7 +5944,7 @@ uint32_t dot11f_unpack_ie_p2_p_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_assoc_req. */ -#define SigIeP2PAssocReq (0x0049) +#define SigIeP2PAssocReq (0x004a) static const tTLVDefn TLVS_P2PAssocRes[] = { @@ -5949,7 +5973,7 @@ uint32_t dot11f_unpack_ie_p2_p_assoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_assoc_res. */ -#define SigIeP2PAssocRes (0x004a) +#define SigIeP2PAssocRes (0x004b) static const tTLVDefn TLVS_P2PBeacon[] = { @@ -5981,7 +6005,7 @@ uint32_t dot11f_unpack_ie_p2_p_beacon(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_beacon. */ -#define SigIeP2PBeacon (0x004b) +#define SigIeP2PBeacon (0x004c) static const tTLVDefn TLVS_P2PBeaconProbeRes[] = { @@ -6023,7 +6047,7 @@ uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_beacon_probe_res. */ -#define SigIeP2PBeaconProbeRes (0x004c) +#define SigIeP2PBeaconProbeRes (0x004d) static const tTLVDefn TLVS_P2PDeAuth[] = { @@ -6049,7 +6073,7 @@ uint32_t dot11f_unpack_ie_p2_p_de_auth(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_de_auth. */ -#define SigIeP2PDeAuth (0x004d) +#define SigIeP2PDeAuth (0x004e) static const tTLVDefn TLVS_P2PDisAssoc[] = { @@ -6075,7 +6099,7 @@ uint32_t dot11f_unpack_ie_p2_p_dis_assoc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_dis_assoc. */ -#define SigIeP2PDisAssoc (0x004e) +#define SigIeP2PDisAssoc (0x004f) uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx, @@ -6100,7 +6124,7 @@ uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_pie_opaque. */ -#define SigIeP2PIEOpaque (0x004f) +#define SigIeP2PIEOpaque (0x0050) static const tTLVDefn TLVS_P2PProbeReq[] = { @@ -6139,7 +6163,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_probe_req. */ -#define SigIeP2PProbeReq (0x0050) +#define SigIeP2PProbeReq (0x0051) static const tTLVDefn TLVS_P2PProbeRes[] = { @@ -6178,7 +6202,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_probe_res. */ -#define SigIeP2PProbeRes (0x0051) +#define SigIeP2PProbeRes (0x0052) uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, @@ -6210,7 +6234,7 @@ uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_pti_control. */ -#define SigIePTIControl (0x0052) +#define SigIePTIControl (0x0053) uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, @@ -6240,7 +6264,7 @@ uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_pu_buffer_status. */ -#define SigIePUBufferStatus (0x0053) +#define SigIePUBufferStatus (0x0054) uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, @@ -6272,7 +6296,7 @@ uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_caps. */ -#define SigIePowerCaps (0x0054) +#define SigIePowerCaps (0x0055) uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, @@ -6296,7 +6320,7 @@ uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_constraints. */ -#define SigIePowerConstraints (0x0055) +#define SigIePowerConstraints (0x0056) uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, @@ -6336,7 +6360,7 @@ uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qbss_load. */ -#define SigIeQBSSLoad (0x0056) +#define SigIeQBSSLoad (0x0057) uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, @@ -6368,7 +6392,7 @@ uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_QComVendorIE. */ -#define SigIeQComVendorIE (0x0057) +#define SigIeQComVendorIE (0x0058) uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, @@ -6398,7 +6422,7 @@ uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qos_caps_ap. */ -#define SigIeQOSCapsAp (0x0058) +#define SigIeQOSCapsAp (0x0059) uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, @@ -6430,7 +6454,7 @@ uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qos_caps_station. */ -#define SigIeQOSCapsStation (0x0059) +#define SigIeQOSCapsStation (0x005a) uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx, @@ -6455,7 +6479,7 @@ uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qos_map_set. */ -#define SigIeQosMapSet (0x005a) +#define SigIeQosMapSet (0x005b) uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, @@ -6503,7 +6527,7 @@ uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_quiet. */ -#define SigIeQuiet (0x005b) +#define SigIeQuiet (0x005c) uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, @@ -6527,7 +6551,7 @@ uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rcpiie. */ -#define SigIeRCPIIE (0x005c) +#define SigIeRCPIIE (0x005d) static const tFFDefn FFS_RICDataDesc[] = { @@ -6603,7 +6627,7 @@ uint32_t dot11f_unpack_ie_ric_data_desc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_data_desc. */ -#define SigIeRICDataDesc (0x005d) +#define SigIeRICDataDesc (0x005e) uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, @@ -6779,7 +6803,7 @@ uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsn. */ -#define SigIeRSN (0x005e) +#define SigIeRSN (0x005f) uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, @@ -6803,7 +6827,7 @@ uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsniie. */ -#define SigIeRSNIIE (0x005f) +#define SigIeRSNIIE (0x0060) uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, @@ -6828,7 +6852,7 @@ uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsn_opaque. */ -#define SigIeRSNOpaque (0x0060) +#define SigIeRSNOpaque (0x0061) uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, @@ -6853,7 +6877,7 @@ uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_channels. */ -#define SigIeSuppChannels (0x0061) +#define SigIeSuppChannels (0x0062) uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx, @@ -6878,7 +6902,7 @@ uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_operating_classes. */ -#define SigIeSuppOperatingClasses (0x0062) +#define SigIeSuppOperatingClasses (0x0063) uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, @@ -6911,7 +6935,7 @@ uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_rates. */ -#define SigIeSuppRates (0x0063) +#define SigIeSuppRates (0x0064) uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, @@ -6960,7 +6984,7 @@ uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tim. */ -#define SigIeTIM (0x0064) +#define SigIeTIM (0x0065) uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, @@ -6992,7 +7016,7 @@ uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_report. */ -#define SigIeTPCReport (0x0065) +#define SigIeTPCReport (0x0066) uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, @@ -7010,7 +7034,7 @@ uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_request. */ -#define SigIeTPCRequest (0x0066) +#define SigIeTPCRequest (0x0067) uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, @@ -7050,7 +7074,7 @@ uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_time_advertisement. */ -#define SigIeTimeAdvertisement (0x0067) +#define SigIeTimeAdvertisement (0x0068) uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, @@ -7082,7 +7106,7 @@ uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_timeout_interval. */ -#define SigIeTimeoutInterval (0x0068) +#define SigIeTimeoutInterval (0x0069) uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx, @@ -7138,7 +7162,7 @@ uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_ext_bss_load. */ -#define SigIeVHTExtBssLoad (0x0069) +#define SigIeVHTExtBssLoad (0x006a) uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, @@ -7156,7 +7180,7 @@ uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor1_ie. */ -#define SigIeVendor1IE (0x006a) +#define SigIeVendor1IE (0x006b) uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, @@ -7174,7 +7198,7 @@ uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor3_ie. */ -#define SigIeVendor3IE (0x006b) +#define SigIeVendor3IE (0x006c) uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, @@ -7289,7 +7313,7 @@ uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi. */ -#define SigIeWAPI (0x006c) +#define SigIeWAPI (0x006d) uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, @@ -7314,7 +7338,7 @@ uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi_opaque. */ -#define SigIeWAPIOpaque (0x006d) +#define SigIeWAPIOpaque (0x006e) uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, @@ -7346,7 +7370,7 @@ uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfatpc. */ -#define SigIeWFATPC (0x006e) +#define SigIeWFATPC (0x006f) uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, @@ -7371,7 +7395,7 @@ uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfdie_opaque. */ -#define SigIeWFDIEOpaque (0x006f) +#define SigIeWFDIEOpaque (0x0070) uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, @@ -7413,7 +7437,7 @@ uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_caps. */ -#define SigIeWMMCaps (0x0070) +#define SigIeWMMCaps (0x0071) uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, @@ -7449,7 +7473,7 @@ uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_info_ap. */ -#define SigIeWMMInfoAp (0x0071) +#define SigIeWMMInfoAp (0x0072) uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx, @@ -7489,7 +7513,7 @@ uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_info_station. */ -#define SigIeWMMInfoStation (0x0072) +#define SigIeWMMInfoStation (0x0073) uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, @@ -7661,7 +7685,7 @@ uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_params. */ -#define SigIeWMMParams (0x0073) +#define SigIeWMMParams (0x0074) uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, @@ -7770,7 +7794,7 @@ uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wpa. */ -#define SigIeWPA (0x0074) +#define SigIeWPA (0x0075) uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, @@ -7795,7 +7819,7 @@ uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wpa_opaque. */ -#define SigIeWPAOpaque (0x0075) +#define SigIeWPAOpaque (0x0076) static const tTLVDefn TLVS_WSC[] = { @@ -7886,7 +7910,7 @@ uint32_t dot11f_unpack_ie_wsc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc. */ -#define SigIeWSC (0x0076) +#define SigIeWSC (0x0077) static const tTLVDefn TLVS_WscAssocReq[] = { @@ -7918,7 +7942,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_assoc_req. */ -#define SigIeWscAssocReq (0x0077) +#define SigIeWscAssocReq (0x0078) static const tTLVDefn TLVS_WscAssocRes[] = { @@ -7950,7 +7974,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_assoc_res. */ -#define SigIeWscAssocRes (0x0078) +#define SigIeWscAssocRes (0x0079) static const tTLVDefn TLVS_WscBeacon[] = { @@ -8003,7 +8027,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_beacon. */ -#define SigIeWscBeacon (0x0079) +#define SigIeWscBeacon (0x007a) static const tTLVDefn TLVS_WscBeaconProbeRes[] = { @@ -8081,7 +8105,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_beacon_probe_res. */ -#define SigIeWscBeaconProbeRes (0x007a) +#define SigIeWscBeaconProbeRes (0x007b) uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx, @@ -8106,7 +8130,7 @@ uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_ie_opaque. */ -#define SigIeWscIEOpaque (0x007b) +#define SigIeWscIEOpaque (0x007c) static const tTLVDefn TLVS_WscProbeReq[] = { @@ -8179,7 +8203,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_probe_req. */ -#define SigIeWscProbeReq (0x007c) +#define SigIeWscProbeReq (0x007d) static const tTLVDefn TLVS_WscProbeRes[] = { @@ -8257,7 +8281,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_probe_res. */ -#define SigIeWscProbeRes (0x007d) +#define SigIeWscProbeRes (0x007e) static const tTLVDefn TLVS_WscReassocRes[] = { @@ -8289,7 +8313,7 @@ uint32_t dot11f_unpack_ie_wsc_reassoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_reassoc_res. */ -#define SigIeWscReassocRes (0x007e) +#define SigIeWscReassocRes (0x007f) uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, @@ -8317,7 +8341,7 @@ uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_addba_extn_element. */ -#define SigIeaddba_extn_element (0x007f) +#define SigIeaddba_extn_element (0x0080) uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, @@ -8352,7 +8376,7 @@ uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_bss_color_change. */ -#define SigIebss_color_change (0x0080) +#define SigIebss_color_change (0x0081) uint32_t dot11f_unpack_ie_dh_parameter_element(tpAniSirGlobal pCtx, @@ -8380,7 +8404,7 @@ uint32_t dot11f_unpack_ie_dh_parameter_element(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_dh_parameter_element. */ -#define SigIedh_parameter_element (0x0081) +#define SigIedh_parameter_element (0x0082) uint32_t dot11f_unpack_ie_esp_information(tpAniSirGlobal pCtx, @@ -8405,7 +8429,7 @@ uint32_t dot11f_unpack_ie_esp_information(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_esp_information. */ -#define SigIeesp_information (0x0082) +#define SigIeesp_information (0x0083) uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, @@ -8453,7 +8477,7 @@ uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ext_chan_switch_ann. */ -#define SigIeext_chan_switch_ann (0x0083) +#define SigIeext_chan_switch_ann (0x0084) uint32_t dot11f_unpack_ie_fils_assoc_delay_info(tpAniSirGlobal pCtx, @@ -8477,7 +8501,7 @@ uint32_t dot11f_unpack_ie_fils_assoc_delay_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_assoc_delay_info. */ -#define SigIefils_assoc_delay_info (0x0084) +#define SigIefils_assoc_delay_info (0x0085) uint32_t dot11f_unpack_ie_fils_hlp_container(tpAniSirGlobal pCtx, @@ -8513,7 +8537,7 @@ uint32_t dot11f_unpack_ie_fils_hlp_container(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_hlp_container. */ -#define SigIefils_hlp_container (0x0085) +#define SigIefils_hlp_container (0x0086) uint32_t dot11f_unpack_ie_fils_indication(tpAniSirGlobal pCtx, @@ -8551,7 +8575,7 @@ uint32_t dot11f_unpack_ie_fils_indication(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_indication. */ -#define SigIefils_indication (0x0086) +#define SigIefils_indication (0x0087) uint32_t dot11f_unpack_ie_fils_kde(tpAniSirGlobal pCtx, @@ -8579,7 +8603,7 @@ uint32_t dot11f_unpack_ie_fils_kde(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_kde. */ -#define SigIefils_kde (0x0087) +#define SigIefils_kde (0x0088) uint32_t dot11f_unpack_ie_fils_key_confirmation(tpAniSirGlobal pCtx, @@ -8599,7 +8623,7 @@ uint32_t dot11f_unpack_ie_fils_key_confirmation(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_key_confirmation. */ -#define SigIefils_key_confirmation (0x0088) +#define SigIefils_key_confirmation (0x0089) uint32_t dot11f_unpack_ie_fils_nonce(tpAniSirGlobal pCtx, @@ -8623,7 +8647,7 @@ uint32_t dot11f_unpack_ie_fils_nonce(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_nonce. */ -#define SigIefils_nonce (0x0089) +#define SigIefils_nonce (0x008a) uint32_t dot11f_unpack_ie_fils_public_key(tpAniSirGlobal pCtx, @@ -8651,7 +8675,7 @@ uint32_t dot11f_unpack_ie_fils_public_key(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_public_key. */ -#define SigIefils_public_key (0x008a) +#define SigIefils_public_key (0x008b) uint32_t dot11f_unpack_ie_fils_session(tpAniSirGlobal pCtx, @@ -8675,7 +8699,7 @@ uint32_t dot11f_unpack_ie_fils_session(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_session. */ -#define SigIefils_session (0x008b) +#define SigIefils_session (0x008c) uint32_t dot11f_unpack_ie_fils_wrapped_data(tpAniSirGlobal pCtx, @@ -8695,7 +8719,7 @@ uint32_t dot11f_unpack_ie_fils_wrapped_data(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_wrapped_data. */ -#define SigIefils_wrapped_data (0x008c) +#define SigIefils_wrapped_data (0x008d) uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, @@ -8715,7 +8739,7 @@ uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fragment_ie. */ -#define SigIefragment_ie (0x008d) +#define SigIefragment_ie (0x008e) uint32_t dot11f_unpack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, @@ -8748,7 +8772,7 @@ uint32_t dot11f_unpack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_he_6ghz_band_cap. */ -#define SigIehe_6ghz_band_cap (0x008e) +#define SigIehe_6ghz_band_cap (0x008f) uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, @@ -8993,7 +9017,7 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_he_cap. */ -#define SigIehe_cap (0x008f) +#define SigIehe_cap (0x0090) uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, @@ -9145,7 +9169,7 @@ uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_he_op. */ -#define SigIehe_op (0x0090) +#define SigIehe_op (0x0091) uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, @@ -9202,7 +9226,7 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_hs20vendor_ie. */ -#define SigIehs20vendor_ie (0x0091) +#define SigIehs20vendor_ie (0x0092) uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, @@ -9233,7 +9257,7 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht2040_bss_coexistence. */ -#define SigIeht2040_bss_coexistence (0x0092) +#define SigIeht2040_bss_coexistence (0x0093) uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx, @@ -9266,7 +9290,7 @@ uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht2040_bss_intolerant_report. */ -#define SigIeht2040_bss_intolerant_report (0x0093) +#define SigIeht2040_bss_intolerant_report (0x0094) uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, @@ -9418,7 +9442,7 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_mu_edca_param_set. */ -#define SigIemu_edca_param_set (0x0094) +#define SigIemu_edca_param_set (0x0095) uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, @@ -9438,7 +9462,7 @@ uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_osen_ie. */ -#define SigIeosen_ie (0x0095) +#define SigIeosen_ie (0x0096) static const tFFDefn FFS_qcn_ie[] = { @@ -9454,6 +9478,10 @@ static const tIEDefn IES_qcn_ie[] = { offsetof(tDot11fIEvht_mcs11_attr, present), 0, "vht_mcs11_attr", 0, 3, 3, SigIevht_mcs11_attr, {0, 0, 0, 0, 0}, 0, DOT11F_EID_VHT_MCS11_ATTR, 0, 0, }, + { offsetof(tDot11fIEqcn_ie, he_mcs13_attr), + offsetof(tDot11fIEhe_mcs13_attr, present), 0, "he_mcs13_attr", + 0, 4, 4, SigIehe_mcs13_attr, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_MCS13_ATTR, 0, 0, }, {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, }; @@ -9480,7 +9508,7 @@ uint32_t dot11f_unpack_ie_qcn_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qcn_ie. */ -#define SigIeqcn_ie (0x0096) +#define SigIeqcn_ie (0x0097) uint32_t dot11f_unpack_ie_roaming_consortium_sel(tpAniSirGlobal pCtx, @@ -9500,7 +9528,7 @@ uint32_t dot11f_unpack_ie_roaming_consortium_sel(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_roaming_consortium_sel. */ -#define SigIeroaming_consortium_sel (0x0097) +#define SigIeroaming_consortium_sel (0x0098) uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx, @@ -9524,7 +9552,7 @@ uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_sec_chan_offset_ele. */ -#define SigIesec_chan_offset_ele (0x0098) +#define SigIesec_chan_offset_ele (0x0099) static const tFFDefn FFS_vendor_vht_ie[] = { @@ -9573,7 +9601,7 @@ uint32_t dot11f_unpack_ie_vendor_vht_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor_vht_ie. */ -#define SigIevendor_vht_ie (0x0099) +#define SigIevendor_vht_ie (0x009a) static const tFFDefn FFS_AddTSRequest[] = { @@ -9831,7 +9859,7 @@ static const tIEDefn IES_AssocRequest[] = { 0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 16, 0}, 4, DOT11F_EID_HS20VENDOR_IE, 0, 0, }, { offsetof(tDot11fAssocRequest, qcn_ie), offsetof(tDot11fIEqcn_ie, - present), 0, "qcn_ie", 0, 6, 13, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fAssocRequest, he_cap), offsetof(tDot11fIEhe_cap, present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, @@ -9995,7 +10023,7 @@ static const tIEDefn IES_AssocResponse[] = { 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 4, 0}, 4, DOT11F_EID_VENDOR_VHT_IE, 0, 0, }, { offsetof(tDot11fAssocResponse, qcn_ie), offsetof(tDot11fIEqcn_ie, - present), 0, "qcn_ie", 0, 6, 13, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fAssocResponse, he_cap), offsetof(tDot11fIEhe_cap, present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, @@ -10292,7 +10320,7 @@ static const tIEDefn IES_Beacon[] = { "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0}, 4, DOT11F_EID_MBO_IE, 0, 0, }, { offsetof(tDot11fBeacon, qcn_ie), offsetof(tDot11fIEqcn_ie, present), 0, - "qcn_ie", 0, 6, 13, SigIeqcn_ie, {140, 253, 240, 1, 0}, + "qcn_ie", 0, 6, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fBeacon, he_cap), offsetof(tDot11fIEhe_cap, present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, @@ -10526,7 +10554,7 @@ static const tIEDefn IES_Beacon2[] = { present), 0, "ESEVersion", 0, 7, 7, SigIeESEVersion, {0, 64, 150, 3, 0}, 4, DOT11F_EID_ESEVERSION, 0, 0, }, { offsetof(tDot11fBeacon2, qcn_ie), offsetof(tDot11fIEqcn_ie, present), 0, - "qcn_ie", 0, 6, 13, SigIeqcn_ie, {140, 253, 240, 1, 0}, + "qcn_ie", 0, 6, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fBeacon2, he_cap), offsetof(tDot11fIEhe_cap, present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, @@ -10756,7 +10784,7 @@ static const tIEDefn IES_BeaconIEs[] = { 0, "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0}, 4, DOT11F_EID_MBO_IE, 0, 0, }, { offsetof(tDot11fBeaconIEs, qcn_ie), offsetof(tDot11fIEqcn_ie, present), - 0, "qcn_ie", 0, 6, 13, SigIeqcn_ie, {140, 253, 240, 1, 0}, + 0, "qcn_ie", 0, 6, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fBeaconIEs, he_cap), offsetof(tDot11fIEhe_cap, present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, @@ -11195,7 +11223,7 @@ static const tIEDefn IES_ProbeRequest[] = { present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, 0, }, { offsetof(tDot11fProbeRequest, qcn_ie), offsetof(tDot11fIEqcn_ie, - present), 0, "qcn_ie", 0, 6, 13, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fProbeRequest, he_cap), offsetof(tDot11fIEhe_cap, present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, @@ -11409,7 +11437,7 @@ static const tIEDefn IES_ProbeResponse[] = { present), 0, "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0}, 4, DOT11F_EID_MBO_IE, 0, 0, }, { offsetof(tDot11fProbeResponse, qcn_ie), offsetof(tDot11fIEqcn_ie, - present), 0, "qcn_ie", 0, 6, 13, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, { offsetof(tDot11fProbeResponse, he_cap), offsetof(tDot11fIEhe_cap, present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, @@ -13281,6 +13309,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIehe_mcs13_attr: + status |= + dot11f_unpack_ie_he_mcs13_attr( + pCtx, pBufRemaining, len, + (tDot11fIEhe_mcs13_attr *) + (pFrm + pIe->offset + + sizeof(tDot11fIEhe_mcs13_attr) * + countOffset), + append_ie); + break; case SigIeversion_attr: status |= dot11f_unpack_ie_version_attr( @@ -16080,6 +16118,8 @@ uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, *pnNeeded += 1; break; } + } else { + break; } if (pIe->co_located_bss) { switch (pIe->co_located_bss) { @@ -16087,6 +16127,8 @@ uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, *pnNeeded += 1; break; } + } else { + break; } if (pIe->oper_info_6g_present) { switch (pIe->oper_info_6g_present) { @@ -16098,6 +16140,8 @@ uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, *pnNeeded += 1; break; } + } else { + break; } break; } @@ -16738,6 +16782,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIehe_mcs13_attr: + offset = sizeof(tDot11fIEhe_mcs13_attr); + byteCount = 2; + pIePresent = ((tDot11fIEhe_mcs13_attr *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeversion_attr: offset = sizeof(tDot11fIEversion_attr); byteCount = 2; @@ -20204,6 +20255,35 @@ uint32_t dot11f_pack_ie_r1_kh_id(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_r1_kh_id. */ +uint32_t dot11f_pack_ie_he_mcs13_attr(tpAniSirGlobal pCtx, + tDot11fIEhe_mcs13_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 2; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 9; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + frameshtons(pCtx, pBuf, pSrc->he_mcs_12_13_supp, 0); + *pnConsumed += 2; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_he_mcs13_attr. */ + uint32_t dot11f_pack_ie_version_attr(tpAniSirGlobal pCtx, tDot11fIEversion_attr *pSrc, uint8_t *pBuf, @@ -26804,6 +26884,8 @@ uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, pBuf += 1; break; } + } else { + break; } if (pSrc->co_located_bss) { switch (pSrc->co_located_bss) { @@ -26813,6 +26895,8 @@ uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, pBuf += 1; break; } + } else { + break; } if (pSrc->oper_info_6g_present) { switch (pSrc->oper_info_6g_present) { @@ -26842,6 +26926,8 @@ uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, /* fieldsEndFlag = 1 */ break; } + } else { + break; } break; } @@ -28396,6 +28482,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIER1KH_ID) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIehe_mcs13_attr: + status |= + dot11f_pack_ie_he_mcs13_attr( + pCtx, (tDot11fIEhe_mcs13_attr *) + (pSrc + pIe->offset + + sizeof(tDot11fIEhe_mcs13_attr) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeversion_attr: status |= dot11f_pack_ie_version_attr( diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c index 838023342192..77efa9550f7d 100644 --- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c +++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c @@ -1225,7 +1225,36 @@ populate_dot11f_ext_cap(struct mac_context *mac, return QDF_STATUS_SUCCESS; } +#ifdef WLAN_FEATURE_11AX +static void populate_dot11f_qcn_ie_he_params(struct mac_context *mac, + struct pe_session *pe_session, + tDot11fIEqcn_ie *qcn_ie, + uint8_t attr_id) +{ + uint16_t mcs_12_13_supp; + + if (wlan_reg_is_24ghz_ch_freq(pe_session->curr_op_freq)) + mcs_12_13_supp = mac->mlme_cfg->he_caps.he_mcs_12_13_supp_2g; + else + mcs_12_13_supp = mac->mlme_cfg->he_caps.he_mcs_12_13_supp_5g; + + if (!mcs_12_13_supp) + return; + + qcn_ie->present = 1; + qcn_ie->he_mcs13_attr.present = 1; + qcn_ie->he_mcs13_attr.he_mcs_12_13_supp = mcs_12_13_supp; +} +#else /* WLAN_FEATURE_11AX */ +static void populate_dot11f_qcn_ie_he_params(struct mac_context *mac, + struct pe_session *pe_session, + tDot11fIEqcn_ie *qcn_ie, + uint8_t attr_id) +{} +#endif /* WLAN_FEATURE_11AX */ + void populate_dot11f_qcn_ie(struct mac_context *mac, + struct pe_session *pe_session, tDot11fIEqcn_ie *qcn_ie, uint8_t attr_id) { @@ -1243,6 +1272,8 @@ void populate_dot11f_qcn_ie(struct mac_context *mac, qcn_ie->vht_mcs11_attr.present = 1; qcn_ie->vht_mcs11_attr.vht_mcs_10_11_supp = 1; } + + populate_dot11f_qcn_ie_he_params(mac, pe_session, qcn_ie, attr_id); } QDF_STATUS @@ -6228,8 +6259,8 @@ populate_dot11f_he_bss_color_change(struct mac_context *mac_ctx, return QDF_STATUS_SUCCESS; } -#endif -#endif +#endif /* WLAN_FEATURE_11AX_BSS_COLOR */ +#endif /* WLAN_FEATURE_11AX */ #ifdef WLAN_SUPPORT_TWT QDF_STATUS populate_dot11f_twt_extended_caps(struct mac_context *mac_ctx, diff --git a/core/wma/inc/wma_he.h b/core/wma/inc/wma_he.h index 1bf80a93e27c..1b844bade893 100644 --- a/core/wma/inc/wma_he.h +++ b/core/wma/inc/wma_he.h @@ -23,6 +23,13 @@ #include "sir_api.h" #include "target_if.h" +/* Number of bits to shift on HE MCS 12 13 MAP to get the desired map */ +#define WMA_MCS_12_13_MAP_L80 16 +#define WMA_MCS_12_13_MAP_G80 8 + +/* Mask to fill tx and rx mcs rate maps to be sent to the FW */ +#define WMA_MCS_12_13_PEER_RATE_MAP 0x00ff0000 + #ifdef WLAN_FEATURE_11AX /** * wma_print_he_cap() - Print HE capabilities diff --git a/core/wma/inc/wma_if.h b/core/wma/inc/wma_if.h index f506eefd52b1..63e8e80a714e 100644 --- a/core/wma/inc/wma_if.h +++ b/core/wma/inc/wma_if.h @@ -244,6 +244,7 @@ typedef struct { tDot11fIEhe_cap he_config; tDot11fIEhe_op he_op; tDot11fIEhe_6ghz_band_cap he_6ghz_band_caps; + uint16_t he_mcs_12_13_map; #endif uint8_t stbc_capable; #ifdef WLAN_SUPPORT_TWT diff --git a/core/wma/inc/wma_tgt_cfg.h b/core/wma/inc/wma_tgt_cfg.h index c5a09f9f20a4..4d5ce21cf79d 100644 --- a/core/wma/inc/wma_tgt_cfg.h +++ b/core/wma/inc/wma_tgt_cfg.h @@ -206,6 +206,8 @@ struct wma_tgt_cfg { uint8_t ppet_5g[HE_MAX_PPET_SIZE]; tDot11fIEhe_cap he_cap_2g; tDot11fIEhe_cap he_cap_5g; + uint16_t he_mcs_12_13_supp_2g; + uint16_t he_mcs_12_13_supp_5g; #endif bool dfs_cac_offload; bool tx_bfee_8ss_enabled; diff --git a/core/wma/src/wma_he.c b/core/wma/src/wma_he.c index 13668ee1d413..b154f4160c0b 100644 --- a/core/wma/src/wma_he.c +++ b/core/wma/src/wma_he.c @@ -162,6 +162,7 @@ static void wma_convert_he_ppet(uint8_t *he_ppet, * @supp_mcs: Max MCS supported (Tx/Rx) * @tx_chain_mask: Tx chain mask * @rx_chain_mask: Rx chain mask + * @mcs_12_13_support: Store the supported MCS 12/13 capability * * This function converts various HE capability received as part of extended * service ready event into dot11f structure. GET macros are defined at WMI @@ -171,7 +172,8 @@ static void wma_convert_he_ppet(uint8_t *he_ppet, */ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t *mac_cap, uint32_t *phy_cap, uint32_t supp_mcs, - uint32_t tx_chain_mask, uint32_t rx_chain_mask) + uint32_t tx_chain_mask, uint32_t rx_chain_mask, + uint16_t *mcs_12_13_supp) { uint8_t nss, chan_width; uint16_t rx_mcs_le_80, tx_mcs_le_80, rx_mcs_160, tx_mcs_160; @@ -227,6 +229,7 @@ static void wma_convert_he_cap(tDot11fIEhe_cap *he_cap, uint32_t *mac_cap, WMI_HECAP_MAC_PUNCSOUNDING_GET(mac_cap[1]); he_cap->ht_vht_trg_frm_rx_supp = WMI_HECAP_MAC_HTVHTTRIGRX_GET(mac_cap[1]); + *mcs_12_13_supp = WMI_GET_BITS(mac_cap[1], 16, 16); /* HE PHY capabilities */ chan_width = WMI_HECAP_PHY_CBW_GET(phy_cap); he_cap->chan_width_0 = HE_CH_WIDTH_GET_BIT(chan_width, 0); @@ -932,7 +935,8 @@ void wma_update_target_ext_he_cap(struct target_psoc_info *tgt_hdl, mac_cap->he_cap_phy_info_2G, mac_cap->he_supp_mcs_2G, mac_cap->tx_chain_mask_2G, - mac_cap->rx_chain_mask_2G); + mac_cap->rx_chain_mask_2G, + &tgt_cfg->he_mcs_12_13_supp_2g); WMA_LOGD(FL("2g phy: nss: %d, ru_idx_msk: %d"), mac_cap->he_ppet2G.numss_m1, mac_cap->he_ppet2G.ru_bit_mask); @@ -958,7 +962,8 @@ void wma_update_target_ext_he_cap(struct target_psoc_info *tgt_hdl, mac_cap->he_cap_phy_info_5G, mac_cap->he_supp_mcs_5G, mac_cap->tx_chain_mask_5G, - mac_cap->rx_chain_mask_5G); + mac_cap->rx_chain_mask_5G, + &tgt_cfg->he_mcs_12_13_supp_5g); WMA_LOGD(FL("5g phy: nss: %d, ru_idx_msk: %d"), mac_cap->he_ppet5G.numss_m1, mac_cap->he_ppet5G.ru_bit_mask); @@ -1251,19 +1256,50 @@ void wma_populate_peer_he_cap(struct peer_assoc_params *peer, params->supportedRates.rx_he_mcs_map_lt_80; peer->peer_he_tx_mcs_set[0] = params->supportedRates.tx_he_mcs_map_lt_80; + if (params->he_mcs_12_13_map) { + peer->peer_he_tx_mcs_set[0] |= + (params->he_mcs_12_13_map << + WMA_MCS_12_13_MAP_L80) & WMA_MCS_12_13_PEER_RATE_MAP; + peer->peer_he_rx_mcs_set[0] |= + (params->he_mcs_12_13_map << + WMA_MCS_12_13_MAP_L80) & WMA_MCS_12_13_PEER_RATE_MAP; + } if (params->ch_width > CH_WIDTH_80MHZ) { peer->peer_he_mcs_count = WMI_HOST_MAX_HE_RATE_SET; - peer->peer_he_rx_mcs_set[1] = + peer->peer_he_rx_mcs_set[1] |= params->supportedRates.rx_he_mcs_map_160; - peer->peer_he_tx_mcs_set[1] = + peer->peer_he_tx_mcs_set[1] |= params->supportedRates.tx_he_mcs_map_160; - peer->peer_he_rx_mcs_set[2] = + peer->peer_he_rx_mcs_set[2] |= params->supportedRates.rx_he_mcs_map_80_80; - peer->peer_he_tx_mcs_set[2] = + peer->peer_he_tx_mcs_set[2] |= params->supportedRates.tx_he_mcs_map_80_80; + + if (params->he_mcs_12_13_map) { + peer->peer_he_tx_mcs_set[1] |= + (params->he_mcs_12_13_map << + WMA_MCS_12_13_MAP_G80) & + WMA_MCS_12_13_PEER_RATE_MAP; + peer->peer_he_tx_mcs_set[2] |= + (params->he_mcs_12_13_map << + WMA_MCS_12_13_MAP_G80) & + WMA_MCS_12_13_PEER_RATE_MAP; + peer->peer_he_rx_mcs_set[1] |= + (params->he_mcs_12_13_map << + WMA_MCS_12_13_MAP_G80) & + WMA_MCS_12_13_PEER_RATE_MAP; + peer->peer_he_rx_mcs_set[2] |= + (params->he_mcs_12_13_map << + WMA_MCS_12_13_MAP_G80) & + WMA_MCS_12_13_PEER_RATE_MAP; + } } + wma_debug("Sending TX/RX MCS set to FW: <=80: %x, 80+80: %x, 160: %x", + peer->peer_he_rx_mcs_set[0], peer->peer_he_rx_mcs_set[1], + peer->peer_he_rx_mcs_set[2]); + #define HE2x2MCSMASK 0xc peer->peer_nss = ((params->supportedRates.rx_he_mcs_map_lt_80 &