From 65f53c0f746bd8e8a7d6b250321552b4d1d9930e Mon Sep 17 00:00:00 2001 From: Kiran Kumar Lokere Date: Tue, 29 Sep 2020 11:47:57 -0700 Subject: [PATCH] qcacld-3.0: Change the QCN IE attributes to TLV type Use the TLV type for QCN IE attributes to fix the duplicate IE detection and update QCN IE with new attributes. Change-Id: Ia1be2d1754a3ed82ad3f01b68e719c504f624309 CRs-Fixed: 2760822 --- core/mac/src/cfg/cfgUtil/dot11f.frms | 81 +- core/mac/src/include/dot11f.h | 484 +++++-- core/mac/src/pe/lim/lim_utils.c | 9 +- .../mac/src/sys/legacy/src/utils/src/dot11f.c | 1272 +++++++++++------ .../src/sys/legacy/src/utils/src/parser_api.c | 9 +- 5 files changed, 1240 insertions(+), 615 deletions(-) diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index 623a2d8706e4..3a5c868acc94 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/core/mac/src/cfg/cfgUtil/dot11f.frms @@ -2613,27 +2613,74 @@ IE TimeAdvertisement (EID_TIME_ADVERTISEMENT) // 8.4.2.63 time_error[5]; } -const QTI_VERSION_ATTR_ID = 1; -const QTI_VHT_MCS_10_11_ATTR_ID = 2; -const QTI_HE_MCS_11_12_ATTR_ID = 9; +const TLV_VERSION_ATTR_ID = 1; +const TLV_VHT_MCS_10_11_ATTR_ID = 2; +const TLV_HE_400NS_SGI_SUPP_ATTR_ID = 3; +const TLV_HE_2XLTF_160_80P80_SUPP_ATTR_ID = 4; +const TLV_HE_DL_OFDMA_SUPPP_ATTR_ID = 5; +const TLV_TRANSITION_REASONP_ATTR_ID = 6; +const TLV_TRANSITION_REJECTIONP_ATTR_ID = 7; +const TLV_HE_DL_MUMIMO_SUPPP_ATTR_ID = 8; +const TLV_HE_MCS_11_12_ATTR_ID = 9; -IE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 ) +TLV qcn_version(TLV_VERSION_ATTR_ID) ( 1 : 1 ) LSB +{ + version, 1; + sub_version, 1; +} +TLV vht_mcs11_attr (TLV_VHT_MCS_10_11_ATTR_ID) ( 1 : 1 ) LSB { - OPTIE IE version_attr (QTI_VERSION_ATTR_ID) - { - version, 1; - sub_version, 1; - } - - OPTIE IE vht_mcs11_attr (QTI_VHT_MCS_10_11_ATTR_ID) - { vht_mcs_10_11_supp, 1; - } +} +TLV he_400ns_sgi_attr (TLV_HE_400NS_SGI_SUPP_ATTR_ID) ( 1 : 1 ) LSB +{ + he_ltf1x_400ns_sgi, 1; + he_ltf2x_400ns_sgi, 1; + he_ltf4x_400ns_sgi, 1; +} - OPTIE IE he_mcs13_attr (QTI_HE_MCS_11_12_ATTR_ID) - { - he_mcs_12_13_supp, 2; - } +TLV he_2xltf_160mhz_supp (TLV_HE_2XLTF_160_80P80_SUPP_ATTR_ID) ( 1 : 1 ) LSB +{ + he_2xltf_160MHz_supp, 1; +} + +TLV he_dl_ofdma_attr (TLV_HE_DL_OFDMA_SUPPP_ATTR_ID) ( 1 : 1 ) LSB +{ + he_dl_ofdma_supp, 1; +} + +TLV trans_reasonp_attr (TLV_TRANSITION_REASONP_ATTR_ID) ( 1 : 1 ) LSB +{ + transition_reasonp, 1; +} + +TLV trans_rejectp_attr (TLV_TRANSITION_REJECTIONP_ATTR_ID) ( 1 : 1 ) LSB +{ + transition_rejp, 1; +} + +TLV he_dl_mumimo_attr (TLV_HE_DL_MUMIMO_SUPPP_ATTR_ID) ( 1 : 1 ) LSB +{ + he_dl_mumimo_supp, 1; +} + +TLV he_mcs13_attr (TLV_HE_MCS_11_12_ATTR_ID) ( 1 : 1 ) LSB +{ + he_mcs_12_13_supp_80, 1; + he_mcs_12_13_supp_160, 1; +} + +MULTIIE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 ) +{ + OPTIONALTLV qcn_version; + OPTIONALTLV vht_mcs11_attr; + OPTIONALTLV he_400ns_sgi_attr; + OPTIONALTLV he_2xltf_160mhz_supp; + OPTIONALTLV he_dl_ofdma_attr; + OPTIONALTLV trans_reasonp_attr; + OPTIONALTLV trans_rejectp_attr; + OPTIONALTLV he_dl_mumimo_attr; + OPTIONALTLV he_mcs13_attr; } 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 c1f87cfdb303..826b793c4c0a 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' - * Fri Aug 14 16:33:26 2020 from the following file(s): + * Tue Sep 29 11:31:39 2020 from the following file(s): * * dot11f.frms * @@ -2212,6 +2212,199 @@ uint32_t dot11f_get_packed_tlv_cellular_data_con_pref( }; /* End extern "C". */ #endif /* C++ */ +/* ID 4 (0x0004) */ +typedef struct sDot11fTLVhe_2xltf_160mhz_supp { + uint8_t present; + uint8_t he_2xltf_160MHz_supp; +} tDot11fTLVhe_2xltf_160mhz_supp; + +#define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP (4) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MIN_LEN (1) + +#define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_he_2xltf_160mhz_supp( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVhe_2xltf_160mhz_supp*); + +uint32_t dot11f_pack_tlv_he_2xltf_160mhz_supp( + tpAniSirGlobal, + tDot11fTLVhe_2xltf_160mhz_supp *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_he_2xltf_160mhz_supp( + tpAniSirGlobal, + tDot11fTLVhe_2xltf_160mhz_supp *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* ID 3 (0x0003) */ +typedef struct sDot11fTLVhe_400ns_sgi_attr { + uint8_t present; + uint8_t he_ltf1x_400ns_sgi; + uint8_t he_ltf2x_400ns_sgi; + uint8_t he_ltf4x_400ns_sgi; +} tDot11fTLVhe_400ns_sgi_attr; + +#define DOT11F_TLV_HE_400NS_SGI_ATTR (3) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_HE_400NS_SGI_ATTR_MIN_LEN (3) + +#define DOT11F_TLV_HE_400NS_SGI_ATTR_MAX_LEN (3) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_he_400ns_sgi_attr( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVhe_400ns_sgi_attr*); + +uint32_t dot11f_pack_tlv_he_400ns_sgi_attr( + tpAniSirGlobal, + tDot11fTLVhe_400ns_sgi_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_he_400ns_sgi_attr( + tpAniSirGlobal, + tDot11fTLVhe_400ns_sgi_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* ID 8 (0x0008) */ +typedef struct sDot11fTLVhe_dl_mumimo_attr { + uint8_t present; + uint8_t he_dl_mumimo_supp; +} tDot11fTLVhe_dl_mumimo_attr; + +#define DOT11F_TLV_HE_DL_MUMIMO_ATTR (8) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MIN_LEN (1) + +#define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_he_dl_mumimo_attr( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVhe_dl_mumimo_attr*); + +uint32_t dot11f_pack_tlv_he_dl_mumimo_attr( + tpAniSirGlobal, + tDot11fTLVhe_dl_mumimo_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_he_dl_mumimo_attr( + tpAniSirGlobal, + tDot11fTLVhe_dl_mumimo_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* ID 5 (0x0005) */ +typedef struct sDot11fTLVhe_dl_ofdma_attr { + uint8_t present; + uint8_t he_dl_ofdma_supp; +} tDot11fTLVhe_dl_ofdma_attr; + +#define DOT11F_TLV_HE_DL_OFDMA_ATTR (5) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_HE_DL_OFDMA_ATTR_MIN_LEN (1) + +#define DOT11F_TLV_HE_DL_OFDMA_ATTR_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_he_dl_ofdma_attr( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVhe_dl_ofdma_attr*); + +uint32_t dot11f_pack_tlv_he_dl_ofdma_attr( + tpAniSirGlobal, + tDot11fTLVhe_dl_ofdma_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_he_dl_ofdma_attr( + tpAniSirGlobal, + tDot11fTLVhe_dl_ofdma_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* ID 9 (0x0009) */ +typedef struct sDot11fTLVhe_mcs13_attr { + uint8_t present; + uint8_t he_mcs_12_13_supp_80; + uint8_t he_mcs_12_13_supp_160; +} tDot11fTLVhe_mcs13_attr; + +#define DOT11F_TLV_HE_MCS13_ATTR (9) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_HE_MCS13_ATTR_MIN_LEN (2) + +#define DOT11F_TLV_HE_MCS13_ATTR_MAX_LEN (2) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_he_mcs13_attr( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVhe_mcs13_attr*); + +uint32_t dot11f_pack_tlv_he_mcs13_attr( + tpAniSirGlobal, + tDot11fTLVhe_mcs13_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_he_mcs13_attr( + tpAniSirGlobal, + tDot11fTLVhe_mcs13_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* ID 1 (0x0001) */ typedef struct sDot11fTLVmbo_ap_cap { uint8_t present; @@ -2331,6 +2524,45 @@ uint32_t dot11f_get_packed_tlv_oce_cap( }; /* End extern "C". */ #endif /* C++ */ +/* ID 1 (0x0001) */ +typedef struct sDot11fTLVqcn_version { + uint8_t present; + uint8_t version; + uint8_t sub_version; +} tDot11fTLVqcn_version; + +#define DOT11F_TLV_QCN_VERSION (1) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_QCN_VERSION_MIN_LEN (2) + +#define DOT11F_TLV_QCN_VERSION_MAX_LEN (2) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_qcn_version( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVqcn_version*); + +uint32_t dot11f_pack_tlv_qcn_version( + tpAniSirGlobal, + tDot11fTLVqcn_version *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_qcn_version( + tpAniSirGlobal, + tDot11fTLVqcn_version *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* ID 103 (0x0067) */ typedef struct sDot11fTLVreduced_wan_metrics { uint8_t present; @@ -2409,6 +2641,82 @@ uint32_t dot11f_get_packed_tlv_rssi_assoc_rej( }; /* End extern "C". */ #endif /* C++ */ +/* ID 6 (0x0006) */ +typedef struct sDot11fTLVtrans_reasonp_attr { + uint8_t present; + uint8_t transition_reasonp; +} tDot11fTLVtrans_reasonp_attr; + +#define DOT11F_TLV_TRANS_REASONP_ATTR (6) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_TRANS_REASONP_ATTR_MIN_LEN (1) + +#define DOT11F_TLV_TRANS_REASONP_ATTR_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_trans_reasonp_attr( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVtrans_reasonp_attr*); + +uint32_t dot11f_pack_tlv_trans_reasonp_attr( + tpAniSirGlobal, + tDot11fTLVtrans_reasonp_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_trans_reasonp_attr( + tpAniSirGlobal, + tDot11fTLVtrans_reasonp_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* ID 7 (0x0007) */ +typedef struct sDot11fTLVtrans_rejectp_attr { + uint8_t present; + uint8_t transition_rejp; +} tDot11fTLVtrans_rejectp_attr; + +#define DOT11F_TLV_TRANS_REJECTP_ATTR (7) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_TRANS_REJECTP_ATTR_MIN_LEN (1) + +#define DOT11F_TLV_TRANS_REJECTP_ATTR_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_trans_rejectp_attr( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVtrans_rejectp_attr*); + +uint32_t dot11f_pack_tlv_trans_rejectp_attr( + tpAniSirGlobal, + tDot11fTLVtrans_rejectp_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_trans_rejectp_attr( + tpAniSirGlobal, + tDot11fTLVtrans_rejectp_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* ID 6 (0x0006) */ typedef struct sDot11fTLVtransition_reason { uint8_t present; @@ -2485,6 +2793,44 @@ uint32_t dot11f_get_packed_tlv_transition_reject_reason( }; /* End extern "C". */ #endif /* C++ */ +/* ID 2 (0x0002) */ +typedef struct sDot11fTLVvht_mcs11_attr { + uint8_t present; + uint8_t vht_mcs_10_11_supp; +} tDot11fTLVvht_mcs11_attr; + +#define DOT11F_TLV_VHT_MCS11_ATTR (2) + +/* N.B. These #defines do *not* include the ID & length */ +#define DOT11F_TLV_VHT_MCS11_ATTR_MIN_LEN (1) + +#define DOT11F_TLV_VHT_MCS11_ATTR_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_tlv_vht_mcs11_attr( + tpAniSirGlobal, + uint8_t *, + uint16_t, + tDot11fTLVvht_mcs11_attr*); + +uint32_t dot11f_pack_tlv_vht_mcs11_attr( + tpAniSirGlobal, + tDot11fTLVvht_mcs11_attr *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_tlv_vht_mcs11_attr( + tpAniSirGlobal, + tDot11fTLVvht_mcs11_attr *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* ID 16 (0x0010) */ typedef struct sDot11fTLVP2PInterface { uint8_t present; @@ -2730,124 +3076,6 @@ 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; - uint8_t version; - uint8_t sub_version; -} tDot11fIEversion_attr; - -#define DOT11F_EID_VERSION_ATTR (1) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_VERSION_ATTR_MIN_LEN (2) - -#define DOT11F_IE_VERSION_ATTR_MAX_LEN (2) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_version_attr( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEversion_attr*, - bool); - -uint32_t dot11f_pack_ie_version_attr( - tpAniSirGlobal, - tDot11fIEversion_attr *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_version_attr( - tpAniSirGlobal, - tDot11fIEversion_attr *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 2 (0x02) */ -typedef struct sDot11fIEvht_mcs11_attr { - uint8_t present; - uint8_t vht_mcs_10_11_supp; -} tDot11fIEvht_mcs11_attr; - -#define DOT11F_EID_VHT_MCS11_ATTR (2) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_VHT_MCS11_ATTR_MIN_LEN (1) - -#define DOT11F_IE_VHT_MCS11_ATTR_MAX_LEN (1) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_vht_mcs11_attr( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEvht_mcs11_attr*, - bool); - -uint32_t dot11f_pack_ie_vht_mcs11_attr( - tpAniSirGlobal, - tDot11fIEvht_mcs11_attr *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_vht_mcs11_attr( - tpAniSirGlobal, - tDot11fIEvht_mcs11_attr *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 51 (0x33) */ typedef struct sDot11fIEAPChannelReport { uint8_t present; @@ -9371,12 +9599,18 @@ uint32_t dot11f_get_packed_ie_osen_ie( }; /* End extern "C". */ #endif /* C++ */ -/* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} */ +/* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */ typedef struct sDot11fIEqcn_ie { - uint8_t present; - tDot11fIEversion_attr version_attr; - tDot11fIEvht_mcs11_attr vht_mcs11_attr; - tDot11fIEhe_mcs13_attr he_mcs13_attr; + uint8_t present; + tDot11fTLVqcn_version qcn_version; + tDot11fTLVvht_mcs11_attr vht_mcs11_attr; + tDot11fTLVhe_400ns_sgi_attr he_400ns_sgi_attr; + tDot11fTLVhe_2xltf_160mhz_supp he_2xltf_160mhz_supp; + tDot11fTLVhe_dl_ofdma_attr he_dl_ofdma_attr; + tDot11fTLVtrans_reasonp_attr trans_reasonp_attr; + tDot11fTLVtrans_rejectp_attr trans_rejectp_attr; + tDot11fTLVhe_dl_mumimo_attr he_dl_mumimo_attr; + tDot11fTLVhe_mcs13_attr he_mcs13_attr; } tDot11fIEqcn_ie; #define DOT11F_EID_QCN_IE (221) @@ -9384,7 +9618,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 (15) +#define DOT11F_IE_QCN_IE_MAX_LEN (35) #ifdef __cplusplus extern "C" { diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index 993b30314f54..2c0d59e6b5d1 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -6552,7 +6552,8 @@ void lim_add_he_cap(struct mac_context *mac_ctx, struct pe_session *pe_session, 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; + assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_80 | + assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_160 << 8; if (lim_is_he_6ghz_band(pe_session)) lim_update_he_6ghz_band_caps(mac_ctx, @@ -6661,7 +6662,8 @@ void lim_intersect_sta_he_caps(struct mac_context *mac_ctx, 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; + assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_80 | + assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_160 << 8; } else { return; } @@ -6833,7 +6835,8 @@ void lim_update_stads_he_caps(struct mac_context *mac_ctx, 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; + assoc_rsp->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_80 | + assoc_rsp->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_160 << 8; } else { return; } 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 e740a89c650f..f6005b63a7f7 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' - * Fri Aug 14 16:33:26 2020 from the following file(s): + * Tue Sep 29 11:31:39 2020 from the following file(s): * * dot11f.frms * @@ -1550,7 +1550,84 @@ uint32_t dot11f_unpack_tlv_version(tpAniSirGlobal pCtx, #define SigTlvcellular_data_con_pref (0x0027) -#define SigTlvmbo_ap_cap (0x0028) +#define SigTlvhe_2xltf_160mhz_supp (0x0028) + + +uint32_t dot11f_unpack_tlv_he_400ns_sgi_attr(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint16_t tlvlen, + tDot11fTLVhe_400ns_sgi_attr *pDst) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + pDst->present = 1; + if (unlikely(tlvlen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->he_ltf1x_400ns_sgi = *pBuf; + pBuf += 1; + tlvlen -= (uint8_t)1; + if (unlikely(tlvlen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->he_ltf2x_400ns_sgi = *pBuf; + pBuf += 1; + tlvlen -= (uint8_t)1; + if (unlikely(tlvlen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->he_ltf4x_400ns_sgi = *pBuf; + pBuf += 1; + tlvlen -= (uint8_t)1; + (void)pCtx; + return status; +} /* End dot11f_unpack_tlv_he_400ns_sgi_attr. */ + +#define SigTlvhe_400ns_sgi_attr (0x0029) + + +#define SigTlvhe_dl_mumimo_attr (0x002a) + + +#define SigTlvhe_dl_ofdma_attr (0x002b) + + +uint32_t dot11f_unpack_tlv_he_mcs13_attr(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint16_t tlvlen, + tDot11fTLVhe_mcs13_attr *pDst) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + pDst->present = 1; + if (unlikely(tlvlen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->he_mcs_12_13_supp_80 = *pBuf; + pBuf += 1; + tlvlen -= (uint8_t)1; + if (unlikely(tlvlen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->he_mcs_12_13_supp_160 = *pBuf; + pBuf += 1; + tlvlen -= (uint8_t)1; + (void)pCtx; + return status; +} /* End dot11f_unpack_tlv_he_mcs13_attr. */ + +#define SigTlvhe_mcs13_attr (0x002c) + + +#define SigTlvmbo_ap_cap (0x002d) uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep(tpAniSirGlobal pCtx, @@ -1581,7 +1658,7 @@ uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_tlv_non_prefferd_chan_rep. */ -#define SigTlvnon_prefferd_chan_rep (0x0029) +#define SigTlvnon_prefferd_chan_rep (0x002e) uint32_t dot11f_unpack_tlv_oce_cap(tpAniSirGlobal pCtx, @@ -1608,7 +1685,37 @@ uint32_t dot11f_unpack_tlv_oce_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_tlv_oce_cap. */ -#define SigTlvoce_cap (0x002a) +#define SigTlvoce_cap (0x002f) + + +uint32_t dot11f_unpack_tlv_qcn_version(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint16_t tlvlen, + tDot11fTLVqcn_version *pDst) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + pDst->present = 1; + if (unlikely(tlvlen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->version = *pBuf; + pBuf += 1; + tlvlen -= (uint8_t)1; + if (unlikely(tlvlen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->sub_version = *pBuf; + pBuf += 1; + tlvlen -= (uint8_t)1; + (void)pCtx; + return status; +} /* End dot11f_unpack_tlv_qcn_version. */ + +#define SigTlvqcn_version (0x0030) uint32_t dot11f_unpack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx, @@ -1633,7 +1740,7 @@ uint32_t dot11f_unpack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_tlv_reduced_wan_metrics. */ -#define SigTlvreduced_wan_metrics (0x002b) +#define SigTlvreduced_wan_metrics (0x0031) uint32_t dot11f_unpack_tlv_rssi_assoc_rej(tpAniSirGlobal pCtx, @@ -1663,13 +1770,22 @@ uint32_t dot11f_unpack_tlv_rssi_assoc_rej(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_tlv_rssi_assoc_rej. */ -#define SigTlvrssi_assoc_rej (0x002c) +#define SigTlvrssi_assoc_rej (0x0032) -#define SigTlvtransition_reason (0x002d) +#define SigTlvtrans_reasonp_attr (0x0033) -#define SigTlvtransition_reject_reason (0x002e) +#define SigTlvtrans_rejectp_attr (0x0034) + + +#define SigTlvtransition_reason (0x0035) + + +#define SigTlvtransition_reject_reason (0x0036) + + +#define SigTlvvht_mcs11_attr (0x0037) uint32_t dot11f_unpack_tlv_p2_p_interface(tpAniSirGlobal pCtx, @@ -1691,10 +1807,10 @@ uint32_t dot11f_unpack_tlv_p2_p_interface(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_tlv_p2_p_interface. */ -#define SigTlvP2PInterface (0x002f) +#define SigTlvP2PInterface (0x0038) -#define SigTlvP2PManageability (0x0030) +#define SigTlvP2PManageability (0x0039) uint32_t dot11f_unpack_ie_gtk(tpAniSirGlobal pCtx, @@ -1846,86 +1962,6 @@ 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, - tDot11fIEversion_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 < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->version = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->sub_version = *pBuf; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_version_attr. */ - -#define SigIeversion_attr (0x0006) - - -uint32_t dot11f_unpack_ie_vht_mcs11_attr(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEvht_mcs11_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 < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->vht_mcs_10_11_supp = *pBuf; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_vht_mcs11_attr. */ - -#define SigIevht_mcs11_attr (0x0007) - - uint32_t dot11f_unpack_ie_ap_channel_report(tpAniSirGlobal pCtx, uint8_t *pBuf, uint8_t ielen, @@ -1956,7 +1992,7 @@ uint32_t dot11f_unpack_ie_ap_channel_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ap_channel_report. */ -#define SigIeAPChannelReport (0x0008) +#define SigIeAPChannelReport (0x0005) uint32_t dot11f_unpack_ie_bcn_reporting_detail(tpAniSirGlobal pCtx, @@ -1980,7 +2016,7 @@ uint32_t dot11f_unpack_ie_bcn_reporting_detail(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_bcn_reporting_detail. */ -#define SigIeBcnReportingDetail (0x0009) +#define SigIeBcnReportingDetail (0x0006) uint32_t dot11f_unpack_ie_beacon_report_frm_body(tpAniSirGlobal pCtx, @@ -2005,7 +2041,7 @@ uint32_t dot11f_unpack_ie_beacon_report_frm_body(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_beacon_report_frm_body. */ -#define SigIeBeaconReportFrmBody (0x000a) +#define SigIeBeaconReportFrmBody (0x0007) uint32_t dot11f_unpack_ie_beacon_reporting(tpAniSirGlobal pCtx, @@ -2037,7 +2073,7 @@ uint32_t dot11f_unpack_ie_beacon_reporting(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_beacon_reporting. */ -#define SigIeBeaconReporting (0x000b) +#define SigIeBeaconReporting (0x0008) uint32_t dot11f_unpack_ie_condensed_country_str(tpAniSirGlobal pCtx, @@ -2061,7 +2097,7 @@ uint32_t dot11f_unpack_ie_condensed_country_str(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_condensed_country_str. */ -#define SigIeCondensedCountryStr (0x000c) +#define SigIeCondensedCountryStr (0x0009) uint32_t dot11f_unpack_ie_measurement_pilot(tpAniSirGlobal pCtx, @@ -2089,7 +2125,7 @@ uint32_t dot11f_unpack_ie_measurement_pilot(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_pilot. */ -#define SigIeMeasurementPilot (0x000d) +#define SigIeMeasurementPilot (0x000a) uint32_t dot11f_unpack_ie_multi_bssid(tpAniSirGlobal pCtx, @@ -2117,7 +2153,7 @@ uint32_t dot11f_unpack_ie_multi_bssid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_multi_bssid. */ -#define SigIeMultiBssid (0x000e) +#define SigIeMultiBssid (0x000b) uint32_t dot11f_unpack_ie_ric_data(tpAniSirGlobal pCtx, @@ -2157,7 +2193,7 @@ uint32_t dot11f_unpack_ie_ric_data(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_data. */ -#define SigIeRICData (0x000f) +#define SigIeRICData (0x000c) uint32_t dot11f_unpack_ie_ric_descriptor(tpAniSirGlobal pCtx, @@ -2185,7 +2221,7 @@ uint32_t dot11f_unpack_ie_ric_descriptor(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_descriptor. */ -#define SigIeRICDescriptor (0x0010) +#define SigIeRICDescriptor (0x000d) uint32_t dot11f_unpack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, @@ -2277,7 +2313,7 @@ uint32_t dot11f_unpack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rrm_enabled_cap. */ -#define SigIeRRMEnabledCap (0x0011) +#define SigIeRRMEnabledCap (0x000e) uint32_t dot11f_unpack_ie_requested_info(tpAniSirGlobal pCtx, @@ -2297,7 +2333,7 @@ uint32_t dot11f_unpack_ie_requested_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_requested_info. */ -#define SigIeRequestedInfo (0x0012) +#define SigIeRequestedInfo (0x000f) uint32_t dot11f_unpack_ie_ssid(tpAniSirGlobal pCtx, @@ -2324,7 +2360,7 @@ uint32_t dot11f_unpack_ie_ssid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ssid. */ -#define SigIeSSID (0x0013) +#define SigIeSSID (0x0010) uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, @@ -2385,7 +2421,7 @@ uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_schedule. */ -#define SigIeSchedule (0x0014) +#define SigIeSchedule (0x0011) uint32_t dot11f_unpack_ie_tclas(tpAniSirGlobal pCtx, @@ -2577,10 +2613,10 @@ uint32_t dot11f_unpack_ie_tclas(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tclas. */ -#define SigIeTCLAS (0x0015) +#define SigIeTCLAS (0x0012) -#define SigIeTCLASSPROC (0x0016) +#define SigIeTCLASSPROC (0x0013) uint32_t dot11f_unpack_ie_ts_delay(tpAniSirGlobal pCtx, @@ -2604,7 +2640,7 @@ uint32_t dot11f_unpack_ie_ts_delay(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ts_delay. */ -#define SigIeTSDelay (0x0017) +#define SigIeTSDelay (0x0014) uint32_t dot11f_unpack_ie_tsf_info(tpAniSirGlobal pCtx, @@ -2636,7 +2672,7 @@ uint32_t dot11f_unpack_ie_tsf_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tsf_info. */ -#define SigIeTSFInfo (0x0018) +#define SigIeTSFInfo (0x0015) uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, @@ -2803,7 +2839,7 @@ uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tspec. */ -#define SigIeTSPEC (0x0019) +#define SigIeTSPEC (0x0016) uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, @@ -2887,7 +2923,7 @@ uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_caps. */ -#define SigIeVHTCaps (0x001a) +#define SigIeVHTCaps (0x0017) uint32_t dot11f_unpack_ie_vht_operation(tpAniSirGlobal pCtx, @@ -2935,7 +2971,7 @@ uint32_t dot11f_unpack_ie_vht_operation(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_operation. */ -#define SigIeVHTOperation (0x001b) +#define SigIeVHTOperation (0x0018) uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, @@ -3008,7 +3044,7 @@ uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_schedule. */ -#define SigIeWMMSchedule (0x001c) +#define SigIeWMMSchedule (0x0019) uint32_t dot11f_unpack_ie_wmmtclas(tpAniSirGlobal pCtx, @@ -3212,7 +3248,7 @@ uint32_t dot11f_unpack_ie_wmmtclas(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtclas. */ -#define SigIeWMMTCLAS (0x001d) +#define SigIeWMMTCLAS (0x001a) uint32_t dot11f_unpack_ie_wmmtclasproc(tpAniSirGlobal pCtx, @@ -3248,7 +3284,7 @@ uint32_t dot11f_unpack_ie_wmmtclasproc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtclasproc. */ -#define SigIeWMMTCLASPROC (0x001e) +#define SigIeWMMTCLASPROC (0x001b) uint32_t dot11f_unpack_ie_wmmts_delay(tpAniSirGlobal pCtx, @@ -3284,7 +3320,7 @@ uint32_t dot11f_unpack_ie_wmmts_delay(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmts_delay. */ -#define SigIeWMMTSDelay (0x001f) +#define SigIeWMMTSDelay (0x001c) uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, @@ -3463,7 +3499,7 @@ uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtspec. */ -#define SigIeWMMTSPEC (0x0020) +#define SigIeWMMTSPEC (0x001d) uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann(tpAniSirGlobal pCtx, @@ -3503,7 +3539,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 (0x0021) +#define SigIeWiderBWChanSwitchAnn (0x001e) uint32_t dot11f_unpack_ie_azimuth_req(tpAniSirGlobal pCtx, @@ -3527,7 +3563,7 @@ uint32_t dot11f_unpack_ie_azimuth_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_azimuth_req. */ -#define SigIeazimuth_req (0x0022) +#define SigIeazimuth_req (0x001f) uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, @@ -3555,7 +3591,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 (0x0023) +#define SigIebeacon_report_frm_body_fragment_id (0x0020) uint32_t dot11f_unpack_ie_last_beacon_report_indication(tpAniSirGlobal pCtx, @@ -3579,7 +3615,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 (0x0024) +#define SigIelast_beacon_report_indication (0x0021) uint32_t dot11f_unpack_ie_max_age(tpAniSirGlobal pCtx, @@ -3603,7 +3639,7 @@ uint32_t dot11f_unpack_ie_max_age(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_max_age. */ -#define SigIemax_age (0x0025) +#define SigIemax_age (0x0022) static const tFFDefn FFS_neighbor_rpt[] = { @@ -3725,7 +3761,7 @@ uint32_t dot11f_unpack_ie_neighbor_rpt(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_rpt. */ -#define SigIeneighbor_rpt (0x0026) +#define SigIeneighbor_rpt (0x0023) uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, @@ -3749,7 +3785,7 @@ uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_req_mac_addr. */ -#define SigIereq_mac_addr (0x0027) +#define SigIereq_mac_addr (0x0024) uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, @@ -3773,7 +3809,7 @@ uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tgt_mac_addr. */ -#define SigIetgt_mac_addr (0x0028) +#define SigIetgt_mac_addr (0x0025) uint32_t dot11f_unpack_ie_vht_transmit_power_env(tpAniSirGlobal pCtx, @@ -3798,7 +3834,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 (0x0029) +#define SigIevht_transmit_power_env (0x0026) uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, @@ -3822,7 +3858,7 @@ uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_aid. */ -#define SigIeAID (0x002a) +#define SigIeAID (0x0027) uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, @@ -3870,7 +3906,7 @@ uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_cf_params. */ -#define SigIeCFParams (0x002b) +#define SigIeCFParams (0x0028) uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, @@ -3895,7 +3931,7 @@ uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_challenge_text. */ -#define SigIeChallengeText (0x002c) +#define SigIeChallengeText (0x0029) uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, @@ -3935,7 +3971,7 @@ uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_chan_switch_ann. */ -#define SigIeChanSwitchAnn (0x002d) +#define SigIeChanSwitchAnn (0x002a) static const tFFDefn FFS_ChannelSwitchWrapper[] = { @@ -3977,7 +4013,7 @@ uint32_t dot11f_unpack_ie_channel_switch_wrapper(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_channel_switch_wrapper. */ -#define SigIeChannelSwitchWrapper (0x002e) +#define SigIeChannelSwitchWrapper (0x002b) uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, @@ -4015,10 +4051,10 @@ uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_country. */ -#define SigIeCountry (0x002f) +#define SigIeCountry (0x002c) -#define SigIeDSParams (0x0030) +#define SigIeDSParams (0x002d) uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, @@ -4178,7 +4214,7 @@ uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_edca_param_set. */ -#define SigIeEDCAParamSet (0x0031) +#define SigIeEDCAParamSet (0x002e) uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, @@ -4207,7 +4243,7 @@ uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_erp_info. */ -#define SigIeERPInfo (0x0032) +#define SigIeERPInfo (0x002f) uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, @@ -4232,7 +4268,7 @@ uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_cckm_opaque. */ -#define SigIeESECckmOpaque (0x0033) +#define SigIeESECckmOpaque (0x0030) uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, @@ -4267,7 +4303,7 @@ uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_rad_mgmt_cap. */ -#define SigIeESERadMgmtCap (0x0034) +#define SigIeESERadMgmtCap (0x0031) uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, @@ -4307,7 +4343,7 @@ uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_traf_strm_met. */ -#define SigIeESETrafStrmMet (0x0035) +#define SigIeESETrafStrmMet (0x0032) uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(tpAniSirGlobal pCtx, @@ -4340,7 +4376,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 (0x0036) +#define SigIeESETrafStrmRateSet (0x0033) uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, @@ -4372,7 +4408,7 @@ uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_txmit_power. */ -#define SigIeESETxmitPower (0x0037) +#define SigIeESETxmitPower (0x0034) uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, @@ -4396,7 +4432,7 @@ uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_version. */ -#define SigIeESEVersion (0x0038) +#define SigIeESEVersion (0x0035) uint32_t dot11f_unpack_ie_ext_cap(tpAniSirGlobal pCtx, @@ -4426,7 +4462,7 @@ endUnpackIeExtCap: return status; } /* End dot11f_unpack_ie_ext_cap. */ -#define SigIeExtCap (0x0039) +#define SigIeExtCap (0x0036) uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, @@ -4459,7 +4495,7 @@ uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ext_supp_rates. */ -#define SigIeExtSuppRates (0x003a) +#define SigIeExtSuppRates (0x0037) uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, @@ -4507,7 +4543,7 @@ uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_param_set. */ -#define SigIeFHParamSet (0x003b) +#define SigIeFHParamSet (0x0038) uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, @@ -4539,7 +4575,7 @@ uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_params. */ -#define SigIeFHParams (0x003c) +#define SigIeFHParams (0x0039) uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, @@ -4596,7 +4632,7 @@ uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_patt_table. */ -#define SigIeFHPattTable (0x003d) +#define SigIeFHPattTable (0x003a) static const tFFDefn FFS_FTInfo[] = { @@ -4676,7 +4712,7 @@ uint32_t dot11f_unpack_ie_ft_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ft_info. */ -#define SigIeFTInfo (0x003e) +#define SigIeFTInfo (0x003b) uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, @@ -4800,7 +4836,7 @@ uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht_caps. */ -#define SigIeHTCaps (0x003f) +#define SigIeHTCaps (0x003c) uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, @@ -4886,7 +4922,7 @@ uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht_info. */ -#define SigIeHTInfo (0x0040) +#define SigIeHTInfo (0x003d) uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, @@ -4926,7 +4962,7 @@ uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_link_identifier. */ -#define SigIeLinkIdentifier (0x0041) +#define SigIeLinkIdentifier (0x003e) static const tTLVDefn TLVS_MBO_IE[] = { @@ -4989,7 +5025,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 (0x003f) static const tFFDefn FFS_reportBeacon[] = { @@ -5324,7 +5360,7 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_report. */ -#define SigIeMeasurementReport (0x0043) +#define SigIeMeasurementReport (0x0040) static const tFFDefn FFS_measurement_requestBeacon[] = { @@ -5628,7 +5664,7 @@ uint32_t dot11f_unpack_ie_measurement_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_request. */ -#define SigIeMeasurementRequest (0x0044) +#define SigIeMeasurementRequest (0x0041) uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, @@ -5664,7 +5700,7 @@ uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_mobility_domain. */ -#define SigIeMobilityDomain (0x0045) +#define SigIeMobilityDomain (0x0042) static const tFFDefn FFS_NeighborReport[] = { @@ -5786,7 +5822,7 @@ uint32_t dot11f_unpack_ie_neighbor_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_report. */ -#define SigIeNeighborReport (0x0046) +#define SigIeNeighborReport (0x0043) uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, @@ -5858,7 +5894,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 (0x0044) uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, @@ -5888,7 +5924,7 @@ uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_operating_mode. */ -#define SigIeOperatingMode (0x0048) +#define SigIeOperatingMode (0x0045) static const tTLVDefn TLVS_P2PAssocReq[] = { @@ -5920,7 +5956,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 (0x0046) static const tTLVDefn TLVS_P2PAssocRes[] = { @@ -5949,7 +5985,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 (0x0047) static const tTLVDefn TLVS_P2PBeacon[] = { @@ -5981,7 +6017,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 (0x0048) static const tTLVDefn TLVS_P2PBeaconProbeRes[] = { @@ -6023,7 +6059,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 (0x0049) static const tTLVDefn TLVS_P2PDeAuth[] = { @@ -6049,7 +6085,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 (0x004a) static const tTLVDefn TLVS_P2PDisAssoc[] = { @@ -6075,7 +6111,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 (0x004b) uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx, @@ -6100,7 +6136,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 (0x004c) static const tTLVDefn TLVS_P2PProbeReq[] = { @@ -6139,7 +6175,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 (0x004d) static const tTLVDefn TLVS_P2PProbeRes[] = { @@ -6178,7 +6214,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 (0x004e) uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, @@ -6210,7 +6246,7 @@ uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_pti_control. */ -#define SigIePTIControl (0x0052) +#define SigIePTIControl (0x004f) uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, @@ -6240,7 +6276,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 (0x0050) uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, @@ -6272,7 +6308,7 @@ uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_caps. */ -#define SigIePowerCaps (0x0054) +#define SigIePowerCaps (0x0051) uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, @@ -6296,7 +6332,7 @@ uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_constraints. */ -#define SigIePowerConstraints (0x0055) +#define SigIePowerConstraints (0x0052) uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, @@ -6336,7 +6372,7 @@ uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qbss_load. */ -#define SigIeQBSSLoad (0x0056) +#define SigIeQBSSLoad (0x0053) uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, @@ -6368,7 +6404,7 @@ uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_QComVendorIE. */ -#define SigIeQComVendorIE (0x0057) +#define SigIeQComVendorIE (0x0054) uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, @@ -6398,7 +6434,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 (0x0055) uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, @@ -6430,7 +6466,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 (0x0056) uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx, @@ -6455,7 +6491,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 (0x0057) uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, @@ -6503,7 +6539,7 @@ uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_quiet. */ -#define SigIeQuiet (0x005b) +#define SigIeQuiet (0x0058) uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, @@ -6527,7 +6563,7 @@ uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rcpiie. */ -#define SigIeRCPIIE (0x005c) +#define SigIeRCPIIE (0x0059) static const tFFDefn FFS_RICDataDesc[] = { @@ -6603,7 +6639,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 (0x005a) uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, @@ -6778,7 +6814,7 @@ uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsn. */ -#define SigIeRSN (0x005e) +#define SigIeRSN (0x005b) uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, @@ -6802,7 +6838,7 @@ uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsniie. */ -#define SigIeRSNIIE (0x005f) +#define SigIeRSNIIE (0x005c) uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, @@ -6827,7 +6863,7 @@ uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsn_opaque. */ -#define SigIeRSNOpaque (0x0060) +#define SigIeRSNOpaque (0x005d) uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, @@ -6852,7 +6888,7 @@ uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_channels. */ -#define SigIeSuppChannels (0x0061) +#define SigIeSuppChannels (0x005e) uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx, @@ -6877,7 +6913,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 (0x005f) uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, @@ -6910,7 +6946,7 @@ uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_rates. */ -#define SigIeSuppRates (0x0063) +#define SigIeSuppRates (0x0060) uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, @@ -6959,7 +6995,7 @@ uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tim. */ -#define SigIeTIM (0x0064) +#define SigIeTIM (0x0061) uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, @@ -6991,7 +7027,7 @@ uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_report. */ -#define SigIeTPCReport (0x0065) +#define SigIeTPCReport (0x0062) uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, @@ -7009,7 +7045,7 @@ uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_request. */ -#define SigIeTPCRequest (0x0066) +#define SigIeTPCRequest (0x0063) uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, @@ -7049,7 +7085,7 @@ uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_time_advertisement. */ -#define SigIeTimeAdvertisement (0x0067) +#define SigIeTimeAdvertisement (0x0064) uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, @@ -7081,7 +7117,7 @@ uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_timeout_interval. */ -#define SigIeTimeoutInterval (0x0068) +#define SigIeTimeoutInterval (0x0065) uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx, @@ -7137,7 +7173,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 (0x0066) uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, @@ -7155,7 +7191,7 @@ uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor1_ie. */ -#define SigIeVendor1IE (0x006a) +#define SigIeVendor1IE (0x0067) uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, @@ -7173,7 +7209,7 @@ uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor3_ie. */ -#define SigIeVendor3IE (0x006b) +#define SigIeVendor3IE (0x0068) uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, @@ -7288,7 +7324,7 @@ uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi. */ -#define SigIeWAPI (0x006c) +#define SigIeWAPI (0x0069) uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, @@ -7313,7 +7349,7 @@ uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi_opaque. */ -#define SigIeWAPIOpaque (0x006d) +#define SigIeWAPIOpaque (0x006a) uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, @@ -7345,7 +7381,7 @@ uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfatpc. */ -#define SigIeWFATPC (0x006e) +#define SigIeWFATPC (0x006b) uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, @@ -7370,7 +7406,7 @@ uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfdie_opaque. */ -#define SigIeWFDIEOpaque (0x006f) +#define SigIeWFDIEOpaque (0x006c) uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, @@ -7412,7 +7448,7 @@ uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_caps. */ -#define SigIeWMMCaps (0x0070) +#define SigIeWMMCaps (0x006d) uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, @@ -7448,7 +7484,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 (0x006e) uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx, @@ -7488,7 +7524,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 (0x006f) uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, @@ -7660,7 +7696,7 @@ uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_params. */ -#define SigIeWMMParams (0x0073) +#define SigIeWMMParams (0x0070) uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, @@ -7769,7 +7805,7 @@ uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wpa. */ -#define SigIeWPA (0x0074) +#define SigIeWPA (0x0071) uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, @@ -7794,7 +7830,7 @@ uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wpa_opaque. */ -#define SigIeWPAOpaque (0x0075) +#define SigIeWPAOpaque (0x0072) static const tTLVDefn TLVS_WSC[] = { @@ -7885,7 +7921,7 @@ uint32_t dot11f_unpack_ie_wsc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc. */ -#define SigIeWSC (0x0076) +#define SigIeWSC (0x0073) static const tTLVDefn TLVS_WscAssocReq[] = { @@ -7917,7 +7953,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 (0x0074) static const tTLVDefn TLVS_WscAssocRes[] = { @@ -7949,7 +7985,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 (0x0075) static const tTLVDefn TLVS_WscBeacon[] = { @@ -8002,7 +8038,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_beacon. */ -#define SigIeWscBeacon (0x0079) +#define SigIeWscBeacon (0x0076) static const tTLVDefn TLVS_WscBeaconProbeRes[] = { @@ -8080,7 +8116,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 (0x0077) uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx, @@ -8105,7 +8141,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 (0x0078) static const tTLVDefn TLVS_WscProbeReq[] = { @@ -8178,7 +8214,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 (0x0079) static const tTLVDefn TLVS_WscProbeRes[] = { @@ -8256,7 +8292,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 (0x007a) static const tTLVDefn TLVS_WscReassocRes[] = { @@ -8288,7 +8324,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 (0x007b) uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, @@ -8316,7 +8352,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 (0x007c) uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, @@ -8351,7 +8387,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 (0x007d) uint32_t dot11f_unpack_ie_dh_parameter_element(tpAniSirGlobal pCtx, @@ -8379,7 +8415,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 (0x007e) uint32_t dot11f_unpack_ie_esp_information(tpAniSirGlobal pCtx, @@ -8404,7 +8440,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 (0x007f) uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, @@ -8452,7 +8488,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 (0x0080) uint32_t dot11f_unpack_ie_fils_assoc_delay_info(tpAniSirGlobal pCtx, @@ -8476,7 +8512,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 (0x0081) uint32_t dot11f_unpack_ie_fils_hlp_container(tpAniSirGlobal pCtx, @@ -8512,7 +8548,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 (0x0082) uint32_t dot11f_unpack_ie_fils_indication(tpAniSirGlobal pCtx, @@ -8550,7 +8586,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 (0x0083) uint32_t dot11f_unpack_ie_fils_kde(tpAniSirGlobal pCtx, @@ -8578,7 +8614,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 (0x0084) uint32_t dot11f_unpack_ie_fils_key_confirmation(tpAniSirGlobal pCtx, @@ -8598,7 +8634,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 (0x0085) uint32_t dot11f_unpack_ie_fils_nonce(tpAniSirGlobal pCtx, @@ -8622,7 +8658,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 (0x0086) uint32_t dot11f_unpack_ie_fils_public_key(tpAniSirGlobal pCtx, @@ -8650,7 +8686,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 (0x0087) uint32_t dot11f_unpack_ie_fils_session(tpAniSirGlobal pCtx, @@ -8674,7 +8710,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 (0x0088) uint32_t dot11f_unpack_ie_fils_wrapped_data(tpAniSirGlobal pCtx, @@ -8694,7 +8730,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 (0x0089) uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, @@ -8714,7 +8750,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 (0x008a) uint32_t dot11f_unpack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, @@ -8747,7 +8783,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 (0x008b) uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, @@ -8992,7 +9028,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 (0x008c) uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, @@ -9144,7 +9180,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 (0x008d) uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, @@ -9201,7 +9237,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 (0x008e) uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, @@ -9232,7 +9268,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 (0x008f) uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx, @@ -9265,7 +9301,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 (0x0090) uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, @@ -9417,7 +9453,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 (0x0091) uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, @@ -9437,27 +9473,44 @@ uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_osen_ie. */ -#define SigIeosen_ie (0x0095) +#define SigIeosen_ie (0x0092) -static const tFFDefn FFS_qcn_ie[] = { - { NULL, 0, 0, 0,}, -}; - -static const tIEDefn IES_qcn_ie[] = { - { offsetof(tDot11fIEqcn_ie, version_attr), - offsetof(tDot11fIEversion_attr, present), 0, "version_attr", - 0, 4, 4, SigIeversion_attr, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_VERSION_ATTR, 0, 0, }, +static const tTLVDefn TLVS_qcn_ie[] = { + { offsetof(tDot11fIEqcn_ie, qcn_version), offsetof(tDot11fTLVqcn_version, + present), "qcn_version", SigTlvqcn_version, DOT11F_TLV_QCN_VERSION, + 0, 4, 4, 0, 1, 1, 0, }, { offsetof(tDot11fIEqcn_ie, vht_mcs11_attr), - 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(tDot11fTLVvht_mcs11_attr, present), "vht_mcs11_attr", + SigTlvvht_mcs11_attr, DOT11F_TLV_VHT_MCS11_ATTR, 0, 3, 3, 0, 1, 1, 0, }, + { offsetof(tDot11fIEqcn_ie, he_400ns_sgi_attr), + offsetof(tDot11fTLVhe_400ns_sgi_attr, present), "he_400ns_sgi_attr", + SigTlvhe_400ns_sgi_attr, DOT11F_TLV_HE_400NS_SGI_ATTR, + 0, 5, 5, 0, 1, 1, 0, }, + { offsetof(tDot11fIEqcn_ie, he_2xltf_160mhz_supp), + offsetof(tDot11fTLVhe_2xltf_160mhz_supp, present), + "he_2xltf_160mhz_supp", SigTlvhe_2xltf_160mhz_supp, + DOT11F_TLV_HE_2XLTF_160MHZ_SUPP, 0, 3, 3, 0, 1, 1, 0, }, + { offsetof(tDot11fIEqcn_ie, he_dl_ofdma_attr), + offsetof(tDot11fTLVhe_dl_ofdma_attr, present), "he_dl_ofdma_attr", + SigTlvhe_dl_ofdma_attr, DOT11F_TLV_HE_DL_OFDMA_ATTR, + 0, 3, 3, 0, 1, 1, 0, }, + { offsetof(tDot11fIEqcn_ie, trans_reasonp_attr), + offsetof(tDot11fTLVtrans_reasonp_attr, present), "trans_reasonp_attr", + SigTlvtrans_reasonp_attr, DOT11F_TLV_TRANS_REASONP_ATTR, + 0, 3, 3, 0, 1, 1, 0, }, + { offsetof(tDot11fIEqcn_ie, trans_rejectp_attr), + offsetof(tDot11fTLVtrans_rejectp_attr, present), "trans_rejectp_attr", + SigTlvtrans_rejectp_attr, DOT11F_TLV_TRANS_REJECTP_ATTR, + 0, 3, 3, 0, 1, 1, 0, }, + { offsetof(tDot11fIEqcn_ie, he_dl_mumimo_attr), + offsetof(tDot11fTLVhe_dl_mumimo_attr, present), "he_dl_mumimo_attr", + SigTlvhe_dl_mumimo_attr, DOT11F_TLV_HE_DL_MUMIMO_ATTR, + 0, 3, 3, 0, 1, 1, 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, }, + offsetof(tDot11fTLVhe_mcs13_attr, present), "he_mcs13_attr", + SigTlvhe_mcs13_attr, DOT11F_TLV_HE_MCS13_ATTR, 0, 4, 4, 0, 1, 1, 0, }, + {0, 0, NULL, 0, 0xffff, 0, 0, 0, 0, 0, 0}, }; uint32_t dot11f_unpack_ie_qcn_ie(tpAniSirGlobal pCtx, @@ -9467,23 +9520,15 @@ uint32_t dot11f_unpack_ie_qcn_ie(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - (void) pBuf; (void)ielen; /* Shutup the compiler */ - if (pDst->present) - return DOT11F_DUPLICATE_IE; + (void)pBuf; (void)ielen; /* Shutup the compiler */ pDst->present = 1; - (void)pCtx; - status |= unpack_core(pCtx, - pBuf, - ielen, - FFS_qcn_ie, - IES_qcn_ie, - (uint8_t *)pDst, - sizeof(*pDst), - append_ie); + status = unpack_tlv_core(pCtx, pBuf, ielen, + TLVS_qcn_ie, + (uint8_t *)pDst, sizeof(*pDst)); return status; } /* End dot11f_unpack_ie_qcn_ie. */ -#define SigIeqcn_ie (0x0096) +#define SigIeqcn_ie (0x0093) uint32_t dot11f_unpack_ie_roaming_consortium_sel(tpAniSirGlobal pCtx, @@ -9503,7 +9548,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 (0x0094) uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx, @@ -9527,7 +9572,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 (0x0095) static const tFFDefn FFS_vendor_vht_ie[] = { @@ -9576,7 +9621,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 (0x0096) static const tFFDefn FFS_AddTSRequest[] = { @@ -9834,7 +9879,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, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 37, 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}, @@ -9998,7 +10043,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, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 37, 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 +10337,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, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, + "qcn_ie", 0, 6, 37, 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}, @@ -10523,7 +10568,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, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, + "qcn_ie", 0, 6, 37, 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}, @@ -10750,7 +10795,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, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, + 0, "qcn_ie", 0, 6, 37, 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}, @@ -11189,7 +11234,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, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 37, 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}, @@ -11403,7 +11448,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, 17, SigIeqcn_ie, {140, 253, 240, 1, 0}, + present), 0, "qcn_ie", 0, 6, 37, 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}, @@ -13275,36 +13320,6 @@ 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( - pCtx, pBufRemaining, len, - (tDot11fIEversion_attr *) - (pFrm + pIe->offset + - sizeof(tDot11fIEversion_attr) * - countOffset), - append_ie); - break; - case SigIevht_mcs11_attr: - status |= - dot11f_unpack_ie_vht_mcs11_attr( - pCtx, pBufRemaining, len, - (tDot11fIEvht_mcs11_attr *) - (pFrm + pIe->offset + - sizeof(tDot11fIEvht_mcs11_attr) * - countOffset), - append_ie); - break; case SigIeAPChannelReport: status |= dot11f_unpack_ie_ap_channel_report( @@ -15273,6 +15288,47 @@ static uint32_t unpack_tlv_core(tpAniSirGlobal pCtx, (uint8_t *)&(((tDot11fTLVcellular_data_con_pref *) (pFrm + pTlv->offset))->cellular_preference)); break; + case SigTlvhe_2xltf_160mhz_supp: + status |= + dot11f_unpack_tlv_common_func(pCtx, + pBufRemaining, len, + (uint8_t *)&(((tDot11fTLVhe_2xltf_160mhz_supp *) + (pFrm + pTlv->offset))->present), + (uint8_t *)&(((tDot11fTLVhe_2xltf_160mhz_supp *) + (pFrm + pTlv->offset))->he_2xltf_160MHz_supp)); + break; + case SigTlvhe_400ns_sgi_attr: + status |= + dot11f_unpack_tlv_he_400ns_sgi_attr(pCtx, + pBufRemaining, len, + (tDot11fTLVhe_400ns_sgi_attr *) + (pFrm + pTlv->offset)); + break; + case SigTlvhe_dl_mumimo_attr: + status |= + dot11f_unpack_tlv_common_func(pCtx, + pBufRemaining, len, + (uint8_t *)&(((tDot11fTLVhe_dl_mumimo_attr *) + (pFrm + pTlv->offset))->present), + (uint8_t *)&(((tDot11fTLVhe_dl_mumimo_attr *) + (pFrm + pTlv->offset))->he_dl_mumimo_supp)); + break; + case SigTlvhe_dl_ofdma_attr: + status |= + dot11f_unpack_tlv_common_func(pCtx, + pBufRemaining, len, + (uint8_t *)&(((tDot11fTLVhe_dl_ofdma_attr *) + (pFrm + pTlv->offset))->present), + (uint8_t *)&(((tDot11fTLVhe_dl_ofdma_attr *) + (pFrm + pTlv->offset))->he_dl_ofdma_supp)); + break; + case SigTlvhe_mcs13_attr: + status |= + dot11f_unpack_tlv_he_mcs13_attr(pCtx, + pBufRemaining, len, + (tDot11fTLVhe_mcs13_attr *) + (pFrm + pTlv->offset)); + break; case SigTlvmbo_ap_cap: status |= dot11f_unpack_tlv_common_func(pCtx, @@ -15296,6 +15352,13 @@ static uint32_t unpack_tlv_core(tpAniSirGlobal pCtx, (tDot11fTLVoce_cap *) (pFrm + pTlv->offset)); break; + case SigTlvqcn_version: + status |= + dot11f_unpack_tlv_qcn_version(pCtx, + pBufRemaining, len, + (tDot11fTLVqcn_version *) + (pFrm + pTlv->offset)); + break; case SigTlvreduced_wan_metrics: status |= dot11f_unpack_tlv_reduced_wan_metrics(pCtx, @@ -15310,6 +15373,24 @@ static uint32_t unpack_tlv_core(tpAniSirGlobal pCtx, (tDot11fTLVrssi_assoc_rej *) (pFrm + pTlv->offset)); break; + case SigTlvtrans_reasonp_attr: + status |= + dot11f_unpack_tlv_common_func(pCtx, + pBufRemaining, len, + (uint8_t *)&(((tDot11fTLVtrans_reasonp_attr *) + (pFrm + pTlv->offset))->present), + (uint8_t *)&(((tDot11fTLVtrans_reasonp_attr *) + (pFrm + pTlv->offset))->transition_reasonp)); + break; + case SigTlvtrans_rejectp_attr: + status |= + dot11f_unpack_tlv_common_func(pCtx, + pBufRemaining, len, + (uint8_t *)&(((tDot11fTLVtrans_rejectp_attr *) + (pFrm + pTlv->offset))->present), + (uint8_t *)&(((tDot11fTLVtrans_rejectp_attr *) + (pFrm + pTlv->offset))->transition_rejp)); + break; case SigTlvtransition_reason: status |= dot11f_unpack_tlv_common_func(pCtx, @@ -15328,6 +15409,15 @@ static uint32_t unpack_tlv_core(tpAniSirGlobal pCtx, (uint8_t *)&(((tDot11fTLVtransition_reject_reason *) (pFrm + pTlv->offset))->transition_reject_code)); break; + case SigTlvvht_mcs11_attr: + status |= + dot11f_unpack_tlv_common_func(pCtx, + pBufRemaining, len, + (uint8_t *)&(((tDot11fTLVvht_mcs11_attr *) + (pFrm + pTlv->offset))->present), + (uint8_t *)&(((tDot11fTLVvht_mcs11_attr *) + (pFrm + pTlv->offset))->vht_mcs_10_11_supp)); + break; case SigTlvP2PInterface: status |= dot11f_unpack_tlv_p2_p_interface(pCtx, @@ -16130,8 +16220,8 @@ uint32_t dot11f_get_packed_ie_qcn_ie(tpAniSirGlobal pCtx, uint32_t status = DOT11F_PARSE_SUCCESS; (void)pCtx; while (pIe->present) { - status = get_packed_size_core(pCtx, (uint8_t *)pIe, pnNeeded, - IES_qcn_ie); + status = get_packed_size_tlv_core(pCtx, (uint8_t *)pIe, pnNeeded, + TLVS_qcn_ie); break; } return status; @@ -16734,27 +16824,6 @@ 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; - pIePresent = ((tDot11fIEversion_attr *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIevht_mcs11_attr: - offset = sizeof(tDot11fIEvht_mcs11_attr); - byteCount = 1; - pIePresent = ((tDot11fIEvht_mcs11_attr *) - (pFrm + pIe->offset + offset * i))-> - present; - break; case SigIeAPChannelReport: offset = sizeof(tDot11fIEAPChannelReport); byteCount = ((tDot11fIEAPChannelReport *) @@ -18127,6 +18196,31 @@ static uint32_t get_packed_size_tlv_core(tpAniSirGlobal pCtx, pTlvPresent = ((tDot11fTLVcellular_data_con_pref *) (pFrm + pTlv->offset))->present; break; + case SigTlvhe_2xltf_160mhz_supp: + byteCount = 1; + pTlvPresent = ((tDot11fTLVhe_2xltf_160mhz_supp *) + (pFrm + pTlv->offset))->present; + break; + case SigTlvhe_400ns_sgi_attr: + byteCount = 3; + pTlvPresent = ((tDot11fTLVhe_400ns_sgi_attr *) + (pFrm + pTlv->offset))->present; + break; + case SigTlvhe_dl_mumimo_attr: + byteCount = 1; + pTlvPresent = ((tDot11fTLVhe_dl_mumimo_attr *) + (pFrm + pTlv->offset))->present; + break; + case SigTlvhe_dl_ofdma_attr: + byteCount = 1; + pTlvPresent = ((tDot11fTLVhe_dl_ofdma_attr *) + (pFrm + pTlv->offset))->present; + break; + case SigTlvhe_mcs13_attr: + byteCount = 2; + pTlvPresent = ((tDot11fTLVhe_mcs13_attr *) + (pFrm + pTlv->offset))->present; + break; case SigTlvmbo_ap_cap: byteCount = 1; pTlvPresent = ((tDot11fTLVmbo_ap_cap *) @@ -18142,6 +18236,11 @@ static uint32_t get_packed_size_tlv_core(tpAniSirGlobal pCtx, pTlvPresent = ((tDot11fTLVoce_cap *) (pFrm + pTlv->offset))->present; break; + case SigTlvqcn_version: + byteCount = 2; + pTlvPresent = ((tDot11fTLVqcn_version *) + (pFrm + pTlv->offset))->present; + break; case SigTlvreduced_wan_metrics: byteCount = 1; pTlvPresent = ((tDot11fTLVreduced_wan_metrics *) @@ -18152,6 +18251,16 @@ static uint32_t get_packed_size_tlv_core(tpAniSirGlobal pCtx, pTlvPresent = ((tDot11fTLVrssi_assoc_rej *) (pFrm + pTlv->offset))->present; break; + case SigTlvtrans_reasonp_attr: + byteCount = 1; + pTlvPresent = ((tDot11fTLVtrans_reasonp_attr *) + (pFrm + pTlv->offset))->present; + break; + case SigTlvtrans_rejectp_attr: + byteCount = 1; + pTlvPresent = ((tDot11fTLVtrans_rejectp_attr *) + (pFrm + pTlv->offset))->present; + break; case SigTlvtransition_reason: byteCount = 1; pTlvPresent = ((tDot11fTLVtransition_reason *) @@ -18162,6 +18271,11 @@ static uint32_t get_packed_size_tlv_core(tpAniSirGlobal pCtx, pTlvPresent = ((tDot11fTLVtransition_reject_reason *) (pFrm + pTlv->offset))->present; break; + case SigTlvvht_mcs11_attr: + byteCount = 1; + pTlvPresent = ((tDot11fTLVvht_mcs11_attr *) + (pFrm + pTlv->offset))->present; + break; case SigTlvP2PInterface: byteCount = 6; pTlvPresent = ((tDot11fTLVP2PInterface *) @@ -19772,6 +19886,160 @@ uint32_t dot11f_pack_tlv_cellular_data_con_pref(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_tlv_cellular_data_con_pref. */ +uint32_t dot11f_pack_tlv_he_2xltf_160mhz_supp(tpAniSirGlobal pCtx, + tDot11fTLVhe_2xltf_160mhz_supp *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 4; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->he_2xltf_160MHz_supp; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_he_2xltf_160mhz_supp. */ + +uint32_t dot11f_pack_tlv_he_400ns_sgi_attr(tpAniSirGlobal pCtx, + tDot11fTLVhe_400ns_sgi_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 5; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 3; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->he_ltf1x_400ns_sgi; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->he_ltf2x_400ns_sgi; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->he_ltf4x_400ns_sgi; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_he_400ns_sgi_attr. */ + +uint32_t dot11f_pack_tlv_he_dl_mumimo_attr(tpAniSirGlobal pCtx, + tDot11fTLVhe_dl_mumimo_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 8; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->he_dl_mumimo_supp; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_he_dl_mumimo_attr. */ + +uint32_t dot11f_pack_tlv_he_dl_ofdma_attr(tpAniSirGlobal pCtx, + tDot11fTLVhe_dl_ofdma_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 5; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->he_dl_ofdma_supp; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_he_dl_ofdma_attr. */ + +uint32_t dot11f_pack_tlv_he_mcs13_attr(tpAniSirGlobal pCtx, + tDot11fTLVhe_mcs13_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 4; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 9; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->he_mcs_12_13_supp_80; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->he_mcs_12_13_supp_160; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_he_mcs13_attr. */ + uint32_t dot11f_pack_tlv_mbo_ap_cap(tpAniSirGlobal pCtx, tDot11fTLVmbo_ap_cap *pSrc, uint8_t *pBuf, @@ -19873,6 +20141,38 @@ uint32_t dot11f_pack_tlv_oce_cap(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_tlv_oce_cap. */ +uint32_t dot11f_pack_tlv_qcn_version(tpAniSirGlobal pCtx, + tDot11fTLVqcn_version *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 4; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 1; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->version; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->sub_version; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_qcn_version. */ + uint32_t dot11f_pack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx, tDot11fTLVreduced_wan_metrics *pSrc, uint8_t *pBuf, @@ -19942,6 +20242,64 @@ uint32_t dot11f_pack_tlv_rssi_assoc_rej(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_tlv_rssi_assoc_rej. */ +uint32_t dot11f_pack_tlv_trans_reasonp_attr(tpAniSirGlobal pCtx, + tDot11fTLVtrans_reasonp_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 6; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->transition_reasonp; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_trans_reasonp_attr. */ + +uint32_t dot11f_pack_tlv_trans_rejectp_attr(tpAniSirGlobal pCtx, + tDot11fTLVtrans_rejectp_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 7; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->transition_rejp; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_trans_rejectp_attr. */ + uint32_t dot11f_pack_tlv_transition_reason(tpAniSirGlobal pCtx, tDot11fTLVtransition_reason *pSrc, uint8_t *pBuf, @@ -20000,6 +20358,35 @@ uint32_t dot11f_pack_tlv_transition_reject_reason(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_tlv_transition_reject_reason. */ +uint32_t dot11f_pack_tlv_vht_mcs11_attr(tpAniSirGlobal pCtx, + tDot11fTLVvht_mcs11_attr *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pTlvLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + while (pSrc->present) { + *pBuf = 2; + pBuf += 1; *pnConsumed += 1; + pTlvLen = pBuf; + pBuf += 1; *pnConsumed += 1; + *pBuf = pSrc->vht_mcs_10_11_supp; + *pnConsumed += 1; + pBuf += 1; + break; + } + (void)pCtx; + if (pTlvLen) { + *pTlvLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_tlv_vht_mcs11_attr. */ + uint32_t dot11f_pack_tlv_p2_p_interface(tpAniSirGlobal pCtx, tDot11fTLVP2PInterface *pSrc, uint8_t *pBuf, @@ -20200,96 +20587,6 @@ 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, - 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 = 1; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->version; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->sub_version; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_version_attr. */ - -uint32_t dot11f_pack_ie_vht_mcs11_attr(tpAniSirGlobal pCtx, - tDot11fIEvht_mcs11_attr *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += 1; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 2; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->vht_mcs_10_11_supp; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_vht_mcs11_attr. */ - uint32_t dot11f_pack_ie_ap_channel_report(tpAniSirGlobal pCtx, tDot11fIEAPChannelReport *pSrc, uint8_t *pBuf, @@ -27174,39 +27471,43 @@ uint32_t dot11f_pack_ie_qcn_ie(tpAniSirGlobal pCtx, uint32_t *pnConsumed) { uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; + uint32_t n, idx = 0, idxlast; + uint32_t nConsumedSoFar, nConsumedNow; uint32_t status = DOT11F_PARSE_SUCCESS; + uint32_t nNeeded = 0U; status = dot11f_get_packed_ie_qcn_ie(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 221; - ++pBuf; --nBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x8c; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0xfd; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0xf0; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x1; - ++pBuf; --nBuf; ++(*pnConsumed); - status = pack_core(pCtx, - (uint8_t *)pSrc, - pBuf, - nBuf, - pnConsumed, - FFS_qcn_ie, - IES_qcn_ie); - break; - } + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + if (pSrc->present) { + do { + nConsumedSoFar = *pnConsumed; + *pBuf = 221; + ++pBuf; --nBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0x8c; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0xfd; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0xf0; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0x1; + ++pBuf; --nBuf; ++(*pnConsumed); + n = (255 - 4) < nBuf ? (255 - 4) : nBuf; + nConsumedNow = *pnConsumed; + idxlast = idx; + status = pack_tlv_core(pCtx, (uint8_t *)pSrc, pBuf, n, + pnConsumed, + TLVS_qcn_ie + + idx, &idx); + nConsumedNow = *pnConsumed - nConsumedNow; + *pIeLen = *pnConsumed - nConsumedSoFar - 2; + pBuf += nConsumedNow; + nBuf -= nConsumedNow; + } while (DOT11F_BUFFER_OVERFLOW == status && idxlast != idx); } return status; } /* End dot11f_pack_ie_qcn_ie. */ @@ -28396,30 +28697,6 @@ 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( - pCtx, (tDot11fIEversion_attr *) - (pSrc + pIe->offset + - sizeof(tDot11fIEversion_attr) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIevht_mcs11_attr: - status |= - dot11f_pack_ie_vht_mcs11_attr( - pCtx, (tDot11fIEvht_mcs11_attr *) - (pSrc + pIe->offset + - sizeof(tDot11fIEvht_mcs11_attr) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeAPChannelReport: status |= dot11f_pack_ie_ap_channel_report( @@ -29916,6 +30193,41 @@ static uint32_t pack_tlv_core(tpAniSirGlobal pCtx, (pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); break; + case SigTlvhe_2xltf_160mhz_supp: + status |= + dot11f_pack_tlv_he_2xltf_160mhz_supp( + pCtx, (tDot11fTLVhe_2xltf_160mhz_supp *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; + case SigTlvhe_400ns_sgi_attr: + status |= + dot11f_pack_tlv_he_400ns_sgi_attr( + pCtx, (tDot11fTLVhe_400ns_sgi_attr *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; + case SigTlvhe_dl_mumimo_attr: + status |= + dot11f_pack_tlv_he_dl_mumimo_attr( + pCtx, (tDot11fTLVhe_dl_mumimo_attr *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; + case SigTlvhe_dl_ofdma_attr: + status |= + dot11f_pack_tlv_he_dl_ofdma_attr( + pCtx, (tDot11fTLVhe_dl_ofdma_attr *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; + case SigTlvhe_mcs13_attr: + status |= + dot11f_pack_tlv_he_mcs13_attr( + pCtx, (tDot11fTLVhe_mcs13_attr *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; case SigTlvmbo_ap_cap: status |= dot11f_pack_tlv_mbo_ap_cap( @@ -29937,6 +30249,13 @@ static uint32_t pack_tlv_core(tpAniSirGlobal pCtx, (pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); break; + case SigTlvqcn_version: + status |= + dot11f_pack_tlv_qcn_version( + pCtx, (tDot11fTLVqcn_version *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; case SigTlvreduced_wan_metrics: status |= dot11f_pack_tlv_reduced_wan_metrics( @@ -29951,6 +30270,20 @@ static uint32_t pack_tlv_core(tpAniSirGlobal pCtx, (pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); break; + case SigTlvtrans_reasonp_attr: + status |= + dot11f_pack_tlv_trans_reasonp_attr( + pCtx, (tDot11fTLVtrans_reasonp_attr *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; + case SigTlvtrans_rejectp_attr: + status |= + dot11f_pack_tlv_trans_rejectp_attr( + pCtx, (tDot11fTLVtrans_rejectp_attr *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; case SigTlvtransition_reason: status |= dot11f_pack_tlv_transition_reason( @@ -29965,6 +30298,13 @@ static uint32_t pack_tlv_core(tpAniSirGlobal pCtx, (pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); break; + case SigTlvvht_mcs11_attr: + status |= + dot11f_pack_tlv_vht_mcs11_attr( + pCtx, (tDot11fTLVvht_mcs11_attr *) + (pSrc + pTlv->offset), pBufRemaining, + nBufRemaining, &len); + break; case SigTlvP2PInterface: status |= dot11f_pack_tlv_p2_p_interface( 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 ec167a29b3cf..c0aac43b0b88 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 @@ -1239,7 +1239,8 @@ static void populate_dot11f_qcn_ie_he_params(struct mac_context *mac, 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; + qcn_ie->he_mcs13_attr.he_mcs_12_13_supp_80 = mcs_12_13_supp & 0xFF; + qcn_ie->he_mcs13_attr.he_mcs_12_13_supp_160 = mcs_12_13_supp >> 8; } #else /* WLAN_FEATURE_11AX */ static void populate_dot11f_qcn_ie_he_params(struct mac_context *mac, @@ -1259,9 +1260,9 @@ void populate_dot11f_qcn_ie(struct mac_context *mac, ((attr_id == QCN_IE_ATTR_ID_ALL) || (attr_id == QCN_IE_ATTR_ID_VERSION))) { qcn_ie->present = 1; - qcn_ie->version_attr.present = 1; - qcn_ie->version_attr.version = QCN_IE_VERSION_SUPPORTED; - qcn_ie->version_attr.sub_version = QCN_IE_SUBVERSION_SUPPORTED; + qcn_ie->qcn_version.present = 1; + qcn_ie->qcn_version.version = QCN_IE_VERSION_SUPPORTED; + qcn_ie->qcn_version.sub_version = QCN_IE_SUBVERSION_SUPPORTED; } if (mac->mlme_cfg->vht_caps.vht_cap_info.vht_mcs_10_11_supp) { qcn_ie->present = 1;