diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index aed5c3994b..da813f5757 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/core/mac/src/cfg/cfgUtil/dot11f.frms @@ -1,6 +1,7 @@ /* * Copyright (c) 2006-2007, 2014-2018, 2020-2021 The Linux Foundation. * All rights reserved. + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -3753,98 +3754,9 @@ IE non_inheritance (EID_EXTN_ID_ELEMENT) OUI (0x38) data[0..255]; } -IE mlo_capabilities (0) -{ - { - ess: 1; - ibss: 1; - cfPollable: 1; - cfPollReq: 1; - privacy: 1; - shortPreamble: 1; - criticalUpdateFlag: 1; - channelAgility: 1; - spectrumMgt: 1; - qos: 1; - shortSlotTime: 1; - apsd: 1; - rrm: 1; - dsssOfdm: 1; - delayedBA: 1; - immediateBA: 1; - } -} - IE sta_profile (0) { - { - link_id: 4; - complete_profile: 1; - sta_mac_addr_present: 1; - beacon_interval_present: 1; - dtim_info_present: 1; - nstr_link_pair_present: 1; - nstr_bitmap_size: 1; - reserved: 6; - } - OPTIONAL UNION sta_mac_addr (DISCRIMINATOR sta_mac_addr_present) - { - info (sta_mac_addr_present IS 1) - { - sta_mac_addr[6]; - } - }; - OPTIONAL UNION beacon_interval (DISCRIMINATOR beacon_interval_present) - { - info (beacon_interval_present IS 1) - { - beacon_interval, 2; - } - }; - OPTIONAL UNION dtim_info (DISCRIMINATOR dtim_info_present) - { - info (dtim_info_present IS 1) - { - dtim_count, 1; - dtim_period, 1; - } - }; - OPTIONAL UNION nstr_link_pair (DISCRIMINATOR nstr_link_pair_present) - { - info (nstr_link_pair_present IS 1) - { - nstr_link_pair_num, 1; - } - }; - OPTIE IE mlo_capabilities; - MANDIE IE SuppRates; - OPTIE IE ExtSuppRates; - OPTIE IE SuppOperatingClasses; - OPTIE IE WPA; - OPTIE IE ChanSwitchAnn; - OPTIE IE Quiet; - OPTIE IE ext_chan_switch_ann; - OPTIE IE RSN; - OPTIE IE EDCAParamSet; - OPTIE IE P2PAssocRes; - OPTIE IE HTCaps; - OPTIE IE HTInfo; - OPTIE IE WMMParams; - OPTIE IE WMMCaps; - OPTIE IE WMMInfoStation; - OPTIE IE VHTCaps; - OPTIE IE VHTOperation; - OPTIE IE ExtCap; - OPTIE IE OperatingMode; - OPTIE IE fils_indication; - OPTIE IE qcn_ie; - OPTIE IE he_cap; - OPTIE IE he_op; - OPTIE IE he_6ghz_band_cap; - OPTIE IE eht_cap; - OPTIE IE eht_op; - OPTIE IE max_chan_switch_time; - OPTIE IE non_inheritance; + data[0..255]; } IE mlo_ie (EID_EXTN_ID_ELEMENT) OUI (0x6B) diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h index fae237c305..134b0e3545 100644 --- a/core/mac/src/include/dot11f.h +++ b/core/mac/src/include/dot11f.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -26,7 +27,7 @@ * * * This file was automatically generated by 'framesc' - * Fri Sep 10 15:41:55 2021 from the following file(s): + * Fri Nov 19 01:58:42 2021 from the following file(s): * * dot11f.frms * @@ -3236,47 +3237,6 @@ uint32_t dot11f_get_packed_ie_BeaconReporting( }; /* End extern "C". */ #endif /* C++ */ -/* EID 37 (0x25) */ -typedef struct sDot11fIEChanSwitchAnn { - uint8_t present; - uint8_t switchMode; - uint8_t newChannel; - uint8_t switchCount; -} tDot11fIEChanSwitchAnn; - -#define DOT11F_EID_CHANSWITCHANN (37) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3) - -#define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_chan_switch_ann( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEChanSwitchAnn*, - bool); - -uint32_t dot11f_pack_ie_chan_switch_ann( - tpAniSirGlobal, - tDot11fIEChanSwitchAnn *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_ChanSwitchAnn( - tpAniSirGlobal, - tDot11fIEChanSwitchAnn *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 2 (0x02) */ typedef struct sDot11fIECondensedCountryStr { uint8_t present; @@ -3316,301 +3276,6 @@ uint32_t dot11f_get_packed_ie_CondensedCountryStr( }; /* End extern "C". */ #endif /* C++ */ -/* EID 12 (0x0c) */ -typedef struct sDot11fIEEDCAParamSet { - uint8_t present; - uint8_t qos; - uint8_t reserved; - uint8_t acbe_aifsn:4; - uint8_t acbe_acm:1; - uint8_t acbe_aci:2; - uint8_t unused1:1; - uint8_t acbe_acwmin:4; - uint8_t acbe_acwmax:4; - uint16_t acbe_txoplimit; - uint8_t acbk_aifsn:4; - uint8_t acbk_acm:1; - uint8_t acbk_aci:2; - uint8_t unused2:1; - uint8_t acbk_acwmin:4; - uint8_t acbk_acwmax:4; - uint16_t acbk_txoplimit; - uint8_t acvi_aifsn:4; - uint8_t acvi_acm:1; - uint8_t acvi_aci:2; - uint8_t unused3:1; - uint8_t acvi_acwmin:4; - uint8_t acvi_acwmax:4; - uint16_t acvi_txoplimit; - uint8_t acvo_aifsn:4; - uint8_t acvo_acm:1; - uint8_t acvo_aci:2; - uint8_t unused4:1; - uint8_t acvo_acwmin:4; - uint8_t acvo_acwmax:4; - uint16_t acvo_txoplimit; -} tDot11fIEEDCAParamSet; - -#define DOT11F_EID_EDCAPARAMSET (12) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18) - -#define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_edca_param_set( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEEDCAParamSet*, - bool); - -uint32_t dot11f_pack_ie_edca_param_set( - tpAniSirGlobal, - tDot11fIEEDCAParamSet *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_EDCAParamSet( - tpAniSirGlobal, - tDot11fIEEDCAParamSet *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 127 (0x7f) */ -typedef struct sDot11fIEExtCap { - uint8_t present; - uint8_t num_bytes; - uint8_t bytes[15]; -} tDot11fIEExtCap; - -#define DOT11F_EID_EXTCAP (127) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_EXTCAP_MIN_LEN (1) - -#define DOT11F_IE_EXTCAP_MAX_LEN (15) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_ext_cap( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEExtCap*, - bool); - -uint32_t dot11f_pack_ie_ext_cap( - tpAniSirGlobal, - tDot11fIEExtCap *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_ExtCap( - tpAniSirGlobal, - tDot11fIEExtCap *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 50 (0x32) */ -typedef struct sDot11fIEExtSuppRates { - uint8_t present; - uint8_t num_rates; - uint8_t rates[12]; -} tDot11fIEExtSuppRates; - -#define DOT11F_EID_EXTSUPPRATES (50) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1) - -#define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_ext_supp_rates( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEExtSuppRates*, - bool); - -uint32_t dot11f_pack_ie_ext_supp_rates( - tpAniSirGlobal, - tDot11fIEExtSuppRates *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_ExtSuppRates( - tpAniSirGlobal, - tDot11fIEExtSuppRates *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 45 (0x2d) */ -typedef struct sDot11fIEHTCaps { - uint8_t present; - uint16_t advCodingCap:1; - uint16_t supportedChannelWidthSet:1; - uint16_t mimoPowerSave:2; - uint16_t greenField:1; - uint16_t shortGI20MHz:1; - uint16_t shortGI40MHz:1; - uint16_t txSTBC:1; - uint16_t rxSTBC:2; - uint16_t delayedBA:1; - uint16_t maximalAMSDUsize:1; - uint16_t dsssCckMode40MHz:1; - uint16_t psmp:1; - uint16_t stbcControlFrame:1; - uint16_t lsigTXOPProtection:1; - uint8_t maxRxAMPDUFactor:2; - uint8_t mpduDensity:3; - uint8_t reserved1:3; - uint8_t supportedMCSSet[16]; - uint16_t pco:1; - uint16_t transitionTime:2; - uint16_t reserved2:5; - uint16_t mcsFeedback:2; - uint16_t reserved3:6; - uint32_t txBF:1; - uint32_t rxStaggeredSounding:1; - uint32_t txStaggeredSounding:1; - uint32_t rxZLF:1; - uint32_t txZLF:1; - uint32_t implicitTxBF:1; - uint32_t calibration:2; - uint32_t explicitCSITxBF:1; - uint32_t explicitUncompressedSteeringMatrix:1; - uint32_t explicitBFCSIFeedback:3; - uint32_t explicitUncompressedSteeringMatrixFeedback:3; - uint32_t explicitCompressedSteeringMatrixFeedback:3; - uint32_t csiNumBFAntennae:2; - uint32_t uncompressedSteeringMatrixBFAntennae:2; - uint32_t compressedSteeringMatrixBFAntennae:2; - uint32_t reserved4:7; - uint8_t antennaSelection:1; - uint8_t explicitCSIFeedbackTx:1; - uint8_t antennaIndicesFeedbackTx:1; - uint8_t explicitCSIFeedback:1; - uint8_t antennaIndicesFeedback:1; - uint8_t rxAS:1; - uint8_t txSoundingPPDUs:1; - uint8_t reserved5:1; - uint8_t num_rsvd; - uint8_t rsvd[32]; -} tDot11fIEHTCaps; - -#define DOT11F_EID_HTCAPS (45) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_HTCAPS_MIN_LEN (26) - -#define DOT11F_IE_HTCAPS_MAX_LEN (58) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_ht_caps( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEHTCaps*, - bool); - -uint32_t dot11f_pack_ie_ht_caps( - tpAniSirGlobal, - tDot11fIEHTCaps *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_HTCaps( - tpAniSirGlobal, - tDot11fIEHTCaps *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 61 (0x3d) */ -typedef struct sDot11fIEHTInfo { - uint8_t present; - uint8_t primaryChannel; - uint8_t secondaryChannelOffset:2; - uint8_t recommendedTxWidthSet:1; - uint8_t rifsMode:1; - uint8_t controlledAccessOnly:1; - uint8_t serviceIntervalGranularity:3; - uint16_t opMode:2; - uint16_t nonGFDevicesPresent:1; - uint16_t transmitBurstLimit:1; - uint16_t obssNonHTStaPresent:1; - uint16_t chan_center_freq_seg2:8; - uint16_t reserved:3; - uint16_t basicSTBCMCS:7; - uint16_t dualCTSProtection:1; - uint16_t secondaryBeacon:1; - uint16_t lsigTXOPProtectionFullSupport:1; - uint16_t pcoActive:1; - uint16_t pcoPhase:1; - uint16_t reserved2:4; - uint8_t basicMCSSet[16]; - uint8_t num_rsvd; - uint8_t rsvd[32]; -} tDot11fIEHTInfo; - -#define DOT11F_EID_HTINFO (61) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_HTINFO_MIN_LEN (22) - -#define DOT11F_IE_HTINFO_MAX_LEN (54) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_ht_info( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEHTInfo*, - bool); - -uint32_t dot11f_pack_ie_ht_info( - tpAniSirGlobal, - tDot11fIEHTInfo *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_HTInfo( - tpAniSirGlobal, - tDot11fIEHTInfo *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 66 (0x42) */ typedef struct sDot11fIEMeasurementPilot { uint8_t present; @@ -3693,131 +3358,6 @@ uint32_t dot11f_get_packed_ie_MultiBssid( }; /* End extern "C". */ #endif /* C++ */ -/* EID 199 (0xc7) */ -typedef struct sDot11fIEOperatingMode { - uint8_t present; - uint8_t chanWidth:2; - uint8_t vht_160_80p80_supp:1; - uint8_t no_ldpc:1; - uint8_t rxNSS:3; - uint8_t rxNSSType:1; -} tDot11fIEOperatingMode; - -#define DOT11F_EID_OPERATINGMODE (199) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_OPERATINGMODE_MIN_LEN (1) - -#define DOT11F_IE_OPERATINGMODE_MAX_LEN (1) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_operating_mode( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEOperatingMode*, - bool); - -uint32_t dot11f_pack_ie_operating_mode( - tpAniSirGlobal, - tDot11fIEOperatingMode *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_OperatingMode( - tpAniSirGlobal, - tDot11fIEOperatingMode *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ -typedef struct sDot11fIEP2PAssocRes { - uint8_t present; - tDot11fTLVP2PStatus P2PStatus; - tDot11fTLVExtendedListenTiming ExtendedListenTiming; -} tDot11fIEP2PAssocRes; - -#define DOT11F_EID_P2PASSOCRES (221) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_P2PASSOCRES_MIN_LEN (4) - -#define DOT11F_IE_P2PASSOCRES_MAX_LEN (15) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEP2PAssocRes*, - bool); - -uint32_t dot11f_pack_ie_p2_p_assoc_res( - tpAniSirGlobal, - tDot11fIEP2PAssocRes *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_iep2_p_assoc_res( - tpAniSirGlobal, - tDot11fIEP2PAssocRes *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 40 (0x28) */ -typedef struct sDot11fIEQuiet { - uint8_t present; - uint8_t count; - uint8_t period; - uint16_t duration; - uint16_t offset; -} tDot11fIEQuiet; - -#define DOT11F_EID_QUIET (40) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_QUIET_MIN_LEN (6) - -#define DOT11F_IE_QUIET_MAX_LEN (6) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_quiet( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEQuiet*, - bool); - -uint32_t dot11f_pack_ie_quiet( - tpAniSirGlobal, - tDot11fIEQuiet *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_Quiet( - tpAniSirGlobal, - tDot11fIEQuiet *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 57 (0x39) */ typedef struct sDot11fIERICData { uint8_t present; @@ -3969,57 +3509,6 @@ uint32_t dot11f_get_packed_ie_RRMEnabledCap( }; /* End extern "C". */ #endif /* C++ */ -/* EID 48 (0x30) */ -typedef struct sDot11fIERSN { - uint8_t present; - uint16_t version /* Must be 1! */; - uint8_t gp_cipher_suite_present; - uint8_t gp_cipher_suite[4]; - uint16_t pwise_cipher_suite_count; - uint8_t pwise_cipher_suites[6][4]; - uint16_t akm_suite_cnt; - uint8_t akm_suite[6][4]; - uint8_t RSN_Cap_present; - uint8_t RSN_Cap[2]; - uint16_t pmkid_count; - uint8_t pmkid[4][16]; - uint8_t gp_mgmt_cipher_suite_present; - uint8_t gp_mgmt_cipher_suite[4]; -} tDot11fIERSN; - -#define DOT11F_EID_RSN (48) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_RSN_MIN_LEN (2) - -#define DOT11F_IE_RSN_MAX_LEN (130) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_rsn( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIERSN*, - bool); - -uint32_t dot11f_pack_ie_rsn( - tpAniSirGlobal, - tDot11fIERSN *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_iersn( - tpAniSirGlobal, - tDot11fIERSN *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 10 (0x0a) */ typedef struct sDot11fIERequestedInfo { uint8_t present; @@ -4146,99 +3635,6 @@ uint32_t dot11f_get_packed_ie_Schedule( }; /* End extern "C". */ #endif /* C++ */ -/* EID 59 (0x3b) */ -typedef struct sDot11fIESuppOperatingClasses { - uint8_t present; - uint8_t num_classes; - uint8_t classes[32]; -} tDot11fIESuppOperatingClasses; - -#define DOT11F_EID_SUPPOPERATINGCLASSES (59) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1) - -#define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_supp_operating_classes( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIESuppOperatingClasses*, - bool); - -uint32_t dot11f_pack_ie_supp_operating_classes( - tpAniSirGlobal, - tDot11fIESuppOperatingClasses *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_SuppOperatingClasses( - tpAniSirGlobal, - tDot11fIESuppOperatingClasses *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 1 (0x01) */ -typedef struct sDot11fIESuppRates { - uint8_t present; - uint8_t num_rates; - uint8_t rates[12]; -} tDot11fIESuppRates; - -#define DOT11F_EID_SUPPRATES (1) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_SUPPRATES_MIN_LEN (0) - -#define DOT11F_IE_SUPPRATES_MAX_LEN (12) - -#define DOT11F_IS_BG_RATE(_x) (((_x) == 02) || \ - ((_x) == 04) || \ - ((_x) == 11) || \ - ((_x) == 22) || \ - ((_x) == 12) || \ - ((_x) == 18) || \ - ((_x) == 24) || \ - ((_x) == 36) || \ - ((_x) == 48) || \ - ((_x) == 72) || \ - ((_x) == 96) || \ - ((_x) == 108)) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_supp_rates( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIESuppRates*, - bool); - -uint32_t dot11f_pack_ie_supp_rates( - tpAniSirGlobal, - tDot11fIESuppRates *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_SuppRates( - tpAniSirGlobal, - tDot11fIESuppRates *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 14 (0x0e) */ typedef struct sDot11fIETCLAS { uint8_t present; @@ -4600,165 +3996,6 @@ uint32_t dot11f_get_packed_ie_VHTOperation( }; /* End extern "C". */ #endif /* C++ */ -/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */ -typedef struct sDot11fIEWMMCaps { - uint8_t present; - uint8_t version /* Must be 1! */; - uint8_t reserved:4; - uint8_t qack:1; - uint8_t queue_request:1; - uint8_t txop_request:1; - uint8_t more_ack:1; -} tDot11fIEWMMCaps; - -#define DOT11F_EID_WMMCAPS (221) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_WMMCAPS_MIN_LEN (7) - -#define DOT11F_IE_WMMCAPS_MAX_LEN (7) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_wmm_caps( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEWMMCaps*, - bool); - -uint32_t dot11f_pack_ie_wmm_caps( - tpAniSirGlobal, - tDot11fIEWMMCaps *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_WMMCaps( - tpAniSirGlobal, - tDot11fIEWMMCaps *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */ -typedef struct sDot11fIEWMMInfoStation { - uint8_t present; - uint8_t version; - uint8_t acvo_uapsd:1; - uint8_t acvi_uapsd:1; - uint8_t acbk_uapsd:1; - uint8_t acbe_uapsd:1; - uint8_t reserved1:1; - uint8_t max_sp_length:2; - uint8_t reserved2:1; -} tDot11fIEWMMInfoStation; - -#define DOT11F_EID_WMMINFOSTATION (221) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7) - -#define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_wmm_info_station( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEWMMInfoStation*, - bool); - -uint32_t dot11f_pack_ie_wmm_info_station( - tpAniSirGlobal, - tDot11fIEWMMInfoStation *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_WMMInfoStation( - tpAniSirGlobal, - tDot11fIEWMMInfoStation *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */ -typedef struct sDot11fIEWMMParams { - uint8_t present; - uint8_t version /* Must be 1! */; - uint8_t qosInfo; - uint8_t reserved2; - uint8_t acbe_aifsn:4; - uint8_t acbe_acm:1; - uint8_t acbe_aci:2; - uint8_t unused1:1; - uint8_t acbe_acwmin:4; - uint8_t acbe_acwmax:4; - uint16_t acbe_txoplimit; - uint8_t acbk_aifsn:4; - uint8_t acbk_acm:1; - uint8_t acbk_aci:2; - uint8_t unused2:1; - uint8_t acbk_acwmin:4; - uint8_t acbk_acwmax:4; - uint16_t acbk_txoplimit; - uint8_t acvi_aifsn:4; - uint8_t acvi_acm:1; - uint8_t acvi_aci:2; - uint8_t unused3:1; - uint8_t acvi_acwmin:4; - uint8_t acvi_acwmax:4; - uint16_t acvi_txoplimit; - uint8_t acvo_aifsn:4; - uint8_t acvo_acm:1; - uint8_t acvo_aci:2; - uint8_t unused4:1; - uint8_t acvo_acwmin:4; - uint8_t acvo_acwmax:4; - uint16_t acvo_txoplimit; -} tDot11fIEWMMParams; - -#define DOT11F_EID_WMMPARAMS (221) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_WMMPARAMS_MIN_LEN (24) - -#define DOT11F_IE_WMMPARAMS_MAX_LEN (24) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_wmm_params( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEWMMParams*, - bool); - -uint32_t dot11f_pack_ie_wmm_params( - tpAniSirGlobal, - tDot11fIEWMMParams *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_WMMParams( - tpAniSirGlobal, - tDot11fIEWMMParams *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x09} */ typedef struct sDot11fIEWMMSchedule { uint8_t present; @@ -5024,53 +4261,6 @@ uint32_t dot11f_get_packed_ie_WMMTSPEC( }; /* End extern "C". */ #endif /* C++ */ -/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */ -typedef struct sDot11fIEWPA { - uint8_t present; - uint16_t version /* Must be 1! */; - /* field added to fix the bug in dot11fPackIEWPA */ - uint8_t multicast_cipher_present; - uint8_t multicast_cipher[4]; - uint16_t unicast_cipher_count; - uint8_t unicast_ciphers[4][4]; - uint16_t auth_suite_count; - uint8_t auth_suites[4][4]; - uint16_t caps; -} tDot11fIEWPA; - -#define DOT11F_EID_WPA (221) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_WPA_MIN_LEN (6) - -#define DOT11F_IE_WPA_MAX_LEN (48) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_wpa( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEWPA*, - bool); - -uint32_t dot11f_pack_ie_wpa( - tpAniSirGlobal, - tDot11fIEWPA *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_iewpa( - tpAniSirGlobal, - tDot11fIEWPA *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 194 (0xc2) */ typedef struct sDot11fIEWiderBWChanSwitchAnn { uint8_t present; @@ -5192,502 +4382,6 @@ uint32_t dot11f_get_packed_ie_beacon_report_frm_body_fragment_id( }; /* End extern "C". */ #endif /* C++ */ -/* EID 255 (0xff) Extended EID 108 (0x6c) */ -typedef struct sDot11fIEeht_cap { - uint8_t present; - uint16_t nsep_pri_access:1; - uint16_t eht_om_ctl:1; - uint16_t triggered_txop_sharing:1; - uint16_t reserved:13; - uint32_t reserved2:1; - uint32_t support_320mhz_6ghz:1; - uint32_t ru_242tone_wt_20mhz:1; - uint32_t ndp_4x_eht_ltf_3dot2_us_gi:1; - uint32_t partial_bw_mu_mimo:1; - uint32_t su_beamformer:1; - uint32_t su_beamformee:1; - uint32_t bfee_ss_le_80mhz:3; - uint32_t bfee_ss_160mhz:3; - uint32_t bfee_ss_320mhz:3; - uint32_t num_sounding_dim_le_80mhz:3; - uint32_t num_sounding_dim_160mhz:3; - uint32_t num_sounding_dim_320mhz:3; - uint32_t ng_16_su_feedback:1; - uint32_t ng_16_mu_feedback:1; - uint32_t cb_sz_4_2_su_feedback:1; - uint32_t cb_sz_7_5_su_feedback:1; - uint32_t trig_su_bforming_feedback:1; - uint32_t trig_mu_bforming_partial_bw_feedback:1; - uint32_t triggered_cqi_feedback:1; - uint32_t partial_bw_dl_mu_mimo:1; - uint32_t psr_based_sr:1; - uint32_t power_boost_factor:1; - uint32_t eht_mu_ppdu_4x_ltf_0_8_us_gi:1; - uint32_t max_nc:4; - uint32_t non_trig_cqi_feedback:1; - uint32_t tx_1024_4096_qam_lt_242_tone_ru:1; - uint32_t rx_1024_4096_qam_lt_242_tone_ru:1; - uint32_t ppet_present:1; - uint32_t common_nominal_pkt_padding:2; - uint32_t max_num_eht_ltf:5; - uint32_t mcs_15:4; - uint32_t eht_dup_6ghz:1; - uint32_t op_sta_rx_ndp_wider_bw_20mhz:1; - uint32_t non_ofdma_ul_mu_mimo_le_80mhz:1; - uint32_t non_ofdma_ul_mu_mimo_160mhz:1; - uint32_t non_ofdma_ul_mu_mimo_320mhz:1; - uint32_t mu_bformer_le_80mhz:1; - uint32_t mu_bformer_160mhz:1; - uint32_t mu_bformer_320mhz:1; - uint32_t reserved3:1; - uint8_t num_eht_mcs_map_20; - uint8_t eht_mcs_map_20[4]; - uint8_t num_eht_mcs_map_le_80; - uint8_t eht_mcs_map_le_80[3]; - uint8_t num_eht_mcs_map_160; - uint8_t eht_mcs_map_160[3]; - uint8_t eht_mcs_map_320[1][3]; - union { - struct { - uint8_t num_ppe_th; - uint8_t ppe_th[62]; - } ppe_threshold; /* ppet_present = 1 */ - } ppet; -} tDot11fIEeht_cap; - -#define DOT11F_EID_EHT_CAP (255) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_EHT_CAP_MIN_LEN (10) - -#define DOT11F_IE_EHT_CAP_MAX_LEN (85) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_eht_cap( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEeht_cap*, - bool); - -uint32_t dot11f_pack_ie_eht_cap( - tpAniSirGlobal, - tDot11fIEeht_cap *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_eht_cap( - tpAniSirGlobal, - tDot11fIEeht_cap *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 255 (0xff) Extended EID 106 (0x6a) */ -typedef struct sDot11fIEeht_op { - uint8_t present; - uint8_t basic_mcs_nss_set[2]; - uint8_t primary_channel; - uint8_t width:3; - uint8_t reserved:5; - uint8_t chan_freq_seg0; - uint8_t chan_freq_seg1; - uint8_t minimum_rate; -} tDot11fIEeht_op; - -#define DOT11F_EID_EHT_OP (255) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_EHT_OP_MIN_LEN (7) - -#define DOT11F_IE_EHT_OP_MAX_LEN (7) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_eht_op( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEeht_op*, - bool); - -uint32_t dot11f_pack_ie_eht_op( - tpAniSirGlobal, - tDot11fIEeht_op *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_eht_op( - tpAniSirGlobal, - tDot11fIEeht_op *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 60 (0x3c) */ -typedef struct sDot11fIEext_chan_switch_ann { - uint8_t present; - uint8_t switch_mode; - uint8_t new_reg_class; - uint8_t new_channel; - uint8_t switch_count; -} tDot11fIEext_chan_switch_ann; - -#define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4) - -#define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEext_chan_switch_ann*, - bool); - -uint32_t dot11f_pack_ie_ext_chan_switch_ann( - tpAniSirGlobal, - tDot11fIEext_chan_switch_ann *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_ext_chan_switch_ann( - tpAniSirGlobal, - tDot11fIEext_chan_switch_ann *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 240 (0xf0) */ -typedef struct sDot11fIEfils_indication { - uint8_t present; - uint16_t public_key_identifiers_cnt:3; - uint16_t realm_identifiers_cnt:3; - uint16_t is_ip_config_supported:1; - uint16_t is_cache_id_present:1; - uint16_t is_hessid_present:1; - uint16_t is_fils_sk_auth_supported:1; - uint16_t is_fils_sk_auth_pfs_supported:1; - uint16_t is_pk_auth_supported:1; - uint16_t reserved:4; - uint8_t num_variable_data; - uint8_t variable_data[255]; -} tDot11fIEfils_indication; - -#define DOT11F_EID_FILS_INDICATION (240) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_FILS_INDICATION_MIN_LEN (4) - -#define DOT11F_IE_FILS_INDICATION_MAX_LEN (257) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_fils_indication( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEfils_indication*, - bool); - -uint32_t dot11f_pack_ie_fils_indication( - tpAniSirGlobal, - tDot11fIEfils_indication *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_fils_indication( - tpAniSirGlobal, - tDot11fIEfils_indication *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 255 (0xff) Extended EID 59 (0x3b) */ -typedef struct sDot11fIEhe_6ghz_band_cap { - uint8_t present; - uint16_t min_mpdu_start_spacing:3; - uint16_t max_ampdu_len_exp:3; - uint16_t max_mpdu_len:3; - uint16_t sm_pow_save:2; - uint16_t rd_responder:1; - uint16_t rx_ant_pattern_consistency:1; - uint16_t tx_ant_pattern_consistency:1; - uint16_t reserved:2; -} tDot11fIEhe_6ghz_band_cap; - -#define DOT11F_EID_HE_6GHZ_BAND_CAP (255) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN (2) - -#define DOT11F_IE_HE_6GHZ_BAND_CAP_MAX_LEN (2) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_he_6ghz_band_cap( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEhe_6ghz_band_cap*, - bool); - -uint32_t dot11f_pack_ie_he_6ghz_band_cap( - tpAniSirGlobal, - tDot11fIEhe_6ghz_band_cap *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_he_6ghz_band_cap( - tpAniSirGlobal, - tDot11fIEhe_6ghz_band_cap *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 255 (0xff) Extended EID 35 (0x23) */ -typedef struct sDot11fIEhe_cap { - uint8_t present; - uint32_t htc_he:1; - uint32_t twt_request:1; - uint32_t twt_responder:1; - uint32_t fragmentation:2; - uint32_t max_num_frag_msdu_amsdu_exp:3; - uint32_t min_frag_size:2; - uint32_t trigger_frm_mac_pad:2; - uint32_t multi_tid_aggr_rx_supp:3; - uint32_t he_link_adaptation:2; - uint32_t all_ack:1; - uint32_t trigd_rsp_sched:1; - uint32_t a_bsr:1; - uint32_t broadcast_twt:1; - uint32_t ba_32bit_bitmap:1; - uint32_t mu_cascade:1; - uint32_t ack_enabled_multitid:1; - uint32_t reserved:1; - uint32_t omi_a_ctrl:1; - uint32_t ofdma_ra:1; - uint32_t max_ampdu_len_exp_ext:2; - uint32_t amsdu_frag:1; - uint32_t flex_twt_sched:1; - uint32_t rx_ctrl_frame:1; - uint16_t bsrp_ampdu_aggr:1; - uint16_t qtp:1; - uint16_t a_bqr:1; - uint16_t spatial_reuse_param_rspder:1; - uint16_t ndp_feedback_supp:1; - uint16_t ops_supp:1; - uint16_t amsdu_in_ampdu:1; - uint16_t multi_tid_aggr_tx_supp:3; - uint16_t he_sub_ch_sel_tx_supp:1; - uint16_t ul_2x996_tone_ru_supp:1; - uint16_t om_ctrl_ul_mu_data_dis_rx:1; - uint16_t he_dynamic_smps:1; - uint16_t punctured_sounding_supp:1; - uint16_t ht_vht_trg_frm_rx_supp:1; - uint32_t reserved2:1; - uint32_t chan_width_0:1; - uint32_t chan_width_1:1; - uint32_t chan_width_2:1; - uint32_t chan_width_3:1; - uint32_t chan_width_4:1; - uint32_t chan_width_5:1; - uint32_t chan_width_6:1; - uint32_t rx_pream_puncturing:4; - uint32_t device_class:1; - uint32_t ldpc_coding:1; - uint32_t he_1x_ltf_800_gi_ppdu:1; - uint32_t midamble_tx_rx_max_nsts:2; - uint32_t he_4x_ltf_3200_gi_ndp:1; - uint32_t tb_ppdu_tx_stbc_lt_80mhz:1; - uint32_t rx_stbc_lt_80mhz:1; - uint32_t doppler:2; - uint32_t ul_mu:2; - uint32_t dcm_enc_tx:3; - uint32_t dcm_enc_rx:3; - uint32_t ul_he_mu:1; - uint32_t su_beamformer:1; - uint32_t su_beamformee:1; - uint32_t mu_beamformer:1; - uint32_t bfee_sts_lt_80:3; - uint32_t bfee_sts_gt_80:3; - uint32_t num_sounding_lt_80:3; - uint32_t num_sounding_gt_80:3; - uint32_t su_feedback_tone16:1; - uint32_t mu_feedback_tone16:1; - uint32_t codebook_su:1; - uint32_t codebook_mu:1; - uint32_t beamforming_feedback:3; - uint32_t he_er_su_ppdu:1; - uint32_t dl_mu_mimo_part_bw:1; - uint32_t ppet_present:1; - uint32_t srp:1; - uint32_t power_boost:1; - uint32_t he_ltf_800_gi_4x:1; - uint32_t max_nc:3; - uint32_t tb_ppdu_tx_stbc_gt_80mhz:1; - uint32_t rx_stbc_gt_80mhz:1; - uint16_t er_he_ltf_800_gi_4x:1; - uint16_t he_ppdu_20_in_40Mhz_2G:1; - uint16_t he_ppdu_20_in_160_80p80Mhz:1; - uint16_t he_ppdu_80_in_160_80p80Mhz:1; - uint16_t er_1x_he_ltf_gi:1; - uint16_t midamble_tx_rx_1x_he_ltf:1; - uint16_t dcm_max_bw:2; - uint16_t longer_than_16_he_sigb_ofdm_sym:1; - uint16_t non_trig_cqi_feedback:1; - uint16_t tx_1024_qam_lt_242_tone_ru:1; - uint16_t rx_1024_qam_lt_242_tone_ru:1; - uint16_t rx_full_bw_su_he_mu_compress_sigb:1; - uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1; - uint16_t reserved3:2; - uint8_t reserved4; - uint16_t rx_he_mcs_map_lt_80; - uint16_t tx_he_mcs_map_lt_80; - uint8_t rx_he_mcs_map_160[1][2]; - uint8_t tx_he_mcs_map_160[1][2]; - uint8_t rx_he_mcs_map_80_80[1][2]; - uint8_t tx_he_mcs_map_80_80[1][2]; - union { - struct { - uint8_t num_ppe_th; - uint8_t ppe_th[25]; - } ppe_threshold; /* ppet_present = 1 */ - } ppet; -} tDot11fIEhe_cap; - -#define DOT11F_EID_HE_CAP (255) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_HE_CAP_MIN_LEN (21) - -#define DOT11F_IE_HE_CAP_MAX_LEN (54) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_he_cap( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEhe_cap*, - bool); - -uint32_t dot11f_pack_ie_he_cap( - tpAniSirGlobal, - tDot11fIEhe_cap *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_he_cap( - tpAniSirGlobal, - tDot11fIEhe_cap *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 255 (0xff) Extended EID 36 (0x24) */ -typedef struct sDot11fIEhe_op { - uint8_t present; - uint16_t default_pe:3; - uint16_t twt_required:1; - uint16_t txop_rts_threshold:10; - uint16_t vht_oper_present:1; - uint16_t co_located_bss:1; - uint8_t er_su_disable:1; - uint8_t oper_info_6g_present:1; - uint8_t reserved2:6; - uint8_t bss_color:6; - uint8_t partial_bss_col:1; - uint8_t bss_col_disabled:1; - uint8_t basic_mcs_nss[2]; - union { - struct { - uint8_t chan_width; - uint8_t center_freq_seg0; - uint8_t center_freq_seg1; - } info; /* vht_oper_present = 1 */ - } vht_oper; - union { - struct { - uint8_t data; - } info; /* co_located_bss = 1 */ - } maxbssid_ind; - union { - struct { - uint8_t primary_ch; - uint8_t ch_width:2; - uint8_t dup_bcon:1; - uint8_t reg_info:3; - uint8_t reserved:2; - uint8_t center_freq_seg0; - uint8_t center_freq_seg1; - uint8_t min_rate; - } info; /* oper_info_6g_present = 1 */ - } oper_info_6g; -} tDot11fIEhe_op; - -#define DOT11F_EID_HE_OP (255) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_HE_OP_MIN_LEN (6) - -#define DOT11F_IE_HE_OP_MAX_LEN (15) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_he_op( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEhe_op*, - bool); - -uint32_t dot11f_pack_ie_he_op( - tpAniSirGlobal, - tDot11fIEhe_op *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_he_op( - tpAniSirGlobal, - tDot11fIEhe_op *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 164 (0xa4) */ typedef struct sDot11fIElast_beacon_report_indication { uint8_t present; @@ -5766,99 +4460,6 @@ uint32_t dot11f_get_packed_ie_max_age( }; /* End extern "C". */ #endif /* C++ */ -/* EID 255 (0xff) Extended EID 52 (0x34) */ -typedef struct sDot11fIEmax_chan_switch_time { - uint8_t present; - uint8_t switch_time[3]; -} tDot11fIEmax_chan_switch_time; - -#define DOT11F_EID_MAX_CHAN_SWITCH_TIME (255) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MIN_LEN (3) - -#define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MAX_LEN (3) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_max_chan_switch_time( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEmax_chan_switch_time*, - bool); - -uint32_t dot11f_pack_ie_max_chan_switch_time( - tpAniSirGlobal, - tDot11fIEmax_chan_switch_time *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_max_chan_switch_time( - tpAniSirGlobal, - tDot11fIEmax_chan_switch_time *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 0 (0x00) */ -typedef struct sDot11fIEmlo_capabilities { - uint8_t present; - uint16_t ess:1; - uint16_t ibss:1; - uint16_t cfPollable:1; - uint16_t cfPollReq:1; - uint16_t privacy:1; - uint16_t shortPreamble:1; - uint16_t criticalUpdateFlag:1; - uint16_t channelAgility:1; - uint16_t spectrumMgt:1; - uint16_t qos:1; - uint16_t shortSlotTime:1; - uint16_t apsd:1; - uint16_t rrm:1; - uint16_t dsssOfdm:1; - uint16_t delayedBA:1; - uint16_t immediateBA:1; -} tDot11fIEmlo_capabilities; - -#define DOT11F_EID_MLO_CAPABILITIES (0) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_MLO_CAPABILITIES_MIN_LEN (2) - -#define DOT11F_IE_MLO_CAPABILITIES_MAX_LEN (2) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_mlo_capabilities( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEmlo_capabilities*, - bool); - -uint32_t dot11f_pack_ie_mlo_capabilities( - tpAniSirGlobal, - tDot11fIEmlo_capabilities *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_mlo_capabilities( - tpAniSirGlobal, - tDot11fIEmlo_capabilities *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 76 (0x4c) */ typedef struct sDot11fIEmscs_status { uint8_t present; @@ -5957,93 +4558,6 @@ uint32_t dot11f_get_packed_ie_neighbor_rpt( }; /* End extern "C". */ #endif /* C++ */ -/* EID 255 (0xff) Extended EID 56 (0x38) */ -typedef struct sDot11fIEnon_inheritance { - uint8_t present; - uint8_t num_data; - uint8_t data[255]; -} tDot11fIEnon_inheritance; - -#define DOT11F_EID_NON_INHERITANCE (255) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_NON_INHERITANCE_MIN_LEN (0) - -#define DOT11F_IE_NON_INHERITANCE_MAX_LEN (255) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_non_inheritance( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEnon_inheritance*, - bool); - -uint32_t dot11f_pack_ie_non_inheritance( - tpAniSirGlobal, - tDot11fIEnon_inheritance *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_non_inheritance( - tpAniSirGlobal, - tDot11fIEnon_inheritance *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */ -typedef struct sDot11fIEqcn_ie { - 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) - -/* 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 (35) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -__must_check uint32_t dot11f_unpack_ie_qcn_ie( - tpAniSirGlobal, - uint8_t *, - uint8_t, - tDot11fIEqcn_ie*, - bool); - -uint32_t dot11f_pack_ie_qcn_ie( - tpAniSirGlobal, - tDot11fIEqcn_ie *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_qcn_ie( - tpAniSirGlobal, - tDot11fIEqcn_ie *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 2 (0x02) */ typedef struct sDot11fIEreq_mac_addr { uint8_t present; @@ -6085,73 +4599,17 @@ uint32_t dot11f_get_packed_ie_req_mac_addr( /* EID 0 (0x00) */ typedef struct sDot11fIEsta_profile { - uint8_t present; - uint16_t link_id:4; - uint16_t complete_profile:1; - uint16_t sta_mac_addr_present:1; - uint16_t beacon_interval_present:1; - uint16_t dtim_info_present:1; - uint16_t nstr_link_pair_present:1; - uint16_t nstr_bitmap_size:1; - uint16_t reserved:6; - union { - struct { - uint8_t sta_mac_addr[6]; - } info; /* sta_mac_addr_present = 1 */ - } sta_mac_addr; - union { - struct { - uint16_t beacon_interval; - } info; /* beacon_interval_present = 1 */ - } beacon_interval; - union { - struct { - uint8_t dtim_count; - uint8_t dtim_period; - } info; /* dtim_info_present = 1 */ - } dtim_info; - union { - struct { - uint8_t nstr_link_pair_num; - } info; /* nstr_link_pair_present = 1 */ - } nstr_link_pair; - tDot11fIEmlo_capabilities mlo_capabilities; - tDot11fIESuppRates SuppRates; - tDot11fIEExtSuppRates ExtSuppRates; - tDot11fIESuppOperatingClasses SuppOperatingClasses; - tDot11fIEWPA WPA; - tDot11fIEChanSwitchAnn ChanSwitchAnn; - tDot11fIEQuiet Quiet; - tDot11fIEext_chan_switch_ann ext_chan_switch_ann; - tDot11fIERSN RSN; - tDot11fIEEDCAParamSet EDCAParamSet; - tDot11fIEP2PAssocRes P2PAssocRes; - tDot11fIEHTCaps HTCaps; - tDot11fIEHTInfo HTInfo; - tDot11fIEWMMParams WMMParams; - tDot11fIEWMMCaps WMMCaps; - tDot11fIEWMMInfoStation WMMInfoStation; - tDot11fIEVHTCaps VHTCaps; - tDot11fIEVHTOperation VHTOperation; - tDot11fIEExtCap ExtCap; - tDot11fIEOperatingMode OperatingMode; - tDot11fIEfils_indication fils_indication; - tDot11fIEqcn_ie qcn_ie; - tDot11fIEhe_cap he_cap; - tDot11fIEhe_op he_op; - tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; - tDot11fIEeht_cap eht_cap; - tDot11fIEeht_op eht_op; - tDot11fIEmax_chan_switch_time max_chan_switch_time; - tDot11fIEnon_inheritance non_inheritance; + uint8_t present; + uint8_t num_data; + uint8_t data[255]; } tDot11fIEsta_profile; #define DOT11F_EID_STA_PROFILE (0) /* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_STA_PROFILE_MIN_LEN (2) +#define DOT11F_IE_STA_PROFILE_MIN_LEN (0) -#define DOT11F_IE_STA_PROFILE_MAX_LEN (1249) +#define DOT11F_IE_STA_PROFILE_MAX_LEN (255) #ifdef __cplusplus extern "C" { @@ -6427,6 +4885,47 @@ uint32_t dot11f_get_packed_ie_ChallengeText( }; /* End extern "C". */ #endif /* C++ */ +/* EID 37 (0x25) */ +typedef struct sDot11fIEChanSwitchAnn { + uint8_t present; + uint8_t switchMode; + uint8_t newChannel; + uint8_t switchCount; +} tDot11fIEChanSwitchAnn; + +#define DOT11F_EID_CHANSWITCHANN (37) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3) + +#define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_chan_switch_ann( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEChanSwitchAnn*, + bool); + +uint32_t dot11f_pack_ie_chan_switch_ann( + tpAniSirGlobal, + tDot11fIEChanSwitchAnn *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_ChanSwitchAnn( + tpAniSirGlobal, + tDot11fIEChanSwitchAnn *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 196 (0xc4) */ typedef struct sDot11fIEChannelSwitchWrapper { uint8_t present; @@ -6548,6 +5047,74 @@ uint32_t dot11f_get_packed_ie_DSParams( }; /* End extern "C". */ #endif /* C++ */ +/* EID 12 (0x0c) */ +typedef struct sDot11fIEEDCAParamSet { + uint8_t present; + uint8_t qos; + uint8_t reserved; + uint8_t acbe_aifsn:4; + uint8_t acbe_acm:1; + uint8_t acbe_aci:2; + uint8_t unused1:1; + uint8_t acbe_acwmin:4; + uint8_t acbe_acwmax:4; + uint16_t acbe_txoplimit; + uint8_t acbk_aifsn:4; + uint8_t acbk_acm:1; + uint8_t acbk_aci:2; + uint8_t unused2:1; + uint8_t acbk_acwmin:4; + uint8_t acbk_acwmax:4; + uint16_t acbk_txoplimit; + uint8_t acvi_aifsn:4; + uint8_t acvi_acm:1; + uint8_t acvi_aci:2; + uint8_t unused3:1; + uint8_t acvi_acwmin:4; + uint8_t acvi_acwmax:4; + uint16_t acvi_txoplimit; + uint8_t acvo_aifsn:4; + uint8_t acvo_acm:1; + uint8_t acvo_aci:2; + uint8_t unused4:1; + uint8_t acvo_acwmin:4; + uint8_t acvo_acwmax:4; + uint16_t acvo_txoplimit; +} tDot11fIEEDCAParamSet; + +#define DOT11F_EID_EDCAPARAMSET (12) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18) + +#define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_edca_param_set( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEEDCAParamSet*, + bool); + +uint32_t dot11f_pack_ie_edca_param_set( + tpAniSirGlobal, + tDot11fIEEDCAParamSet *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_EDCAParamSet( + tpAniSirGlobal, + tDot11fIEEDCAParamSet *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 42 (0x2a) */ typedef struct sDot11fIEERPInfo { uint8_t present; @@ -6832,6 +5399,86 @@ uint32_t dot11f_get_packed_ie_ESEVersion( }; /* End extern "C". */ #endif /* C++ */ +/* EID 127 (0x7f) */ +typedef struct sDot11fIEExtCap { + uint8_t present; + uint8_t num_bytes; + uint8_t bytes[15]; +} tDot11fIEExtCap; + +#define DOT11F_EID_EXTCAP (127) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_EXTCAP_MIN_LEN (1) + +#define DOT11F_IE_EXTCAP_MAX_LEN (15) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_ext_cap( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEExtCap*, + bool); + +uint32_t dot11f_pack_ie_ext_cap( + tpAniSirGlobal, + tDot11fIEExtCap *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_ExtCap( + tpAniSirGlobal, + tDot11fIEExtCap *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 50 (0x32) */ +typedef struct sDot11fIEExtSuppRates { + uint8_t present; + uint8_t num_rates; + uint8_t rates[12]; +} tDot11fIEExtSuppRates; + +#define DOT11F_EID_EXTSUPPRATES (50) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1) + +#define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_ext_supp_rates( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEExtSuppRates*, + bool); + +uint32_t dot11f_pack_ie_ext_supp_rates( + tpAniSirGlobal, + tDot11fIEExtSuppRates *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_ExtSuppRates( + tpAniSirGlobal, + tDot11fIEExtSuppRates *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 2 (0x02) */ typedef struct sDot11fIEFHParamSet { uint8_t present; @@ -7005,6 +5652,153 @@ uint32_t dot11f_get_packed_ieft_info( }; /* End extern "C". */ #endif /* C++ */ +/* EID 45 (0x2d) */ +typedef struct sDot11fIEHTCaps { + uint8_t present; + uint16_t advCodingCap:1; + uint16_t supportedChannelWidthSet:1; + uint16_t mimoPowerSave:2; + uint16_t greenField:1; + uint16_t shortGI20MHz:1; + uint16_t shortGI40MHz:1; + uint16_t txSTBC:1; + uint16_t rxSTBC:2; + uint16_t delayedBA:1; + uint16_t maximalAMSDUsize:1; + uint16_t dsssCckMode40MHz:1; + uint16_t psmp:1; + uint16_t stbcControlFrame:1; + uint16_t lsigTXOPProtection:1; + uint8_t maxRxAMPDUFactor:2; + uint8_t mpduDensity:3; + uint8_t reserved1:3; + uint8_t supportedMCSSet[16]; + uint16_t pco:1; + uint16_t transitionTime:2; + uint16_t reserved2:5; + uint16_t mcsFeedback:2; + uint16_t reserved3:6; + uint32_t txBF:1; + uint32_t rxStaggeredSounding:1; + uint32_t txStaggeredSounding:1; + uint32_t rxZLF:1; + uint32_t txZLF:1; + uint32_t implicitTxBF:1; + uint32_t calibration:2; + uint32_t explicitCSITxBF:1; + uint32_t explicitUncompressedSteeringMatrix:1; + uint32_t explicitBFCSIFeedback:3; + uint32_t explicitUncompressedSteeringMatrixFeedback:3; + uint32_t explicitCompressedSteeringMatrixFeedback:3; + uint32_t csiNumBFAntennae:2; + uint32_t uncompressedSteeringMatrixBFAntennae:2; + uint32_t compressedSteeringMatrixBFAntennae:2; + uint32_t reserved4:7; + uint8_t antennaSelection:1; + uint8_t explicitCSIFeedbackTx:1; + uint8_t antennaIndicesFeedbackTx:1; + uint8_t explicitCSIFeedback:1; + uint8_t antennaIndicesFeedback:1; + uint8_t rxAS:1; + uint8_t txSoundingPPDUs:1; + uint8_t reserved5:1; + uint8_t num_rsvd; + uint8_t rsvd[32]; +} tDot11fIEHTCaps; + +#define DOT11F_EID_HTCAPS (45) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HTCAPS_MIN_LEN (26) + +#define DOT11F_IE_HTCAPS_MAX_LEN (58) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_ht_caps( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEHTCaps*, + bool); + +uint32_t dot11f_pack_ie_ht_caps( + tpAniSirGlobal, + tDot11fIEHTCaps *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_HTCaps( + tpAniSirGlobal, + tDot11fIEHTCaps *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 61 (0x3d) */ +typedef struct sDot11fIEHTInfo { + uint8_t present; + uint8_t primaryChannel; + uint8_t secondaryChannelOffset:2; + uint8_t recommendedTxWidthSet:1; + uint8_t rifsMode:1; + uint8_t controlledAccessOnly:1; + uint8_t serviceIntervalGranularity:3; + uint16_t opMode:2; + uint16_t nonGFDevicesPresent:1; + uint16_t transmitBurstLimit:1; + uint16_t obssNonHTStaPresent:1; + uint16_t chan_center_freq_seg2:8; + uint16_t reserved:3; + uint16_t basicSTBCMCS:7; + uint16_t dualCTSProtection:1; + uint16_t secondaryBeacon:1; + uint16_t lsigTXOPProtectionFullSupport:1; + uint16_t pcoActive:1; + uint16_t pcoPhase:1; + uint16_t reserved2:4; + uint8_t basicMCSSet[16]; + uint8_t num_rsvd; + uint8_t rsvd[32]; +} tDot11fIEHTInfo; + +#define DOT11F_EID_HTINFO (61) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HTINFO_MIN_LEN (22) + +#define DOT11F_IE_HTINFO_MAX_LEN (54) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_ht_info( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEHTInfo*, + bool); + +uint32_t dot11f_pack_ie_ht_info( + tpAniSirGlobal, + tDot11fIEHTInfo *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_HTInfo( + tpAniSirGlobal, + tDot11fIEHTInfo *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 101 (0x65) */ typedef struct sDot11fIELinkIdentifier { uint8_t present; @@ -7424,6 +6218,49 @@ uint32_t dot11f_get_packed_ie_OBSSScanParameters( }; /* End extern "C". */ #endif /* C++ */ +/* EID 199 (0xc7) */ +typedef struct sDot11fIEOperatingMode { + uint8_t present; + uint8_t chanWidth:2; + uint8_t vht_160_80p80_supp:1; + uint8_t no_ldpc:1; + uint8_t rxNSS:3; + uint8_t rxNSSType:1; +} tDot11fIEOperatingMode; + +#define DOT11F_EID_OPERATINGMODE (199) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_OPERATINGMODE_MIN_LEN (1) + +#define DOT11F_IE_OPERATINGMODE_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_operating_mode( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEOperatingMode*, + bool); + +uint32_t dot11f_pack_ie_operating_mode( + tpAniSirGlobal, + tDot11fIEOperatingMode *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_OperatingMode( + tpAniSirGlobal, + tDot11fIEOperatingMode *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ typedef struct sDot11fIEP2PAssocReq { uint8_t present; @@ -7465,6 +6302,46 @@ uint32_t dot11f_get_packed_iep2_p_assoc_req( }; /* End extern "C". */ #endif /* C++ */ +/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ +typedef struct sDot11fIEP2PAssocRes { + uint8_t present; + tDot11fTLVP2PStatus P2PStatus; + tDot11fTLVExtendedListenTiming ExtendedListenTiming; +} tDot11fIEP2PAssocRes; + +#define DOT11F_EID_P2PASSOCRES (221) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_P2PASSOCRES_MIN_LEN (4) + +#define DOT11F_IE_P2PASSOCRES_MAX_LEN (15) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEP2PAssocRes*, + bool); + +uint32_t dot11f_pack_ie_p2_p_assoc_res( + tpAniSirGlobal, + tDot11fIEP2PAssocRes *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_iep2_p_assoc_res( + tpAniSirGlobal, + tDot11fIEP2PAssocRes *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ typedef struct sDot11fIEP2PBeacon { uint8_t present; @@ -8125,6 +7002,48 @@ uint32_t dot11f_get_packed_ie_QosMapSet( }; /* End extern "C". */ #endif /* C++ */ +/* EID 40 (0x28) */ +typedef struct sDot11fIEQuiet { + uint8_t present; + uint8_t count; + uint8_t period; + uint16_t duration; + uint16_t offset; +} tDot11fIEQuiet; + +#define DOT11F_EID_QUIET (40) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_QUIET_MIN_LEN (6) + +#define DOT11F_IE_QUIET_MAX_LEN (6) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_quiet( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEQuiet*, + bool); + +uint32_t dot11f_pack_ie_quiet( + tpAniSirGlobal, + tDot11fIEQuiet *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_Quiet( + tpAniSirGlobal, + tDot11fIEQuiet *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 53 (0x35) */ typedef struct sDot11fIERCPIIE { uint8_t present; @@ -8216,6 +7135,57 @@ uint32_t dot11f_get_packed_ieric_data_desc( }; /* End extern "C". */ #endif /* C++ */ +/* EID 48 (0x30) */ +typedef struct sDot11fIERSN { + uint8_t present; + uint16_t version /* Must be 1! */; + uint8_t gp_cipher_suite_present; + uint8_t gp_cipher_suite[4]; + uint16_t pwise_cipher_suite_count; + uint8_t pwise_cipher_suites[6][4]; + uint16_t akm_suite_cnt; + uint8_t akm_suite[6][4]; + uint8_t RSN_Cap_present; + uint8_t RSN_Cap[2]; + uint16_t pmkid_count; + uint8_t pmkid[4][16]; + uint8_t gp_mgmt_cipher_suite_present; + uint8_t gp_mgmt_cipher_suite[4]; +} tDot11fIERSN; + +#define DOT11F_EID_RSN (48) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_RSN_MIN_LEN (2) + +#define DOT11F_IE_RSN_MAX_LEN (130) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_rsn( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIERSN*, + bool); + +uint32_t dot11f_pack_ie_rsn( + tpAniSirGlobal, + tDot11fIERSN *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_iersn( + tpAniSirGlobal, + tDot11fIERSN *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 65 (0x41) */ typedef struct sDot11fIERSNIIE { uint8_t present; @@ -8335,6 +7305,99 @@ uint32_t dot11f_get_packed_ie_SuppChannels( }; /* End extern "C". */ #endif /* C++ */ +/* EID 59 (0x3b) */ +typedef struct sDot11fIESuppOperatingClasses { + uint8_t present; + uint8_t num_classes; + uint8_t classes[32]; +} tDot11fIESuppOperatingClasses; + +#define DOT11F_EID_SUPPOPERATINGCLASSES (59) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1) + +#define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_supp_operating_classes( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIESuppOperatingClasses*, + bool); + +uint32_t dot11f_pack_ie_supp_operating_classes( + tpAniSirGlobal, + tDot11fIESuppOperatingClasses *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_SuppOperatingClasses( + tpAniSirGlobal, + tDot11fIESuppOperatingClasses *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 1 (0x01) */ +typedef struct sDot11fIESuppRates { + uint8_t present; + uint8_t num_rates; + uint8_t rates[12]; +} tDot11fIESuppRates; + +#define DOT11F_EID_SUPPRATES (1) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_SUPPRATES_MIN_LEN (0) + +#define DOT11F_IE_SUPPRATES_MAX_LEN (12) + +#define DOT11F_IS_BG_RATE(_x) (((_x) == 02) || \ + ((_x) == 04) || \ + ((_x) == 11) || \ + ((_x) == 22) || \ + ((_x) == 12) || \ + ((_x) == 18) || \ + ((_x) == 24) || \ + ((_x) == 36) || \ + ((_x) == 48) || \ + ((_x) == 72) || \ + ((_x) == 96) || \ + ((_x) == 108)) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_supp_rates( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIESuppRates*, + bool); + +uint32_t dot11f_pack_ie_supp_rates( + tpAniSirGlobal, + tDot11fIESuppRates *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_SuppRates( + tpAniSirGlobal, + tDot11fIESuppRates *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 5 (0x05) */ typedef struct sDot11fIETIM { uint8_t present; @@ -8824,6 +7887,50 @@ uint32_t dot11f_get_packed_ie_WFDIEOpaque( }; /* End extern "C". */ #endif /* C++ */ +/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */ +typedef struct sDot11fIEWMMCaps { + uint8_t present; + uint8_t version /* Must be 1! */; + uint8_t reserved:4; + uint8_t qack:1; + uint8_t queue_request:1; + uint8_t txop_request:1; + uint8_t more_ack:1; +} tDot11fIEWMMCaps; + +#define DOT11F_EID_WMMCAPS (221) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_WMMCAPS_MIN_LEN (7) + +#define DOT11F_IE_WMMCAPS_MAX_LEN (7) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_wmm_caps( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEWMMCaps*, + bool); + +uint32_t dot11f_pack_ie_wmm_caps( + tpAniSirGlobal, + tDot11fIEWMMCaps *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_WMMCaps( + tpAniSirGlobal, + tDot11fIEWMMCaps *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */ typedef struct sDot11fIEWMMInfoAp { uint8_t present; @@ -8866,6 +7973,168 @@ uint32_t dot11f_get_packed_ie_WMMInfoAp( }; /* End extern "C". */ #endif /* C++ */ +/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */ +typedef struct sDot11fIEWMMInfoStation { + uint8_t present; + uint8_t version; + uint8_t acvo_uapsd:1; + uint8_t acvi_uapsd:1; + uint8_t acbk_uapsd:1; + uint8_t acbe_uapsd:1; + uint8_t reserved1:1; + uint8_t max_sp_length:2; + uint8_t reserved2:1; +} tDot11fIEWMMInfoStation; + +#define DOT11F_EID_WMMINFOSTATION (221) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7) + +#define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_wmm_info_station( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEWMMInfoStation*, + bool); + +uint32_t dot11f_pack_ie_wmm_info_station( + tpAniSirGlobal, + tDot11fIEWMMInfoStation *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_WMMInfoStation( + tpAniSirGlobal, + tDot11fIEWMMInfoStation *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */ +typedef struct sDot11fIEWMMParams { + uint8_t present; + uint8_t version /* Must be 1! */; + uint8_t qosInfo; + uint8_t reserved2; + uint8_t acbe_aifsn:4; + uint8_t acbe_acm:1; + uint8_t acbe_aci:2; + uint8_t unused1:1; + uint8_t acbe_acwmin:4; + uint8_t acbe_acwmax:4; + uint16_t acbe_txoplimit; + uint8_t acbk_aifsn:4; + uint8_t acbk_acm:1; + uint8_t acbk_aci:2; + uint8_t unused2:1; + uint8_t acbk_acwmin:4; + uint8_t acbk_acwmax:4; + uint16_t acbk_txoplimit; + uint8_t acvi_aifsn:4; + uint8_t acvi_acm:1; + uint8_t acvi_aci:2; + uint8_t unused3:1; + uint8_t acvi_acwmin:4; + uint8_t acvi_acwmax:4; + uint16_t acvi_txoplimit; + uint8_t acvo_aifsn:4; + uint8_t acvo_acm:1; + uint8_t acvo_aci:2; + uint8_t unused4:1; + uint8_t acvo_acwmin:4; + uint8_t acvo_acwmax:4; + uint16_t acvo_txoplimit; +} tDot11fIEWMMParams; + +#define DOT11F_EID_WMMPARAMS (221) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_WMMPARAMS_MIN_LEN (24) + +#define DOT11F_IE_WMMPARAMS_MAX_LEN (24) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_wmm_params( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEWMMParams*, + bool); + +uint32_t dot11f_pack_ie_wmm_params( + tpAniSirGlobal, + tDot11fIEWMMParams *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_WMMParams( + tpAniSirGlobal, + tDot11fIEWMMParams *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */ +typedef struct sDot11fIEWPA { + uint8_t present; + uint16_t version /* Must be 1! */; + /* field added to fix the bug in dot11fPackIEWPA */ + uint8_t multicast_cipher_present; + uint8_t multicast_cipher[4]; + uint16_t unicast_cipher_count; + uint8_t unicast_ciphers[4][4]; + uint16_t auth_suite_count; + uint8_t auth_suites[4][4]; + uint16_t caps; +} tDot11fIEWPA; + +#define DOT11F_EID_WPA (221) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_WPA_MIN_LEN (6) + +#define DOT11F_IE_WPA_MAX_LEN (48) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_wpa( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEWPA*, + bool); + +uint32_t dot11f_pack_ie_wpa( + tpAniSirGlobal, + tDot11fIEWPA *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_iewpa( + tpAniSirGlobal, + tDot11fIEWPA *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */ typedef struct sDot11fIEWPAOpaque { uint8_t present; @@ -9546,6 +8815,147 @@ uint32_t dot11f_get_packed_ie_dh_parameter_element( }; /* End extern "C". */ #endif /* C++ */ +/* EID 255 (0xff) Extended EID 108 (0x6c) */ +typedef struct sDot11fIEeht_cap { + uint8_t present; + uint16_t nsep_pri_access:1; + uint16_t eht_om_ctl:1; + uint16_t triggered_txop_sharing:1; + uint16_t reserved:13; + uint32_t reserved2:1; + uint32_t support_320mhz_6ghz:1; + uint32_t ru_242tone_wt_20mhz:1; + uint32_t ndp_4x_eht_ltf_3dot2_us_gi:1; + uint32_t partial_bw_mu_mimo:1; + uint32_t su_beamformer:1; + uint32_t su_beamformee:1; + uint32_t bfee_ss_le_80mhz:3; + uint32_t bfee_ss_160mhz:3; + uint32_t bfee_ss_320mhz:3; + uint32_t num_sounding_dim_le_80mhz:3; + uint32_t num_sounding_dim_160mhz:3; + uint32_t num_sounding_dim_320mhz:3; + uint32_t ng_16_su_feedback:1; + uint32_t ng_16_mu_feedback:1; + uint32_t cb_sz_4_2_su_feedback:1; + uint32_t cb_sz_7_5_su_feedback:1; + uint32_t trig_su_bforming_feedback:1; + uint32_t trig_mu_bforming_partial_bw_feedback:1; + uint32_t triggered_cqi_feedback:1; + uint32_t partial_bw_dl_mu_mimo:1; + uint32_t psr_based_sr:1; + uint32_t power_boost_factor:1; + uint32_t eht_mu_ppdu_4x_ltf_0_8_us_gi:1; + uint32_t max_nc:4; + uint32_t non_trig_cqi_feedback:1; + uint32_t tx_1024_4096_qam_lt_242_tone_ru:1; + uint32_t rx_1024_4096_qam_lt_242_tone_ru:1; + uint32_t ppet_present:1; + uint32_t common_nominal_pkt_padding:2; + uint32_t max_num_eht_ltf:5; + uint32_t mcs_15:4; + uint32_t eht_dup_6ghz:1; + uint32_t op_sta_rx_ndp_wider_bw_20mhz:1; + uint32_t non_ofdma_ul_mu_mimo_le_80mhz:1; + uint32_t non_ofdma_ul_mu_mimo_160mhz:1; + uint32_t non_ofdma_ul_mu_mimo_320mhz:1; + uint32_t mu_bformer_le_80mhz:1; + uint32_t mu_bformer_160mhz:1; + uint32_t mu_bformer_320mhz:1; + uint32_t reserved3:1; + uint8_t num_eht_mcs_map_20; + uint8_t eht_mcs_map_20[4]; + uint8_t num_eht_mcs_map_le_80; + uint8_t eht_mcs_map_le_80[3]; + uint8_t num_eht_mcs_map_160; + uint8_t eht_mcs_map_160[3]; + uint8_t eht_mcs_map_320[1][3]; + union { + struct { + uint8_t num_ppe_th; + uint8_t ppe_th[62]; + } ppe_threshold; /* ppet_present = 1 */ + } ppet; +} tDot11fIEeht_cap; + +#define DOT11F_EID_EHT_CAP (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_EHT_CAP_MIN_LEN (10) + +#define DOT11F_IE_EHT_CAP_MAX_LEN (85) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_eht_cap( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEeht_cap*, + bool); + +uint32_t dot11f_pack_ie_eht_cap( + tpAniSirGlobal, + tDot11fIEeht_cap *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_eht_cap( + tpAniSirGlobal, + tDot11fIEeht_cap *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 255 (0xff) Extended EID 106 (0x6a) */ +typedef struct sDot11fIEeht_op { + uint8_t present; + uint8_t basic_mcs_nss_set[2]; + uint8_t primary_channel; + uint8_t width:3; + uint8_t reserved:5; + uint8_t chan_freq_seg0; + uint8_t chan_freq_seg1; + uint8_t minimum_rate; +} tDot11fIEeht_op; + +#define DOT11F_EID_EHT_OP (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_EHT_OP_MIN_LEN (7) + +#define DOT11F_IE_EHT_OP_MAX_LEN (7) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_eht_op( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEeht_op*, + bool); + +uint32_t dot11f_pack_ie_eht_op( + tpAniSirGlobal, + tDot11fIEeht_op *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_eht_op( + tpAniSirGlobal, + tDot11fIEeht_op *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 255 (0xff) Extended EID 11 (0x0b) */ typedef struct sDot11fIEesp_information { uint8_t present; @@ -9586,6 +8996,48 @@ uint32_t dot11f_get_packed_ie_esp_information( }; /* End extern "C". */ #endif /* C++ */ +/* EID 60 (0x3c) */ +typedef struct sDot11fIEext_chan_switch_ann { + uint8_t present; + uint8_t switch_mode; + uint8_t new_reg_class; + uint8_t new_channel; + uint8_t switch_count; +} tDot11fIEext_chan_switch_ann; + +#define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4) + +#define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEext_chan_switch_ann*, + bool); + +uint32_t dot11f_pack_ie_ext_chan_switch_ann( + tpAniSirGlobal, + tDot11fIEext_chan_switch_ann *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_ext_chan_switch_ann( + tpAniSirGlobal, + tDot11fIEext_chan_switch_ann *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 255 (0xff) Extended EID 1 (0x01) */ typedef struct sDot11fIEfils_assoc_delay_info { uint8_t present; @@ -9667,6 +9119,55 @@ uint32_t dot11f_get_packed_ie_fils_hlp_container( }; /* End extern "C". */ #endif /* C++ */ +/* EID 240 (0xf0) */ +typedef struct sDot11fIEfils_indication { + uint8_t present; + uint16_t public_key_identifiers_cnt:3; + uint16_t realm_identifiers_cnt:3; + uint16_t is_ip_config_supported:1; + uint16_t is_cache_id_present:1; + uint16_t is_hessid_present:1; + uint16_t is_fils_sk_auth_supported:1; + uint16_t is_fils_sk_auth_pfs_supported:1; + uint16_t is_pk_auth_supported:1; + uint16_t reserved:4; + uint8_t num_variable_data; + uint8_t variable_data[255]; +} tDot11fIEfils_indication; + +#define DOT11F_EID_FILS_INDICATION (240) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_FILS_INDICATION_MIN_LEN (4) + +#define DOT11F_IE_FILS_INDICATION_MAX_LEN (257) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_fils_indication( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEfils_indication*, + bool); + +uint32_t dot11f_pack_ie_fils_indication( + tpAniSirGlobal, + tDot11fIEfils_indication *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_fils_indication( + tpAniSirGlobal, + tDot11fIEfils_indication *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 255 (0xff) Extended EID 7 (0x07) */ typedef struct sDot11fIEfils_kde { uint8_t present; @@ -9947,6 +9448,270 @@ uint32_t dot11f_get_packed_ie_fragment_ie( }; /* End extern "C". */ #endif /* C++ */ +/* EID 255 (0xff) Extended EID 59 (0x3b) */ +typedef struct sDot11fIEhe_6ghz_band_cap { + uint8_t present; + uint16_t min_mpdu_start_spacing:3; + uint16_t max_ampdu_len_exp:3; + uint16_t max_mpdu_len:3; + uint16_t sm_pow_save:2; + uint16_t rd_responder:1; + uint16_t rx_ant_pattern_consistency:1; + uint16_t tx_ant_pattern_consistency:1; + uint16_t reserved:2; +} tDot11fIEhe_6ghz_band_cap; + +#define DOT11F_EID_HE_6GHZ_BAND_CAP (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN (2) + +#define DOT11F_IE_HE_6GHZ_BAND_CAP_MAX_LEN (2) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_he_6ghz_band_cap( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEhe_6ghz_band_cap*, + bool); + +uint32_t dot11f_pack_ie_he_6ghz_band_cap( + tpAniSirGlobal, + tDot11fIEhe_6ghz_band_cap *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_he_6ghz_band_cap( + tpAniSirGlobal, + tDot11fIEhe_6ghz_band_cap *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 255 (0xff) Extended EID 35 (0x23) */ +typedef struct sDot11fIEhe_cap { + uint8_t present; + uint32_t htc_he:1; + uint32_t twt_request:1; + uint32_t twt_responder:1; + uint32_t fragmentation:2; + uint32_t max_num_frag_msdu_amsdu_exp:3; + uint32_t min_frag_size:2; + uint32_t trigger_frm_mac_pad:2; + uint32_t multi_tid_aggr_rx_supp:3; + uint32_t he_link_adaptation:2; + uint32_t all_ack:1; + uint32_t trigd_rsp_sched:1; + uint32_t a_bsr:1; + uint32_t broadcast_twt:1; + uint32_t ba_32bit_bitmap:1; + uint32_t mu_cascade:1; + uint32_t ack_enabled_multitid:1; + uint32_t reserved:1; + uint32_t omi_a_ctrl:1; + uint32_t ofdma_ra:1; + uint32_t max_ampdu_len_exp_ext:2; + uint32_t amsdu_frag:1; + uint32_t flex_twt_sched:1; + uint32_t rx_ctrl_frame:1; + uint16_t bsrp_ampdu_aggr:1; + uint16_t qtp:1; + uint16_t a_bqr:1; + uint16_t spatial_reuse_param_rspder:1; + uint16_t ndp_feedback_supp:1; + uint16_t ops_supp:1; + uint16_t amsdu_in_ampdu:1; + uint16_t multi_tid_aggr_tx_supp:3; + uint16_t he_sub_ch_sel_tx_supp:1; + uint16_t ul_2x996_tone_ru_supp:1; + uint16_t om_ctrl_ul_mu_data_dis_rx:1; + uint16_t he_dynamic_smps:1; + uint16_t punctured_sounding_supp:1; + uint16_t ht_vht_trg_frm_rx_supp:1; + uint32_t reserved2:1; + uint32_t chan_width_0:1; + uint32_t chan_width_1:1; + uint32_t chan_width_2:1; + uint32_t chan_width_3:1; + uint32_t chan_width_4:1; + uint32_t chan_width_5:1; + uint32_t chan_width_6:1; + uint32_t rx_pream_puncturing:4; + uint32_t device_class:1; + uint32_t ldpc_coding:1; + uint32_t he_1x_ltf_800_gi_ppdu:1; + uint32_t midamble_tx_rx_max_nsts:2; + uint32_t he_4x_ltf_3200_gi_ndp:1; + uint32_t tb_ppdu_tx_stbc_lt_80mhz:1; + uint32_t rx_stbc_lt_80mhz:1; + uint32_t doppler:2; + uint32_t ul_mu:2; + uint32_t dcm_enc_tx:3; + uint32_t dcm_enc_rx:3; + uint32_t ul_he_mu:1; + uint32_t su_beamformer:1; + uint32_t su_beamformee:1; + uint32_t mu_beamformer:1; + uint32_t bfee_sts_lt_80:3; + uint32_t bfee_sts_gt_80:3; + uint32_t num_sounding_lt_80:3; + uint32_t num_sounding_gt_80:3; + uint32_t su_feedback_tone16:1; + uint32_t mu_feedback_tone16:1; + uint32_t codebook_su:1; + uint32_t codebook_mu:1; + uint32_t beamforming_feedback:3; + uint32_t he_er_su_ppdu:1; + uint32_t dl_mu_mimo_part_bw:1; + uint32_t ppet_present:1; + uint32_t srp:1; + uint32_t power_boost:1; + uint32_t he_ltf_800_gi_4x:1; + uint32_t max_nc:3; + uint32_t tb_ppdu_tx_stbc_gt_80mhz:1; + uint32_t rx_stbc_gt_80mhz:1; + uint16_t er_he_ltf_800_gi_4x:1; + uint16_t he_ppdu_20_in_40Mhz_2G:1; + uint16_t he_ppdu_20_in_160_80p80Mhz:1; + uint16_t he_ppdu_80_in_160_80p80Mhz:1; + uint16_t er_1x_he_ltf_gi:1; + uint16_t midamble_tx_rx_1x_he_ltf:1; + uint16_t dcm_max_bw:2; + uint16_t longer_than_16_he_sigb_ofdm_sym:1; + uint16_t non_trig_cqi_feedback:1; + uint16_t tx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_1024_qam_lt_242_tone_ru:1; + uint16_t rx_full_bw_su_he_mu_compress_sigb:1; + uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1; + uint16_t reserved3:2; + uint8_t reserved4; + uint16_t rx_he_mcs_map_lt_80; + uint16_t tx_he_mcs_map_lt_80; + uint8_t rx_he_mcs_map_160[1][2]; + uint8_t tx_he_mcs_map_160[1][2]; + uint8_t rx_he_mcs_map_80_80[1][2]; + uint8_t tx_he_mcs_map_80_80[1][2]; + union { + struct { + uint8_t num_ppe_th; + uint8_t ppe_th[25]; + } ppe_threshold; /* ppet_present = 1 */ + } ppet; +} tDot11fIEhe_cap; + +#define DOT11F_EID_HE_CAP (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HE_CAP_MIN_LEN (21) + +#define DOT11F_IE_HE_CAP_MAX_LEN (54) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_he_cap( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEhe_cap*, + bool); + +uint32_t dot11f_pack_ie_he_cap( + tpAniSirGlobal, + tDot11fIEhe_cap *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_he_cap( + tpAniSirGlobal, + tDot11fIEhe_cap *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 255 (0xff) Extended EID 36 (0x24) */ +typedef struct sDot11fIEhe_op { + uint8_t present; + uint16_t default_pe:3; + uint16_t twt_required:1; + uint16_t txop_rts_threshold:10; + uint16_t vht_oper_present:1; + uint16_t co_located_bss:1; + uint8_t er_su_disable:1; + uint8_t oper_info_6g_present:1; + uint8_t reserved2:6; + uint8_t bss_color:6; + uint8_t partial_bss_col:1; + uint8_t bss_col_disabled:1; + uint8_t basic_mcs_nss[2]; + union { + struct { + uint8_t chan_width; + uint8_t center_freq_seg0; + uint8_t center_freq_seg1; + } info; /* vht_oper_present = 1 */ + } vht_oper; + union { + struct { + uint8_t data; + } info; /* co_located_bss = 1 */ + } maxbssid_ind; + union { + struct { + uint8_t primary_ch; + uint8_t ch_width:2; + uint8_t dup_bcon:1; + uint8_t reg_info:3; + uint8_t reserved:2; + uint8_t center_freq_seg0; + uint8_t center_freq_seg1; + uint8_t min_rate; + } info; /* oper_info_6g_present = 1 */ + } oper_info_6g; +} tDot11fIEhe_op; + +#define DOT11F_EID_HE_OP (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HE_OP_MIN_LEN (6) + +#define DOT11F_IE_HE_OP_MAX_LEN (15) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_he_op( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEhe_op*, + bool); + +uint32_t dot11f_pack_ie_he_op( + tpAniSirGlobal, + tDot11fIEhe_op *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_he_op( + tpAniSirGlobal, + tDot11fIEhe_op *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */ typedef struct sDot11fIEhs20vendor_ie { uint8_t present; @@ -10082,6 +9847,45 @@ uint32_t dot11f_get_packed_ie_ht2040_bss_intolerant_report( }; /* End extern "C". */ #endif /* C++ */ +/* EID 255 (0xff) Extended EID 52 (0x34) */ +typedef struct sDot11fIEmax_chan_switch_time { + uint8_t present; + uint8_t switch_time[3]; +} tDot11fIEmax_chan_switch_time; + +#define DOT11F_EID_MAX_CHAN_SWITCH_TIME (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MIN_LEN (3) + +#define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MAX_LEN (3) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_max_chan_switch_time( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEmax_chan_switch_time*, + bool); + +uint32_t dot11f_pack_ie_max_chan_switch_time( + tpAniSirGlobal, + tDot11fIEmax_chan_switch_time *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_max_chan_switch_time( + tpAniSirGlobal, + tDot11fIEmax_chan_switch_time *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 255 (0xff) Extended EID 107 (0x6b) */ typedef struct sDot11fIEmlo_ie { uint8_t present; @@ -10147,7 +9951,7 @@ typedef struct sDot11fIEmlo_ie { /* N.B. These #defines do *not* include the EID & length */ #define DOT11F_IE_MLO_IE_MIN_LEN (2) -#define DOT11F_IE_MLO_IE_MAX_LEN (1268) +#define DOT11F_IE_MLO_IE_MAX_LEN (274) #ifdef __cplusplus extern "C" { @@ -10242,6 +10046,46 @@ uint32_t dot11f_get_packed_ie_mu_edca_param_set( }; /* End extern "C". */ #endif /* C++ */ +/* EID 255 (0xff) Extended EID 56 (0x38) */ +typedef struct sDot11fIEnon_inheritance { + uint8_t present; + uint8_t num_data; + uint8_t data[255]; +} tDot11fIEnon_inheritance; + +#define DOT11F_EID_NON_INHERITANCE (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_NON_INHERITANCE_MIN_LEN (0) + +#define DOT11F_IE_NON_INHERITANCE_MAX_LEN (255) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_non_inheritance( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEnon_inheritance*, + bool); + +uint32_t dot11f_pack_ie_non_inheritance( + tpAniSirGlobal, + tDot11fIEnon_inheritance *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_non_inheritance( + tpAniSirGlobal, + tDot11fIEnon_inheritance *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 255 (0xff) Extended EID 54 (0x36) */ typedef struct sDot11fIEoci { uint8_t present; @@ -10323,6 +10167,53 @@ uint32_t dot11f_get_packed_ie_osen_ie( }; /* End extern "C". */ #endif /* C++ */ +/* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */ +typedef struct sDot11fIEqcn_ie { + 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) + +/* 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 (35) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_qcn_ie( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEqcn_ie*, + bool); + +uint32_t dot11f_pack_ie_qcn_ie( + tpAniSirGlobal, + tDot11fIEqcn_ie *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_qcn_ie( + tpAniSirGlobal, + tDot11fIEqcn_ie *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 201 (0xc9) */ typedef struct sDot11fIEreduced_neighbor_report { uint8_t present; 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 ca65723b35..21301db706 100644 --- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c +++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -24,7 +25,7 @@ * * * This file was automatically generated by 'framesc' - * Fri Sep 10 15:41:55 2021 from the following file(s): + * Fri Nov 19 01:58:42 2021 from the following file(s): * * dot11f.frms * @@ -335,7 +336,7 @@ static uint32_t get_container_ies_len(tpAniSirGlobal pCtx, len += *(pBufRemaining+1); pBufRemaining += len + 2; len += 2; - while (len + 1 < nBuf) { + while (len < nBuf) { pIe = find_ie_defn(pCtx, pBufRemaining, nBuf - len, IEs); if (NULL == pIe) break; @@ -2076,46 +2077,6 @@ uint32_t dot11f_unpack_ie_beacon_reporting(tpAniSirGlobal pCtx, #define SigIeBeaconReporting (0x0008) -uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEChanSwitchAnn *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->switchMode = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->newChannel = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->switchCount = *pBuf; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_chan_switch_ann. */ - -#define SigIeChanSwitchAnn (0x0009) - - uint32_t dot11f_unpack_ie_condensed_country_str(tpAniSirGlobal pCtx, uint8_t *pBuf, uint8_t ielen, @@ -2137,440 +2098,7 @@ uint32_t dot11f_unpack_ie_condensed_country_str(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_condensed_country_str. */ -#define SigIeCondensedCountryStr (0x000a) - - -uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEEDCAParamSet *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp13__; - uint8_t tmp14__; - uint8_t tmp15__; - uint8_t tmp16__; - uint8_t tmp17__; - uint8_t tmp18__; - uint8_t tmp19__; - uint8_t tmp20__; - (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->qos = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->reserved = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp13__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbe_aifsn = tmp13__ >> 0 & 0xf; - pDst->acbe_acm = tmp13__ >> 4 & 0x1; - pDst->acbe_aci = tmp13__ >> 5 & 0x3; - pDst->unused1 = tmp13__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp14__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbe_acwmin = tmp14__ >> 0 & 0xf; - pDst->acbe_acwmax = tmp14__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acbe_txoplimit, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp15__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbk_aifsn = tmp15__ >> 0 & 0xf; - pDst->acbk_acm = tmp15__ >> 4 & 0x1; - pDst->acbk_aci = tmp15__ >> 5 & 0x3; - pDst->unused2 = tmp15__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp16__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbk_acwmin = tmp16__ >> 0 & 0xf; - pDst->acbk_acwmax = tmp16__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acbk_txoplimit, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp17__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvi_aifsn = tmp17__ >> 0 & 0xf; - pDst->acvi_acm = tmp17__ >> 4 & 0x1; - pDst->acvi_aci = tmp17__ >> 5 & 0x3; - pDst->unused3 = tmp17__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp18__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvi_acwmin = tmp18__ >> 0 & 0xf; - pDst->acvi_acwmax = tmp18__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acvi_txoplimit, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp19__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvo_aifsn = tmp19__ >> 0 & 0xf; - pDst->acvo_acm = tmp19__ >> 4 & 0x1; - pDst->acvo_aci = tmp19__ >> 5 & 0x3; - pDst->unused4 = tmp19__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp20__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvo_acwmin = tmp20__ >> 0 & 0xf; - pDst->acvo_acwmax = tmp20__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acvo_txoplimit, pBuf, 0); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_edca_param_set. */ - -#define SigIeEDCAParamSet (0x000b) - - -uint32_t dot11f_unpack_ie_ext_cap(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEExtCap *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 (!ielen) /* Check to ensure copying of ielen bytes */ - goto endUnpackIeExtCap; - pDst->num_bytes = (uint8_t)(ielen); - if (ielen > 15) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->bytes, pBuf, (ielen)); - -endUnpackIeExtCap: - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_ext_cap. */ - -#define SigIeExtCap (0x000c) - - -uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEExtSuppRates *pDst, - bool append_ie) -{ - uint8_t i; - uint8_t rate_indx = 0; - uint32_t status = DOT11F_PARSE_SUCCESS; - (void) pBuf; (void)ielen; /* Shutup the compiler */ - if (pDst->present) - return DOT11F_DUPLICATE_IE; - pDst->present = 1; - for (i = 0; i < ielen; i++) { - if ((DOT11F_IS_BG_RATE(pBuf[i] & 0x7F)) && - (rate_indx < 12)) { - pDst->rates[rate_indx++] = pBuf[i]; - } - } - - if (rate_indx == 0) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - pDst->num_rates = rate_indx; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_ext_supp_rates. */ - -#define SigIeExtSuppRates (0x000d) - - -uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEHTCaps *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp21__; - uint8_t tmp22__; - uint16_t tmp23__; - uint32_t tmp24__; - uint8_t tmp25__; - (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, &tmp21__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->advCodingCap = tmp21__ >> 0 & 0x1; - pDst->supportedChannelWidthSet = tmp21__ >> 1 & 0x1; - pDst->mimoPowerSave = tmp21__ >> 2 & 0x3; - pDst->greenField = tmp21__ >> 4 & 0x1; - pDst->shortGI20MHz = tmp21__ >> 5 & 0x1; - pDst->shortGI40MHz = tmp21__ >> 6 & 0x1; - pDst->txSTBC = tmp21__ >> 7 & 0x1; - pDst->rxSTBC = tmp21__ >> 8 & 0x3; - pDst->delayedBA = tmp21__ >> 10 & 0x1; - pDst->maximalAMSDUsize = tmp21__ >> 11 & 0x1; - pDst->dsssCckMode40MHz = tmp21__ >> 12 & 0x1; - pDst->psmp = tmp21__ >> 13 & 0x1; - pDst->stbcControlFrame = tmp21__ >> 14 & 0x1; - pDst->lsigTXOPProtection = tmp21__ >> 15 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp22__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->maxRxAMPDUFactor = tmp22__ >> 0 & 0x3; - pDst->mpduDensity = tmp22__ >> 2 & 0x7; - pDst->reserved1 = tmp22__ >> 5 & 0x7; - if (unlikely(ielen < 16)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->supportedMCSSet, pBuf, 16); - pBuf += 16; - ielen -= (uint8_t)16; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &tmp23__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->pco = tmp23__ >> 0 & 0x1; - pDst->transitionTime = tmp23__ >> 1 & 0x3; - pDst->reserved2 = tmp23__ >> 3 & 0x1f; - pDst->mcsFeedback = tmp23__ >> 8 & 0x3; - pDst->reserved3 = tmp23__ >> 10 & 0x3f; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohl(pCtx, &tmp24__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->txBF = tmp24__ >> 0 & 0x1; - pDst->rxStaggeredSounding = tmp24__ >> 1 & 0x1; - pDst->txStaggeredSounding = tmp24__ >> 2 & 0x1; - pDst->rxZLF = tmp24__ >> 3 & 0x1; - pDst->txZLF = tmp24__ >> 4 & 0x1; - pDst->implicitTxBF = tmp24__ >> 5 & 0x1; - pDst->calibration = tmp24__ >> 6 & 0x3; - pDst->explicitCSITxBF = tmp24__ >> 8 & 0x1; - pDst->explicitUncompressedSteeringMatrix = tmp24__ >> 9 & 0x1; - pDst->explicitBFCSIFeedback = tmp24__ >> 10 & 0x7; - pDst->explicitUncompressedSteeringMatrixFeedback = tmp24__ >> 13 & 0x7; - pDst->explicitCompressedSteeringMatrixFeedback = tmp24__ >> 16 & 0x7; - pDst->csiNumBFAntennae = tmp24__ >> 19 & 0x3; - pDst->uncompressedSteeringMatrixBFAntennae = tmp24__ >> 21 & 0x3; - pDst->compressedSteeringMatrixBFAntennae = tmp24__ >> 23 & 0x3; - pDst->reserved4 = tmp24__ >> 25 & 0x7f; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp25__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->antennaSelection = tmp25__ >> 0 & 0x1; - pDst->explicitCSIFeedbackTx = tmp25__ >> 1 & 0x1; - pDst->antennaIndicesFeedbackTx = tmp25__ >> 2 & 0x1; - pDst->explicitCSIFeedback = tmp25__ >> 3 & 0x1; - pDst->antennaIndicesFeedback = tmp25__ >> 4 & 0x1; - pDst->rxAS = tmp25__ >> 5 & 0x1; - pDst->txSoundingPPDUs = tmp25__ >> 6 & 0x1; - pDst->reserved5 = tmp25__ >> 7 & 0x1; - pDst->num_rsvd = (uint8_t)(ielen); - if (ielen > 32) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->rsvd, pBuf, (ielen)); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_ht_caps. */ - -#define SigIeHTCaps (0x000e) - - -uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEHTInfo *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp26__; - uint16_t tmp27__; - uint16_t tmp28__; - (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->primaryChannel = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp26__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->secondaryChannelOffset = tmp26__ >> 0 & 0x3; - pDst->recommendedTxWidthSet = tmp26__ >> 2 & 0x1; - pDst->rifsMode = tmp26__ >> 3 & 0x1; - pDst->controlledAccessOnly = tmp26__ >> 4 & 0x1; - pDst->serviceIntervalGranularity = tmp26__ >> 5 & 0x7; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &tmp27__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->opMode = tmp27__ >> 0 & 0x3; - pDst->nonGFDevicesPresent = tmp27__ >> 2 & 0x1; - pDst->transmitBurstLimit = tmp27__ >> 3 & 0x1; - pDst->obssNonHTStaPresent = tmp27__ >> 4 & 0x1; - pDst->chan_center_freq_seg2 = tmp27__ >> 5 & 0xff; - pDst->reserved = tmp27__ >> 13 & 0x7; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &tmp28__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->basicSTBCMCS = tmp28__ >> 0 & 0x7f; - pDst->dualCTSProtection = tmp28__ >> 7 & 0x1; - pDst->secondaryBeacon = tmp28__ >> 8 & 0x1; - pDst->lsigTXOPProtectionFullSupport = tmp28__ >> 9 & 0x1; - pDst->pcoActive = tmp28__ >> 10 & 0x1; - pDst->pcoPhase = tmp28__ >> 11 & 0x1; - pDst->reserved2 = tmp28__ >> 12 & 0xf; - if (unlikely(ielen < 16)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->basicMCSSet, pBuf, 16); - pBuf += 16; - ielen -= (uint8_t)16; - pDst->num_rsvd = (uint8_t)(ielen); - if (ielen > 32) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->rsvd, pBuf, (ielen)); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_ht_info. */ - -#define SigIeHTInfo (0x000f) +#define SigIeCondensedCountryStr (0x0009) uint32_t dot11f_unpack_ie_measurement_pilot(tpAniSirGlobal pCtx, @@ -2598,7 +2126,7 @@ uint32_t dot11f_unpack_ie_measurement_pilot(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_pilot. */ -#define SigIeMeasurementPilot (0x0010) +#define SigIeMeasurementPilot (0x000a) uint32_t dot11f_unpack_ie_multi_bssid(tpAniSirGlobal pCtx, @@ -2626,114 +2154,7 @@ uint32_t dot11f_unpack_ie_multi_bssid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_multi_bssid. */ -#define SigIeMultiBssid (0x0011) - - -uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEOperatingMode *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp29__; - (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; - } - - tmp29__ = *pBuf; - pDst->chanWidth = tmp29__ >> 0 & 0x3; - pDst->vht_160_80p80_supp = tmp29__ >> 2 & 0x1; - pDst->no_ldpc = tmp29__ >> 3 & 0x1; - pDst->rxNSS = tmp29__ >> 4 & 0x7; - pDst->rxNSSType = tmp29__ >> 7 & 0x1; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_operating_mode. */ - -#define SigIeOperatingMode (0x0012) - - -static const tTLVDefn TLVS_P2PAssocRes[] = { - { offsetof(tDot11fIEP2PAssocRes, P2PStatus), - offsetof(tDot11fTLVP2PStatus, present), "P2PStatus", SigTlvP2PStatus, - DOT11F_TLV_P2PSTATUS, 0, 4, 4, 1, 1, 2, 0, }, - { offsetof(tDot11fIEP2PAssocRes, ExtendedListenTiming), - offsetof(tDot11fTLVExtendedListenTiming, present), - "ExtendedListenTiming", SigTlvExtendedListenTiming, - DOT11F_TLV_EXTENDEDLISTENTIMING, 0, 7, 7, 0, 1, 2, 0, }, - {0, 0, NULL, 0, 0xffff, 0, 0, 0, 0, 0, 0}, -}; - -uint32_t dot11f_unpack_ie_p2_p_assoc_res(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEP2PAssocRes *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pBuf; (void)ielen; /* Shutup the compiler */ - pDst->present = 1; - status = unpack_tlv_core(pCtx, pBuf, ielen, - TLVS_P2PAssocRes, - (uint8_t *)pDst, sizeof(*pDst)); - return status; -} /* End dot11f_unpack_ie_p2_p_assoc_res. */ - -#define SigIeP2PAssocRes (0x0013) - - -uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEQuiet *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->count = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->period = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->duration, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->offset, pBuf, 0); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_quiet. */ - -#define SigIeQuiet (0x0014) +#define SigIeMultiBssid (0x000b) uint32_t dot11f_unpack_ie_ric_data(tpAniSirGlobal pCtx, @@ -2773,7 +2194,7 @@ uint32_t dot11f_unpack_ie_ric_data(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_data. */ -#define SigIeRICData (0x0015) +#define SigIeRICData (0x000c) uint32_t dot11f_unpack_ie_ric_descriptor(tpAniSirGlobal pCtx, @@ -2801,7 +2222,7 @@ uint32_t dot11f_unpack_ie_ric_descriptor(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_descriptor. */ -#define SigIeRICDescriptor (0x0016) +#define SigIeRICDescriptor (0x000d) uint32_t dot11f_unpack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, @@ -2811,11 +2232,11 @@ uint32_t dot11f_unpack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp30__; - uint8_t tmp31__; - uint8_t tmp32__; - uint8_t tmp33__; - uint8_t tmp34__; + uint8_t tmp13__; + uint8_t tmp14__; + uint8_t tmp15__; + uint8_t tmp16__; + uint8_t tmp17__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -2825,250 +2246,75 @@ uint32_t dot11f_unpack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp30__ = *pBuf; + tmp13__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->LinkMeasurement = tmp30__ >> 0 & 0x1; - pDst->NeighborRpt = tmp30__ >> 1 & 0x1; - pDst->parallel = tmp30__ >> 2 & 0x1; - pDst->repeated = tmp30__ >> 3 & 0x1; - pDst->BeaconPassive = tmp30__ >> 4 & 0x1; - pDst->BeaconActive = tmp30__ >> 5 & 0x1; - pDst->BeaconTable = tmp30__ >> 6 & 0x1; - pDst->BeaconRepCond = tmp30__ >> 7 & 0x1; + pDst->LinkMeasurement = tmp13__ >> 0 & 0x1; + pDst->NeighborRpt = tmp13__ >> 1 & 0x1; + pDst->parallel = tmp13__ >> 2 & 0x1; + pDst->repeated = tmp13__ >> 3 & 0x1; + pDst->BeaconPassive = tmp13__ >> 4 & 0x1; + pDst->BeaconActive = tmp13__ >> 5 & 0x1; + pDst->BeaconTable = tmp13__ >> 6 & 0x1; + pDst->BeaconRepCond = tmp13__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp31__ = *pBuf; + tmp14__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->FrameMeasurement = tmp31__ >> 0 & 0x1; - pDst->ChannelLoad = tmp31__ >> 1 & 0x1; - pDst->NoiseHistogram = tmp31__ >> 2 & 0x1; - pDst->statistics = tmp31__ >> 3 & 0x1; - pDst->LCIMeasurement = tmp31__ >> 4 & 0x1; - pDst->LCIAzimuth = tmp31__ >> 5 & 0x1; - pDst->TCMCapability = tmp31__ >> 6 & 0x1; - pDst->triggeredTCM = tmp31__ >> 7 & 0x1; + pDst->FrameMeasurement = tmp14__ >> 0 & 0x1; + pDst->ChannelLoad = tmp14__ >> 1 & 0x1; + pDst->NoiseHistogram = tmp14__ >> 2 & 0x1; + pDst->statistics = tmp14__ >> 3 & 0x1; + pDst->LCIMeasurement = tmp14__ >> 4 & 0x1; + pDst->LCIAzimuth = tmp14__ >> 5 & 0x1; + pDst->TCMCapability = tmp14__ >> 6 & 0x1; + pDst->triggeredTCM = tmp14__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp32__ = *pBuf; + tmp15__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->APChanReport = tmp32__ >> 0 & 0x1; - pDst->RRMMIBEnabled = tmp32__ >> 1 & 0x1; - pDst->operatingChanMax = tmp32__ >> 2 & 0x7; - pDst->nonOperatinChanMax = tmp32__ >> 5 & 0x7; + pDst->APChanReport = tmp15__ >> 0 & 0x1; + pDst->RRMMIBEnabled = tmp15__ >> 1 & 0x1; + pDst->operatingChanMax = tmp15__ >> 2 & 0x7; + pDst->nonOperatinChanMax = tmp15__ >> 5 & 0x7; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp33__ = *pBuf; + tmp16__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->MeasurementPilot = tmp33__ >> 0 & 0x7; - pDst->MeasurementPilotEnabled = tmp33__ >> 3 & 0x1; - pDst->NeighborTSFOffset = tmp33__ >> 4 & 0x1; - pDst->RCPIMeasurement = tmp33__ >> 5 & 0x1; - pDst->RSNIMeasurement = tmp33__ >> 6 & 0x1; - pDst->BssAvgAccessDelay = tmp33__ >> 7 & 0x1; + pDst->MeasurementPilot = tmp16__ >> 0 & 0x7; + pDst->MeasurementPilotEnabled = tmp16__ >> 3 & 0x1; + pDst->NeighborTSFOffset = tmp16__ >> 4 & 0x1; + pDst->RCPIMeasurement = tmp16__ >> 5 & 0x1; + pDst->RSNIMeasurement = tmp16__ >> 6 & 0x1; + pDst->BssAvgAccessDelay = tmp16__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp34__ = *pBuf; - pDst->BSSAvailAdmission = tmp34__ >> 0 & 0x1; - pDst->AntennaInformation = tmp34__ >> 1 & 0x1; - pDst->fine_time_meas_rpt = tmp34__ >> 2 & 0x1; - pDst->lci_capability = tmp34__ >> 3 & 0x1; - pDst->reserved = tmp34__ >> 4 & 0xf; + tmp17__ = *pBuf; + pDst->BSSAvailAdmission = tmp17__ >> 0 & 0x1; + pDst->AntennaInformation = tmp17__ >> 1 & 0x1; + pDst->fine_time_meas_rpt = tmp17__ >> 2 & 0x1; + pDst->lci_capability = tmp17__ >> 3 & 0x1; + pDst->reserved = tmp17__ >> 4 & 0xf; (void)pCtx; return status; } /* End dot11f_unpack_ie_rrm_enabled_cap. */ -#define SigIeRRMEnabledCap (0x0017) - - -uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIERSN *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t def_cipher_suite[4] = {0x00, 0x0f, 0xac, 0x04}; - uint8_t def_akm_suite[4] = {0x00, 0x0f, 0xac, 0x01}; - - (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->version, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (pDst->version != 0x1) { - pDst->present = 0; - return status | DOT11F_BAD_FIXED_VALUE; - } - if (!ielen) { - pDst->RSN_Cap_present = 0U; - pDst->gp_mgmt_cipher_suite_present = 0U; - pDst->gp_cipher_suite_present = 1; - DOT11F_MEMCPY(pCtx, pDst->gp_cipher_suite, def_cipher_suite, 4); - pDst->pwise_cipher_suite_count = 1; - DOT11F_MEMCPY(pCtx, - pDst->pwise_cipher_suites, def_cipher_suite, 4); - pDst->akm_suite_cnt = 1; - DOT11F_MEMCPY(pCtx, pDst->akm_suite, def_akm_suite, 4); - pDst->pmkid_count = 0U; - return 0U; - } else { - pDst->gp_cipher_suite_present = 1; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->gp_cipher_suite, pBuf, 4); - pBuf += 4; - ielen -= (uint8_t)4; - } - if (!ielen) { - pDst->RSN_Cap_present = 0U; - pDst->gp_mgmt_cipher_suite_present = 0U; - pDst->pwise_cipher_suite_count = 1; - DOT11F_MEMCPY(pCtx, - pDst->pwise_cipher_suites, def_cipher_suite, 4); - pDst->akm_suite_cnt = 1; - DOT11F_MEMCPY(pCtx, pDst->akm_suite, def_akm_suite, 4); - pDst->pmkid_count = 0U; - return 0U; - } else { - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->pwise_cipher_suite_count, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - } - if (unlikely(ielen < pDst->pwise_cipher_suite_count * 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (!pDst->pwise_cipher_suite_count || - pDst->pwise_cipher_suite_count > 6) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->pwise_cipher_suites, pBuf, (pDst->pwise_cipher_suite_count * 4)); - pBuf += (pDst->pwise_cipher_suite_count * 4); - ielen -= (pDst->pwise_cipher_suite_count * 4); - if (!ielen) { - pDst->RSN_Cap_present = 0U; - pDst->gp_mgmt_cipher_suite_present = 0U; - pDst->akm_suite_cnt = 1; - DOT11F_MEMCPY(pCtx, pDst->akm_suite, def_akm_suite, 4); - pDst->pmkid_count = 0U; - return 0U; - } else { - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->akm_suite_cnt, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - } - if (unlikely(ielen < pDst->akm_suite_cnt * 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (!pDst->akm_suite_cnt || - pDst->akm_suite_cnt > 6) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->akm_suite, pBuf, (pDst->akm_suite_cnt * 4)); - pBuf += (pDst->akm_suite_cnt * 4); - ielen -= (pDst->akm_suite_cnt * 4); - if (!ielen) { - pDst->RSN_Cap_present = 0U; - pDst->gp_mgmt_cipher_suite_present = 0U; - pDst->pmkid_count = 0U; - return 0U; - } else { - pDst->RSN_Cap_present = 1; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->RSN_Cap, pBuf, 2); - pBuf += 2; - ielen -= (uint8_t)2; - } - if (!ielen) { - pDst->gp_mgmt_cipher_suite_present = 0U; - pDst->pmkid_count = 0U; - return 0U; - } else { - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->pmkid_count, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - } - if (unlikely(ielen < pDst->pmkid_count * 16)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->pmkid_count > 4) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->pmkid, pBuf, (pDst->pmkid_count * 16)); - pBuf += (pDst->pmkid_count * 16); - ielen -= (pDst->pmkid_count * 16); - if (!ielen) { - return 0U; - } else { - pDst->gp_mgmt_cipher_suite_present = 1; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->gp_mgmt_cipher_suite, pBuf, 4); - } - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_rsn. */ - -#define SigIeRSN (0x0018) +#define SigIeRRMEnabledCap (0x000e) uint32_t dot11f_unpack_ie_requested_info(tpAniSirGlobal pCtx, @@ -3088,7 +2334,7 @@ uint32_t dot11f_unpack_ie_requested_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_requested_info. */ -#define SigIeRequestedInfo (0x0019) +#define SigIeRequestedInfo (0x000f) uint32_t dot11f_unpack_ie_ssid(tpAniSirGlobal pCtx, @@ -3115,7 +2361,7 @@ uint32_t dot11f_unpack_ie_ssid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ssid. */ -#define SigIeSSID (0x001a) +#define SigIeSSID (0x0010) uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, @@ -3125,7 +2371,7 @@ uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp35__; + uint16_t tmp18__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -3135,13 +2381,13 @@ uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp35__, pBuf, 0); + framesntohs(pCtx, &tmp18__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->aggregation = tmp35__ >> 0 & 0x1; - pDst->tsid = tmp35__ >> 1 & 0xf; - pDst->direction = tmp35__ >> 5 & 0x3; - pDst->reserved = tmp35__ >> 7 & 0x1ff; + pDst->aggregation = tmp18__ >> 0 & 0x1; + pDst->tsid = tmp18__ >> 1 & 0xf; + pDst->direction = tmp18__ >> 5 & 0x3; + pDst->reserved = tmp18__ >> 7 & 0x1ff; if (unlikely(ielen < 4)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -3176,65 +2422,7 @@ uint32_t dot11f_unpack_ie_schedule(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_schedule. */ -#define SigIeSchedule (0x001b) - - -uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIESuppOperatingClasses *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; - pDst->num_classes = (uint8_t)(ielen); - if (ielen > 32) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->classes, pBuf, (ielen)); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_supp_operating_classes. */ - -#define SigIeSuppOperatingClasses (0x001c) - - -uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIESuppRates *pDst, - bool append_ie) -{ - uint8_t i; - uint8_t rate_indx = 0; - uint32_t status = DOT11F_PARSE_SUCCESS; - (void) pBuf; (void)ielen; /* Shutup the compiler */ - if (pDst->present) - return DOT11F_DUPLICATE_IE; - pDst->present = 1; - for (i = 0; i < ielen; i++) { - if ((DOT11F_IS_BG_RATE(pBuf[i] & 0x7F)) && - (rate_indx < 12)) { - pDst->rates[rate_indx++] = pBuf[i]; - } - } - - if (rate_indx == 0) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - pDst->num_rates = rate_indx; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_supp_rates. */ - -#define SigIeSuppRates (0x001d) +#define SigIeSchedule (0x0011) uint32_t dot11f_unpack_ie_tclas(tpAniSirGlobal pCtx, @@ -3426,10 +2614,10 @@ uint32_t dot11f_unpack_ie_tclas(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tclas. */ -#define SigIeTCLAS (0x001e) +#define SigIeTCLAS (0x0012) -#define SigIeTCLASSPROC (0x001f) +#define SigIeTCLASSPROC (0x0013) uint32_t dot11f_unpack_ie_ts_delay(tpAniSirGlobal pCtx, @@ -3453,7 +2641,7 @@ uint32_t dot11f_unpack_ie_ts_delay(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ts_delay. */ -#define SigIeTSDelay (0x0020) +#define SigIeTSDelay (0x0014) uint32_t dot11f_unpack_ie_tsf_info(tpAniSirGlobal pCtx, @@ -3485,7 +2673,7 @@ uint32_t dot11f_unpack_ie_tsf_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tsf_info. */ -#define SigIeTSFInfo (0x0021) +#define SigIeTSFInfo (0x0015) uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, @@ -3495,9 +2683,9 @@ uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp36__; - uint8_t tmp37__; - uint16_t tmp38__; + uint16_t tmp19__; + uint8_t tmp20__; + uint16_t tmp21__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -3507,37 +2695,37 @@ uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp36__, pBuf, 0); + framesntohs(pCtx, &tmp19__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->traffic_type = tmp36__ >> 0 & 0x1; - pDst->tsid = tmp36__ >> 1 & 0xf; - pDst->direction = tmp36__ >> 5 & 0x3; - pDst->access_policy = tmp36__ >> 7 & 0x3; - pDst->aggregation = tmp36__ >> 9 & 0x1; - pDst->psb = tmp36__ >> 10 & 0x1; - pDst->user_priority = tmp36__ >> 11 & 0x7; - pDst->tsinfo_ack_pol = tmp36__ >> 14 & 0x3; + pDst->traffic_type = tmp19__ >> 0 & 0x1; + pDst->tsid = tmp19__ >> 1 & 0xf; + pDst->direction = tmp19__ >> 5 & 0x3; + pDst->access_policy = tmp19__ >> 7 & 0x3; + pDst->aggregation = tmp19__ >> 9 & 0x1; + pDst->psb = tmp19__ >> 10 & 0x1; + pDst->user_priority = tmp19__ >> 11 & 0x7; + pDst->tsinfo_ack_pol = tmp19__ >> 14 & 0x3; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp37__ = *pBuf; + tmp20__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->schedule = tmp37__ >> 0 & 0x1; - pDst->unused = tmp37__ >> 1 & 0x7f; + pDst->schedule = tmp20__ >> 0 & 0x1; + pDst->unused = tmp20__ >> 1 & 0x7f; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp38__, pBuf, 0); + framesntohs(pCtx, &tmp21__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->size = tmp38__ >> 0 & 0x7fff; - pDst->fixed = tmp38__ >> 15 & 0x1; + pDst->size = tmp21__ >> 0 & 0x7fff; + pDst->fixed = tmp21__ >> 15 & 0x1; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -3652,7 +2840,7 @@ uint32_t dot11f_unpack_ie_tspec(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tspec. */ -#define SigIeTSPEC (0x0022) +#define SigIeTSPEC (0x0016) uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, @@ -3662,9 +2850,9 @@ uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint32_t tmp39__; - uint16_t tmp40__; - uint16_t tmp41__; + uint32_t tmp22__; + uint16_t tmp23__; + uint16_t tmp24__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -3674,29 +2862,29 @@ uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohl(pCtx, &tmp39__, pBuf, 0); + framesntohl(pCtx, &tmp22__, pBuf, 0); pBuf += 4; ielen -= 4; - pDst->maxMPDULen = tmp39__ >> 0 & 0x3; - pDst->supportedChannelWidthSet = tmp39__ >> 2 & 0x3; - pDst->ldpcCodingCap = tmp39__ >> 4 & 0x1; - pDst->shortGI80MHz = tmp39__ >> 5 & 0x1; - pDst->shortGI160and80plus80MHz = tmp39__ >> 6 & 0x1; - pDst->txSTBC = tmp39__ >> 7 & 0x1; - pDst->rxSTBC = tmp39__ >> 8 & 0x7; - pDst->suBeamFormerCap = tmp39__ >> 11 & 0x1; - pDst->suBeamformeeCap = tmp39__ >> 12 & 0x1; - pDst->csnofBeamformerAntSup = tmp39__ >> 13 & 0x7; - pDst->numSoundingDim = tmp39__ >> 16 & 0x7; - pDst->muBeamformerCap = tmp39__ >> 19 & 0x1; - pDst->muBeamformeeCap = tmp39__ >> 20 & 0x1; - pDst->vhtTXOPPS = tmp39__ >> 21 & 0x1; - pDst->htcVHTCap = tmp39__ >> 22 & 0x1; - pDst->maxAMPDULenExp = tmp39__ >> 23 & 0x7; - pDst->vhtLinkAdaptCap = tmp39__ >> 26 & 0x3; - pDst->rxAntPattern = tmp39__ >> 28 & 0x1; - pDst->txAntPattern = tmp39__ >> 29 & 0x1; - pDst->extended_nss_bw_supp = tmp39__ >> 30 & 0x3; + pDst->maxMPDULen = tmp22__ >> 0 & 0x3; + pDst->supportedChannelWidthSet = tmp22__ >> 2 & 0x3; + pDst->ldpcCodingCap = tmp22__ >> 4 & 0x1; + pDst->shortGI80MHz = tmp22__ >> 5 & 0x1; + pDst->shortGI160and80plus80MHz = tmp22__ >> 6 & 0x1; + pDst->txSTBC = tmp22__ >> 7 & 0x1; + pDst->rxSTBC = tmp22__ >> 8 & 0x7; + pDst->suBeamFormerCap = tmp22__ >> 11 & 0x1; + pDst->suBeamformeeCap = tmp22__ >> 12 & 0x1; + pDst->csnofBeamformerAntSup = tmp22__ >> 13 & 0x7; + pDst->numSoundingDim = tmp22__ >> 16 & 0x7; + pDst->muBeamformerCap = tmp22__ >> 19 & 0x1; + pDst->muBeamformeeCap = tmp22__ >> 20 & 0x1; + pDst->vhtTXOPPS = tmp22__ >> 21 & 0x1; + pDst->htcVHTCap = tmp22__ >> 22 & 0x1; + pDst->maxAMPDULenExp = tmp22__ >> 23 & 0x7; + pDst->vhtLinkAdaptCap = tmp22__ >> 26 & 0x3; + pDst->rxAntPattern = tmp22__ >> 28 & 0x1; + pDst->txAntPattern = tmp22__ >> 29 & 0x1; + pDst->extended_nss_bw_supp = tmp22__ >> 30 & 0x3; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -3710,11 +2898,11 @@ uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp40__, pBuf, 0); + framesntohs(pCtx, &tmp23__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->rxHighSupDataRate = tmp40__ >> 0 & 0x1fff; - pDst->max_nsts_total = tmp40__ >> 13 & 0x7; + pDst->rxHighSupDataRate = tmp23__ >> 0 & 0x1fff; + pDst->max_nsts_total = tmp23__ >> 13 & 0x7; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -3728,15 +2916,15 @@ uint32_t dot11f_unpack_ie_vht_caps(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp41__, pBuf, 0); - pDst->txSupDataRate = tmp41__ >> 0 & 0x1fff; - pDst->vht_extended_nss_bw_cap = tmp41__ >> 13 & 0x1; - pDst->reserved = tmp41__ >> 14 & 0x3; + framesntohs(pCtx, &tmp24__, pBuf, 0); + pDst->txSupDataRate = tmp24__ >> 0 & 0x1fff; + pDst->vht_extended_nss_bw_cap = tmp24__ >> 13 & 0x1; + pDst->reserved = tmp24__ >> 14 & 0x3; (void)pCtx; return status; } /* End dot11f_unpack_ie_vht_caps. */ -#define SigIeVHTCaps (0x0023) +#define SigIeVHTCaps (0x0017) uint32_t dot11f_unpack_ie_vht_operation(tpAniSirGlobal pCtx, @@ -3784,261 +2972,7 @@ uint32_t dot11f_unpack_ie_vht_operation(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_operation. */ -#define SigIeVHTOperation (0x0024) - - -uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEWMMCaps *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp42__; - (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 (pDst->version != 0x1) { - pDst->present = 0; - return status | DOT11F_BAD_FIXED_VALUE; - } - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp42__ = *pBuf; - pDst->reserved = tmp42__ >> 0 & 0xf; - pDst->qack = tmp42__ >> 4 & 0x1; - pDst->queue_request = tmp42__ >> 5 & 0x1; - pDst->txop_request = tmp42__ >> 6 & 0x1; - pDst->more_ack = tmp42__ >> 7 & 0x1; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_wmm_caps. */ - -#define SigIeWMMCaps (0x0025) - - -uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEWMMInfoStation *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp43__; - (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; - } - - tmp43__ = *pBuf; - pDst->acvo_uapsd = tmp43__ >> 0 & 0x1; - pDst->acvi_uapsd = tmp43__ >> 1 & 0x1; - pDst->acbk_uapsd = tmp43__ >> 2 & 0x1; - pDst->acbe_uapsd = tmp43__ >> 3 & 0x1; - pDst->reserved1 = tmp43__ >> 4 & 0x1; - pDst->max_sp_length = tmp43__ >> 5 & 0x3; - pDst->reserved2 = tmp43__ >> 7 & 0x1; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_wmm_info_station. */ - -#define SigIeWMMInfoStation (0x0026) - - -uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEWMMParams *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp44__; - uint8_t tmp45__; - uint8_t tmp46__; - uint8_t tmp47__; - uint8_t tmp48__; - uint8_t tmp49__; - uint8_t tmp50__; - uint8_t tmp51__; - (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 (pDst->version != 0x1) { - pDst->present = 0; - return status | DOT11F_BAD_FIXED_VALUE; - } - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->qosInfo = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->reserved2 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp44__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbe_aifsn = tmp44__ >> 0 & 0xf; - pDst->acbe_acm = tmp44__ >> 4 & 0x1; - pDst->acbe_aci = tmp44__ >> 5 & 0x3; - pDst->unused1 = tmp44__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp45__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbe_acwmin = tmp45__ >> 0 & 0xf; - pDst->acbe_acwmax = tmp45__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acbe_txoplimit, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp46__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbk_aifsn = tmp46__ >> 0 & 0xf; - pDst->acbk_acm = tmp46__ >> 4 & 0x1; - pDst->acbk_aci = tmp46__ >> 5 & 0x3; - pDst->unused2 = tmp46__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp47__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbk_acwmin = tmp47__ >> 0 & 0xf; - pDst->acbk_acwmax = tmp47__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acbk_txoplimit, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp48__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvi_aifsn = tmp48__ >> 0 & 0xf; - pDst->acvi_acm = tmp48__ >> 4 & 0x1; - pDst->acvi_aci = tmp48__ >> 5 & 0x3; - pDst->unused3 = tmp48__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp49__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvi_acwmin = tmp49__ >> 0 & 0xf; - pDst->acvi_acwmax = tmp49__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acvi_txoplimit, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp50__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvo_aifsn = tmp50__ >> 0 & 0xf; - pDst->acvo_acm = tmp50__ >> 4 & 0x1; - pDst->acvo_aci = tmp50__ >> 5 & 0x3; - pDst->unused4 = tmp50__ >> 7 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp51__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvo_acwmin = tmp51__ >> 0 & 0xf; - pDst->acvo_acwmax = tmp51__ >> 4 & 0xf; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->acvo_txoplimit, pBuf, 0); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_wmm_params. */ - -#define SigIeWMMParams (0x0027) +#define SigIeVHTOperation (0x0018) uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, @@ -4048,7 +2982,7 @@ uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp52__; + uint16_t tmp25__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -4070,13 +3004,13 @@ uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp52__, pBuf, 0); + framesntohs(pCtx, &tmp25__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->aggregation = tmp52__ >> 0 & 0x1; - pDst->tsid = tmp52__ >> 1 & 0xf; - pDst->direction = tmp52__ >> 5 & 0x3; - pDst->reserved = tmp52__ >> 7 & 0x1ff; + pDst->aggregation = tmp25__ >> 0 & 0x1; + pDst->tsid = tmp25__ >> 1 & 0xf; + pDst->direction = tmp25__ >> 5 & 0x3; + pDst->reserved = tmp25__ >> 7 & 0x1ff; if (unlikely(ielen < 4)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -4111,7 +3045,7 @@ uint32_t dot11f_unpack_ie_wmm_schedule(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_schedule. */ -#define SigIeWMMSchedule (0x0028) +#define SigIeWMMSchedule (0x0019) uint32_t dot11f_unpack_ie_wmmtclas(tpAniSirGlobal pCtx, @@ -4315,7 +3249,7 @@ uint32_t dot11f_unpack_ie_wmmtclas(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtclas. */ -#define SigIeWMMTCLAS (0x0029) +#define SigIeWMMTCLAS (0x001a) uint32_t dot11f_unpack_ie_wmmtclasproc(tpAniSirGlobal pCtx, @@ -4351,7 +3285,7 @@ uint32_t dot11f_unpack_ie_wmmtclasproc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtclasproc. */ -#define SigIeWMMTCLASPROC (0x002a) +#define SigIeWMMTCLASPROC (0x001b) uint32_t dot11f_unpack_ie_wmmts_delay(tpAniSirGlobal pCtx, @@ -4387,7 +3321,7 @@ uint32_t dot11f_unpack_ie_wmmts_delay(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmts_delay. */ -#define SigIeWMMTSDelay (0x002b) +#define SigIeWMMTSDelay (0x001c) uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, @@ -4397,9 +3331,9 @@ uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp53__; - uint8_t tmp54__; - uint16_t tmp55__; + uint16_t tmp26__; + uint8_t tmp27__; + uint16_t tmp28__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -4421,37 +3355,37 @@ uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp53__, pBuf, 0); + framesntohs(pCtx, &tmp26__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->traffic_type = tmp53__ >> 0 & 0x1; - pDst->tsid = tmp53__ >> 1 & 0xf; - pDst->direction = tmp53__ >> 5 & 0x3; - pDst->access_policy = tmp53__ >> 7 & 0x3; - pDst->aggregation = tmp53__ >> 9 & 0x1; - pDst->psb = tmp53__ >> 10 & 0x1; - pDst->user_priority = tmp53__ >> 11 & 0x7; - pDst->tsinfo_ack_pol = tmp53__ >> 14 & 0x3; + pDst->traffic_type = tmp26__ >> 0 & 0x1; + pDst->tsid = tmp26__ >> 1 & 0xf; + pDst->direction = tmp26__ >> 5 & 0x3; + pDst->access_policy = tmp26__ >> 7 & 0x3; + pDst->aggregation = tmp26__ >> 9 & 0x1; + pDst->psb = tmp26__ >> 10 & 0x1; + pDst->user_priority = tmp26__ >> 11 & 0x7; + pDst->tsinfo_ack_pol = tmp26__ >> 14 & 0x3; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp54__ = *pBuf; + tmp27__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->tsinfo_rsvd = tmp54__ >> 0 & 0x7f; - pDst->burst_size_defn = tmp54__ >> 7 & 0x1; + pDst->tsinfo_rsvd = tmp27__ >> 0 & 0x7f; + pDst->burst_size_defn = tmp27__ >> 7 & 0x1; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp55__, pBuf, 0); + framesntohs(pCtx, &tmp28__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->size = tmp55__ >> 0 & 0x7fff; - pDst->fixed = tmp55__ >> 15 & 0x1; + pDst->size = tmp28__ >> 0 & 0x7fff; + pDst->fixed = tmp28__ >> 15 & 0x1; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -4566,116 +3500,7 @@ uint32_t dot11f_unpack_ie_wmmtspec(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmmtspec. */ -#define SigIeWMMTSPEC (0x002c) - - -uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEWPA *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->version, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (pDst->version != 0x1) { - pDst->present = 0; - return status | DOT11F_BAD_FIXED_VALUE; - } - if (!ielen) { - pDst->multicast_cipher_present = 0U; - pDst->unicast_cipher_count = 0U; - pDst->auth_suite_count = 0U; - return 0U; - } else { - pDst->multicast_cipher_present = 1U; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->multicast_cipher, pBuf, 4); - pBuf += 4; - ielen -= (uint8_t)4; - } - if (!ielen) { - pDst->unicast_cipher_count = 0U; - pDst->auth_suite_count = 0U; - return 0U; - } else { - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->unicast_cipher_count, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - } - if (unlikely(ielen < pDst->unicast_cipher_count * 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->unicast_cipher_count > 4) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->unicast_ciphers, pBuf, (pDst->unicast_cipher_count * 4)); - pBuf += (pDst->unicast_cipher_count * 4); - ielen -= (pDst->unicast_cipher_count * 4); - if (!ielen) { - pDst->auth_suite_count = 0U; - return 0U; - } else { - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->auth_suite_count, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - } - if (unlikely(ielen < pDst->auth_suite_count * 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->auth_suite_count > 4) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->auth_suites, pBuf, (pDst->auth_suite_count * 4)); - pBuf += (pDst->auth_suite_count * 4); - ielen -= (pDst->auth_suite_count * 4); - if (!ielen) { - return 0U; - } else { - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->caps, pBuf, 0); - } - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_wpa. */ - -#define SigIeWPA (0x002d) +#define SigIeWMMTSPEC (0x001d) uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann(tpAniSirGlobal pCtx, @@ -4715,7 +3540,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 (0x002e) +#define SigIeWiderBWChanSwitchAnn (0x001e) uint32_t dot11f_unpack_ie_azimuth_req(tpAniSirGlobal pCtx, @@ -4739,7 +3564,7 @@ uint32_t dot11f_unpack_ie_azimuth_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_azimuth_req. */ -#define SigIeazimuth_req (0x002f) +#define SigIeazimuth_req (0x001f) uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, @@ -4749,7 +3574,7 @@ uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp56__; + uint16_t tmp29__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -4759,742 +3584,15 @@ uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp56__, pBuf, 0); - pDst->beacon_report_id = tmp56__ >> 0 & 0xff; - pDst->fragment_id_number = tmp56__ >> 8 & 0x7f; - pDst->more_fragments = tmp56__ >> 15 & 0x1; + framesntohs(pCtx, &tmp29__, pBuf, 0); + pDst->beacon_report_id = tmp29__ >> 0 & 0xff; + pDst->fragment_id_number = tmp29__ >> 8 & 0x7f; + pDst->more_fragments = tmp29__ >> 15 & 0x1; (void)pCtx; return status; } /* End dot11f_unpack_ie_beacon_report_frm_body_fragment_id. */ -#define SigIebeacon_report_frm_body_fragment_id (0x0030) - - -uint32_t dot11f_unpack_ie_eht_cap(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEeht_cap *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp57__; - uint32_t tmp58__; - uint32_t tmp59__; - (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, &tmp57__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->nsep_pri_access = tmp57__ >> 0 & 0x1; - pDst->eht_om_ctl = tmp57__ >> 1 & 0x1; - pDst->triggered_txop_sharing = tmp57__ >> 2 & 0x1; - pDst->reserved = tmp57__ >> 3 & 0x1fff; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohl(pCtx, &tmp58__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->reserved2 = tmp58__ >> 0 & 0x1; - pDst->support_320mhz_6ghz = tmp58__ >> 1 & 0x1; - pDst->ru_242tone_wt_20mhz = tmp58__ >> 2 & 0x1; - pDst->ndp_4x_eht_ltf_3dot2_us_gi = tmp58__ >> 3 & 0x1; - pDst->partial_bw_mu_mimo = tmp58__ >> 4 & 0x1; - pDst->su_beamformer = tmp58__ >> 5 & 0x1; - pDst->su_beamformee = tmp58__ >> 6 & 0x1; - pDst->bfee_ss_le_80mhz = tmp58__ >> 7 & 0x7; - pDst->bfee_ss_160mhz = tmp58__ >> 10 & 0x7; - pDst->bfee_ss_320mhz = tmp58__ >> 13 & 0x7; - pDst->num_sounding_dim_le_80mhz = tmp58__ >> 16 & 0x7; - pDst->num_sounding_dim_160mhz = tmp58__ >> 19 & 0x7; - pDst->num_sounding_dim_320mhz = tmp58__ >> 22 & 0x7; - pDst->ng_16_su_feedback = tmp58__ >> 25 & 0x1; - pDst->ng_16_mu_feedback = tmp58__ >> 26 & 0x1; - pDst->cb_sz_4_2_su_feedback = tmp58__ >> 27 & 0x1; - pDst->cb_sz_7_5_su_feedback = tmp58__ >> 28 & 0x1; - pDst->trig_su_bforming_feedback = tmp58__ >> 29 & 0x1; - pDst->trig_mu_bforming_partial_bw_feedback = tmp58__ >> 30 & 0x1; - pDst->triggered_cqi_feedback = tmp58__ >> 31 & 0x1; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohl(pCtx, &tmp59__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->partial_bw_dl_mu_mimo = tmp59__ >> 0 & 0x1; - pDst->psr_based_sr = tmp59__ >> 1 & 0x1; - pDst->power_boost_factor = tmp59__ >> 2 & 0x1; - pDst->eht_mu_ppdu_4x_ltf_0_8_us_gi = tmp59__ >> 3 & 0x1; - pDst->max_nc = tmp59__ >> 4 & 0xf; - pDst->non_trig_cqi_feedback = tmp59__ >> 8 & 0x1; - pDst->tx_1024_4096_qam_lt_242_tone_ru = tmp59__ >> 9 & 0x1; - pDst->rx_1024_4096_qam_lt_242_tone_ru = tmp59__ >> 10 & 0x1; - pDst->ppet_present = tmp59__ >> 11 & 0x1; - pDst->common_nominal_pkt_padding = tmp59__ >> 12 & 0x3; - pDst->max_num_eht_ltf = tmp59__ >> 14 & 0x1f; - pDst->mcs_15 = tmp59__ >> 19 & 0xf; - pDst->eht_dup_6ghz = tmp59__ >> 23 & 0x1; - pDst->op_sta_rx_ndp_wider_bw_20mhz = tmp59__ >> 24 & 0x1; - pDst->non_ofdma_ul_mu_mimo_le_80mhz = tmp59__ >> 25 & 0x1; - pDst->non_ofdma_ul_mu_mimo_160mhz = tmp59__ >> 26 & 0x1; - pDst->non_ofdma_ul_mu_mimo_320mhz = tmp59__ >> 27 & 0x1; - pDst->mu_bformer_le_80mhz = tmp59__ >> 28 & 0x1; - pDst->mu_bformer_160mhz = tmp59__ >> 29 & 0x1; - pDst->mu_bformer_320mhz = tmp59__ >> 30 & 0x1; - pDst->reserved3 = tmp59__ >> 31 & 0x1; - pDst->num_eht_mcs_map_20 = (uint8_t)(ielen); - if (ielen > 4) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_20, pBuf, (ielen)); - pBuf += (ielen); - ielen -= (ielen); - pDst->num_eht_mcs_map_le_80 = (uint8_t)(ielen); - if (ielen > 3) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_le_80, pBuf, (ielen)); - pBuf += (ielen); - ielen -= (ielen); - pDst->num_eht_mcs_map_160 = (uint8_t)(ielen); - if (ielen > 3) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_160, pBuf, (ielen)); - pBuf += (ielen); - ielen -= (ielen); - if (unlikely(ielen < pDst->support_320mhz_6ghz * 3)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->support_320mhz_6ghz > 1) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_320, pBuf, (pDst->support_320mhz_6ghz * 3)); - pBuf += (pDst->support_320mhz_6ghz * 3); - ielen -= (pDst->support_320mhz_6ghz * 3); - switch (pDst->ppet_present) { - case 1: - pDst->ppet.ppe_threshold.num_ppe_th = (uint8_t)(ielen); - if (ielen > 62) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->ppet.ppe_threshold.ppe_th, pBuf, (ielen)); - pBuf += (ielen); - ielen -= (ielen); - break; - } - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_eht_cap. */ - -#define SigIeeht_cap (0x0031) - - -uint32_t dot11f_unpack_ie_eht_op(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEeht_op *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp60__; - (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; - } - - DOT11F_MEMCPY(pCtx, pDst->basic_mcs_nss_set, pBuf, 2); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->primary_channel = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp60__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->width = tmp60__ >> 0 & 0x7; - pDst->reserved = tmp60__ >> 3 & 0x1f; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->chan_freq_seg0 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->chan_freq_seg1 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->minimum_rate = *pBuf; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_eht_op. */ - -#define SigIeeht_op (0x0032) - - -uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEext_chan_switch_ann *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->switch_mode = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->new_reg_class = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->new_channel = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->switch_count = *pBuf; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_ext_chan_switch_ann. */ - -#define SigIeext_chan_switch_ann (0x0033) - - -uint32_t dot11f_unpack_ie_fils_indication(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEfils_indication *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp61__; - (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, &tmp61__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->public_key_identifiers_cnt = tmp61__ >> 0 & 0x7; - pDst->realm_identifiers_cnt = tmp61__ >> 3 & 0x7; - pDst->is_ip_config_supported = tmp61__ >> 6 & 0x1; - pDst->is_cache_id_present = tmp61__ >> 7 & 0x1; - pDst->is_hessid_present = tmp61__ >> 8 & 0x1; - pDst->is_fils_sk_auth_supported = tmp61__ >> 9 & 0x1; - pDst->is_fils_sk_auth_pfs_supported = tmp61__ >> 10 & 0x1; - pDst->is_pk_auth_supported = tmp61__ >> 11 & 0x1; - pDst->reserved = tmp61__ >> 12 & 0xf; - pDst->num_variable_data = (uint8_t)(ielen); - DOT11F_MEMCPY(pCtx, pDst->variable_data, pBuf, (ielen)); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_fils_indication. */ - -#define SigIefils_indication (0x0034) - - -uint32_t dot11f_unpack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEhe_6ghz_band_cap *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp62__; - (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, &tmp62__, pBuf, 0); - pDst->min_mpdu_start_spacing = tmp62__ >> 0 & 0x7; - pDst->max_ampdu_len_exp = tmp62__ >> 3 & 0x7; - pDst->max_mpdu_len = tmp62__ >> 6 & 0x7; - pDst->sm_pow_save = tmp62__ >> 9 & 0x3; - pDst->rd_responder = tmp62__ >> 11 & 0x1; - pDst->rx_ant_pattern_consistency = tmp62__ >> 12 & 0x1; - pDst->tx_ant_pattern_consistency = tmp62__ >> 13 & 0x1; - pDst->reserved = tmp62__ >> 14 & 0x3; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_he_6ghz_band_cap. */ - -#define SigIehe_6ghz_band_cap (0x0035) - - -uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEhe_cap *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint32_t tmp63__; - uint16_t tmp64__; - uint32_t tmp65__; - uint32_t tmp66__; - uint16_t tmp67__; - (void) pBuf; (void)ielen; /* Shutup the compiler */ - if (pDst->present) - return DOT11F_DUPLICATE_IE; - pDst->present = 1; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohl(pCtx, &tmp63__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->htc_he = tmp63__ >> 0 & 0x1; - pDst->twt_request = tmp63__ >> 1 & 0x1; - pDst->twt_responder = tmp63__ >> 2 & 0x1; - pDst->fragmentation = tmp63__ >> 3 & 0x3; - pDst->max_num_frag_msdu_amsdu_exp = tmp63__ >> 5 & 0x7; - pDst->min_frag_size = tmp63__ >> 8 & 0x3; - pDst->trigger_frm_mac_pad = tmp63__ >> 10 & 0x3; - pDst->multi_tid_aggr_rx_supp = tmp63__ >> 12 & 0x7; - pDst->he_link_adaptation = tmp63__ >> 15 & 0x3; - pDst->all_ack = tmp63__ >> 17 & 0x1; - pDst->trigd_rsp_sched = tmp63__ >> 18 & 0x1; - pDst->a_bsr = tmp63__ >> 19 & 0x1; - pDst->broadcast_twt = tmp63__ >> 20 & 0x1; - pDst->ba_32bit_bitmap = tmp63__ >> 21 & 0x1; - pDst->mu_cascade = tmp63__ >> 22 & 0x1; - pDst->ack_enabled_multitid = tmp63__ >> 23 & 0x1; - pDst->reserved = tmp63__ >> 24 & 0x1; - pDst->omi_a_ctrl = tmp63__ >> 25 & 0x1; - pDst->ofdma_ra = tmp63__ >> 26 & 0x1; - pDst->max_ampdu_len_exp_ext = tmp63__ >> 27 & 0x3; - pDst->amsdu_frag = tmp63__ >> 29 & 0x1; - pDst->flex_twt_sched = tmp63__ >> 30 & 0x1; - pDst->rx_ctrl_frame = tmp63__ >> 31 & 0x1; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &tmp64__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->bsrp_ampdu_aggr = tmp64__ >> 0 & 0x1; - pDst->qtp = tmp64__ >> 1 & 0x1; - pDst->a_bqr = tmp64__ >> 2 & 0x1; - pDst->spatial_reuse_param_rspder = tmp64__ >> 3 & 0x1; - pDst->ndp_feedback_supp = tmp64__ >> 4 & 0x1; - pDst->ops_supp = tmp64__ >> 5 & 0x1; - pDst->amsdu_in_ampdu = tmp64__ >> 6 & 0x1; - pDst->multi_tid_aggr_tx_supp = tmp64__ >> 7 & 0x7; - pDst->he_sub_ch_sel_tx_supp = tmp64__ >> 10 & 0x1; - pDst->ul_2x996_tone_ru_supp = tmp64__ >> 11 & 0x1; - pDst->om_ctrl_ul_mu_data_dis_rx = tmp64__ >> 12 & 0x1; - pDst->he_dynamic_smps = tmp64__ >> 13 & 0x1; - pDst->punctured_sounding_supp = tmp64__ >> 14 & 0x1; - pDst->ht_vht_trg_frm_rx_supp = tmp64__ >> 15 & 0x1; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohl(pCtx, &tmp65__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->reserved2 = tmp65__ >> 0 & 0x1; - pDst->chan_width_0 = tmp65__ >> 1 & 0x1; - pDst->chan_width_1 = tmp65__ >> 2 & 0x1; - pDst->chan_width_2 = tmp65__ >> 3 & 0x1; - pDst->chan_width_3 = tmp65__ >> 4 & 0x1; - pDst->chan_width_4 = tmp65__ >> 5 & 0x1; - pDst->chan_width_5 = tmp65__ >> 6 & 0x1; - pDst->chan_width_6 = tmp65__ >> 7 & 0x1; - pDst->rx_pream_puncturing = tmp65__ >> 8 & 0xf; - pDst->device_class = tmp65__ >> 12 & 0x1; - pDst->ldpc_coding = tmp65__ >> 13 & 0x1; - pDst->he_1x_ltf_800_gi_ppdu = tmp65__ >> 14 & 0x1; - pDst->midamble_tx_rx_max_nsts = tmp65__ >> 15 & 0x3; - pDst->he_4x_ltf_3200_gi_ndp = tmp65__ >> 17 & 0x1; - pDst->tb_ppdu_tx_stbc_lt_80mhz = tmp65__ >> 18 & 0x1; - pDst->rx_stbc_lt_80mhz = tmp65__ >> 19 & 0x1; - pDst->doppler = tmp65__ >> 20 & 0x3; - pDst->ul_mu = tmp65__ >> 22 & 0x3; - pDst->dcm_enc_tx = tmp65__ >> 24 & 0x7; - pDst->dcm_enc_rx = tmp65__ >> 27 & 0x7; - pDst->ul_he_mu = tmp65__ >> 30 & 0x1; - pDst->su_beamformer = tmp65__ >> 31 & 0x1; - if (unlikely(ielen < 4)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohl(pCtx, &tmp66__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->su_beamformee = tmp66__ >> 0 & 0x1; - pDst->mu_beamformer = tmp66__ >> 1 & 0x1; - pDst->bfee_sts_lt_80 = tmp66__ >> 2 & 0x7; - pDst->bfee_sts_gt_80 = tmp66__ >> 5 & 0x7; - pDst->num_sounding_lt_80 = tmp66__ >> 8 & 0x7; - pDst->num_sounding_gt_80 = tmp66__ >> 11 & 0x7; - pDst->su_feedback_tone16 = tmp66__ >> 14 & 0x1; - pDst->mu_feedback_tone16 = tmp66__ >> 15 & 0x1; - pDst->codebook_su = tmp66__ >> 16 & 0x1; - pDst->codebook_mu = tmp66__ >> 17 & 0x1; - pDst->beamforming_feedback = tmp66__ >> 18 & 0x7; - pDst->he_er_su_ppdu = tmp66__ >> 21 & 0x1; - pDst->dl_mu_mimo_part_bw = tmp66__ >> 22 & 0x1; - pDst->ppet_present = tmp66__ >> 23 & 0x1; - pDst->srp = tmp66__ >> 24 & 0x1; - pDst->power_boost = tmp66__ >> 25 & 0x1; - pDst->he_ltf_800_gi_4x = tmp66__ >> 26 & 0x1; - pDst->max_nc = tmp66__ >> 27 & 0x7; - pDst->tb_ppdu_tx_stbc_gt_80mhz = tmp66__ >> 30 & 0x1; - pDst->rx_stbc_gt_80mhz = tmp66__ >> 31 & 0x1; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &tmp67__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->er_he_ltf_800_gi_4x = tmp67__ >> 0 & 0x1; - pDst->he_ppdu_20_in_40Mhz_2G = tmp67__ >> 1 & 0x1; - pDst->he_ppdu_20_in_160_80p80Mhz = tmp67__ >> 2 & 0x1; - pDst->he_ppdu_80_in_160_80p80Mhz = tmp67__ >> 3 & 0x1; - pDst->er_1x_he_ltf_gi = tmp67__ >> 4 & 0x1; - pDst->midamble_tx_rx_1x_he_ltf = tmp67__ >> 5 & 0x1; - pDst->dcm_max_bw = tmp67__ >> 6 & 0x3; - pDst->longer_than_16_he_sigb_ofdm_sym = tmp67__ >> 8 & 0x1; - pDst->non_trig_cqi_feedback = tmp67__ >> 9 & 0x1; - pDst->tx_1024_qam_lt_242_tone_ru = tmp67__ >> 10 & 0x1; - pDst->rx_1024_qam_lt_242_tone_ru = tmp67__ >> 11 & 0x1; - pDst->rx_full_bw_su_he_mu_compress_sigb = tmp67__ >> 12 & 0x1; - pDst->rx_full_bw_su_he_mu_non_cmpr_sigb = tmp67__ >> 13 & 0x1; - pDst->reserved3 = tmp67__ >> 14 & 0x3; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->reserved4 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->rx_he_mcs_map_lt_80, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->tx_he_mcs_map_lt_80, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - if (unlikely(ielen < pDst->chan_width_2 * 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->chan_width_2 > 1) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->rx_he_mcs_map_160, pBuf, (pDst->chan_width_2 * 2)); - pBuf += (pDst->chan_width_2 * 2); - ielen -= (pDst->chan_width_2 * 2); - if (unlikely(ielen < pDst->chan_width_2 * 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->chan_width_2 > 1) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->tx_he_mcs_map_160, pBuf, (pDst->chan_width_2 * 2)); - pBuf += (pDst->chan_width_2 * 2); - ielen -= (pDst->chan_width_2 * 2); - if (unlikely(ielen < pDst->chan_width_3 * 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->chan_width_3 > 1) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->rx_he_mcs_map_80_80, pBuf, (pDst->chan_width_3 * 2)); - pBuf += (pDst->chan_width_3 * 2); - ielen -= (pDst->chan_width_3 * 2); - if (unlikely(ielen < pDst->chan_width_3 * 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - if (pDst->chan_width_3 > 1) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->tx_he_mcs_map_80_80, pBuf, (pDst->chan_width_3 * 2)); - pBuf += (pDst->chan_width_3 * 2); - ielen -= (pDst->chan_width_3 * 2); - switch (pDst->ppet_present) { - case 1: - pDst->ppet.ppe_threshold.num_ppe_th = (uint8_t)(ielen); - if (ielen > 25) { - pDst->present = 0; - return DOT11F_SKIPPED_BAD_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->ppet.ppe_threshold.ppe_th, pBuf, (ielen)); - pBuf += (ielen); - ielen -= (ielen); - break; - } - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_he_cap. */ - -#define SigIehe_cap (0x0036) - - -uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEhe_op *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp68__; - uint8_t tmp69__; - uint8_t tmp70__; - uint8_t tmp71__; - (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, &tmp68__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->default_pe = tmp68__ >> 0 & 0x7; - pDst->twt_required = tmp68__ >> 3 & 0x1; - pDst->txop_rts_threshold = tmp68__ >> 4 & 0x3ff; - pDst->vht_oper_present = tmp68__ >> 14 & 0x1; - pDst->co_located_bss = tmp68__ >> 15 & 0x1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp69__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->er_su_disable = tmp69__ >> 0 & 0x1; - pDst->oper_info_6g_present = tmp69__ >> 1 & 0x1; - pDst->reserved2 = tmp69__ >> 2 & 0x3f; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp70__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->bss_color = tmp70__ >> 0 & 0x3f; - pDst->partial_bss_col = tmp70__ >> 6 & 0x1; - pDst->bss_col_disabled = tmp70__ >> 7 & 0x1; - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->basic_mcs_nss, pBuf, 2); - pBuf += 2; - ielen -= (uint8_t)2; - switch (pDst->vht_oper_present) { - case 1: - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->vht_oper.info.chan_width = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->vht_oper.info.center_freq_seg0 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->vht_oper.info.center_freq_seg1 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - break; - } - switch (pDst->co_located_bss) { - case 1: - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->maxbssid_ind.info.data = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - break; - } - switch (pDst->oper_info_6g_present) { - case 1: - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->oper_info_6g.info.primary_ch = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - tmp71__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->oper_info_6g.info.ch_width = tmp71__ >> 0 & 0x3; - pDst->oper_info_6g.info.dup_bcon = tmp71__ >> 2 & 0x1; - pDst->oper_info_6g.info.reg_info = tmp71__ >> 3 & 0x7; - pDst->oper_info_6g.info.reserved = tmp71__ >> 6 & 0x3; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->oper_info_6g.info.center_freq_seg0 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->oper_info_6g.info.center_freq_seg1 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->oper_info_6g.info.min_rate = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - break; - } - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_he_op. */ - -#define SigIehe_op (0x0037) +#define SigIebeacon_report_frm_body_fragment_id (0x0020) uint32_t dot11f_unpack_ie_last_beacon_report_indication(tpAniSirGlobal pCtx, @@ -5518,7 +3616,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 (0x0038) +#define SigIelast_beacon_report_indication (0x0021) uint32_t dot11f_unpack_ie_max_age(tpAniSirGlobal pCtx, @@ -5542,72 +3640,7 @@ uint32_t dot11f_unpack_ie_max_age(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_max_age. */ -#define SigIemax_age (0x0039) - - -uint32_t dot11f_unpack_ie_max_chan_switch_time(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEmax_chan_switch_time *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 < 3)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->switch_time, pBuf, 3); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_max_chan_switch_time. */ - -#define SigIemax_chan_switch_time (0x003a) - - -uint32_t dot11f_unpack_ie_mlo_capabilities(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEmlo_capabilities *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp72__; - (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, &tmp72__, pBuf, 0); - pDst->ess = tmp72__ >> 0 & 0x1; - pDst->ibss = tmp72__ >> 1 & 0x1; - pDst->cfPollable = tmp72__ >> 2 & 0x1; - pDst->cfPollReq = tmp72__ >> 3 & 0x1; - pDst->privacy = tmp72__ >> 4 & 0x1; - pDst->shortPreamble = tmp72__ >> 5 & 0x1; - pDst->criticalUpdateFlag = tmp72__ >> 6 & 0x1; - pDst->channelAgility = tmp72__ >> 7 & 0x1; - pDst->spectrumMgt = tmp72__ >> 8 & 0x1; - pDst->qos = tmp72__ >> 9 & 0x1; - pDst->shortSlotTime = tmp72__ >> 10 & 0x1; - pDst->apsd = tmp72__ >> 11 & 0x1; - pDst->rrm = tmp72__ >> 12 & 0x1; - pDst->dsssOfdm = tmp72__ >> 13 & 0x1; - pDst->delayedBA = tmp72__ >> 14 & 0x1; - pDst->immediateBA = tmp72__ >> 15 & 0x1; - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_mlo_capabilities. */ - -#define SigIemlo_capabilities (0x003b) +#define SigIemax_age (0x0022) uint32_t dot11f_unpack_ie_mscs_status(tpAniSirGlobal pCtx, @@ -5631,7 +3664,7 @@ uint32_t dot11f_unpack_ie_mscs_status(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_mscs_status. */ -#define SigIemscs_status (0x003c) +#define SigIemscs_status (0x0023) static const tFFDefn FFS_neighbor_rpt[] = { @@ -5668,8 +3701,8 @@ uint32_t dot11f_unpack_ie_neighbor_rpt(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp73__; - uint8_t tmp74__; + uint8_t tmp30__; + uint8_t tmp31__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -5687,28 +3720,28 @@ uint32_t dot11f_unpack_ie_neighbor_rpt(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp73__ = *pBuf; + tmp30__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->APReachability = tmp73__ >> 0 & 0x3; - pDst->Security = tmp73__ >> 2 & 0x1; - pDst->KeyScope = tmp73__ >> 3 & 0x1; - pDst->SpecMgmtCap = tmp73__ >> 4 & 0x1; - pDst->QosCap = tmp73__ >> 5 & 0x1; - pDst->apsd = tmp73__ >> 6 & 0x1; - pDst->rrm = tmp73__ >> 7 & 0x1; + pDst->APReachability = tmp30__ >> 0 & 0x3; + pDst->Security = tmp30__ >> 2 & 0x1; + pDst->KeyScope = tmp30__ >> 3 & 0x1; + pDst->SpecMgmtCap = tmp30__ >> 4 & 0x1; + pDst->QosCap = tmp30__ >> 5 & 0x1; + pDst->apsd = tmp30__ >> 6 & 0x1; + pDst->rrm = tmp30__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp74__ = *pBuf; + tmp31__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->DelayedBA = tmp74__ >> 0 & 0x1; - pDst->ImmBA = tmp74__ >> 1 & 0x1; - pDst->MobilityDomain = tmp74__ >> 2 & 0x1; - pDst->reserved = tmp74__ >> 3 & 0x1f; + pDst->DelayedBA = tmp31__ >> 0 & 0x1; + pDst->ImmBA = tmp31__ >> 1 & 0x1; + pDst->MobilityDomain = tmp31__ >> 2 & 0x1; + pDst->reserved = tmp31__ >> 3 & 0x1f; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -5753,82 +3786,7 @@ uint32_t dot11f_unpack_ie_neighbor_rpt(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_rpt. */ -#define SigIeneighbor_rpt (0x003d) - - -uint32_t dot11f_unpack_ie_non_inheritance(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEnon_inheritance *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; - pDst->num_data = (uint8_t)(ielen); - DOT11F_MEMCPY(pCtx, pDst->data, pBuf, (ielen)); - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_non_inheritance. */ - -#define SigIenon_inheritance (0x003e) - - -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(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(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, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEqcn_ie *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pBuf; (void)ielen; /* Shutup the compiler */ - pDst->present = 1; - 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 (0x003f) +#define SigIeneighbor_rpt (0x0024) uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, @@ -5852,116 +3810,9 @@ uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_req_mac_addr. */ -#define SigIereq_mac_addr (0x0040) +#define SigIereq_mac_addr (0x0025) -static const tFFDefn FFS_sta_profile[] = { - { NULL, 0, 0, 0,}, -}; - -static const tIEDefn IES_sta_profile[] = { - { offsetof(tDot11fIEsta_profile, mlo_capabilities), - offsetof(tDot11fIEmlo_capabilities, present), 0, "mlo_capabilities", - 0, 4, 4, SigIemlo_capabilities, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_MLO_CAPABILITIES, 0, 0, }, - { offsetof(tDot11fIEsta_profile, SuppRates), offsetof(tDot11fIESuppRates, - present), 0, "SuppRates", 0, 2, 14, SigIeSuppRates, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_SUPPRATES, 0, 1, }, - { offsetof(tDot11fIEsta_profile, ExtSuppRates), - offsetof(tDot11fIEExtSuppRates, present), 0, "ExtSuppRates", - 0, 3, 14, SigIeExtSuppRates, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_EXTSUPPRATES, 0, 0, }, - { offsetof(tDot11fIEsta_profile, SuppOperatingClasses), - offsetof(tDot11fIESuppOperatingClasses, present), 0, - "SuppOperatingClasses", 0, 3, 34, SigIeSuppOperatingClasses, - {0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, 0, }, - { offsetof(tDot11fIEsta_profile, WPA), offsetof(tDot11fIEWPA, present), 0, - "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, }, - { offsetof(tDot11fIEsta_profile, ChanSwitchAnn), - offsetof(tDot11fIEChanSwitchAnn, present), 0, "ChanSwitchAnn", - 0, 5, 5, SigIeChanSwitchAnn, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_CHANSWITCHANN, 0, 0, }, - { offsetof(tDot11fIEsta_profile, Quiet), offsetof(tDot11fIEQuiet, - present), 0, "Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_QUIET, 0, 0, }, - { offsetof(tDot11fIEsta_profile, ext_chan_switch_ann), - offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann", - 0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, 0, }, - { offsetof(tDot11fIEsta_profile, RSN), offsetof(tDot11fIERSN, present), 0, - "RSN", 0, 4, 132, SigIeRSN, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RSN, 0, 0, }, - { offsetof(tDot11fIEsta_profile, EDCAParamSet), - offsetof(tDot11fIEEDCAParamSet, present), 0, "EDCAParamSet", - 0, 20, 20, SigIeEDCAParamSet, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_EDCAPARAMSET, 0, 0, }, - { offsetof(tDot11fIEsta_profile, P2PAssocRes), - offsetof(tDot11fIEP2PAssocRes, present), 0, "P2PAssocRes", - 0, 6, 17, SigIeP2PAssocRes, {80, 111, 154, 9, 0}, - 4, DOT11F_EID_P2PASSOCRES, 0, 0, }, - { offsetof(tDot11fIEsta_profile, HTCaps), offsetof(tDot11fIEHTCaps, - present), 0, "HTCaps", 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_HTCAPS, 0, 0, }, - { offsetof(tDot11fIEsta_profile, HTInfo), offsetof(tDot11fIEHTInfo, - present), 0, "HTInfo", 0, 24, 56, SigIeHTInfo, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_HTINFO, 0, 0, }, - { offsetof(tDot11fIEsta_profile, WMMParams), offsetof(tDot11fIEWMMParams, - present), 0, "WMMParams", 0, 26, 26, SigIeWMMParams, {0, 80, 242, 2, 1}, - 5, DOT11F_EID_WMMPARAMS, 0, 0, }, - { offsetof(tDot11fIEsta_profile, WMMCaps), offsetof(tDot11fIEWMMCaps, - present), 0, "WMMCaps", 0, 9, 9, SigIeWMMCaps, {0, 80, 242, 2, 5}, - 5, DOT11F_EID_WMMCAPS, 0, 0, }, - { offsetof(tDot11fIEsta_profile, WMMInfoStation), - offsetof(tDot11fIEWMMInfoStation, present), 0, "WMMInfoStation", - 0, 9, 9, SigIeWMMInfoStation, {0, 80, 242, 2, 0}, - 5, DOT11F_EID_WMMINFOSTATION, 0, 0, }, - { offsetof(tDot11fIEsta_profile, VHTCaps), offsetof(tDot11fIEVHTCaps, - present), 0, "VHTCaps", 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_VHTCAPS, 0, 0, }, - { offsetof(tDot11fIEsta_profile, VHTOperation), - offsetof(tDot11fIEVHTOperation, present), 0, "VHTOperation", - 0, 7, 7, SigIeVHTOperation, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_VHTOPERATION, 0, 0, }, - { offsetof(tDot11fIEsta_profile, ExtCap), offsetof(tDot11fIEExtCap, - present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_EXTCAP, 0, 0, }, - { offsetof(tDot11fIEsta_profile, OperatingMode), - offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode", - 0, 3, 3, SigIeOperatingMode, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_OPERATINGMODE, 0, 0, }, - { offsetof(tDot11fIEsta_profile, fils_indication), - offsetof(tDot11fIEfils_indication, present), 0, "fils_indication", - 0, 6, 259, SigIefils_indication, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_FILS_INDICATION, 0, 0, }, - { offsetof(tDot11fIEsta_profile, qcn_ie), offsetof(tDot11fIEqcn_ie, - present), 0, "qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0}, - 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fIEsta_profile, he_cap), offsetof(tDot11fIEhe_cap, - present), 0, "he_cap", 0, 23, 56, SigIehe_cap, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_HE_CAP, 35, 0, }, - { offsetof(tDot11fIEsta_profile, he_op), offsetof(tDot11fIEhe_op, - present), 0, "he_op", 0, 8, 17, SigIehe_op, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_HE_OP, 36, 0, }, - { offsetof(tDot11fIEsta_profile, he_6ghz_band_cap), - offsetof(tDot11fIEhe_6ghz_band_cap, present), 0, "he_6ghz_band_cap", - 0, 4, 4, SigIehe_6ghz_band_cap, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_HE_6GHZ_BAND_CAP, 59, 0, }, - { offsetof(tDot11fIEsta_profile, eht_cap), offsetof(tDot11fIEeht_cap, - present), 0, "eht_cap", 0, 12, 87, SigIeeht_cap, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_EHT_CAP, 108, 0, }, - { offsetof(tDot11fIEsta_profile, eht_op), offsetof(tDot11fIEeht_op, - present), 0, "eht_op", 0, 9, 9, SigIeeht_op, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_EHT_OP, 106, 0, }, - { offsetof(tDot11fIEsta_profile, max_chan_switch_time), - offsetof(tDot11fIEmax_chan_switch_time, present), 0, - "max_chan_switch_time", 0, 5, 5, SigIemax_chan_switch_time, - {0, 0, 0, 0, 0}, 0, DOT11F_EID_MAX_CHAN_SWITCH_TIME, 52, 0, }, - { offsetof(tDot11fIEsta_profile, non_inheritance), - offsetof(tDot11fIEnon_inheritance, present), 0, "non_inheritance", - 0, 2, 257, SigIenon_inheritance, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_NON_INHERITANCE, 56, 0, }, - {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, -}; - uint32_t dot11f_unpack_ie_sta_profile(tpAniSirGlobal pCtx, uint8_t *pBuf, uint8_t ielen, @@ -5969,112 +3820,17 @@ uint32_t dot11f_unpack_ie_sta_profile(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp75__; (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, &tmp75__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->link_id = tmp75__ >> 0 & 0xf; - pDst->complete_profile = tmp75__ >> 4 & 0x1; - pDst->sta_mac_addr_present = tmp75__ >> 5 & 0x1; - pDst->beacon_interval_present = tmp75__ >> 6 & 0x1; - pDst->dtim_info_present = tmp75__ >> 7 & 0x1; - pDst->nstr_link_pair_present = tmp75__ >> 8 & 0x1; - pDst->nstr_bitmap_size = tmp75__ >> 9 & 0x1; - pDst->reserved = tmp75__ >> 10 & 0x3f; - if (!ielen) { - return 0U; - } else { - switch (pDst->sta_mac_addr_present) { - case 1: - if (unlikely(ielen < 6)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - DOT11F_MEMCPY(pCtx, pDst->sta_mac_addr.info.sta_mac_addr, pBuf, 6); - pBuf += 6; - ielen -= (uint8_t)6; - break; - } - } - if (!ielen) { - return 0U; - } else { - switch (pDst->beacon_interval_present) { - case 1: - if (unlikely(ielen < 2)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - framesntohs(pCtx, &pDst->beacon_interval.info.beacon_interval, pBuf, 0); - pBuf += 2; - ielen -= (uint8_t)2; - break; - } - } - if (!ielen) { - return 0U; - } else { - switch (pDst->dtim_info_present) { - case 1: - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->dtim_info.info.dtim_count = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->dtim_info.info.dtim_period = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - break; - } - } - if (!ielen) { - return 0U; - } else { - switch (pDst->nstr_link_pair_present) { - case 1: - if (unlikely(ielen < 1)) { - pDst->present = 0; - return DOT11F_INCOMPLETE_IE; - } - - pDst->nstr_link_pair.info.nstr_link_pair_num = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - break; - } - } + pDst->num_data = (uint8_t)(ielen); + DOT11F_MEMCPY(pCtx, pDst->data, pBuf, (ielen)); (void)pCtx; - status |= unpack_core(pCtx, - pBuf, - ielen, - FFS_sta_profile, - IES_sta_profile, - (uint8_t *)pDst, - sizeof(*pDst), - append_ie); return status; } /* End dot11f_unpack_ie_sta_profile. */ -#define SigIesta_profile (0x0041) +#define SigIesta_profile (0x0026) uint32_t dot11f_unpack_ie_tclas_mask(tpAniSirGlobal pCtx, @@ -6120,7 +3876,7 @@ uint32_t dot11f_unpack_ie_tclas_mask(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tclas_mask. */ -#define SigIetclas_mask (0x0042) +#define SigIetclas_mask (0x0027) uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, @@ -6144,7 +3900,7 @@ uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tgt_mac_addr. */ -#define SigIetgt_mac_addr (0x0043) +#define SigIetgt_mac_addr (0x0028) uint32_t dot11f_unpack_ie_transmit_power_env(tpAniSirGlobal pCtx, @@ -6154,7 +3910,7 @@ uint32_t dot11f_unpack_ie_transmit_power_env(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp76__; + uint8_t tmp32__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -6164,12 +3920,12 @@ uint32_t dot11f_unpack_ie_transmit_power_env(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp76__ = *pBuf; + tmp32__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->max_tx_pwr_count = tmp76__ >> 0 & 0x7; - pDst->max_tx_pwr_interpret = tmp76__ >> 3 & 0x7; - pDst->max_tx_pwr_category = tmp76__ >> 6 & 0x3; + pDst->max_tx_pwr_count = tmp32__ >> 0 & 0x7; + pDst->max_tx_pwr_interpret = tmp32__ >> 3 & 0x7; + pDst->max_tx_pwr_category = tmp32__ >> 6 & 0x3; pDst->num_tx_power = (uint8_t)(ielen); if (ielen > 8) { pDst->present = 0; @@ -6181,7 +3937,7 @@ uint32_t dot11f_unpack_ie_transmit_power_env(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_transmit_power_env. */ -#define SigIetransmit_power_env (0x0044) +#define SigIetransmit_power_env (0x0029) uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, @@ -6205,7 +3961,7 @@ uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_aid. */ -#define SigIeAID (0x0045) +#define SigIeAID (0x002a) uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, @@ -6253,7 +4009,7 @@ uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_cf_params. */ -#define SigIeCFParams (0x0046) +#define SigIeCFParams (0x002b) uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, @@ -6278,7 +4034,47 @@ uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_challenge_text. */ -#define SigIeChallengeText (0x0047) +#define SigIeChallengeText (0x002c) + + +uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEChanSwitchAnn *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->switchMode = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->newChannel = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->switchCount = *pBuf; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_chan_switch_ann. */ + +#define SigIeChanSwitchAnn (0x002d) static const tFFDefn FFS_ChannelSwitchWrapper[] = { @@ -6320,7 +4116,7 @@ uint32_t dot11f_unpack_ie_channel_switch_wrapper(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_channel_switch_wrapper. */ -#define SigIeChannelSwitchWrapper (0x0048) +#define SigIeChannelSwitchWrapper (0x002e) uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, @@ -6366,20 +4162,27 @@ uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_country. */ -#define SigIeCountry (0x0049) +#define SigIeCountry (0x002f) -#define SigIeDSParams (0x004a) +#define SigIeDSParams (0x0030) -uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint8_t ielen, - tDot11fIEERPInfo *pDst, - bool append_ie) +uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEEDCAParamSet *pDst, + bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp77__; + uint8_t tmp33__; + uint8_t tmp34__; + uint8_t tmp35__; + uint8_t tmp36__; + uint8_t tmp37__; + uint8_t tmp38__; + uint8_t tmp39__; + uint8_t tmp40__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -6389,16 +4192,169 @@ uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp77__ = *pBuf; - pDst->non_erp_present = tmp77__ >> 0 & 0x1; - pDst->use_prot = tmp77__ >> 1 & 0x1; - pDst->barker_preamble = tmp77__ >> 2 & 0x1; - pDst->unused = tmp77__ >> 3 & 0x1f; + pDst->qos = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->reserved = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp33__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbe_aifsn = tmp33__ >> 0 & 0xf; + pDst->acbe_acm = tmp33__ >> 4 & 0x1; + pDst->acbe_aci = tmp33__ >> 5 & 0x3; + pDst->unused1 = tmp33__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp34__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbe_acwmin = tmp34__ >> 0 & 0xf; + pDst->acbe_acwmax = tmp34__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acbe_txoplimit, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp35__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbk_aifsn = tmp35__ >> 0 & 0xf; + pDst->acbk_acm = tmp35__ >> 4 & 0x1; + pDst->acbk_aci = tmp35__ >> 5 & 0x3; + pDst->unused2 = tmp35__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp36__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbk_acwmin = tmp36__ >> 0 & 0xf; + pDst->acbk_acwmax = tmp36__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acbk_txoplimit, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp37__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvi_aifsn = tmp37__ >> 0 & 0xf; + pDst->acvi_acm = tmp37__ >> 4 & 0x1; + pDst->acvi_aci = tmp37__ >> 5 & 0x3; + pDst->unused3 = tmp37__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp38__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvi_acwmin = tmp38__ >> 0 & 0xf; + pDst->acvi_acwmax = tmp38__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acvi_txoplimit, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp39__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvo_aifsn = tmp39__ >> 0 & 0xf; + pDst->acvo_acm = tmp39__ >> 4 & 0x1; + pDst->acvo_aci = tmp39__ >> 5 & 0x3; + pDst->unused4 = tmp39__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp40__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvo_acwmin = tmp40__ >> 0 & 0xf; + pDst->acvo_acwmax = tmp40__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acvo_txoplimit, pBuf, 0); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_edca_param_set. */ + +#define SigIeEDCAParamSet (0x0031) + + +uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEERPInfo *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp41__; + (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; + } + + tmp41__ = *pBuf; + pDst->non_erp_present = tmp41__ >> 0 & 0x1; + pDst->use_prot = tmp41__ >> 1 & 0x1; + pDst->barker_preamble = tmp41__ >> 2 & 0x1; + pDst->unused = tmp41__ >> 3 & 0x1f; (void)pCtx; return status; } /* End dot11f_unpack_ie_erp_info. */ -#define SigIeERPInfo (0x004b) +#define SigIeERPInfo (0x0032) uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, @@ -6423,7 +4379,7 @@ uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_cckm_opaque. */ -#define SigIeESECckmOpaque (0x004c) +#define SigIeESECckmOpaque (0x0033) uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, @@ -6433,7 +4389,7 @@ uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp78__; + uint8_t tmp42__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -6451,14 +4407,14 @@ uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp78__ = *pBuf; - pDst->mbssid_mask = tmp78__ >> 0 & 0x7; - pDst->reserved = tmp78__ >> 3 & 0x1f; + tmp42__ = *pBuf; + pDst->mbssid_mask = tmp42__ >> 0 & 0x7; + pDst->reserved = tmp42__ >> 3 & 0x1f; (void)pCtx; return status; } /* End dot11f_unpack_ie_ese_rad_mgmt_cap. */ -#define SigIeESERadMgmtCap (0x004d) +#define SigIeESERadMgmtCap (0x0034) uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, @@ -6498,7 +4454,7 @@ uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_traf_strm_met. */ -#define SigIeESETrafStrmMet (0x004e) +#define SigIeESETrafStrmMet (0x0035) uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(tpAniSirGlobal pCtx, @@ -6531,7 +4487,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 (0x004f) +#define SigIeESETrafStrmRateSet (0x0036) uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, @@ -6563,7 +4519,7 @@ uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_txmit_power. */ -#define SigIeESETxmitPower (0x0050) +#define SigIeESETxmitPower (0x0037) uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, @@ -6587,7 +4543,70 @@ uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_version. */ -#define SigIeESEVersion (0x0051) +#define SigIeESEVersion (0x0038) + + +uint32_t dot11f_unpack_ie_ext_cap(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEExtCap *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 (!ielen) /* Check to ensure copying of ielen bytes */ + goto endUnpackIeExtCap; + pDst->num_bytes = (uint8_t)(ielen); + if (ielen > 15) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->bytes, pBuf, (ielen)); + +endUnpackIeExtCap: + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_ext_cap. */ + +#define SigIeExtCap (0x0039) + + +uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEExtSuppRates *pDst, + bool append_ie) +{ + uint8_t i; + uint8_t rate_indx = 0; + uint32_t status = DOT11F_PARSE_SUCCESS; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + return DOT11F_DUPLICATE_IE; + pDst->present = 1; + for (i = 0; i < ielen; i++) { + if ((DOT11F_IS_BG_RATE(pBuf[i] & 0x7F)) && + (rate_indx < 12)) { + pDst->rates[rate_indx++] = pBuf[i]; + } + } + + if (rate_indx == 0) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + pDst->num_rates = rate_indx; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_ext_supp_rates. */ + +#define SigIeExtSuppRates (0x003a) uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, @@ -6635,7 +4654,7 @@ uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_param_set. */ -#define SigIeFHParamSet (0x0052) +#define SigIeFHParamSet (0x003b) uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, @@ -6667,7 +4686,7 @@ uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_params. */ -#define SigIeFHParams (0x0053) +#define SigIeFHParams (0x003c) uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, @@ -6724,7 +4743,7 @@ uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_patt_table. */ -#define SigIeFHPattTable (0x0054) +#define SigIeFHPattTable (0x003d) static const tFFDefn FFS_FTInfo[] = { @@ -6753,7 +4772,7 @@ uint32_t dot11f_unpack_ie_ft_info(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp79__; + uint16_t tmp43__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -6763,11 +4782,11 @@ uint32_t dot11f_unpack_ie_ft_info(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp79__, pBuf, 0); + framesntohs(pCtx, &tmp43__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->reserved = tmp79__ >> 0 & 0xff; - pDst->IECount = tmp79__ >> 8 & 0xff; + pDst->reserved = tmp43__ >> 0 & 0xff; + pDst->IECount = tmp43__ >> 8 & 0xff; if (unlikely(ielen < 16)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -6804,7 +4823,217 @@ uint32_t dot11f_unpack_ie_ft_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ft_info. */ -#define SigIeFTInfo (0x0055) +#define SigIeFTInfo (0x003e) + + +uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEHTCaps *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint16_t tmp44__; + uint8_t tmp45__; + uint16_t tmp46__; + uint32_t tmp47__; + uint8_t tmp48__; + (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, &tmp44__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->advCodingCap = tmp44__ >> 0 & 0x1; + pDst->supportedChannelWidthSet = tmp44__ >> 1 & 0x1; + pDst->mimoPowerSave = tmp44__ >> 2 & 0x3; + pDst->greenField = tmp44__ >> 4 & 0x1; + pDst->shortGI20MHz = tmp44__ >> 5 & 0x1; + pDst->shortGI40MHz = tmp44__ >> 6 & 0x1; + pDst->txSTBC = tmp44__ >> 7 & 0x1; + pDst->rxSTBC = tmp44__ >> 8 & 0x3; + pDst->delayedBA = tmp44__ >> 10 & 0x1; + pDst->maximalAMSDUsize = tmp44__ >> 11 & 0x1; + pDst->dsssCckMode40MHz = tmp44__ >> 12 & 0x1; + pDst->psmp = tmp44__ >> 13 & 0x1; + pDst->stbcControlFrame = tmp44__ >> 14 & 0x1; + pDst->lsigTXOPProtection = tmp44__ >> 15 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp45__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->maxRxAMPDUFactor = tmp45__ >> 0 & 0x3; + pDst->mpduDensity = tmp45__ >> 2 & 0x7; + pDst->reserved1 = tmp45__ >> 5 & 0x7; + if (unlikely(ielen < 16)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->supportedMCSSet, pBuf, 16); + pBuf += 16; + ielen -= (uint8_t)16; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &tmp46__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->pco = tmp46__ >> 0 & 0x1; + pDst->transitionTime = tmp46__ >> 1 & 0x3; + pDst->reserved2 = tmp46__ >> 3 & 0x1f; + pDst->mcsFeedback = tmp46__ >> 8 & 0x3; + pDst->reserved3 = tmp46__ >> 10 & 0x3f; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohl(pCtx, &tmp47__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->txBF = tmp47__ >> 0 & 0x1; + pDst->rxStaggeredSounding = tmp47__ >> 1 & 0x1; + pDst->txStaggeredSounding = tmp47__ >> 2 & 0x1; + pDst->rxZLF = tmp47__ >> 3 & 0x1; + pDst->txZLF = tmp47__ >> 4 & 0x1; + pDst->implicitTxBF = tmp47__ >> 5 & 0x1; + pDst->calibration = tmp47__ >> 6 & 0x3; + pDst->explicitCSITxBF = tmp47__ >> 8 & 0x1; + pDst->explicitUncompressedSteeringMatrix = tmp47__ >> 9 & 0x1; + pDst->explicitBFCSIFeedback = tmp47__ >> 10 & 0x7; + pDst->explicitUncompressedSteeringMatrixFeedback = tmp47__ >> 13 & 0x7; + pDst->explicitCompressedSteeringMatrixFeedback = tmp47__ >> 16 & 0x7; + pDst->csiNumBFAntennae = tmp47__ >> 19 & 0x3; + pDst->uncompressedSteeringMatrixBFAntennae = tmp47__ >> 21 & 0x3; + pDst->compressedSteeringMatrixBFAntennae = tmp47__ >> 23 & 0x3; + pDst->reserved4 = tmp47__ >> 25 & 0x7f; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp48__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->antennaSelection = tmp48__ >> 0 & 0x1; + pDst->explicitCSIFeedbackTx = tmp48__ >> 1 & 0x1; + pDst->antennaIndicesFeedbackTx = tmp48__ >> 2 & 0x1; + pDst->explicitCSIFeedback = tmp48__ >> 3 & 0x1; + pDst->antennaIndicesFeedback = tmp48__ >> 4 & 0x1; + pDst->rxAS = tmp48__ >> 5 & 0x1; + pDst->txSoundingPPDUs = tmp48__ >> 6 & 0x1; + pDst->reserved5 = tmp48__ >> 7 & 0x1; + pDst->num_rsvd = (uint8_t)(ielen); + if (ielen > 32) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->rsvd, pBuf, (ielen)); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_ht_caps. */ + +#define SigIeHTCaps (0x003f) + + +uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEHTInfo *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp49__; + uint16_t tmp50__; + uint16_t tmp51__; + (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->primaryChannel = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp49__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->secondaryChannelOffset = tmp49__ >> 0 & 0x3; + pDst->recommendedTxWidthSet = tmp49__ >> 2 & 0x1; + pDst->rifsMode = tmp49__ >> 3 & 0x1; + pDst->controlledAccessOnly = tmp49__ >> 4 & 0x1; + pDst->serviceIntervalGranularity = tmp49__ >> 5 & 0x7; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &tmp50__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->opMode = tmp50__ >> 0 & 0x3; + pDst->nonGFDevicesPresent = tmp50__ >> 2 & 0x1; + pDst->transmitBurstLimit = tmp50__ >> 3 & 0x1; + pDst->obssNonHTStaPresent = tmp50__ >> 4 & 0x1; + pDst->chan_center_freq_seg2 = tmp50__ >> 5 & 0xff; + pDst->reserved = tmp50__ >> 13 & 0x7; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &tmp51__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->basicSTBCMCS = tmp51__ >> 0 & 0x7f; + pDst->dualCTSProtection = tmp51__ >> 7 & 0x1; + pDst->secondaryBeacon = tmp51__ >> 8 & 0x1; + pDst->lsigTXOPProtectionFullSupport = tmp51__ >> 9 & 0x1; + pDst->pcoActive = tmp51__ >> 10 & 0x1; + pDst->pcoPhase = tmp51__ >> 11 & 0x1; + pDst->reserved2 = tmp51__ >> 12 & 0xf; + if (unlikely(ielen < 16)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->basicMCSSet, pBuf, 16); + pBuf += 16; + ielen -= (uint8_t)16; + pDst->num_rsvd = (uint8_t)(ielen); + if (ielen > 32) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->rsvd, pBuf, (ielen)); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_ht_info. */ + +#define SigIeHTInfo (0x0040) uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, @@ -6844,7 +5073,7 @@ uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_link_identifier. */ -#define SigIeLinkIdentifier (0x0056) +#define SigIeLinkIdentifier (0x0041) static const tTLVDefn TLVS_MBO_IE[] = { @@ -6907,7 +5136,7 @@ uint32_t dot11f_unpack_ie_MBO_IE(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_MBO_IE. */ -#define SigIeMBO_IE (0x0057) +#define SigIeMBO_IE (0x0042) static const tFFDefn FFS_reportBeacon[] = { @@ -6942,9 +5171,9 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp80__; - uint8_t tmp81__; - uint8_t tmp82__; + uint8_t tmp52__; + uint8_t tmp53__; + uint8_t tmp54__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -6962,13 +5191,13 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp80__ = *pBuf; + tmp52__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->late = tmp80__ >> 0 & 0x1; - pDst->incapable = tmp80__ >> 1 & 0x1; - pDst->refused = tmp80__ >> 2 & 0x1; - pDst->unused = tmp80__ >> 3 & 0x1f; + pDst->late = tmp52__ >> 0 & 0x1; + pDst->incapable = tmp52__ >> 1 & 0x1; + pDst->refused = tmp52__ >> 2 & 0x1; + pDst->unused = tmp52__ >> 3 & 0x1f; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -7011,15 +5240,15 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp81__ = *pBuf; + tmp53__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->report.Basic.bss = tmp81__ >> 0 & 0x1; - pDst->report.Basic.ofdm_preamble = tmp81__ >> 1 & 0x1; - pDst->report.Basic.unid_signal = tmp81__ >> 2 & 0x1; - pDst->report.Basic.rader = tmp81__ >> 3 & 0x1; - pDst->report.Basic.unmeasured = tmp81__ >> 4 & 0x1; - pDst->report.Basic.unused = tmp81__ >> 5 & 0x7; + pDst->report.Basic.bss = tmp53__ >> 0 & 0x1; + pDst->report.Basic.ofdm_preamble = tmp53__ >> 1 & 0x1; + pDst->report.Basic.unid_signal = tmp53__ >> 2 & 0x1; + pDst->report.Basic.rader = tmp53__ >> 3 & 0x1; + pDst->report.Basic.unmeasured = tmp53__ >> 4 & 0x1; + pDst->report.Basic.unused = tmp53__ >> 5 & 0x7; break; case 1: if (unlikely(ielen < 1)) { @@ -7183,11 +5412,11 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp82__ = *pBuf; + tmp54__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->report.Beacon.condensed_PHY = tmp82__ >> 0 & 0x7f; - pDst->report.Beacon.reported_frame_type = tmp82__ >> 7 & 0x1; + pDst->report.Beacon.condensed_PHY = tmp54__ >> 0 & 0x7f; + pDst->report.Beacon.reported_frame_type = tmp54__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -7242,7 +5471,7 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_report. */ -#define SigIeMeasurementReport (0x0058) +#define SigIeMeasurementReport (0x0043) static const tFFDefn FFS_measurement_requestBeacon[] = { @@ -7328,7 +5557,7 @@ uint32_t dot11f_unpack_ie_measurement_request(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp83__; + uint8_t tmp55__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -7346,15 +5575,15 @@ uint32_t dot11f_unpack_ie_measurement_request(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp83__ = *pBuf; + tmp55__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->parallel = tmp83__ >> 0 & 0x1; - pDst->enable = tmp83__ >> 1 & 0x1; - pDst->request = tmp83__ >> 2 & 0x1; - pDst->report = tmp83__ >> 3 & 0x1; - pDst->durationMandatory = tmp83__ >> 4 & 0x1; - pDst->unused = tmp83__ >> 5 & 0x7; + pDst->parallel = tmp55__ >> 0 & 0x1; + pDst->enable = tmp55__ >> 1 & 0x1; + pDst->request = tmp55__ >> 2 & 0x1; + pDst->report = tmp55__ >> 3 & 0x1; + pDst->durationMandatory = tmp55__ >> 4 & 0x1; + pDst->unused = tmp55__ >> 5 & 0x7; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -7546,7 +5775,7 @@ uint32_t dot11f_unpack_ie_measurement_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_request. */ -#define SigIeMeasurementRequest (0x0059) +#define SigIeMeasurementRequest (0x0044) uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, @@ -7556,7 +5785,7 @@ uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp84__; + uint8_t tmp56__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -7574,15 +5803,15 @@ uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp84__ = *pBuf; - pDst->overDSCap = tmp84__ >> 0 & 0x1; - pDst->resourceReqCap = tmp84__ >> 1 & 0x1; - pDst->reserved = tmp84__ >> 2 & 0x3f; + tmp56__ = *pBuf; + pDst->overDSCap = tmp56__ >> 0 & 0x1; + pDst->resourceReqCap = tmp56__ >> 1 & 0x1; + pDst->reserved = tmp56__ >> 2 & 0x3f; (void)pCtx; return status; } /* End dot11f_unpack_ie_mobility_domain. */ -#define SigIeMobilityDomain (0x005a) +#define SigIeMobilityDomain (0x0045) static const tFFDefn FFS_NeighborReport[] = { @@ -7619,8 +5848,8 @@ uint32_t dot11f_unpack_ie_neighbor_report(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp85__; - uint8_t tmp86__; + uint8_t tmp57__; + uint8_t tmp58__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -7638,28 +5867,28 @@ uint32_t dot11f_unpack_ie_neighbor_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp85__ = *pBuf; + tmp57__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->APReachability = tmp85__ >> 0 & 0x3; - pDst->Security = tmp85__ >> 2 & 0x1; - pDst->KeyScope = tmp85__ >> 3 & 0x1; - pDst->SpecMgmtCap = tmp85__ >> 4 & 0x1; - pDst->QosCap = tmp85__ >> 5 & 0x1; - pDst->apsd = tmp85__ >> 6 & 0x1; - pDst->rrm = tmp85__ >> 7 & 0x1; + pDst->APReachability = tmp57__ >> 0 & 0x3; + pDst->Security = tmp57__ >> 2 & 0x1; + pDst->KeyScope = tmp57__ >> 3 & 0x1; + pDst->SpecMgmtCap = tmp57__ >> 4 & 0x1; + pDst->QosCap = tmp57__ >> 5 & 0x1; + pDst->apsd = tmp57__ >> 6 & 0x1; + pDst->rrm = tmp57__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp86__ = *pBuf; + tmp58__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->DelayedBA = tmp86__ >> 0 & 0x1; - pDst->ImmBA = tmp86__ >> 1 & 0x1; - pDst->MobilityDomain = tmp86__ >> 2 & 0x1; - pDst->reserved = tmp86__ >> 3 & 0x1f; + pDst->DelayedBA = tmp58__ >> 0 & 0x1; + pDst->ImmBA = tmp58__ >> 1 & 0x1; + pDst->MobilityDomain = tmp58__ >> 2 & 0x1; + pDst->reserved = tmp58__ >> 3 & 0x1f; if (unlikely(ielen < 2)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -7704,7 +5933,7 @@ uint32_t dot11f_unpack_ie_neighbor_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_report. */ -#define SigIeNeighborReport (0x005b) +#define SigIeNeighborReport (0x0046) uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, @@ -7776,7 +6005,37 @@ uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_obss_scan_parameters. */ -#define SigIeOBSSScanParameters (0x005c) +#define SigIeOBSSScanParameters (0x0047) + + +uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEOperatingMode *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp59__; + (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; + } + + tmp59__ = *pBuf; + pDst->chanWidth = tmp59__ >> 0 & 0x3; + pDst->vht_160_80p80_supp = tmp59__ >> 2 & 0x1; + pDst->no_ldpc = tmp59__ >> 3 & 0x1; + pDst->rxNSS = tmp59__ >> 4 & 0x7; + pDst->rxNSSType = tmp59__ >> 7 & 0x1; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_operating_mode. */ + +#define SigIeOperatingMode (0x0048) static const tTLVDefn TLVS_P2PAssocReq[] = { @@ -7808,7 +6067,36 @@ uint32_t dot11f_unpack_ie_p2_p_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_assoc_req. */ -#define SigIeP2PAssocReq (0x005d) +#define SigIeP2PAssocReq (0x0049) + + +static const tTLVDefn TLVS_P2PAssocRes[] = { + { offsetof(tDot11fIEP2PAssocRes, P2PStatus), + offsetof(tDot11fTLVP2PStatus, present), "P2PStatus", SigTlvP2PStatus, + DOT11F_TLV_P2PSTATUS, 0, 4, 4, 1, 1, 2, 0, }, + { offsetof(tDot11fIEP2PAssocRes, ExtendedListenTiming), + offsetof(tDot11fTLVExtendedListenTiming, present), + "ExtendedListenTiming", SigTlvExtendedListenTiming, + DOT11F_TLV_EXTENDEDLISTENTIMING, 0, 7, 7, 0, 1, 2, 0, }, + {0, 0, NULL, 0, 0xffff, 0, 0, 0, 0, 0, 0}, +}; + +uint32_t dot11f_unpack_ie_p2_p_assoc_res(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEP2PAssocRes *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pBuf; (void)ielen; /* Shutup the compiler */ + pDst->present = 1; + status = unpack_tlv_core(pCtx, pBuf, ielen, + TLVS_P2PAssocRes, + (uint8_t *)pDst, sizeof(*pDst)); + return status; +} /* End dot11f_unpack_ie_p2_p_assoc_res. */ + +#define SigIeP2PAssocRes (0x004a) static const tTLVDefn TLVS_P2PBeacon[] = { @@ -7840,7 +6128,7 @@ uint32_t dot11f_unpack_ie_p2_p_beacon(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_beacon. */ -#define SigIeP2PBeacon (0x005e) +#define SigIeP2PBeacon (0x004b) static const tTLVDefn TLVS_P2PBeaconProbeRes[] = { @@ -7882,7 +6170,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 (0x005f) +#define SigIeP2PBeaconProbeRes (0x004c) static const tTLVDefn TLVS_P2PDeAuth[] = { @@ -7908,7 +6196,7 @@ uint32_t dot11f_unpack_ie_p2_p_de_auth(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_de_auth. */ -#define SigIeP2PDeAuth (0x0060) +#define SigIeP2PDeAuth (0x004d) static const tTLVDefn TLVS_P2PDisAssoc[] = { @@ -7934,7 +6222,7 @@ uint32_t dot11f_unpack_ie_p2_p_dis_assoc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_dis_assoc. */ -#define SigIeP2PDisAssoc (0x0061) +#define SigIeP2PDisAssoc (0x004e) uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx, @@ -7959,7 +6247,7 @@ uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_pie_opaque. */ -#define SigIeP2PIEOpaque (0x0062) +#define SigIeP2PIEOpaque (0x004f) static const tTLVDefn TLVS_P2PProbeReq[] = { @@ -7998,7 +6286,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_probe_req. */ -#define SigIeP2PProbeReq (0x0063) +#define SigIeP2PProbeReq (0x0050) static const tTLVDefn TLVS_P2PProbeRes[] = { @@ -8037,7 +6325,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_probe_res. */ -#define SigIeP2PProbeRes (0x0064) +#define SigIeP2PProbeRes (0x0051) uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, @@ -8069,7 +6357,7 @@ uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_pti_control. */ -#define SigIePTIControl (0x0065) +#define SigIePTIControl (0x0052) uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, @@ -8079,7 +6367,7 @@ uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp87__; + uint8_t tmp60__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -8089,17 +6377,17 @@ uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp87__ = *pBuf; - pDst->ac_bk_traffic_aval = tmp87__ >> 0 & 0x1; - pDst->ac_be_traffic_aval = tmp87__ >> 1 & 0x1; - pDst->ac_vi_traffic_aval = tmp87__ >> 2 & 0x1; - pDst->ac_vo_traffic_aval = tmp87__ >> 3 & 0x1; - pDst->reserved = tmp87__ >> 4 & 0xf; + tmp60__ = *pBuf; + pDst->ac_bk_traffic_aval = tmp60__ >> 0 & 0x1; + pDst->ac_be_traffic_aval = tmp60__ >> 1 & 0x1; + pDst->ac_vi_traffic_aval = tmp60__ >> 2 & 0x1; + pDst->ac_vo_traffic_aval = tmp60__ >> 3 & 0x1; + pDst->reserved = tmp60__ >> 4 & 0xf; (void)pCtx; return status; } /* End dot11f_unpack_ie_pu_buffer_status. */ -#define SigIePUBufferStatus (0x0066) +#define SigIePUBufferStatus (0x0053) uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, @@ -8131,7 +6419,7 @@ uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_caps. */ -#define SigIePowerCaps (0x0067) +#define SigIePowerCaps (0x0054) uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, @@ -8155,7 +6443,7 @@ uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_constraints. */ -#define SigIePowerConstraints (0x0068) +#define SigIePowerConstraints (0x0055) uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, @@ -8195,7 +6483,7 @@ uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qbss_load. */ -#define SigIeQBSSLoad (0x0069) +#define SigIeQBSSLoad (0x0056) uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, @@ -8227,7 +6515,7 @@ uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_QComVendorIE. */ -#define SigIeQComVendorIE (0x006a) +#define SigIeQComVendorIE (0x0057) uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, @@ -8237,7 +6525,7 @@ uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp88__; + uint8_t tmp61__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -8247,17 +6535,17 @@ uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp88__ = *pBuf; - pDst->count = tmp88__ >> 0 & 0xf; - pDst->qack = tmp88__ >> 4 & 0x1; - pDst->qreq = tmp88__ >> 5 & 0x1; - pDst->txopreq = tmp88__ >> 6 & 0x1; - pDst->reserved = tmp88__ >> 7 & 0x1; + tmp61__ = *pBuf; + pDst->count = tmp61__ >> 0 & 0xf; + pDst->qack = tmp61__ >> 4 & 0x1; + pDst->qreq = tmp61__ >> 5 & 0x1; + pDst->txopreq = tmp61__ >> 6 & 0x1; + pDst->reserved = tmp61__ >> 7 & 0x1; (void)pCtx; return status; } /* End dot11f_unpack_ie_qos_caps_ap. */ -#define SigIeQOSCapsAp (0x006b) +#define SigIeQOSCapsAp (0x0058) uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, @@ -8267,7 +6555,7 @@ uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp89__; + uint8_t tmp62__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -8277,19 +6565,19 @@ uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp89__ = *pBuf; - pDst->acvo_uapsd = tmp89__ >> 0 & 0x1; - pDst->acvi_uapsd = tmp89__ >> 1 & 0x1; - pDst->acbk_uapsd = tmp89__ >> 2 & 0x1; - pDst->acbe_uapsd = tmp89__ >> 3 & 0x1; - pDst->qack = tmp89__ >> 4 & 0x1; - pDst->max_sp_length = tmp89__ >> 5 & 0x3; - pDst->more_data_ack = tmp89__ >> 7 & 0x1; + tmp62__ = *pBuf; + pDst->acvo_uapsd = tmp62__ >> 0 & 0x1; + pDst->acvi_uapsd = tmp62__ >> 1 & 0x1; + pDst->acbk_uapsd = tmp62__ >> 2 & 0x1; + pDst->acbe_uapsd = tmp62__ >> 3 & 0x1; + pDst->qack = tmp62__ >> 4 & 0x1; + pDst->max_sp_length = tmp62__ >> 5 & 0x3; + pDst->more_data_ack = tmp62__ >> 7 & 0x1; (void)pCtx; return status; } /* End dot11f_unpack_ie_qos_caps_station. */ -#define SigIeQOSCapsStation (0x006c) +#define SigIeQOSCapsStation (0x0059) uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx, @@ -8314,7 +6602,55 @@ uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qos_map_set. */ -#define SigIeQosMapSet (0x006d) +#define SigIeQosMapSet (0x005a) + + +uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEQuiet *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->count = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->period = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->duration, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->offset, pBuf, 0); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_quiet. */ + +#define SigIeQuiet (0x005b) uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, @@ -8338,7 +6674,7 @@ uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rcpiie. */ -#define SigIeRCPIIE (0x006e) +#define SigIeRCPIIE (0x005c) static const tFFDefn FFS_RICDataDesc[] = { @@ -8414,7 +6750,182 @@ uint32_t dot11f_unpack_ie_ric_data_desc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_data_desc. */ -#define SigIeRICDataDesc (0x006f) +#define SigIeRICDataDesc (0x005d) + + +uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIERSN *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t def_cipher_suite[4] = {0x00, 0x0f, 0xac, 0x04}; + uint8_t def_akm_suite[4] = {0x00, 0x0f, 0xac, 0x01}; + + (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->version, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (pDst->version != 0x1) { + pDst->present = 0; + return status | DOT11F_BAD_FIXED_VALUE; + } + if (!ielen) { + pDst->RSN_Cap_present = 0U; + pDst->gp_mgmt_cipher_suite_present = 0U; + pDst->gp_cipher_suite_present = 1; + DOT11F_MEMCPY(pCtx, pDst->gp_cipher_suite, def_cipher_suite, 4); + pDst->pwise_cipher_suite_count = 1; + DOT11F_MEMCPY(pCtx, + pDst->pwise_cipher_suites, def_cipher_suite, 4); + pDst->akm_suite_cnt = 1; + DOT11F_MEMCPY(pCtx, pDst->akm_suite, def_akm_suite, 4); + pDst->pmkid_count = 0U; + return 0U; + } else { + pDst->gp_cipher_suite_present = 1; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->gp_cipher_suite, pBuf, 4); + pBuf += 4; + ielen -= (uint8_t)4; + } + if (!ielen) { + pDst->RSN_Cap_present = 0U; + pDst->gp_mgmt_cipher_suite_present = 0U; + pDst->pwise_cipher_suite_count = 1; + DOT11F_MEMCPY(pCtx, + pDst->pwise_cipher_suites, def_cipher_suite, 4); + pDst->akm_suite_cnt = 1; + DOT11F_MEMCPY(pCtx, pDst->akm_suite, def_akm_suite, 4); + pDst->pmkid_count = 0U; + return 0U; + } else { + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->pwise_cipher_suite_count, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + } + if (unlikely(ielen < pDst->pwise_cipher_suite_count * 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (!pDst->pwise_cipher_suite_count || + pDst->pwise_cipher_suite_count > 6) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->pwise_cipher_suites, pBuf, (pDst->pwise_cipher_suite_count * 4)); + pBuf += (pDst->pwise_cipher_suite_count * 4); + ielen -= (pDst->pwise_cipher_suite_count * 4); + if (!ielen) { + pDst->RSN_Cap_present = 0U; + pDst->gp_mgmt_cipher_suite_present = 0U; + pDst->akm_suite_cnt = 1; + DOT11F_MEMCPY(pCtx, pDst->akm_suite, def_akm_suite, 4); + pDst->pmkid_count = 0U; + return 0U; + } else { + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->akm_suite_cnt, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + } + if (unlikely(ielen < pDst->akm_suite_cnt * 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (!pDst->akm_suite_cnt || + pDst->akm_suite_cnt > 6) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->akm_suite, pBuf, (pDst->akm_suite_cnt * 4)); + pBuf += (pDst->akm_suite_cnt * 4); + ielen -= (pDst->akm_suite_cnt * 4); + if (!ielen) { + pDst->RSN_Cap_present = 0U; + pDst->gp_mgmt_cipher_suite_present = 0U; + pDst->pmkid_count = 0U; + return 0U; + } else { + pDst->RSN_Cap_present = 1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->RSN_Cap, pBuf, 2); + pBuf += 2; + ielen -= (uint8_t)2; + } + if (!ielen) { + pDst->gp_mgmt_cipher_suite_present = 0U; + pDst->pmkid_count = 0U; + return 0U; + } else { + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->pmkid_count, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + } + if (unlikely(ielen < pDst->pmkid_count * 16)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->pmkid_count > 4) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->pmkid, pBuf, (pDst->pmkid_count * 16)); + pBuf += (pDst->pmkid_count * 16); + ielen -= (pDst->pmkid_count * 16); + if (!ielen) { + return 0U; + } else { + pDst->gp_mgmt_cipher_suite_present = 1; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->gp_mgmt_cipher_suite, pBuf, 4); + } + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_rsn. */ + +#define SigIeRSN (0x005e) uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, @@ -8438,7 +6949,7 @@ uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsniie. */ -#define SigIeRSNIIE (0x0070) +#define SigIeRSNIIE (0x005f) uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, @@ -8463,7 +6974,7 @@ uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsn_opaque. */ -#define SigIeRSNOpaque (0x0071) +#define SigIeRSNOpaque (0x0060) uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, @@ -8488,7 +6999,65 @@ uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_channels. */ -#define SigIeSuppChannels (0x0072) +#define SigIeSuppChannels (0x0061) + + +uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIESuppOperatingClasses *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; + pDst->num_classes = (uint8_t)(ielen); + if (ielen > 32) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->classes, pBuf, (ielen)); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_supp_operating_classes. */ + +#define SigIeSuppOperatingClasses (0x0062) + + +uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIESuppRates *pDst, + bool append_ie) +{ + uint8_t i; + uint8_t rate_indx = 0; + uint32_t status = DOT11F_PARSE_SUCCESS; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + return DOT11F_DUPLICATE_IE; + pDst->present = 1; + for (i = 0; i < ielen; i++) { + if ((DOT11F_IS_BG_RATE(pBuf[i] & 0x7F)) && + (rate_indx < 12)) { + pDst->rates[rate_indx++] = pBuf[i]; + } + } + + if (rate_indx == 0) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + pDst->num_rates = rate_indx; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_supp_rates. */ + +#define SigIeSuppRates (0x0063) uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, @@ -8537,7 +7106,7 @@ uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tim. */ -#define SigIeTIM (0x0073) +#define SigIeTIM (0x0064) uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, @@ -8569,7 +7138,7 @@ uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_report. */ -#define SigIeTPCReport (0x0074) +#define SigIeTPCReport (0x0065) uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, @@ -8587,7 +7156,7 @@ uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_request. */ -#define SigIeTPCRequest (0x0075) +#define SigIeTPCRequest (0x0066) uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, @@ -8627,7 +7196,7 @@ uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_time_advertisement. */ -#define SigIeTimeAdvertisement (0x0076) +#define SigIeTimeAdvertisement (0x0067) uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, @@ -8659,7 +7228,7 @@ uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_timeout_interval. */ -#define SigIeTimeoutInterval (0x0077) +#define SigIeTimeoutInterval (0x0068) uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx, @@ -8715,7 +7284,7 @@ uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_ext_bss_load. */ -#define SigIeVHTExtBssLoad (0x0078) +#define SigIeVHTExtBssLoad (0x0069) uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, @@ -8733,7 +7302,7 @@ uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor1_ie. */ -#define SigIeVendor1IE (0x0079) +#define SigIeVendor1IE (0x006a) uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, @@ -8751,7 +7320,7 @@ uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor3_ie. */ -#define SigIeVendor3IE (0x007a) +#define SigIeVendor3IE (0x006b) uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, @@ -8761,7 +7330,7 @@ uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp90__; + uint16_t tmp63__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -8833,11 +7402,11 @@ uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp90__, pBuf, 0); + framesntohs(pCtx, &tmp63__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->preauth = tmp90__ >> 0 & 0x1; - pDst->reserved = tmp90__ >> 1 & 0x7fff; + pDst->preauth = tmp63__ >> 0 & 0x1; + pDst->reserved = tmp63__ >> 1 & 0x7fff; if (!ielen) { pDst->bkid_count = 0U; return 0U; @@ -8866,7 +7435,7 @@ uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi. */ -#define SigIeWAPI (0x007b) +#define SigIeWAPI (0x006c) uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, @@ -8891,7 +7460,7 @@ uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi_opaque. */ -#define SigIeWAPIOpaque (0x007c) +#define SigIeWAPIOpaque (0x006d) uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, @@ -8923,7 +7492,7 @@ uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfatpc. */ -#define SigIeWFATPC (0x007d) +#define SigIeWFATPC (0x006e) uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, @@ -8948,7 +7517,49 @@ uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfdie_opaque. */ -#define SigIeWFDIEOpaque (0x007e) +#define SigIeWFDIEOpaque (0x006f) + + +uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEWMMCaps *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp64__; + (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 (pDst->version != 0x1) { + pDst->present = 0; + return status | DOT11F_BAD_FIXED_VALUE; + } + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp64__ = *pBuf; + pDst->reserved = tmp64__ >> 0 & 0xf; + pDst->qack = tmp64__ >> 4 & 0x1; + pDst->queue_request = tmp64__ >> 5 & 0x1; + pDst->txop_request = tmp64__ >> 6 & 0x1; + pDst->more_ack = tmp64__ >> 7 & 0x1; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_wmm_caps. */ + +#define SigIeWMMCaps (0x0070) uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, @@ -8958,7 +7569,7 @@ uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp91__; + uint8_t tmp65__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -8976,15 +7587,336 @@ uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp91__ = *pBuf; - pDst->param_set_count = tmp91__ >> 0 & 0xf; - pDst->reserved = tmp91__ >> 4 & 0x7; - pDst->uapsd = tmp91__ >> 7 & 0x1; + tmp65__ = *pBuf; + pDst->param_set_count = tmp65__ >> 0 & 0xf; + pDst->reserved = tmp65__ >> 4 & 0x7; + pDst->uapsd = tmp65__ >> 7 & 0x1; (void)pCtx; return status; } /* End dot11f_unpack_ie_wmm_info_ap. */ -#define SigIeWMMInfoAp (0x007f) +#define SigIeWMMInfoAp (0x0071) + + +uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEWMMInfoStation *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp66__; + (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; + } + + tmp66__ = *pBuf; + pDst->acvo_uapsd = tmp66__ >> 0 & 0x1; + pDst->acvi_uapsd = tmp66__ >> 1 & 0x1; + pDst->acbk_uapsd = tmp66__ >> 2 & 0x1; + pDst->acbe_uapsd = tmp66__ >> 3 & 0x1; + pDst->reserved1 = tmp66__ >> 4 & 0x1; + pDst->max_sp_length = tmp66__ >> 5 & 0x3; + pDst->reserved2 = tmp66__ >> 7 & 0x1; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_wmm_info_station. */ + +#define SigIeWMMInfoStation (0x0072) + + +uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEWMMParams *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp67__; + uint8_t tmp68__; + uint8_t tmp69__; + uint8_t tmp70__; + uint8_t tmp71__; + uint8_t tmp72__; + uint8_t tmp73__; + uint8_t tmp74__; + (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 (pDst->version != 0x1) { + pDst->present = 0; + return status | DOT11F_BAD_FIXED_VALUE; + } + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->qosInfo = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->reserved2 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp67__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbe_aifsn = tmp67__ >> 0 & 0xf; + pDst->acbe_acm = tmp67__ >> 4 & 0x1; + pDst->acbe_aci = tmp67__ >> 5 & 0x3; + pDst->unused1 = tmp67__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp68__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbe_acwmin = tmp68__ >> 0 & 0xf; + pDst->acbe_acwmax = tmp68__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acbe_txoplimit, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp69__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbk_aifsn = tmp69__ >> 0 & 0xf; + pDst->acbk_acm = tmp69__ >> 4 & 0x1; + pDst->acbk_aci = tmp69__ >> 5 & 0x3; + pDst->unused2 = tmp69__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp70__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbk_acwmin = tmp70__ >> 0 & 0xf; + pDst->acbk_acwmax = tmp70__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acbk_txoplimit, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp71__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvi_aifsn = tmp71__ >> 0 & 0xf; + pDst->acvi_acm = tmp71__ >> 4 & 0x1; + pDst->acvi_aci = tmp71__ >> 5 & 0x3; + pDst->unused3 = tmp71__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp72__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvi_acwmin = tmp72__ >> 0 & 0xf; + pDst->acvi_acwmax = tmp72__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acvi_txoplimit, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp73__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvo_aifsn = tmp73__ >> 0 & 0xf; + pDst->acvo_acm = tmp73__ >> 4 & 0x1; + pDst->acvo_aci = tmp73__ >> 5 & 0x3; + pDst->unused4 = tmp73__ >> 7 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp74__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvo_acwmin = tmp74__ >> 0 & 0xf; + pDst->acvo_acwmax = tmp74__ >> 4 & 0xf; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->acvo_txoplimit, pBuf, 0); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_wmm_params. */ + +#define SigIeWMMParams (0x0073) + + +uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEWPA *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->version, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (pDst->version != 0x1) { + pDst->present = 0; + return status | DOT11F_BAD_FIXED_VALUE; + } + if (!ielen) { + pDst->multicast_cipher_present = 0U; + pDst->unicast_cipher_count = 0U; + pDst->auth_suite_count = 0U; + return 0U; + } else { + pDst->multicast_cipher_present = 1U; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->multicast_cipher, pBuf, 4); + pBuf += 4; + ielen -= (uint8_t)4; + } + if (!ielen) { + pDst->unicast_cipher_count = 0U; + pDst->auth_suite_count = 0U; + return 0U; + } else { + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->unicast_cipher_count, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + } + if (unlikely(ielen < pDst->unicast_cipher_count * 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->unicast_cipher_count > 4) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->unicast_ciphers, pBuf, (pDst->unicast_cipher_count * 4)); + pBuf += (pDst->unicast_cipher_count * 4); + ielen -= (pDst->unicast_cipher_count * 4); + if (!ielen) { + pDst->auth_suite_count = 0U; + return 0U; + } else { + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->auth_suite_count, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + } + if (unlikely(ielen < pDst->auth_suite_count * 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->auth_suite_count > 4) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->auth_suites, pBuf, (pDst->auth_suite_count * 4)); + pBuf += (pDst->auth_suite_count * 4); + ielen -= (pDst->auth_suite_count * 4); + if (!ielen) { + return 0U; + } else { + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->caps, pBuf, 0); + } + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_wpa. */ + +#define SigIeWPA (0x0074) uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, @@ -9009,7 +7941,7 @@ uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wpa_opaque. */ -#define SigIeWPAOpaque (0x0080) +#define SigIeWPAOpaque (0x0075) static const tTLVDefn TLVS_WSC[] = { @@ -9100,7 +8032,7 @@ uint32_t dot11f_unpack_ie_wsc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc. */ -#define SigIeWSC (0x0081) +#define SigIeWSC (0x0076) static const tTLVDefn TLVS_WscAssocReq[] = { @@ -9132,7 +8064,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_assoc_req. */ -#define SigIeWscAssocReq (0x0082) +#define SigIeWscAssocReq (0x0077) static const tTLVDefn TLVS_WscAssocRes[] = { @@ -9164,7 +8096,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_assoc_res. */ -#define SigIeWscAssocRes (0x0083) +#define SigIeWscAssocRes (0x0078) static const tTLVDefn TLVS_WscBeacon[] = { @@ -9217,7 +8149,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_beacon. */ -#define SigIeWscBeacon (0x0084) +#define SigIeWscBeacon (0x0079) static const tTLVDefn TLVS_WscBeaconProbeRes[] = { @@ -9295,7 +8227,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_beacon_probe_res. */ -#define SigIeWscBeaconProbeRes (0x0085) +#define SigIeWscBeaconProbeRes (0x007a) uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx, @@ -9320,7 +8252,7 @@ uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_ie_opaque. */ -#define SigIeWscIEOpaque (0x0086) +#define SigIeWscIEOpaque (0x007b) static const tTLVDefn TLVS_WscProbeReq[] = { @@ -9393,7 +8325,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_probe_req. */ -#define SigIeWscProbeReq (0x0087) +#define SigIeWscProbeReq (0x007c) static const tTLVDefn TLVS_WscProbeRes[] = { @@ -9471,7 +8403,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_probe_res. */ -#define SigIeWscProbeRes (0x0088) +#define SigIeWscProbeRes (0x007d) static const tTLVDefn TLVS_WscReassocRes[] = { @@ -9503,7 +8435,7 @@ uint32_t dot11f_unpack_ie_wsc_reassoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_reassoc_res. */ -#define SigIeWscReassocRes (0x0089) +#define SigIeWscReassocRes (0x007e) uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, @@ -9513,7 +8445,7 @@ uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp92__; + uint8_t tmp75__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -9523,15 +8455,15 @@ uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp92__ = *pBuf; - pDst->no_fragmentation = tmp92__ >> 0 & 0x1; - pDst->he_frag_operation = tmp92__ >> 1 & 0x3; - pDst->reserved = tmp92__ >> 3 & 0x1f; + tmp75__ = *pBuf; + pDst->no_fragmentation = tmp75__ >> 0 & 0x1; + pDst->he_frag_operation = tmp75__ >> 1 & 0x3; + pDst->reserved = tmp75__ >> 3 & 0x1f; (void)pCtx; return status; } /* End dot11f_unpack_ie_addba_extn_element. */ -#define SigIeaddba_extn_element (0x008a) +#define SigIeaddba_extn_element (0x007f) uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, @@ -9541,7 +8473,7 @@ uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp93__; + uint8_t tmp76__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -9559,14 +8491,14 @@ uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp93__ = *pBuf; - pDst->new_color = tmp93__ >> 0 & 0x3f; - pDst->reserved = tmp93__ >> 6 & 0x3; + tmp76__ = *pBuf; + pDst->new_color = tmp76__ >> 0 & 0x3f; + pDst->reserved = tmp76__ >> 6 & 0x3; (void)pCtx; return status; } /* End dot11f_unpack_ie_bss_color_change. */ -#define SigIebss_color_change (0x008b) +#define SigIebss_color_change (0x0080) uint32_t dot11f_unpack_ie_bss_max_idle_period(tpAniSirGlobal pCtx, @@ -9576,7 +8508,7 @@ uint32_t dot11f_unpack_ie_bss_max_idle_period(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp94__; + uint8_t tmp77__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -9594,14 +8526,14 @@ uint32_t dot11f_unpack_ie_bss_max_idle_period(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp94__ = *pBuf; - pDst->prot_keep_alive_reqd = tmp94__ >> 0 & 0x1; - pDst->reserved = tmp94__ >> 1 & 0x7f; + tmp77__ = *pBuf; + pDst->prot_keep_alive_reqd = tmp77__ >> 0 & 0x1; + pDst->reserved = tmp77__ >> 1 & 0x7f; (void)pCtx; return status; } /* End dot11f_unpack_ie_bss_max_idle_period. */ -#define SigIebss_max_idle_period (0x008c) +#define SigIebss_max_idle_period (0x0081) static const tFFDefn FFS_decriptor_element[] = { @@ -9667,7 +8599,7 @@ uint32_t dot11f_unpack_ie_decriptor_element(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_decriptor_element. */ -#define SigIedecriptor_element (0x008d) +#define SigIedecriptor_element (0x0082) uint32_t dot11f_unpack_ie_dh_parameter_element(tpAniSirGlobal pCtx, @@ -9695,7 +8627,217 @@ uint32_t dot11f_unpack_ie_dh_parameter_element(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_dh_parameter_element. */ -#define SigIedh_parameter_element (0x008e) +#define SigIedh_parameter_element (0x0083) + + +uint32_t dot11f_unpack_ie_eht_cap(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEeht_cap *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint16_t tmp78__; + uint32_t tmp79__; + uint32_t tmp80__; + (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, &tmp78__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->nsep_pri_access = tmp78__ >> 0 & 0x1; + pDst->eht_om_ctl = tmp78__ >> 1 & 0x1; + pDst->triggered_txop_sharing = tmp78__ >> 2 & 0x1; + pDst->reserved = tmp78__ >> 3 & 0x1fff; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohl(pCtx, &tmp79__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->reserved2 = tmp79__ >> 0 & 0x1; + pDst->support_320mhz_6ghz = tmp79__ >> 1 & 0x1; + pDst->ru_242tone_wt_20mhz = tmp79__ >> 2 & 0x1; + pDst->ndp_4x_eht_ltf_3dot2_us_gi = tmp79__ >> 3 & 0x1; + pDst->partial_bw_mu_mimo = tmp79__ >> 4 & 0x1; + pDst->su_beamformer = tmp79__ >> 5 & 0x1; + pDst->su_beamformee = tmp79__ >> 6 & 0x1; + pDst->bfee_ss_le_80mhz = tmp79__ >> 7 & 0x7; + pDst->bfee_ss_160mhz = tmp79__ >> 10 & 0x7; + pDst->bfee_ss_320mhz = tmp79__ >> 13 & 0x7; + pDst->num_sounding_dim_le_80mhz = tmp79__ >> 16 & 0x7; + pDst->num_sounding_dim_160mhz = tmp79__ >> 19 & 0x7; + pDst->num_sounding_dim_320mhz = tmp79__ >> 22 & 0x7; + pDst->ng_16_su_feedback = tmp79__ >> 25 & 0x1; + pDst->ng_16_mu_feedback = tmp79__ >> 26 & 0x1; + pDst->cb_sz_4_2_su_feedback = tmp79__ >> 27 & 0x1; + pDst->cb_sz_7_5_su_feedback = tmp79__ >> 28 & 0x1; + pDst->trig_su_bforming_feedback = tmp79__ >> 29 & 0x1; + pDst->trig_mu_bforming_partial_bw_feedback = tmp79__ >> 30 & 0x1; + pDst->triggered_cqi_feedback = tmp79__ >> 31 & 0x1; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohl(pCtx, &tmp80__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->partial_bw_dl_mu_mimo = tmp80__ >> 0 & 0x1; + pDst->psr_based_sr = tmp80__ >> 1 & 0x1; + pDst->power_boost_factor = tmp80__ >> 2 & 0x1; + pDst->eht_mu_ppdu_4x_ltf_0_8_us_gi = tmp80__ >> 3 & 0x1; + pDst->max_nc = tmp80__ >> 4 & 0xf; + pDst->non_trig_cqi_feedback = tmp80__ >> 8 & 0x1; + pDst->tx_1024_4096_qam_lt_242_tone_ru = tmp80__ >> 9 & 0x1; + pDst->rx_1024_4096_qam_lt_242_tone_ru = tmp80__ >> 10 & 0x1; + pDst->ppet_present = tmp80__ >> 11 & 0x1; + pDst->common_nominal_pkt_padding = tmp80__ >> 12 & 0x3; + pDst->max_num_eht_ltf = tmp80__ >> 14 & 0x1f; + pDst->mcs_15 = tmp80__ >> 19 & 0xf; + pDst->eht_dup_6ghz = tmp80__ >> 23 & 0x1; + pDst->op_sta_rx_ndp_wider_bw_20mhz = tmp80__ >> 24 & 0x1; + pDst->non_ofdma_ul_mu_mimo_le_80mhz = tmp80__ >> 25 & 0x1; + pDst->non_ofdma_ul_mu_mimo_160mhz = tmp80__ >> 26 & 0x1; + pDst->non_ofdma_ul_mu_mimo_320mhz = tmp80__ >> 27 & 0x1; + pDst->mu_bformer_le_80mhz = tmp80__ >> 28 & 0x1; + pDst->mu_bformer_160mhz = tmp80__ >> 29 & 0x1; + pDst->mu_bformer_320mhz = tmp80__ >> 30 & 0x1; + pDst->reserved3 = tmp80__ >> 31 & 0x1; + pDst->num_eht_mcs_map_20 = (uint8_t)(ielen); + if (ielen > 4) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_20, pBuf, (ielen)); + pBuf += (ielen); + ielen -= (ielen); + pDst->num_eht_mcs_map_le_80 = (uint8_t)(ielen); + if (ielen > 3) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_le_80, pBuf, (ielen)); + pBuf += (ielen); + ielen -= (ielen); + pDst->num_eht_mcs_map_160 = (uint8_t)(ielen); + if (ielen > 3) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_160, pBuf, (ielen)); + pBuf += (ielen); + ielen -= (ielen); + if (unlikely(ielen < pDst->support_320mhz_6ghz * 3)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->support_320mhz_6ghz > 1) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->eht_mcs_map_320, pBuf, (pDst->support_320mhz_6ghz * 3)); + pBuf += (pDst->support_320mhz_6ghz * 3); + ielen -= (pDst->support_320mhz_6ghz * 3); + switch (pDst->ppet_present) { + case 1: + pDst->ppet.ppe_threshold.num_ppe_th = (uint8_t)(ielen); + if (ielen > 62) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->ppet.ppe_threshold.ppe_th, pBuf, (ielen)); + pBuf += (ielen); + ielen -= (ielen); + break; + } + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_eht_cap. */ + +#define SigIeeht_cap (0x0084) + + +uint32_t dot11f_unpack_ie_eht_op(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEeht_op *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp81__; + (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; + } + + DOT11F_MEMCPY(pCtx, pDst->basic_mcs_nss_set, pBuf, 2); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->primary_channel = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp81__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->width = tmp81__ >> 0 & 0x7; + pDst->reserved = tmp81__ >> 3 & 0x1f; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->chan_freq_seg0 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->chan_freq_seg1 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->minimum_rate = *pBuf; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_eht_op. */ + +#define SigIeeht_op (0x0085) uint32_t dot11f_unpack_ie_esp_information(tpAniSirGlobal pCtx, @@ -9720,7 +8862,55 @@ uint32_t dot11f_unpack_ie_esp_information(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_esp_information. */ -#define SigIeesp_information (0x008f) +#define SigIeesp_information (0x0086) + + +uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEext_chan_switch_ann *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->switch_mode = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->new_reg_class = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->new_channel = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->switch_count = *pBuf; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_ext_chan_switch_ann. */ + +#define SigIeext_chan_switch_ann (0x0087) uint32_t dot11f_unpack_ie_fils_assoc_delay_info(tpAniSirGlobal pCtx, @@ -9744,7 +8934,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 (0x0090) +#define SigIefils_assoc_delay_info (0x0088) uint32_t dot11f_unpack_ie_fils_hlp_container(tpAniSirGlobal pCtx, @@ -9780,7 +8970,45 @@ uint32_t dot11f_unpack_ie_fils_hlp_container(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_hlp_container. */ -#define SigIefils_hlp_container (0x0091) +#define SigIefils_hlp_container (0x0089) + + +uint32_t dot11f_unpack_ie_fils_indication(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEfils_indication *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint16_t tmp82__; + (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, &tmp82__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->public_key_identifiers_cnt = tmp82__ >> 0 & 0x7; + pDst->realm_identifiers_cnt = tmp82__ >> 3 & 0x7; + pDst->is_ip_config_supported = tmp82__ >> 6 & 0x1; + pDst->is_cache_id_present = tmp82__ >> 7 & 0x1; + pDst->is_hessid_present = tmp82__ >> 8 & 0x1; + pDst->is_fils_sk_auth_supported = tmp82__ >> 9 & 0x1; + pDst->is_fils_sk_auth_pfs_supported = tmp82__ >> 10 & 0x1; + pDst->is_pk_auth_supported = tmp82__ >> 11 & 0x1; + pDst->reserved = tmp82__ >> 12 & 0xf; + pDst->num_variable_data = (uint8_t)(ielen); + DOT11F_MEMCPY(pCtx, pDst->variable_data, pBuf, (ielen)); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_fils_indication. */ + +#define SigIefils_indication (0x008a) uint32_t dot11f_unpack_ie_fils_kde(tpAniSirGlobal pCtx, @@ -9808,7 +9036,7 @@ uint32_t dot11f_unpack_ie_fils_kde(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_kde. */ -#define SigIefils_kde (0x0092) +#define SigIefils_kde (0x008b) uint32_t dot11f_unpack_ie_fils_key_confirmation(tpAniSirGlobal pCtx, @@ -9828,7 +9056,7 @@ uint32_t dot11f_unpack_ie_fils_key_confirmation(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_key_confirmation. */ -#define SigIefils_key_confirmation (0x0093) +#define SigIefils_key_confirmation (0x008c) uint32_t dot11f_unpack_ie_fils_nonce(tpAniSirGlobal pCtx, @@ -9852,7 +9080,7 @@ uint32_t dot11f_unpack_ie_fils_nonce(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_nonce. */ -#define SigIefils_nonce (0x0094) +#define SigIefils_nonce (0x008d) uint32_t dot11f_unpack_ie_fils_public_key(tpAniSirGlobal pCtx, @@ -9880,7 +9108,7 @@ uint32_t dot11f_unpack_ie_fils_public_key(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_public_key. */ -#define SigIefils_public_key (0x0095) +#define SigIefils_public_key (0x008e) uint32_t dot11f_unpack_ie_fils_session(tpAniSirGlobal pCtx, @@ -9904,7 +9132,7 @@ uint32_t dot11f_unpack_ie_fils_session(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_session. */ -#define SigIefils_session (0x0096) +#define SigIefils_session (0x008f) uint32_t dot11f_unpack_ie_fils_wrapped_data(tpAniSirGlobal pCtx, @@ -9924,7 +9152,7 @@ uint32_t dot11f_unpack_ie_fils_wrapped_data(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_wrapped_data. */ -#define SigIefils_wrapped_data (0x0097) +#define SigIefils_wrapped_data (0x0090) uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, @@ -9944,7 +9172,438 @@ uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fragment_ie. */ -#define SigIefragment_ie (0x0098) +#define SigIefragment_ie (0x0091) + + +uint32_t dot11f_unpack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEhe_6ghz_band_cap *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint16_t tmp83__; + (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, &tmp83__, pBuf, 0); + pDst->min_mpdu_start_spacing = tmp83__ >> 0 & 0x7; + pDst->max_ampdu_len_exp = tmp83__ >> 3 & 0x7; + pDst->max_mpdu_len = tmp83__ >> 6 & 0x7; + pDst->sm_pow_save = tmp83__ >> 9 & 0x3; + pDst->rd_responder = tmp83__ >> 11 & 0x1; + pDst->rx_ant_pattern_consistency = tmp83__ >> 12 & 0x1; + pDst->tx_ant_pattern_consistency = tmp83__ >> 13 & 0x1; + pDst->reserved = tmp83__ >> 14 & 0x3; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_he_6ghz_band_cap. */ + +#define SigIehe_6ghz_band_cap (0x0092) + + +uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEhe_cap *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint32_t tmp84__; + uint16_t tmp85__; + uint32_t tmp86__; + uint32_t tmp87__; + uint16_t tmp88__; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + return DOT11F_DUPLICATE_IE; + pDst->present = 1; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohl(pCtx, &tmp84__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->htc_he = tmp84__ >> 0 & 0x1; + pDst->twt_request = tmp84__ >> 1 & 0x1; + pDst->twt_responder = tmp84__ >> 2 & 0x1; + pDst->fragmentation = tmp84__ >> 3 & 0x3; + pDst->max_num_frag_msdu_amsdu_exp = tmp84__ >> 5 & 0x7; + pDst->min_frag_size = tmp84__ >> 8 & 0x3; + pDst->trigger_frm_mac_pad = tmp84__ >> 10 & 0x3; + pDst->multi_tid_aggr_rx_supp = tmp84__ >> 12 & 0x7; + pDst->he_link_adaptation = tmp84__ >> 15 & 0x3; + pDst->all_ack = tmp84__ >> 17 & 0x1; + pDst->trigd_rsp_sched = tmp84__ >> 18 & 0x1; + pDst->a_bsr = tmp84__ >> 19 & 0x1; + pDst->broadcast_twt = tmp84__ >> 20 & 0x1; + pDst->ba_32bit_bitmap = tmp84__ >> 21 & 0x1; + pDst->mu_cascade = tmp84__ >> 22 & 0x1; + pDst->ack_enabled_multitid = tmp84__ >> 23 & 0x1; + pDst->reserved = tmp84__ >> 24 & 0x1; + pDst->omi_a_ctrl = tmp84__ >> 25 & 0x1; + pDst->ofdma_ra = tmp84__ >> 26 & 0x1; + pDst->max_ampdu_len_exp_ext = tmp84__ >> 27 & 0x3; + pDst->amsdu_frag = tmp84__ >> 29 & 0x1; + pDst->flex_twt_sched = tmp84__ >> 30 & 0x1; + pDst->rx_ctrl_frame = tmp84__ >> 31 & 0x1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &tmp85__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->bsrp_ampdu_aggr = tmp85__ >> 0 & 0x1; + pDst->qtp = tmp85__ >> 1 & 0x1; + pDst->a_bqr = tmp85__ >> 2 & 0x1; + pDst->spatial_reuse_param_rspder = tmp85__ >> 3 & 0x1; + pDst->ndp_feedback_supp = tmp85__ >> 4 & 0x1; + pDst->ops_supp = tmp85__ >> 5 & 0x1; + pDst->amsdu_in_ampdu = tmp85__ >> 6 & 0x1; + pDst->multi_tid_aggr_tx_supp = tmp85__ >> 7 & 0x7; + pDst->he_sub_ch_sel_tx_supp = tmp85__ >> 10 & 0x1; + pDst->ul_2x996_tone_ru_supp = tmp85__ >> 11 & 0x1; + pDst->om_ctrl_ul_mu_data_dis_rx = tmp85__ >> 12 & 0x1; + pDst->he_dynamic_smps = tmp85__ >> 13 & 0x1; + pDst->punctured_sounding_supp = tmp85__ >> 14 & 0x1; + pDst->ht_vht_trg_frm_rx_supp = tmp85__ >> 15 & 0x1; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohl(pCtx, &tmp86__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->reserved2 = tmp86__ >> 0 & 0x1; + pDst->chan_width_0 = tmp86__ >> 1 & 0x1; + pDst->chan_width_1 = tmp86__ >> 2 & 0x1; + pDst->chan_width_2 = tmp86__ >> 3 & 0x1; + pDst->chan_width_3 = tmp86__ >> 4 & 0x1; + pDst->chan_width_4 = tmp86__ >> 5 & 0x1; + pDst->chan_width_5 = tmp86__ >> 6 & 0x1; + pDst->chan_width_6 = tmp86__ >> 7 & 0x1; + pDst->rx_pream_puncturing = tmp86__ >> 8 & 0xf; + pDst->device_class = tmp86__ >> 12 & 0x1; + pDst->ldpc_coding = tmp86__ >> 13 & 0x1; + pDst->he_1x_ltf_800_gi_ppdu = tmp86__ >> 14 & 0x1; + pDst->midamble_tx_rx_max_nsts = tmp86__ >> 15 & 0x3; + pDst->he_4x_ltf_3200_gi_ndp = tmp86__ >> 17 & 0x1; + pDst->tb_ppdu_tx_stbc_lt_80mhz = tmp86__ >> 18 & 0x1; + pDst->rx_stbc_lt_80mhz = tmp86__ >> 19 & 0x1; + pDst->doppler = tmp86__ >> 20 & 0x3; + pDst->ul_mu = tmp86__ >> 22 & 0x3; + pDst->dcm_enc_tx = tmp86__ >> 24 & 0x7; + pDst->dcm_enc_rx = tmp86__ >> 27 & 0x7; + pDst->ul_he_mu = tmp86__ >> 30 & 0x1; + pDst->su_beamformer = tmp86__ >> 31 & 0x1; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohl(pCtx, &tmp87__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->su_beamformee = tmp87__ >> 0 & 0x1; + pDst->mu_beamformer = tmp87__ >> 1 & 0x1; + pDst->bfee_sts_lt_80 = tmp87__ >> 2 & 0x7; + pDst->bfee_sts_gt_80 = tmp87__ >> 5 & 0x7; + pDst->num_sounding_lt_80 = tmp87__ >> 8 & 0x7; + pDst->num_sounding_gt_80 = tmp87__ >> 11 & 0x7; + pDst->su_feedback_tone16 = tmp87__ >> 14 & 0x1; + pDst->mu_feedback_tone16 = tmp87__ >> 15 & 0x1; + pDst->codebook_su = tmp87__ >> 16 & 0x1; + pDst->codebook_mu = tmp87__ >> 17 & 0x1; + pDst->beamforming_feedback = tmp87__ >> 18 & 0x7; + pDst->he_er_su_ppdu = tmp87__ >> 21 & 0x1; + pDst->dl_mu_mimo_part_bw = tmp87__ >> 22 & 0x1; + pDst->ppet_present = tmp87__ >> 23 & 0x1; + pDst->srp = tmp87__ >> 24 & 0x1; + pDst->power_boost = tmp87__ >> 25 & 0x1; + pDst->he_ltf_800_gi_4x = tmp87__ >> 26 & 0x1; + pDst->max_nc = tmp87__ >> 27 & 0x7; + pDst->tb_ppdu_tx_stbc_gt_80mhz = tmp87__ >> 30 & 0x1; + pDst->rx_stbc_gt_80mhz = tmp87__ >> 31 & 0x1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &tmp88__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->er_he_ltf_800_gi_4x = tmp88__ >> 0 & 0x1; + pDst->he_ppdu_20_in_40Mhz_2G = tmp88__ >> 1 & 0x1; + pDst->he_ppdu_20_in_160_80p80Mhz = tmp88__ >> 2 & 0x1; + pDst->he_ppdu_80_in_160_80p80Mhz = tmp88__ >> 3 & 0x1; + pDst->er_1x_he_ltf_gi = tmp88__ >> 4 & 0x1; + pDst->midamble_tx_rx_1x_he_ltf = tmp88__ >> 5 & 0x1; + pDst->dcm_max_bw = tmp88__ >> 6 & 0x3; + pDst->longer_than_16_he_sigb_ofdm_sym = tmp88__ >> 8 & 0x1; + pDst->non_trig_cqi_feedback = tmp88__ >> 9 & 0x1; + pDst->tx_1024_qam_lt_242_tone_ru = tmp88__ >> 10 & 0x1; + pDst->rx_1024_qam_lt_242_tone_ru = tmp88__ >> 11 & 0x1; + pDst->rx_full_bw_su_he_mu_compress_sigb = tmp88__ >> 12 & 0x1; + pDst->rx_full_bw_su_he_mu_non_cmpr_sigb = tmp88__ >> 13 & 0x1; + pDst->reserved3 = tmp88__ >> 14 & 0x3; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->reserved4 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->rx_he_mcs_map_lt_80, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->tx_he_mcs_map_lt_80, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < pDst->chan_width_2 * 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->chan_width_2 > 1) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->rx_he_mcs_map_160, pBuf, (pDst->chan_width_2 * 2)); + pBuf += (pDst->chan_width_2 * 2); + ielen -= (pDst->chan_width_2 * 2); + if (unlikely(ielen < pDst->chan_width_2 * 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->chan_width_2 > 1) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->tx_he_mcs_map_160, pBuf, (pDst->chan_width_2 * 2)); + pBuf += (pDst->chan_width_2 * 2); + ielen -= (pDst->chan_width_2 * 2); + if (unlikely(ielen < pDst->chan_width_3 * 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->chan_width_3 > 1) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->rx_he_mcs_map_80_80, pBuf, (pDst->chan_width_3 * 2)); + pBuf += (pDst->chan_width_3 * 2); + ielen -= (pDst->chan_width_3 * 2); + if (unlikely(ielen < pDst->chan_width_3 * 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + if (pDst->chan_width_3 > 1) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->tx_he_mcs_map_80_80, pBuf, (pDst->chan_width_3 * 2)); + pBuf += (pDst->chan_width_3 * 2); + ielen -= (pDst->chan_width_3 * 2); + switch (pDst->ppet_present) { + case 1: + pDst->ppet.ppe_threshold.num_ppe_th = (uint8_t)(ielen); + if (ielen > 25) { + pDst->present = 0; + return DOT11F_SKIPPED_BAD_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->ppet.ppe_threshold.ppe_th, pBuf, (ielen)); + pBuf += (ielen); + ielen -= (ielen); + break; + } + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_he_cap. */ + +#define SigIehe_cap (0x0093) + + +uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEhe_op *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint16_t tmp89__; + uint8_t tmp90__; + uint8_t tmp91__; + uint8_t tmp92__; + (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, &tmp89__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->default_pe = tmp89__ >> 0 & 0x7; + pDst->twt_required = tmp89__ >> 3 & 0x1; + pDst->txop_rts_threshold = tmp89__ >> 4 & 0x3ff; + pDst->vht_oper_present = tmp89__ >> 14 & 0x1; + pDst->co_located_bss = tmp89__ >> 15 & 0x1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp90__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->er_su_disable = tmp90__ >> 0 & 0x1; + pDst->oper_info_6g_present = tmp90__ >> 1 & 0x1; + pDst->reserved2 = tmp90__ >> 2 & 0x3f; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp91__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->bss_color = tmp91__ >> 0 & 0x3f; + pDst->partial_bss_col = tmp91__ >> 6 & 0x1; + pDst->bss_col_disabled = tmp91__ >> 7 & 0x1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->basic_mcs_nss, pBuf, 2); + pBuf += 2; + ielen -= (uint8_t)2; + switch (pDst->vht_oper_present) { + case 1: + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->vht_oper.info.chan_width = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->vht_oper.info.center_freq_seg0 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->vht_oper.info.center_freq_seg1 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + break; + } + switch (pDst->co_located_bss) { + case 1: + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->maxbssid_ind.info.data = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + break; + } + switch (pDst->oper_info_6g_present) { + case 1: + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->oper_info_6g.info.primary_ch = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + tmp92__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->oper_info_6g.info.ch_width = tmp92__ >> 0 & 0x3; + pDst->oper_info_6g.info.dup_bcon = tmp92__ >> 2 & 0x1; + pDst->oper_info_6g.info.reg_info = tmp92__ >> 3 & 0x7; + pDst->oper_info_6g.info.reserved = tmp92__ >> 6 & 0x3; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->oper_info_6g.info.center_freq_seg0 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->oper_info_6g.info.center_freq_seg1 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->oper_info_6g.info.min_rate = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + break; + } + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_he_op. */ + +#define SigIehe_op (0x0094) uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, @@ -9954,7 +9613,7 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp95__; + uint8_t tmp93__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -9964,13 +9623,13 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp95__ = *pBuf; + tmp93__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->dgaf_dis = tmp95__ >> 0 & 0x1; - pDst->hs_id_present = tmp95__ >> 1 & 0x3; - pDst->reserved = tmp95__ >> 3 & 0x1; - pDst->release_num = tmp95__ >> 4 & 0xf; + pDst->dgaf_dis = tmp93__ >> 0 & 0x1; + pDst->hs_id_present = tmp93__ >> 1 & 0x3; + pDst->reserved = tmp93__ >> 3 & 0x1; + pDst->release_num = tmp93__ >> 4 & 0xf; if (!ielen) { return 0U; } else { @@ -10001,7 +9660,7 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_hs20vendor_ie. */ -#define SigIehs20vendor_ie (0x0099) +#define SigIehs20vendor_ie (0x0095) uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, @@ -10011,7 +9670,7 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp96__; + uint8_t tmp94__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -10021,18 +9680,18 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp96__ = *pBuf; - pDst->info_request = tmp96__ >> 0 & 0x1; - pDst->forty_mhz_intolerant = tmp96__ >> 1 & 0x1; - pDst->twenty_mhz_bsswidth_req = tmp96__ >> 2 & 0x1; - pDst->obss_scan_exemption_req = tmp96__ >> 3 & 0x1; - pDst->obss_scan_exemption_grant = tmp96__ >> 4 & 0x1; - pDst->unused = tmp96__ >> 5 & 0x7; + tmp94__ = *pBuf; + pDst->info_request = tmp94__ >> 0 & 0x1; + pDst->forty_mhz_intolerant = tmp94__ >> 1 & 0x1; + pDst->twenty_mhz_bsswidth_req = tmp94__ >> 2 & 0x1; + pDst->obss_scan_exemption_req = tmp94__ >> 3 & 0x1; + pDst->obss_scan_exemption_grant = tmp94__ >> 4 & 0x1; + pDst->unused = tmp94__ >> 5 & 0x7; (void)pCtx; return status; } /* End dot11f_unpack_ie_ht2040_bss_coexistence. */ -#define SigIeht2040_bss_coexistence (0x009a) +#define SigIeht2040_bss_coexistence (0x0096) uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx, @@ -10065,7 +9724,31 @@ 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 (0x009b) +#define SigIeht2040_bss_intolerant_report (0x0097) + + +uint32_t dot11f_unpack_ie_max_chan_switch_time(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEmax_chan_switch_time *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 < 3)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->switch_time, pBuf, 3); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_max_chan_switch_time. */ + +#define SigIemax_chan_switch_time (0x0098) static const tFFDefn FFS_mlo_ie[] = { @@ -10075,7 +9758,7 @@ static const tFFDefn FFS_mlo_ie[] = { static const tIEDefn IES_mlo_ie[] = { { offsetof(tDot11fIEmlo_ie, sta_profile), offsetof(tDot11fIEsta_profile, present), offsetof(tDot11fIEmlo_ie, num_sta_profile), "sta_profile", - 2, 4, 1251, SigIesta_profile, {0, 0, 0, 0, 0}, + 2, 2, 257, SigIesta_profile, {0, 0, 0, 0, 0}, 0, DOT11F_EID_STA_PROFILE, 0, 0, }, {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, }; @@ -10087,12 +9770,12 @@ uint32_t dot11f_unpack_ie_mlo_ie(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; + uint16_t tmp95__; + uint8_t tmp96__; uint16_t tmp97__; - uint8_t tmp98__; - uint16_t tmp99__; + uint16_t tmp98__; + uint8_t tmp99__; uint16_t tmp100__; - uint8_t tmp101__; - uint16_t tmp102__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -10102,18 +9785,18 @@ uint32_t dot11f_unpack_ie_mlo_ie(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp97__, pBuf, 0); + framesntohs(pCtx, &tmp95__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->type = tmp97__ >> 0 & 0x7; - pDst->reserved = tmp97__ >> 3 & 0x1; - pDst->mld_mac_addr_present = tmp97__ >> 4 & 0x1; - pDst->link_id_info_present = tmp97__ >> 5 & 0x1; - pDst->bss_param_change_cnt_present = tmp97__ >> 6 & 0x1; - pDst->medium_sync_delay_info_present = tmp97__ >> 7 & 0x1; - pDst->eml_capab_present = tmp97__ >> 8 & 0x1; - pDst->mld_capab_present = tmp97__ >> 9 & 0x1; - pDst->reserved_1 = tmp97__ >> 10 & 0x3f; + pDst->type = tmp95__ >> 0 & 0x7; + pDst->reserved = tmp95__ >> 3 & 0x1; + pDst->mld_mac_addr_present = tmp95__ >> 4 & 0x1; + pDst->link_id_info_present = tmp95__ >> 5 & 0x1; + pDst->bss_param_change_cnt_present = tmp95__ >> 6 & 0x1; + pDst->medium_sync_delay_info_present = tmp95__ >> 7 & 0x1; + pDst->eml_capab_present = tmp95__ >> 8 & 0x1; + pDst->mld_capab_present = tmp95__ >> 9 & 0x1; + pDst->reserved_1 = tmp95__ >> 10 & 0x3f; switch (pDst->mld_mac_addr_present) { case 1: if (unlikely(ielen < 6)) { @@ -10133,11 +9816,11 @@ uint32_t dot11f_unpack_ie_mlo_ie(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp98__ = *pBuf; + tmp96__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->link_id_info.info.link_id = tmp98__ >> 0 & 0xf; - pDst->link_id_info.info.reserved = tmp98__ >> 4 & 0xf; + pDst->link_id_info.info.link_id = tmp96__ >> 0 & 0xf; + pDst->link_id_info.info.reserved = tmp96__ >> 4 & 0xf; break; } switch (pDst->bss_param_change_cnt_present) { @@ -10159,12 +9842,12 @@ uint32_t dot11f_unpack_ie_mlo_ie(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp99__, pBuf, 0); + framesntohs(pCtx, &tmp97__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->medium_sync_delay_info.info.medium_sync_duration = tmp99__ >> 0 & 0xff; - pDst->medium_sync_delay_info.info.medium_sync_ofdm_ed_thresh = tmp99__ >> 8 & 0xf; - pDst->medium_sync_delay_info.info.medium_sync_max_txop_num = tmp99__ >> 12 & 0xf; + pDst->medium_sync_delay_info.info.medium_sync_duration = tmp97__ >> 0 & 0xff; + pDst->medium_sync_delay_info.info.medium_sync_ofdm_ed_thresh = tmp97__ >> 8 & 0xf; + pDst->medium_sync_delay_info.info.medium_sync_max_txop_num = tmp97__ >> 12 & 0xf; break; } switch (pDst->eml_capab_present) { @@ -10174,25 +9857,25 @@ uint32_t dot11f_unpack_ie_mlo_ie(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp100__, pBuf, 0); + framesntohs(pCtx, &tmp98__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->eml_capabilities.info.emlsr_support = tmp100__ >> 0 & 0x1; - pDst->eml_capabilities.info.emlsr_delay = tmp100__ >> 1 & 0x7; - pDst->eml_capabilities.info.emlmr_support = tmp100__ >> 4 & 0x1; - pDst->eml_capabilities.info.emlmr_delay = tmp100__ >> 5 & 0x7; - pDst->eml_capabilities.info.transition_timeout = tmp100__ >> 8 & 0xf; - pDst->eml_capabilities.info.reserved = tmp100__ >> 12 & 0xf; + pDst->eml_capabilities.info.emlsr_support = tmp98__ >> 0 & 0x1; + pDst->eml_capabilities.info.emlsr_delay = tmp98__ >> 1 & 0x7; + pDst->eml_capabilities.info.emlmr_support = tmp98__ >> 4 & 0x1; + pDst->eml_capabilities.info.emlmr_delay = tmp98__ >> 5 & 0x7; + pDst->eml_capabilities.info.transition_timeout = tmp98__ >> 8 & 0xf; + pDst->eml_capabilities.info.reserved = tmp98__ >> 12 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp101__ = *pBuf; + tmp99__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->eml_capabilities.info.emlmr_rx_nss = tmp101__ >> 0 & 0xf; - pDst->eml_capabilities.info.emlmr_tx_nss = tmp101__ >> 4 & 0xf; + pDst->eml_capabilities.info.emlmr_rx_nss = tmp99__ >> 0 & 0xf; + pDst->eml_capabilities.info.emlmr_tx_nss = tmp99__ >> 4 & 0xf; break; } switch (pDst->mld_capab_present) { @@ -10202,14 +9885,14 @@ uint32_t dot11f_unpack_ie_mlo_ie(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp102__, pBuf, 0); + framesntohs(pCtx, &tmp100__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->mld_capabilities.info.max_simultaneous_link_num = tmp102__ >> 0 & 0xf; - pDst->mld_capabilities.info.srs_support = tmp102__ >> 4 & 0x1; - pDst->mld_capabilities.info.tid_link_map_supported = tmp102__ >> 5 & 0x3; - pDst->mld_capabilities.info.str_freq_separation = tmp102__ >> 7 & 0x1f; - pDst->mld_capabilities.info.reserved = tmp102__ >> 12 & 0xf; + pDst->mld_capabilities.info.max_simultaneous_link_num = tmp100__ >> 0 & 0xf; + pDst->mld_capabilities.info.srs_support = tmp100__ >> 4 & 0x1; + pDst->mld_capabilities.info.tid_link_map_supported = tmp100__ >> 5 & 0x3; + pDst->mld_capabilities.info.str_freq_separation = tmp100__ >> 7 & 0x1f; + pDst->mld_capabilities.info.reserved = tmp100__ >> 12 & 0xf; break; } (void)pCtx; @@ -10224,7 +9907,7 @@ uint32_t dot11f_unpack_ie_mlo_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_mlo_ie. */ -#define SigIemlo_ie (0x009c) +#define SigIemlo_ie (0x0099) uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, @@ -10234,14 +9917,14 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; + uint8_t tmp101__; + uint8_t tmp102__; uint8_t tmp103__; uint8_t tmp104__; uint8_t tmp105__; uint8_t tmp106__; uint8_t tmp107__; uint8_t tmp108__; - uint8_t tmp109__; - uint8_t tmp110__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -10259,23 +9942,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp103__ = *pBuf; + tmp101__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbe_aifsn = tmp103__ >> 0 & 0xf; - pDst->acbe_acm = tmp103__ >> 4 & 0x1; - pDst->acbe_aci = tmp103__ >> 5 & 0x3; - pDst->unused1 = tmp103__ >> 7 & 0x1; + pDst->acbe_aifsn = tmp101__ >> 0 & 0xf; + pDst->acbe_acm = tmp101__ >> 4 & 0x1; + pDst->acbe_aci = tmp101__ >> 5 & 0x3; + pDst->unused1 = tmp101__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp104__ = *pBuf; + tmp102__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbe_acwmin = tmp104__ >> 0 & 0xf; - pDst->acbe_acwmax = tmp104__ >> 4 & 0xf; + pDst->acbe_acwmin = tmp102__ >> 0 & 0xf; + pDst->acbe_acwmax = tmp102__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -10289,23 +9972,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp105__ = *pBuf; + tmp103__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbk_aifsn = tmp105__ >> 0 & 0xf; - pDst->acbk_acm = tmp105__ >> 4 & 0x1; - pDst->acbk_aci = tmp105__ >> 5 & 0x3; - pDst->unused2 = tmp105__ >> 7 & 0x1; + pDst->acbk_aifsn = tmp103__ >> 0 & 0xf; + pDst->acbk_acm = tmp103__ >> 4 & 0x1; + pDst->acbk_aci = tmp103__ >> 5 & 0x3; + pDst->unused2 = tmp103__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp106__ = *pBuf; + tmp104__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acbk_acwmin = tmp106__ >> 0 & 0xf; - pDst->acbk_acwmax = tmp106__ >> 4 & 0xf; + pDst->acbk_acwmin = tmp104__ >> 0 & 0xf; + pDst->acbk_acwmax = tmp104__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -10319,23 +10002,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp107__ = *pBuf; + tmp105__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvi_aifsn = tmp107__ >> 0 & 0xf; - pDst->acvi_acm = tmp107__ >> 4 & 0x1; - pDst->acvi_aci = tmp107__ >> 5 & 0x3; - pDst->unused3 = tmp107__ >> 7 & 0x1; + pDst->acvi_aifsn = tmp105__ >> 0 & 0xf; + pDst->acvi_acm = tmp105__ >> 4 & 0x1; + pDst->acvi_aci = tmp105__ >> 5 & 0x3; + pDst->unused3 = tmp105__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp108__ = *pBuf; + tmp106__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvi_acwmin = tmp108__ >> 0 & 0xf; - pDst->acvi_acwmax = tmp108__ >> 4 & 0xf; + pDst->acvi_acwmin = tmp106__ >> 0 & 0xf; + pDst->acvi_acwmax = tmp106__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -10349,23 +10032,23 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - tmp109__ = *pBuf; + tmp107__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvo_aifsn = tmp109__ >> 0 & 0xf; - pDst->acvo_acm = tmp109__ >> 4 & 0x1; - pDst->acvo_aci = tmp109__ >> 5 & 0x3; - pDst->unused4 = tmp109__ >> 7 & 0x1; + pDst->acvo_aifsn = tmp107__ >> 0 & 0xf; + pDst->acvo_acm = tmp107__ >> 4 & 0x1; + pDst->acvo_aci = tmp107__ >> 5 & 0x3; + pDst->unused4 = tmp107__ >> 7 & 0x1; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; } - tmp110__ = *pBuf; + tmp108__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvo_acwmin = tmp110__ >> 0 & 0xf; - pDst->acvo_acwmax = tmp110__ >> 4 & 0xf; + pDst->acvo_acwmin = tmp108__ >> 0 & 0xf; + pDst->acvo_acwmax = tmp108__ >> 4 & 0xf; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -10376,7 +10059,27 @@ 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 (0x009d) +#define SigIemu_edca_param_set (0x009a) + + +uint32_t dot11f_unpack_ie_non_inheritance(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEnon_inheritance *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; + pDst->num_data = (uint8_t)(ielen); + DOT11F_MEMCPY(pCtx, pDst->data, pBuf, (ielen)); + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_non_inheritance. */ + +#define SigIenon_inheritance (0x009b) uint32_t dot11f_unpack_ie_oci(tpAniSirGlobal pCtx, @@ -10416,7 +10119,7 @@ uint32_t dot11f_unpack_ie_oci(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_oci. */ -#define SigIeoci (0x009e) +#define SigIeoci (0x009c) uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, @@ -10436,7 +10139,62 @@ uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_osen_ie. */ -#define SigIeosen_ie (0x009f) +#define SigIeosen_ie (0x009d) + + +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(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(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, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEqcn_ie *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pBuf; (void)ielen; /* Shutup the compiler */ + pDst->present = 1; + 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 (0x009e) uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, @@ -10446,10 +10204,10 @@ uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint16_t tmp111__; + uint16_t tmp109__; + uint32_t tmp110__; + uint32_t tmp111__; uint32_t tmp112__; - uint32_t tmp113__; - uint32_t tmp114__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) return DOT11F_DUPLICATE_IE; @@ -10459,14 +10217,14 @@ uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohs(pCtx, &tmp111__, pBuf, 0); + framesntohs(pCtx, &tmp109__, pBuf, 0); pBuf += 2; ielen -= 2; - pDst->tbtt_type = tmp111__ >> 0 & 0x3; - pDst->filtered_neighbor_ap = tmp111__ >> 2 & 0x1; - pDst->reserved = tmp111__ >> 3 & 0x1; - pDst->tbtt_info_count = tmp111__ >> 4 & 0xf; - pDst->tbtt_info_len = tmp111__ >> 8 & 0xff; + pDst->tbtt_type = tmp109__ >> 0 & 0x3; + pDst->filtered_neighbor_ap = tmp109__ >> 2 & 0x1; + pDst->reserved = tmp109__ >> 3 & 0x1; + pDst->tbtt_info_count = tmp109__ >> 4 & 0xf; + pDst->tbtt_info_len = tmp109__ >> 8 & 0xff; if (unlikely(ielen < 1)) { pDst->present = 0; return DOT11F_INCOMPLETE_IE; @@ -10526,13 +10284,13 @@ uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohl(pCtx, &tmp112__, pBuf, 0); + framesntohl(pCtx, &tmp110__, pBuf, 0); pBuf += 4; ielen -= 4; - pDst->tbtt_info.tbtt_info_4.mld_id = tmp112__ >> 0 & 0xff; - pDst->tbtt_info.tbtt_info_4.link_id = tmp112__ >> 8 & 0xf; - pDst->tbtt_info.tbtt_info_4.bss_param_change_cnt = tmp112__ >> 12 & 0xff; - pDst->tbtt_info.tbtt_info_4.reserved = tmp112__ >> 20 & 0xfff; + pDst->tbtt_info.tbtt_info_4.mld_id = tmp110__ >> 0 & 0xff; + pDst->tbtt_info.tbtt_info_4.link_id = tmp110__ >> 8 & 0xf; + pDst->tbtt_info.tbtt_info_4.bss_param_change_cnt = tmp110__ >> 12 & 0xff; + pDst->tbtt_info.tbtt_info_4.reserved = tmp110__ >> 20 & 0xfff; break; case 5: if (unlikely(ielen < 1)) { @@ -10678,13 +10436,13 @@ uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohl(pCtx, &tmp113__, pBuf, 0); + framesntohl(pCtx, &tmp111__, pBuf, 0); pBuf += 4; ielen -= 4; - pDst->tbtt_info.tbtt_info_10.mld_id = tmp113__ >> 0 & 0xff; - pDst->tbtt_info.tbtt_info_10.link_id = tmp113__ >> 8 & 0xf; - pDst->tbtt_info.tbtt_info_10.bss_param_change_cnt = tmp113__ >> 12 & 0xff; - pDst->tbtt_info.tbtt_info_10.reserved = tmp113__ >> 20 & 0xfff; + pDst->tbtt_info.tbtt_info_10.mld_id = tmp111__ >> 0 & 0xff; + pDst->tbtt_info.tbtt_info_10.link_id = tmp111__ >> 8 & 0xf; + pDst->tbtt_info.tbtt_info_10.bss_param_change_cnt = tmp111__ >> 12 & 0xff; + pDst->tbtt_info.tbtt_info_10.reserved = tmp111__ >> 20 & 0xfff; break; case 11: if (unlikely(ielen < 1)) { @@ -10834,20 +10592,20 @@ uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, return DOT11F_INCOMPLETE_IE; } - framesntohl(pCtx, &tmp114__, pBuf, 0); + framesntohl(pCtx, &tmp112__, pBuf, 0); pBuf += 4; ielen -= 4; - pDst->tbtt_info.tbtt_info_16.mld_id = tmp114__ >> 0 & 0xff; - pDst->tbtt_info.tbtt_info_16.link_id = tmp114__ >> 8 & 0xf; - pDst->tbtt_info.tbtt_info_16.bss_param_change_cnt = tmp114__ >> 12 & 0xff; - pDst->tbtt_info.tbtt_info_16.reserved = tmp114__ >> 20 & 0xfff; + pDst->tbtt_info.tbtt_info_16.mld_id = tmp112__ >> 0 & 0xff; + pDst->tbtt_info.tbtt_info_16.link_id = tmp112__ >> 8 & 0xf; + pDst->tbtt_info.tbtt_info_16.bss_param_change_cnt = tmp112__ >> 12 & 0xff; + pDst->tbtt_info.tbtt_info_16.reserved = tmp112__ >> 20 & 0xfff; break; } (void)pCtx; return status; } /* End dot11f_unpack_ie_reduced_neighbor_report. */ -#define SigIereduced_neighbor_report (0x00a0) +#define SigIereduced_neighbor_report (0x009f) uint32_t dot11f_unpack_ie_roaming_consortium_sel(tpAniSirGlobal pCtx, @@ -10867,7 +10625,7 @@ uint32_t dot11f_unpack_ie_roaming_consortium_sel(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_roaming_consortium_sel. */ -#define SigIeroaming_consortium_sel (0x00a1) +#define SigIeroaming_consortium_sel (0x00a0) uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx, @@ -10891,7 +10649,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 (0x00a2) +#define SigIesec_chan_offset_ele (0x00a1) static const tFFDefn FFS_vendor_vht_ie[] = { @@ -10940,7 +10698,7 @@ uint32_t dot11f_unpack_ie_vendor_vht_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor_vht_ie. */ -#define SigIevendor_vht_ie (0x00a3) +#define SigIevendor_vht_ie (0x00a2) static const tFFDefn FFS_AddTSRequest[] = { @@ -11174,7 +10932,7 @@ static const tIEDefn IES_AssocRequest[] = { present), 0, "eht_cap", 0, 12, 87, SigIeeht_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_CAP, 108, 0, }, { offsetof(tDot11fAssocRequest, mlo_ie), offsetof(tDot11fIEmlo_ie, - present), 0, "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + present), 0, "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fAssocRequest, WPAOpaque), offsetof(tDot11fIEWPAOpaque, present), 0, "WPAOpaque", 0, 8, 255, SigIeWPAOpaque, {0, 80, 242, 1, 0}, @@ -11368,7 +11126,7 @@ static const tIEDefn IES_AssocResponse[] = { present), 0, "eht_op", 0, 9, 9, SigIeeht_op, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_OP, 106, 0, }, { offsetof(tDot11fAssocResponse, mlo_ie), offsetof(tDot11fIEmlo_ie, - present), 0, "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + present), 0, "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fAssocResponse, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, }, @@ -11672,7 +11430,7 @@ static const tIEDefn IES_Beacon[] = { "eht_op", 0, 9, 9, SigIeeht_op, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_OP, 106, 0, }, { offsetof(tDot11fBeacon, mlo_ie), offsetof(tDot11fIEmlo_ie, present), 0, - "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fBeacon, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, }, @@ -11924,7 +11682,7 @@ static const tIEDefn IES_Beacon2[] = { "eht_op", 0, 9, 9, SigIeeht_op, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_OP, 106, 0, }, { offsetof(tDot11fBeacon2, mlo_ie), offsetof(tDot11fIEmlo_ie, present), 0, - "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fBeacon2, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, }, @@ -12167,7 +11925,7 @@ static const tIEDefn IES_BeaconIEs[] = { 0, "eht_op", 0, 9, 9, SigIeeht_op, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_OP, 106, 0, }, { offsetof(tDot11fBeaconIEs, mlo_ie), offsetof(tDot11fIEmlo_ie, present), - 0, "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + 0, "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fBeaconIEs, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, }, @@ -12641,7 +12399,7 @@ static const tIEDefn IES_ProbeRequest[] = { present), 0, "eht_cap", 0, 12, 87, SigIeeht_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_CAP, 108, 0, }, { offsetof(tDot11fProbeRequest, mlo_ie), offsetof(tDot11fIEmlo_ie, - present), 0, "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + present), 0, "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fProbeRequest, WscProbeReq), offsetof(tDot11fIEWscProbeReq, present), 0, "WscProbeReq", @@ -12843,7 +12601,7 @@ static const tIEDefn IES_ProbeResponse[] = { present), 0, "eht_op", 0, 9, 9, SigIeeht_op, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_OP, 106, 0, }, { offsetof(tDot11fProbeResponse, mlo_ie), offsetof(tDot11fIEmlo_ie, - present), 0, "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + present), 0, "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fProbeResponse, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, }, @@ -13121,7 +12879,7 @@ static const tIEDefn IES_ReAssocRequest[] = { present), 0, "eht_cap", 0, 12, 87, SigIeeht_cap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_CAP, 108, 0, }, { offsetof(tDot11fReAssocRequest, mlo_ie), offsetof(tDot11fIEmlo_ie, - present), 0, "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + present), 0, "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fReAssocRequest, WPAOpaque), offsetof(tDot11fIEWPAOpaque, present), 0, "WPAOpaque", @@ -13297,7 +13055,7 @@ static const tIEDefn IES_ReAssocResponse[] = { present), 0, "eht_op", 0, 9, 9, SigIeeht_op, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EHT_OP, 106, 0, }, { offsetof(tDot11fReAssocResponse, mlo_ie), offsetof(tDot11fIEmlo_ie, - present), 0, "mlo_ie", 0, 4, 1270, SigIemlo_ie, {0, 0, 0, 0, 0}, + present), 0, "mlo_ie", 0, 4, 276, SigIemlo_ie, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MLO_IE, 107, 0, }, { offsetof(tDot11fReAssocResponse, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, @@ -14875,16 +14633,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeChanSwitchAnn: - status |= - dot11f_unpack_ie_chan_switch_ann( - pCtx, pBufRemaining, len, - (tDot11fIEChanSwitchAnn *) - (pFrm + pIe->offset + - sizeof(tDot11fIEChanSwitchAnn) * - countOffset), - append_ie); - break; case SigIeCondensedCountryStr: status |= dot11f_unpack_ie_condensed_country_str( @@ -14895,56 +14643,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeEDCAParamSet: - status |= - dot11f_unpack_ie_edca_param_set( - pCtx, pBufRemaining, len, - (tDot11fIEEDCAParamSet *) - (pFrm + pIe->offset + - sizeof(tDot11fIEEDCAParamSet) * - countOffset), - append_ie); - break; - case SigIeExtCap: - status |= - dot11f_unpack_ie_ext_cap( - pCtx, pBufRemaining, len, - (tDot11fIEExtCap *) - (pFrm + pIe->offset + - sizeof(tDot11fIEExtCap) * - countOffset), - append_ie); - break; - case SigIeExtSuppRates: - status |= - dot11f_unpack_ie_ext_supp_rates( - pCtx, pBufRemaining, len, - (tDot11fIEExtSuppRates *) - (pFrm + pIe->offset + - sizeof(tDot11fIEExtSuppRates) * - countOffset), - append_ie); - break; - case SigIeHTCaps: - status |= - dot11f_unpack_ie_ht_caps( - pCtx, pBufRemaining, len, - (tDot11fIEHTCaps *) - (pFrm + pIe->offset + - sizeof(tDot11fIEHTCaps) * - countOffset), - append_ie); - break; - case SigIeHTInfo: - status |= - dot11f_unpack_ie_ht_info( - pCtx, pBufRemaining, len, - (tDot11fIEHTInfo *) - (pFrm + pIe->offset + - sizeof(tDot11fIEHTInfo) * - countOffset), - append_ie); - break; case SigIeMeasurementPilot: status |= dot11f_unpack_ie_measurement_pilot( @@ -14965,36 +14663,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeOperatingMode: - status |= - dot11f_unpack_ie_operating_mode( - pCtx, pBufRemaining, len, - (tDot11fIEOperatingMode *) - (pFrm + pIe->offset + - sizeof(tDot11fIEOperatingMode) * - countOffset), - append_ie); - break; - case SigIeP2PAssocRes: - status |= - dot11f_unpack_ie_p2_p_assoc_res( - pCtx, pBufRemaining, len, - (tDot11fIEP2PAssocRes *) - (pFrm + pIe->offset + - sizeof(tDot11fIEP2PAssocRes) * - countOffset), - append_ie); - break; - case SigIeQuiet: - status |= - dot11f_unpack_ie_quiet( - pCtx, pBufRemaining, len, - (tDot11fIEQuiet *) - (pFrm + pIe->offset + - sizeof(tDot11fIEQuiet) * - countOffset), - append_ie); - break; case SigIeRICData: status |= dot11f_unpack_ie_ric_data( @@ -15025,16 +14693,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeRSN: - status |= - dot11f_unpack_ie_rsn( - pCtx, pBufRemaining, len, - (tDot11fIERSN *) - (pFrm + pIe->offset + - sizeof(tDot11fIERSN) * - countOffset), - append_ie); - break; case SigIeRequestedInfo: status |= dot11f_unpack_ie_requested_info( @@ -15065,26 +14723,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeSuppOperatingClasses: - status |= - dot11f_unpack_ie_supp_operating_classes( - pCtx, pBufRemaining, len, - (tDot11fIESuppOperatingClasses *) - (pFrm + pIe->offset + - sizeof(tDot11fIESuppOperatingClasses) * - countOffset), - append_ie); - break; - case SigIeSuppRates: - status |= - dot11f_unpack_ie_supp_rates( - pCtx, pBufRemaining, len, - (tDot11fIESuppRates *) - (pFrm + pIe->offset + - sizeof(tDot11fIESuppRates) * - countOffset), - append_ie); - break; case SigIeTCLAS: status |= dot11f_unpack_ie_tclas( @@ -15150,36 +14788,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeWMMCaps: - status |= - dot11f_unpack_ie_wmm_caps( - pCtx, pBufRemaining, len, - (tDot11fIEWMMCaps *) - (pFrm + pIe->offset + - sizeof(tDot11fIEWMMCaps) * - countOffset), - append_ie); - break; - case SigIeWMMInfoStation: - status |= - dot11f_unpack_ie_wmm_info_station( - pCtx, pBufRemaining, len, - (tDot11fIEWMMInfoStation *) - (pFrm + pIe->offset + - sizeof(tDot11fIEWMMInfoStation) * - countOffset), - append_ie); - break; - case SigIeWMMParams: - status |= - dot11f_unpack_ie_wmm_params( - pCtx, pBufRemaining, len, - (tDot11fIEWMMParams *) - (pFrm + pIe->offset + - sizeof(tDot11fIEWMMParams) * - countOffset), - append_ie); - break; case SigIeWMMSchedule: status |= dot11f_unpack_ie_wmm_schedule( @@ -15230,16 +14838,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeWPA: - status |= - dot11f_unpack_ie_wpa( - pCtx, pBufRemaining, len, - (tDot11fIEWPA *) - (pFrm + pIe->offset + - sizeof(tDot11fIEWPA) * - countOffset), - append_ie); - break; case SigIeWiderBWChanSwitchAnn: status |= dot11f_unpack_ie_wider_bw_chan_switch_ann( @@ -15270,76 +14868,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIeeht_cap: - status |= - dot11f_unpack_ie_eht_cap( - pCtx, pBufRemaining, len, - (tDot11fIEeht_cap *) - (pFrm + pIe->offset + - sizeof(tDot11fIEeht_cap) * - countOffset), - append_ie); - break; - case SigIeeht_op: - status |= - dot11f_unpack_ie_eht_op( - pCtx, pBufRemaining, len, - (tDot11fIEeht_op *) - (pFrm + pIe->offset + - sizeof(tDot11fIEeht_op) * - countOffset), - append_ie); - break; - case SigIeext_chan_switch_ann: - status |= - dot11f_unpack_ie_ext_chan_switch_ann( - pCtx, pBufRemaining, len, - (tDot11fIEext_chan_switch_ann *) - (pFrm + pIe->offset + - sizeof(tDot11fIEext_chan_switch_ann) * - countOffset), - append_ie); - break; - case SigIefils_indication: - status |= - dot11f_unpack_ie_fils_indication( - pCtx, pBufRemaining, len, - (tDot11fIEfils_indication *) - (pFrm + pIe->offset + - sizeof(tDot11fIEfils_indication) * - countOffset), - append_ie); - break; - case SigIehe_6ghz_band_cap: - status |= - dot11f_unpack_ie_he_6ghz_band_cap( - pCtx, pBufRemaining, len, - (tDot11fIEhe_6ghz_band_cap *) - (pFrm + pIe->offset + - sizeof(tDot11fIEhe_6ghz_band_cap) * - countOffset), - append_ie); - break; - case SigIehe_cap: - status |= - dot11f_unpack_ie_he_cap( - pCtx, pBufRemaining, len, - (tDot11fIEhe_cap *) - (pFrm + pIe->offset + - sizeof(tDot11fIEhe_cap) * - countOffset), - append_ie); - break; - case SigIehe_op: - status |= - dot11f_unpack_ie_he_op( - pCtx, pBufRemaining, len, - (tDot11fIEhe_op *) - (pFrm + pIe->offset + - sizeof(tDot11fIEhe_op) * - countOffset), - append_ie); - break; case SigIelast_beacon_report_indication: status |= dot11f_unpack_ie_last_beacon_report_indication( @@ -15360,26 +14888,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIemax_chan_switch_time: - status |= - dot11f_unpack_ie_max_chan_switch_time( - pCtx, pBufRemaining, len, - (tDot11fIEmax_chan_switch_time *) - (pFrm + pIe->offset + - sizeof(tDot11fIEmax_chan_switch_time) * - countOffset), - append_ie); - break; - case SigIemlo_capabilities: - status |= - dot11f_unpack_ie_mlo_capabilities( - pCtx, pBufRemaining, len, - (tDot11fIEmlo_capabilities *) - (pFrm + pIe->offset + - sizeof(tDot11fIEmlo_capabilities) * - countOffset), - append_ie); - break; case SigIemscs_status: status |= dot11f_unpack_ie_mscs_status( @@ -15400,26 +14908,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIenon_inheritance: - status |= - dot11f_unpack_ie_non_inheritance( - pCtx, pBufRemaining, len, - (tDot11fIEnon_inheritance *) - (pFrm + pIe->offset + - sizeof(tDot11fIEnon_inheritance) * - countOffset), - append_ie); - break; - case SigIeqcn_ie: - status |= - dot11f_unpack_ie_qcn_ie( - pCtx, pBufRemaining, len, - (tDot11fIEqcn_ie *) - (pFrm + pIe->offset + - sizeof(tDot11fIEqcn_ie) * - countOffset), - append_ie); - break; case SigIereq_mac_addr: status |= dot11f_unpack_ie_req_mac_addr( @@ -15500,6 +14988,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeChanSwitchAnn: + status |= + dot11f_unpack_ie_chan_switch_ann( + pCtx, pBufRemaining, len, + (tDot11fIEChanSwitchAnn *) + (pFrm + pIe->offset + + sizeof(tDot11fIEChanSwitchAnn) * + countOffset), + append_ie); + break; case SigIeChannelSwitchWrapper: status |= dot11f_unpack_ie_channel_switch_wrapper( @@ -15525,6 +15023,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, (uint8_t *) &(((tDot11fIEDSParams *)(pFrm + pIe->offset + sizeof(tDot11fIEDSParams)*countOffset))->present), (uint8_t *) &(((tDot11fIEDSParams *)(pFrm + pIe->offset + sizeof(tDot11fIEDSParams)*countOffset))->curr_channel)); break; + case SigIeEDCAParamSet: + status |= + dot11f_unpack_ie_edca_param_set( + pCtx, pBufRemaining, len, + (tDot11fIEEDCAParamSet *) + (pFrm + pIe->offset + + sizeof(tDot11fIEEDCAParamSet) * + countOffset), + append_ie); + break; case SigIeERPInfo: status |= dot11f_unpack_ie_erp_info( @@ -15595,6 +15103,26 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeExtCap: + status |= + dot11f_unpack_ie_ext_cap( + pCtx, pBufRemaining, len, + (tDot11fIEExtCap *) + (pFrm + pIe->offset + + sizeof(tDot11fIEExtCap) * + countOffset), + append_ie); + break; + case SigIeExtSuppRates: + status |= + dot11f_unpack_ie_ext_supp_rates( + pCtx, pBufRemaining, len, + (tDot11fIEExtSuppRates *) + (pFrm + pIe->offset + + sizeof(tDot11fIEExtSuppRates) * + countOffset), + append_ie); + break; case SigIeFHParamSet: status |= dot11f_unpack_ie_fh_param_set( @@ -15635,6 +15163,26 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeHTCaps: + status |= + dot11f_unpack_ie_ht_caps( + pCtx, pBufRemaining, len, + (tDot11fIEHTCaps *) + (pFrm + pIe->offset + + sizeof(tDot11fIEHTCaps) * + countOffset), + append_ie); + break; + case SigIeHTInfo: + status |= + dot11f_unpack_ie_ht_info( + pCtx, pBufRemaining, len, + (tDot11fIEHTInfo *) + (pFrm + pIe->offset + + sizeof(tDot11fIEHTInfo) * + countOffset), + append_ie); + break; case SigIeLinkIdentifier: status |= dot11f_unpack_ie_link_identifier( @@ -15705,6 +15253,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeOperatingMode: + status |= + dot11f_unpack_ie_operating_mode( + pCtx, pBufRemaining, len, + (tDot11fIEOperatingMode *) + (pFrm + pIe->offset + + sizeof(tDot11fIEOperatingMode) * + countOffset), + append_ie); + break; case SigIeP2PAssocReq: status |= dot11f_unpack_ie_p2_p_assoc_req( @@ -15715,6 +15273,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeP2PAssocRes: + status |= + dot11f_unpack_ie_p2_p_assoc_res( + pCtx, pBufRemaining, len, + (tDot11fIEP2PAssocRes *) + (pFrm + pIe->offset + + sizeof(tDot11fIEP2PAssocRes) * + countOffset), + append_ie); + break; case SigIeP2PBeacon: status |= dot11f_unpack_ie_p2_p_beacon( @@ -15875,6 +15443,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeQuiet: + status |= + dot11f_unpack_ie_quiet( + pCtx, pBufRemaining, len, + (tDot11fIEQuiet *) + (pFrm + pIe->offset + + sizeof(tDot11fIEQuiet) * + countOffset), + append_ie); + break; case SigIeRCPIIE: status |= dot11f_unpack_ie_rcpiie( @@ -15906,6 +15484,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeRSN: + status |= + dot11f_unpack_ie_rsn( + pCtx, pBufRemaining, len, + (tDot11fIERSN *) + (pFrm + pIe->offset + + sizeof(tDot11fIERSN) * + countOffset), + append_ie); + break; case SigIeRSNIIE: status |= dot11f_unpack_ie_rsniie( @@ -15936,6 +15524,26 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeSuppOperatingClasses: + status |= + dot11f_unpack_ie_supp_operating_classes( + pCtx, pBufRemaining, len, + (tDot11fIESuppOperatingClasses *) + (pFrm + pIe->offset + + sizeof(tDot11fIESuppOperatingClasses) * + countOffset), + append_ie); + break; + case SigIeSuppRates: + status |= + dot11f_unpack_ie_supp_rates( + pCtx, pBufRemaining, len, + (tDot11fIESuppRates *) + (pFrm + pIe->offset + + sizeof(tDot11fIESuppRates) * + countOffset), + append_ie); + break; case SigIeTIM: status |= dot11f_unpack_ie_tim( @@ -16056,6 +15664,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeWMMCaps: + status |= + dot11f_unpack_ie_wmm_caps( + pCtx, pBufRemaining, len, + (tDot11fIEWMMCaps *) + (pFrm + pIe->offset + + sizeof(tDot11fIEWMMCaps) * + countOffset), + append_ie); + break; case SigIeWMMInfoAp: status |= dot11f_unpack_ie_wmm_info_ap( @@ -16066,6 +15684,36 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeWMMInfoStation: + status |= + dot11f_unpack_ie_wmm_info_station( + pCtx, pBufRemaining, len, + (tDot11fIEWMMInfoStation *) + (pFrm + pIe->offset + + sizeof(tDot11fIEWMMInfoStation) * + countOffset), + append_ie); + break; + case SigIeWMMParams: + status |= + dot11f_unpack_ie_wmm_params( + pCtx, pBufRemaining, len, + (tDot11fIEWMMParams *) + (pFrm + pIe->offset + + sizeof(tDot11fIEWMMParams) * + countOffset), + append_ie); + break; + case SigIeWPA: + status |= + dot11f_unpack_ie_wpa( + pCtx, pBufRemaining, len, + (tDot11fIEWPA *) + (pFrm + pIe->offset + + sizeof(tDot11fIEWPA) * + countOffset), + append_ie); + break; case SigIeWPAOpaque: status |= dot11f_unpack_ie_wpa_opaque( @@ -16216,6 +15864,26 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeeht_cap: + status |= + dot11f_unpack_ie_eht_cap( + pCtx, pBufRemaining, len, + (tDot11fIEeht_cap *) + (pFrm + pIe->offset + + sizeof(tDot11fIEeht_cap) * + countOffset), + append_ie); + break; + case SigIeeht_op: + status |= + dot11f_unpack_ie_eht_op( + pCtx, pBufRemaining, len, + (tDot11fIEeht_op *) + (pFrm + pIe->offset + + sizeof(tDot11fIEeht_op) * + countOffset), + append_ie); + break; case SigIeesp_information: status |= dot11f_unpack_ie_esp_information( @@ -16226,6 +15894,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeext_chan_switch_ann: + status |= + dot11f_unpack_ie_ext_chan_switch_ann( + pCtx, pBufRemaining, len, + (tDot11fIEext_chan_switch_ann *) + (pFrm + pIe->offset + + sizeof(tDot11fIEext_chan_switch_ann) * + countOffset), + append_ie); + break; case SigIefils_assoc_delay_info: status |= dot11f_unpack_ie_fils_assoc_delay_info( @@ -16246,6 +15924,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIefils_indication: + status |= + dot11f_unpack_ie_fils_indication( + pCtx, pBufRemaining, len, + (tDot11fIEfils_indication *) + (pFrm + pIe->offset + + sizeof(tDot11fIEfils_indication) * + countOffset), + append_ie); + break; case SigIefils_kde: status |= dot11f_unpack_ie_fils_kde( @@ -16316,6 +16004,36 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIehe_6ghz_band_cap: + status |= + dot11f_unpack_ie_he_6ghz_band_cap( + pCtx, pBufRemaining, len, + (tDot11fIEhe_6ghz_band_cap *) + (pFrm + pIe->offset + + sizeof(tDot11fIEhe_6ghz_band_cap) * + countOffset), + append_ie); + break; + case SigIehe_cap: + status |= + dot11f_unpack_ie_he_cap( + pCtx, pBufRemaining, len, + (tDot11fIEhe_cap *) + (pFrm + pIe->offset + + sizeof(tDot11fIEhe_cap) * + countOffset), + append_ie); + break; + case SigIehe_op: + status |= + dot11f_unpack_ie_he_op( + pCtx, pBufRemaining, len, + (tDot11fIEhe_op *) + (pFrm + pIe->offset + + sizeof(tDot11fIEhe_op) * + countOffset), + append_ie); + break; case SigIehs20vendor_ie: status |= dot11f_unpack_ie_hs20vendor_ie( @@ -16346,6 +16064,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIemax_chan_switch_time: + status |= + dot11f_unpack_ie_max_chan_switch_time( + pCtx, pBufRemaining, len, + (tDot11fIEmax_chan_switch_time *) + (pFrm + pIe->offset + + sizeof(tDot11fIEmax_chan_switch_time) * + countOffset), + append_ie); + break; case SigIemlo_ie: status |= dot11f_unpack_ie_mlo_ie( @@ -16366,6 +16094,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIenon_inheritance: + status |= + dot11f_unpack_ie_non_inheritance( + pCtx, pBufRemaining, len, + (tDot11fIEnon_inheritance *) + (pFrm + pIe->offset + + sizeof(tDot11fIEnon_inheritance) * + countOffset), + append_ie); + break; case SigIeoci: status |= dot11f_unpack_ie_oci( @@ -16386,6 +16124,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIeqcn_ie: + status |= + dot11f_unpack_ie_qcn_ie( + pCtx, pBufRemaining, len, + (tDot11fIEqcn_ie *) + (pFrm + pIe->offset + + sizeof(tDot11fIEqcn_ie) * + countOffset), + append_ie); + break; case SigIereduced_neighbor_report: status |= dot11f_unpack_ie_reduced_neighbor_report( @@ -16526,30 +16274,25 @@ static uint32_t unpack_tlv_core(tpAniSirGlobal pCtx, } /* & length, */ if (pTlv->sLen == 2) { + framesntohs(pCtx, &len, pBufRemaining, pTlv->fMsb); if (2 > nBufRemaining) { FRAMES_LOG0(pCtx, FRLOGE, FRFL("This frame reports " "fewer two byte(s) remaining.\n")); status |= DOT11F_INCOMPLETE_TLV; FRAMES_DBG_BREAK(); goto MandatoryCheck; - } - framesntohs(pCtx, &len, pBufRemaining, pTlv->fMsb); - pBufRemaining += 2; - nBufRemaining -= 2; + } + pBufRemaining += 2; + nBufRemaining -= 2; } else { len = *pBufRemaining; pBufRemaining += 1; nBufRemaining -= 1; } } else { - if (TLVs[0].sType > nBufRemaining) { - FRAMES_LOG0(pCtx, FRLOGE, FRFL("This frame reports " - "fewer LVs[0].sType byte(s) remaining.\n")); - status |= DOT11F_INCOMPLETE_TLV; - goto MandatoryCheck; - } pBufRemaining += TLVs[0].sType; nBufRemaining -= TLVs[0].sType; + framesntohs(pCtx, &len, pBufRemaining, (TLVs[0].sType == 2)); if (2 > nBufRemaining) { FRAMES_LOG0(pCtx, FRLOGE, FRFL("This frame reports " "fewer two byte(s) remaining.\n")); @@ -16557,7 +16300,6 @@ static uint32_t unpack_tlv_core(tpAniSirGlobal pCtx, FRAMES_DBG_BREAK(); goto MandatoryCheck; } - framesntohs(pCtx, &len, pBufRemaining, (TLVs[0].sType == 2)); pBufRemaining += 2; nBufRemaining -= 2; } @@ -17139,69 +16881,6 @@ MandatoryCheck: return status; } /* End UnpacTlvkCore. */ -uint32_t dot11f_get_packed_iep2_p_assoc_res(tpAniSirGlobal pCtx, - tDot11fIEP2PAssocRes *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - status = get_packed_size_tlv_core(pCtx, (uint8_t *)pIe, pnNeeded, - TLVS_P2PAssocRes); - break; - } - return status; -} /* End dot11f_get_packed_iep2_p_assoc_res. */ - -uint32_t dot11f_get_packed_iersn(tpAniSirGlobal pCtx, - tDot11fIERSN *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - *pnNeeded += 2; - if (pIe->gp_cipher_suite_present) { - - *pnNeeded += 4; - } else { - break; - } - if (pIe->pwise_cipher_suite_count) { - *pnNeeded += 2; - } else { - break; - } - *pnNeeded += (pIe->pwise_cipher_suite_count * 4); - if (pIe->akm_suite_cnt) { - *pnNeeded += 2; - } else { - break; - } - *pnNeeded += (pIe->akm_suite_cnt * 4); - if (pIe->RSN_Cap_present) { - - *pnNeeded += 2; - } else { - break; - } - if (pIe->pmkid_count) { - *pnNeeded += 2; - } else { - if (pIe->gp_mgmt_cipher_suite_present) { - *pnNeeded += 2; - } - } - *pnNeeded += (pIe->pmkid_count * 16); - if (pIe->gp_mgmt_cipher_suite_present) { - - *pnNeeded += 4; - } else { - break; - } - break; - } - return status; -} /* End dot11f_get_packed_iersn. */ - uint32_t dot11f_get_packed_ietclas(tpAniSirGlobal pCtx, tDot11fIETCLAS *pIe, uint32_t *pnNeeded) { @@ -17293,142 +16972,6 @@ uint32_t dot11f_get_packed_iewmmtclas(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_iewmmtclas. */ -uint32_t dot11f_get_packed_iewpa(tpAniSirGlobal pCtx, - tDot11fIEWPA *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - *pnNeeded += 2; - if (pIe->multicast_cipher_present) { - - *pnNeeded += 4; - } else { - break; - } - if (pIe->unicast_cipher_count) { - *pnNeeded += 2; - } else { - break; - } - *pnNeeded += (pIe->unicast_cipher_count * 4); - if (pIe->auth_suite_count) { - *pnNeeded += 2; - } else { - break; - } - *pnNeeded += (pIe->auth_suite_count * 4); - if (pIe->caps) { - *pnNeeded += 2; - } else { - break; - } - break; - } - return status; -} /* End dot11f_get_packed_iewpa. */ - -uint32_t dot11f_get_packed_ie_eht_cap(tpAniSirGlobal pCtx, - tDot11fIEeht_cap *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - *pnNeeded += 2; - *pnNeeded += 4; - *pnNeeded += 4; - *pnNeeded += pIe->num_eht_mcs_map_20; - *pnNeeded += pIe->num_eht_mcs_map_le_80; - *pnNeeded += pIe->num_eht_mcs_map_160; - *pnNeeded += (pIe->support_320mhz_6ghz * 3); - if (pIe->ppet_present) { - switch (pIe->ppet_present) { - case 1: - *pnNeeded += pIe->ppet.ppe_threshold.num_ppe_th; - break; - } - } else { - break; - } - break; - } - return status; -} /* End dot11f_get_packed_ie_eht_cap. */ - -uint32_t dot11f_get_packed_ie_he_cap(tpAniSirGlobal pCtx, - tDot11fIEhe_cap *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - *pnNeeded += 4; - *pnNeeded += 2; - *pnNeeded += 4; - *pnNeeded += 4; - *pnNeeded += 2; - *pnNeeded += 1; - *pnNeeded += 2; - *pnNeeded += 2; - *pnNeeded += (pIe->chan_width_2 * 2); - *pnNeeded += (pIe->chan_width_2 * 2); - *pnNeeded += (pIe->chan_width_3 * 2); - *pnNeeded += (pIe->chan_width_3 * 2); - if (pIe->ppet_present) { - switch (pIe->ppet_present) { - case 1: - *pnNeeded += pIe->ppet.ppe_threshold.num_ppe_th; - break; - } - } else { - break; - } - break; - } - return status; -} /* End dot11f_get_packed_ie_he_cap. */ - -uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, - tDot11fIEhe_op *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - *pnNeeded += 2; - *pnNeeded += 1; - *pnNeeded += 1; - *pnNeeded += 2; - if (pIe->vht_oper_present) { - switch (pIe->vht_oper_present) { - case 1: - *pnNeeded += 1; - *pnNeeded += 1; - *pnNeeded += 1; - break; - } - } - if (pIe->co_located_bss) { - switch (pIe->co_located_bss) { - case 1: - *pnNeeded += 1; - break; - } - } - if (pIe->oper_info_6g_present) { - switch (pIe->oper_info_6g_present) { - case 1: - *pnNeeded += 1; - *pnNeeded += 1; - *pnNeeded += 1; - *pnNeeded += 1; - *pnNeeded += 1; - break; - } - } - break; - } - return status; -} /* End dot11f_get_packed_ie_he_op. */ - uint32_t dot11f_get_packed_ie_neighbor_rpt(tpAniSirGlobal pCtx, tDot11fIEneighbor_rpt *pIe, uint32_t *pnNeeded) { @@ -17449,62 +16992,6 @@ uint32_t dot11f_get_packed_ie_neighbor_rpt(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_ie_neighbor_rpt. */ -uint32_t dot11f_get_packed_ie_qcn_ie(tpAniSirGlobal pCtx, - tDot11fIEqcn_ie *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - status = get_packed_size_tlv_core(pCtx, (uint8_t *)pIe, pnNeeded, - TLVS_qcn_ie); - break; - } - return status; -} /* End dot11f_get_packed_ie_qcn_ie. */ - -uint32_t dot11f_get_packed_ie_sta_profile(tpAniSirGlobal pCtx, - tDot11fIEsta_profile *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - *pnNeeded += 2; - if (pIe->sta_mac_addr_present) { - switch (pIe->sta_mac_addr_present) { - case 1: - *pnNeeded += 6; - break; - } - } - if (pIe->beacon_interval_present) { - switch (pIe->beacon_interval_present) { - case 1: - *pnNeeded += 2; - break; - } - } - if (pIe->dtim_info_present) { - switch (pIe->dtim_info_present) { - case 1: - *pnNeeded += 1; - *pnNeeded += 1; - break; - } - } - if (pIe->nstr_link_pair_present) { - switch (pIe->nstr_link_pair_present) { - case 1: - *pnNeeded += 1; - break; - } - } - status = get_packed_size_core(pCtx, (uint8_t *)pIe, pnNeeded, - IES_sta_profile); - break; - } - return status; -} /* End dot11f_get_packed_ie_sta_profile. */ - uint32_t dot11f_get_packed_ie_tclas_mask(tpAniSirGlobal pCtx, tDot11fIEtclas_mask *pIe, uint32_t *pnNeeded) { @@ -17724,6 +17211,19 @@ uint32_t dot11f_get_packed_iep2_p_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_iep2_p_assoc_req. */ +uint32_t dot11f_get_packed_iep2_p_assoc_res(tpAniSirGlobal pCtx, + tDot11fIEP2PAssocRes *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + status = get_packed_size_tlv_core(pCtx, (uint8_t *)pIe, pnNeeded, + TLVS_P2PAssocRes); + break; + } + return status; +} /* End dot11f_get_packed_iep2_p_assoc_res. */ + uint32_t dot11f_get_packed_iep2_p_beacon(tpAniSirGlobal pCtx, tDot11fIEP2PBeacon *pIe, uint32_t *pnNeeded) { @@ -17815,6 +17315,56 @@ uint32_t dot11f_get_packed_ieric_data_desc(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_ieric_data_desc. */ +uint32_t dot11f_get_packed_iersn(tpAniSirGlobal pCtx, + tDot11fIERSN *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 2; + if (pIe->gp_cipher_suite_present) { + + *pnNeeded += 4; + } else { + break; + } + if (pIe->pwise_cipher_suite_count) { + *pnNeeded += 2; + } else { + break; + } + *pnNeeded += (pIe->pwise_cipher_suite_count * 4); + if (pIe->akm_suite_cnt) { + *pnNeeded += 2; + } else { + break; + } + *pnNeeded += (pIe->akm_suite_cnt * 4); + if (pIe->RSN_Cap_present) { + + *pnNeeded += 2; + } else { + break; + } + if (pIe->pmkid_count) { + *pnNeeded += 2; + } else { + if (pIe->gp_mgmt_cipher_suite_present) { + *pnNeeded += 2; + } + } + *pnNeeded += (pIe->pmkid_count * 16); + if (pIe->gp_mgmt_cipher_suite_present) { + + *pnNeeded += 4; + } else { + break; + } + break; + } + return status; +} /* End dot11f_get_packed_iersn. */ + uint32_t dot11f_get_packed_iewapi(tpAniSirGlobal pCtx, tDot11fIEWAPI *pIe, uint32_t *pnNeeded) { @@ -17839,6 +17389,41 @@ uint32_t dot11f_get_packed_iewapi(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_iewapi. */ +uint32_t dot11f_get_packed_iewpa(tpAniSirGlobal pCtx, + tDot11fIEWPA *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 2; + if (pIe->multicast_cipher_present) { + + *pnNeeded += 4; + } else { + break; + } + if (pIe->unicast_cipher_count) { + *pnNeeded += 2; + } else { + break; + } + *pnNeeded += (pIe->unicast_cipher_count * 4); + if (pIe->auth_suite_count) { + *pnNeeded += 2; + } else { + break; + } + *pnNeeded += (pIe->auth_suite_count * 4); + if (pIe->caps) { + *pnNeeded += 2; + } else { + break; + } + break; + } + return status; +} /* End dot11f_get_packed_iewpa. */ + uint32_t dot11f_get_packed_iewsc(tpAniSirGlobal pCtx, tDot11fIEWSC *pIe, uint32_t *pnNeeded) { @@ -17959,6 +17544,107 @@ uint32_t dot11f_get_packed_ie_decriptor_element(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_ie_decriptor_element. */ +uint32_t dot11f_get_packed_ie_eht_cap(tpAniSirGlobal pCtx, + tDot11fIEeht_cap *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 2; + *pnNeeded += 4; + *pnNeeded += 4; + *pnNeeded += pIe->num_eht_mcs_map_20; + *pnNeeded += pIe->num_eht_mcs_map_le_80; + *pnNeeded += pIe->num_eht_mcs_map_160; + *pnNeeded += (pIe->support_320mhz_6ghz * 3); + if (pIe->ppet_present) { + switch (pIe->ppet_present) { + case 1: + *pnNeeded += pIe->ppet.ppe_threshold.num_ppe_th; + break; + } + } else { + break; + } + break; + } + return status; +} /* End dot11f_get_packed_ie_eht_cap. */ + +uint32_t dot11f_get_packed_ie_he_cap(tpAniSirGlobal pCtx, + tDot11fIEhe_cap *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 4; + *pnNeeded += 2; + *pnNeeded += 4; + *pnNeeded += 4; + *pnNeeded += 2; + *pnNeeded += 1; + *pnNeeded += 2; + *pnNeeded += 2; + *pnNeeded += (pIe->chan_width_2 * 2); + *pnNeeded += (pIe->chan_width_2 * 2); + *pnNeeded += (pIe->chan_width_3 * 2); + *pnNeeded += (pIe->chan_width_3 * 2); + if (pIe->ppet_present) { + switch (pIe->ppet_present) { + case 1: + *pnNeeded += pIe->ppet.ppe_threshold.num_ppe_th; + break; + } + } else { + break; + } + break; + } + return status; +} /* End dot11f_get_packed_ie_he_cap. */ + +uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, + tDot11fIEhe_op *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 2; + *pnNeeded += 1; + *pnNeeded += 1; + *pnNeeded += 2; + if (pIe->vht_oper_present) { + switch (pIe->vht_oper_present) { + case 1: + *pnNeeded += 1; + *pnNeeded += 1; + *pnNeeded += 1; + break; + } + } + if (pIe->co_located_bss) { + switch (pIe->co_located_bss) { + case 1: + *pnNeeded += 1; + break; + } + } + if (pIe->oper_info_6g_present) { + switch (pIe->oper_info_6g_present) { + case 1: + *pnNeeded += 1; + *pnNeeded += 1; + *pnNeeded += 1; + *pnNeeded += 1; + *pnNeeded += 1; + break; + } + } + break; + } + return status; +} /* End dot11f_get_packed_ie_he_op. */ + uint32_t dot11f_get_packed_ie_hs20vendor_ie(tpAniSirGlobal pCtx, tDot11fIEhs20vendor_ie *pIe, uint32_t *pnNeeded) { @@ -18040,6 +17726,19 @@ uint32_t dot11f_get_packed_ie_mlo_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_ie_mlo_ie. */ +uint32_t dot11f_get_packed_ie_qcn_ie(tpAniSirGlobal pCtx, + tDot11fIEqcn_ie *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + status = get_packed_size_tlv_core(pCtx, (uint8_t *)pIe, pnNeeded, + TLVS_qcn_ie); + break; + } + return status; +} /* End dot11f_get_packed_ie_qcn_ie. */ + uint32_t dot11f_get_packed_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, tDot11fIEreduced_neighbor_report *pIe, uint32_t *pnNeeded) { @@ -18761,13 +18460,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeChanSwitchAnn: - offset = sizeof(tDot11fIEChanSwitchAnn); - byteCount = 3; - pIePresent = ((tDot11fIEChanSwitchAnn *) - (pFrm + pIe->offset + offset * i))-> - present; - break; case SigIeCondensedCountryStr: offset = sizeof(tDot11fIECondensedCountryStr); byteCount = 2; @@ -18775,49 +18467,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeEDCAParamSet: - offset = sizeof(tDot11fIEEDCAParamSet); - byteCount = 18; - pIePresent = ((tDot11fIEEDCAParamSet *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeExtCap: - offset = sizeof(tDot11fIEExtCap); - byteCount = ((tDot11fIEExtCap *) - (pFrm + pIe->offset + offset * i))-> - num_bytes; - pIePresent = ((tDot11fIEExtCap *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeExtSuppRates: - offset = sizeof(tDot11fIEExtSuppRates); - byteCount = ((tDot11fIEExtSuppRates *) - (pFrm + pIe->offset + offset * i))-> - num_rates; - pIePresent = ((tDot11fIEExtSuppRates *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeHTCaps: - offset = sizeof(tDot11fIEHTCaps); - byteCount = ((tDot11fIEHTCaps *) - (pFrm + pIe->offset + offset * i))-> - num_rsvd + 26; - pIePresent = ((tDot11fIEHTCaps *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeHTInfo: - offset = sizeof(tDot11fIEHTInfo); - byteCount = ((tDot11fIEHTInfo *) - (pFrm + pIe->offset + offset * i))-> - num_rsvd + 22; - pIePresent = ((tDot11fIEHTInfo *) - (pFrm + pIe->offset + offset * i))-> - present; - break; case SigIeMeasurementPilot: offset = sizeof(tDot11fIEMeasurementPilot); byteCount = ((tDot11fIEMeasurementPilot *) @@ -18836,28 +18485,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeOperatingMode: - offset = sizeof(tDot11fIEOperatingMode); - byteCount = 1; - pIePresent = ((tDot11fIEOperatingMode *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeP2PAssocRes: - offset = sizeof(tDot11fIEP2PAssocRes); - status |= - dot11f_get_packed_iep2_p_assoc_res( - pCtx, (tDot11fIEP2PAssocRes *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; - case SigIeQuiet: - offset = sizeof(tDot11fIEQuiet); - byteCount = 6; - pIePresent = ((tDot11fIEQuiet *) - (pFrm + pIe->offset + offset * i))-> - present; - break; case SigIeRICData: offset = sizeof(tDot11fIERICData); byteCount = 4; @@ -18881,14 +18508,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeRSN: - offset = sizeof(tDot11fIERSN); - status |= - dot11f_get_packed_iersn( - pCtx, (tDot11fIERSN *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; case SigIeRequestedInfo: offset = sizeof(tDot11fIERequestedInfo); byteCount = ((tDot11fIERequestedInfo *) @@ -18914,24 +18533,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeSuppOperatingClasses: - offset = sizeof(tDot11fIESuppOperatingClasses); - byteCount = ((tDot11fIESuppOperatingClasses *) - (pFrm + pIe->offset + offset * i))-> - num_classes; - pIePresent = ((tDot11fIESuppOperatingClasses *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeSuppRates: - offset = sizeof(tDot11fIESuppRates); - byteCount = ((tDot11fIESuppRates *) - (pFrm + pIe->offset + offset * i))-> - num_rates; - pIePresent = ((tDot11fIESuppRates *) - (pFrm + pIe->offset + offset * i))-> - present; - break; case SigIeTCLAS: offset = sizeof(tDot11fIETCLAS); status |= @@ -18982,27 +18583,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeWMMCaps: - offset = sizeof(tDot11fIEWMMCaps); - byteCount = 2; - pIePresent = ((tDot11fIEWMMCaps *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeWMMInfoStation: - offset = sizeof(tDot11fIEWMMInfoStation); - byteCount = 2; - pIePresent = ((tDot11fIEWMMInfoStation *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeWMMParams: - offset = sizeof(tDot11fIEWMMParams); - byteCount = 19; - pIePresent = ((tDot11fIEWMMParams *) - (pFrm + pIe->offset + offset * i))-> - present; - break; case SigIeWMMSchedule: offset = sizeof(tDot11fIEWMMSchedule); byteCount = 15; @@ -19039,14 +18619,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeWPA: - offset = sizeof(tDot11fIEWPA); - status |= - dot11f_get_packed_iewpa( - pCtx, (tDot11fIEWPA *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; case SigIeWiderBWChanSwitchAnn: offset = sizeof(tDot11fIEWiderBWChanSwitchAnn); byteCount = 3; @@ -19068,60 +18640,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIeeht_cap: - offset = sizeof(tDot11fIEeht_cap); - status |= - dot11f_get_packed_ie_eht_cap( - pCtx, (tDot11fIEeht_cap *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; - case SigIeeht_op: - offset = sizeof(tDot11fIEeht_op); - byteCount = 7; - pIePresent = ((tDot11fIEeht_op *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeext_chan_switch_ann: - offset = sizeof(tDot11fIEext_chan_switch_ann); - byteCount = 4; - pIePresent = ((tDot11fIEext_chan_switch_ann *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIefils_indication: - offset = sizeof(tDot11fIEfils_indication); - byteCount = ((tDot11fIEfils_indication *) - (pFrm + pIe->offset + offset * i))-> - num_variable_data + 2; - pIePresent = ((tDot11fIEfils_indication *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIehe_6ghz_band_cap: - offset = sizeof(tDot11fIEhe_6ghz_band_cap); - byteCount = 2; - pIePresent = ((tDot11fIEhe_6ghz_band_cap *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIehe_cap: - offset = sizeof(tDot11fIEhe_cap); - status |= - dot11f_get_packed_ie_he_cap( - pCtx, (tDot11fIEhe_cap *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; - case SigIehe_op: - offset = sizeof(tDot11fIEhe_op); - status |= - dot11f_get_packed_ie_he_op( - pCtx, (tDot11fIEhe_op *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; case SigIelast_beacon_report_indication: offset = sizeof(tDot11fIElast_beacon_report_indication); byteCount = 1; @@ -19136,20 +18654,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIemax_chan_switch_time: - offset = sizeof(tDot11fIEmax_chan_switch_time); - byteCount = 3; - pIePresent = ((tDot11fIEmax_chan_switch_time *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIemlo_capabilities: - offset = sizeof(tDot11fIEmlo_capabilities); - byteCount = 2; - pIePresent = ((tDot11fIEmlo_capabilities *) - (pFrm + pIe->offset + offset * i))-> - present; - break; case SigIemscs_status: offset = sizeof(tDot11fIEmscs_status); byteCount = 1; @@ -19165,23 +18669,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i), pnNeeded); break; - case SigIenon_inheritance: - offset = sizeof(tDot11fIEnon_inheritance); - byteCount = ((tDot11fIEnon_inheritance *) - (pFrm + pIe->offset + offset * i))-> - num_data; - pIePresent = ((tDot11fIEnon_inheritance *) - (pFrm + pIe->offset + offset * i))-> - present; - break; - case SigIeqcn_ie: - offset = sizeof(tDot11fIEqcn_ie); - status |= - dot11f_get_packed_ie_qcn_ie( - pCtx, (tDot11fIEqcn_ie *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; case SigIereq_mac_addr: offset = sizeof(tDot11fIEreq_mac_addr); byteCount = 6; @@ -19191,11 +18678,12 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, break; case SigIesta_profile: offset = sizeof(tDot11fIEsta_profile); - status |= - dot11f_get_packed_ie_sta_profile( - pCtx, (tDot11fIEsta_profile *) - (pFrm + pIe->offset + offset * i), - pnNeeded); + byteCount = ((tDot11fIEsta_profile *) + (pFrm + pIe->offset + offset * i))-> + num_data; + pIePresent = ((tDot11fIEsta_profile *) + (pFrm + pIe->offset + offset * i))-> + present; break; case SigIetclas_mask: offset = sizeof(tDot11fIEtclas_mask); @@ -19244,6 +18732,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeChanSwitchAnn: + offset = sizeof(tDot11fIEChanSwitchAnn); + byteCount = 3; + pIePresent = ((tDot11fIEChanSwitchAnn *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeChannelSwitchWrapper: offset = sizeof(tDot11fIEChannelSwitchWrapper); status |= @@ -19267,6 +18762,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeEDCAParamSet: + offset = sizeof(tDot11fIEEDCAParamSet); + byteCount = 18; + pIePresent = ((tDot11fIEEDCAParamSet *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeERPInfo: offset = sizeof(tDot11fIEERPInfo); byteCount = 1; @@ -19320,6 +18822,24 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeExtCap: + offset = sizeof(tDot11fIEExtCap); + byteCount = ((tDot11fIEExtCap *) + (pFrm + pIe->offset + offset * i))-> + num_bytes; + pIePresent = ((tDot11fIEExtCap *) + (pFrm + pIe->offset + offset * i))-> + present; + break; + case SigIeExtSuppRates: + offset = sizeof(tDot11fIEExtSuppRates); + byteCount = ((tDot11fIEExtSuppRates *) + (pFrm + pIe->offset + offset * i))-> + num_rates; + pIePresent = ((tDot11fIEExtSuppRates *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeFHParamSet: offset = sizeof(tDot11fIEFHParamSet); byteCount = 5; @@ -19351,6 +18871,24 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i), pnNeeded); break; + case SigIeHTCaps: + offset = sizeof(tDot11fIEHTCaps); + byteCount = ((tDot11fIEHTCaps *) + (pFrm + pIe->offset + offset * i))-> + num_rsvd + 26; + pIePresent = ((tDot11fIEHTCaps *) + (pFrm + pIe->offset + offset * i))-> + present; + break; + case SigIeHTInfo: + offset = sizeof(tDot11fIEHTInfo); + byteCount = ((tDot11fIEHTInfo *) + (pFrm + pIe->offset + offset * i))-> + num_rsvd + 22; + pIePresent = ((tDot11fIEHTInfo *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeLinkIdentifier: offset = sizeof(tDot11fIELinkIdentifier); byteCount = 18; @@ -19404,6 +18942,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeOperatingMode: + offset = sizeof(tDot11fIEOperatingMode); + byteCount = 1; + pIePresent = ((tDot11fIEOperatingMode *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeP2PAssocReq: offset = sizeof(tDot11fIEP2PAssocReq); status |= @@ -19412,6 +18957,14 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i), pnNeeded); break; + case SigIeP2PAssocRes: + offset = sizeof(tDot11fIEP2PAssocRes); + status |= + dot11f_get_packed_iep2_p_assoc_res( + pCtx, (tDot11fIEP2PAssocRes *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIeP2PBeacon: offset = sizeof(tDot11fIEP2PBeacon); status |= @@ -19534,6 +19087,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeQuiet: + offset = sizeof(tDot11fIEQuiet); + byteCount = 6; + pIePresent = ((tDot11fIEQuiet *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeRCPIIE: offset = sizeof(tDot11fIERCPIIE); byteCount = 1; @@ -19550,6 +19110,14 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i), pnNeeded); break; + case SigIeRSN: + offset = sizeof(tDot11fIERSN); + status |= + dot11f_get_packed_iersn( + pCtx, (tDot11fIERSN *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIeRSNIIE: offset = sizeof(tDot11fIERSNIIE); byteCount = 1; @@ -19575,6 +19143,24 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeSuppOperatingClasses: + offset = sizeof(tDot11fIESuppOperatingClasses); + byteCount = ((tDot11fIESuppOperatingClasses *) + (pFrm + pIe->offset + offset * i))-> + num_classes; + pIePresent = ((tDot11fIESuppOperatingClasses *) + (pFrm + pIe->offset + offset * i))-> + present; + break; + case SigIeSuppRates: + offset = sizeof(tDot11fIESuppRates); + byteCount = ((tDot11fIESuppRates *) + (pFrm + pIe->offset + offset * i))-> + num_rates; + pIePresent = ((tDot11fIESuppRates *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeTIM: offset = sizeof(tDot11fIETIM); byteCount = ((tDot11fIETIM *) @@ -19666,6 +19252,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeWMMCaps: + offset = sizeof(tDot11fIEWMMCaps); + byteCount = 2; + pIePresent = ((tDot11fIEWMMCaps *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeWMMInfoAp: offset = sizeof(tDot11fIEWMMInfoAp); byteCount = 2; @@ -19673,6 +19266,28 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeWMMInfoStation: + offset = sizeof(tDot11fIEWMMInfoStation); + byteCount = 2; + pIePresent = ((tDot11fIEWMMInfoStation *) + (pFrm + pIe->offset + offset * i))-> + present; + break; + case SigIeWMMParams: + offset = sizeof(tDot11fIEWMMParams); + byteCount = 19; + pIePresent = ((tDot11fIEWMMParams *) + (pFrm + pIe->offset + offset * i))-> + present; + break; + case SigIeWPA: + offset = sizeof(tDot11fIEWPA); + status |= + dot11f_get_packed_iewpa( + pCtx, (tDot11fIEWPA *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIeWPAOpaque: offset = sizeof(tDot11fIEWPAOpaque); byteCount = ((tDot11fIEWPAOpaque *) @@ -19793,6 +19408,21 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeeht_cap: + offset = sizeof(tDot11fIEeht_cap); + status |= + dot11f_get_packed_ie_eht_cap( + pCtx, (tDot11fIEeht_cap *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; + case SigIeeht_op: + offset = sizeof(tDot11fIEeht_op); + byteCount = 7; + pIePresent = ((tDot11fIEeht_op *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeesp_information: offset = sizeof(tDot11fIEesp_information); byteCount = ((tDot11fIEesp_information *) @@ -19802,6 +19432,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeext_chan_switch_ann: + offset = sizeof(tDot11fIEext_chan_switch_ann); + byteCount = 4; + pIePresent = ((tDot11fIEext_chan_switch_ann *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIefils_assoc_delay_info: offset = sizeof(tDot11fIEfils_assoc_delay_info); byteCount = 1; @@ -19818,6 +19455,15 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIefils_indication: + offset = sizeof(tDot11fIEfils_indication); + byteCount = ((tDot11fIEfils_indication *) + (pFrm + pIe->offset + offset * i))-> + num_variable_data + 2; + pIePresent = ((tDot11fIEfils_indication *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIefils_kde: offset = sizeof(tDot11fIEfils_kde); byteCount = ((tDot11fIEfils_kde *) @@ -19877,6 +19523,29 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIehe_6ghz_band_cap: + offset = sizeof(tDot11fIEhe_6ghz_band_cap); + byteCount = 2; + pIePresent = ((tDot11fIEhe_6ghz_band_cap *) + (pFrm + pIe->offset + offset * i))-> + present; + break; + case SigIehe_cap: + offset = sizeof(tDot11fIEhe_cap); + status |= + dot11f_get_packed_ie_he_cap( + pCtx, (tDot11fIEhe_cap *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; + case SigIehe_op: + offset = sizeof(tDot11fIEhe_op); + status |= + dot11f_get_packed_ie_he_op( + pCtx, (tDot11fIEhe_op *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIehs20vendor_ie: offset = sizeof(tDot11fIEhs20vendor_ie); status |= @@ -19901,6 +19570,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIemax_chan_switch_time: + offset = sizeof(tDot11fIEmax_chan_switch_time); + byteCount = 3; + pIePresent = ((tDot11fIEmax_chan_switch_time *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIemlo_ie: offset = sizeof(tDot11fIEmlo_ie); status |= @@ -19916,6 +19592,15 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIenon_inheritance: + offset = sizeof(tDot11fIEnon_inheritance); + byteCount = ((tDot11fIEnon_inheritance *) + (pFrm + pIe->offset + offset * i))-> + num_data; + pIePresent = ((tDot11fIEnon_inheritance *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeoci: offset = sizeof(tDot11fIEoci); byteCount = 3; @@ -19932,6 +19617,14 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIeqcn_ie: + offset = sizeof(tDot11fIEqcn_ie); + status |= + dot11f_get_packed_ie_qcn_ie( + pCtx, (tDot11fIEqcn_ie *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIereduced_neighbor_report: offset = sizeof(tDot11fIEreduced_neighbor_report); status |= @@ -20348,25 +20041,25 @@ void dot11f_pack_ff_capabilities(tpAniSirGlobal pCtx, tDot11fFfCapabilities *pSrc, uint8_t *pBuf) { - uint16_t tmp115__; - tmp115__ = 0U; - tmp115__ |= (pSrc->ess << 0); - tmp115__ |= (pSrc->ibss << 1); - tmp115__ |= (pSrc->cfPollable << 2); - tmp115__ |= (pSrc->cfPollReq << 3); - tmp115__ |= (pSrc->privacy << 4); - tmp115__ |= (pSrc->shortPreamble << 5); - tmp115__ |= (pSrc->criticalUpdateFlag << 6); - tmp115__ |= (pSrc->channelAgility << 7); - tmp115__ |= (pSrc->spectrumMgt << 8); - tmp115__ |= (pSrc->qos << 9); - tmp115__ |= (pSrc->shortSlotTime << 10); - tmp115__ |= (pSrc->apsd << 11); - tmp115__ |= (pSrc->rrm << 12); - tmp115__ |= (pSrc->dsssOfdm << 13); - tmp115__ |= (pSrc->delayedBA << 14); - tmp115__ |= (pSrc->immediateBA << 15); - frameshtons(pCtx, pBuf, tmp115__, 0); + uint16_t tmp113__; + tmp113__ = 0U; + tmp113__ |= (pSrc->ess << 0); + tmp113__ |= (pSrc->ibss << 1); + tmp113__ |= (pSrc->cfPollable << 2); + tmp113__ |= (pSrc->cfPollReq << 3); + tmp113__ |= (pSrc->privacy << 4); + tmp113__ |= (pSrc->shortPreamble << 5); + tmp113__ |= (pSrc->criticalUpdateFlag << 6); + tmp113__ |= (pSrc->channelAgility << 7); + tmp113__ |= (pSrc->spectrumMgt << 8); + tmp113__ |= (pSrc->qos << 9); + tmp113__ |= (pSrc->shortSlotTime << 10); + tmp113__ |= (pSrc->apsd << 11); + tmp113__ |= (pSrc->rrm << 12); + tmp113__ |= (pSrc->dsssOfdm << 13); + tmp113__ |= (pSrc->delayedBA << 14); + tmp113__ |= (pSrc->immediateBA << 15); + frameshtons(pCtx, pBuf, tmp113__, 0); (void)pCtx; } /* End dot11f_pack_ff_capabilities. */ @@ -20430,13 +20123,13 @@ void dot11f_pack_ff_operating_mode(tpAniSirGlobal pCtx, tDot11fFfOperatingMode *pSrc, uint8_t *pBuf) { - uint8_t tmp116__; - tmp116__ = 0U; - tmp116__ |= (pSrc->chanWidth << 0); - tmp116__ |= (pSrc->reserved << 2); - tmp116__ |= (pSrc->rxNSS << 4); - tmp116__ |= (pSrc->rxNSSType << 7); - *pBuf = tmp116__; + uint8_t tmp114__; + tmp114__ = 0U; + tmp114__ |= (pSrc->chanWidth << 0); + tmp114__ |= (pSrc->reserved << 2); + tmp114__ |= (pSrc->rxNSS << 4); + tmp114__ |= (pSrc->rxNSSType << 7); + *pBuf = tmp114__; (void)pCtx; } /* End dot11f_pack_ff_operating_mode. */ @@ -20476,12 +20169,12 @@ void dot11f_pack_ff_sm_power_mode_set(tpAniSirGlobal pCtx, tDot11fFfSMPowerModeSet *pSrc, uint8_t *pBuf) { - uint8_t tmp117__; - tmp117__ = 0U; - tmp117__ |= (pSrc->PowerSave_En << 0); - tmp117__ |= (pSrc->Mode << 1); - tmp117__ |= (pSrc->reserved << 2); - *pBuf = tmp117__; + uint8_t tmp115__; + tmp115__ = 0U; + tmp115__ |= (pSrc->PowerSave_En << 0); + tmp115__ |= (pSrc->Mode << 1); + tmp115__ |= (pSrc->reserved << 2); + *pBuf = tmp115__; (void)pCtx; } /* End dot11f_pack_ff_sm_power_mode_set. */ @@ -20521,19 +20214,19 @@ void dot11f_pack_ff_ts_info(tpAniSirGlobal pCtx, tDot11fFfTSInfo *pSrc, uint8_t *pBuf) { - uint32_t tmp118__; - tmp118__ = 0U; - tmp118__ |= (pSrc->traffic_type << 0); - tmp118__ |= (pSrc->tsid << 1); - tmp118__ |= (pSrc->direction << 5); - tmp118__ |= (pSrc->access_policy << 7); - tmp118__ |= (pSrc->aggregation << 9); - tmp118__ |= (pSrc->psb << 10); - tmp118__ |= (pSrc->user_priority << 11); - tmp118__ |= (pSrc->tsinfo_ack_pol << 14); - tmp118__ |= (pSrc->schedule << 16); - tmp118__ |= (pSrc->unused << 17); - frameshtonl(pCtx, pBuf, tmp118__, 0); + uint32_t tmp116__; + tmp116__ = 0U; + tmp116__ |= (pSrc->traffic_type << 0); + tmp116__ |= (pSrc->tsid << 1); + tmp116__ |= (pSrc->direction << 5); + tmp116__ |= (pSrc->access_policy << 7); + tmp116__ |= (pSrc->aggregation << 9); + tmp116__ |= (pSrc->psb << 10); + tmp116__ |= (pSrc->user_priority << 11); + tmp116__ |= (pSrc->tsinfo_ack_pol << 14); + tmp116__ |= (pSrc->schedule << 16); + tmp116__ |= (pSrc->unused << 17); + frameshtonl(pCtx, pBuf, tmp116__, 0); (void)pCtx; } /* End dot11f_pack_ff_ts_info. */ @@ -20589,13 +20282,13 @@ void dot11f_pack_ff_addba_param_set(tpAniSirGlobal pCtx, tDot11fFfaddba_param_set *pSrc, uint8_t *pBuf) { - uint16_t tmp119__; - tmp119__ = 0U; - tmp119__ |= (pSrc->amsdu_supp << 0); - tmp119__ |= (pSrc->policy << 1); - tmp119__ |= (pSrc->tid << 2); - tmp119__ |= (pSrc->buff_size << 6); - frameshtons(pCtx, pBuf, tmp119__, 0); + uint16_t tmp117__; + tmp117__ = 0U; + tmp117__ |= (pSrc->amsdu_supp << 0); + tmp117__ |= (pSrc->policy << 1); + tmp117__ |= (pSrc->tid << 2); + tmp117__ |= (pSrc->buff_size << 6); + frameshtons(pCtx, pBuf, tmp117__, 0); (void)pCtx; } /* End dot11f_pack_ff_addba_param_set. */ @@ -20603,11 +20296,11 @@ void dot11f_pack_ff_ba_start_seq_ctrl(tpAniSirGlobal pCtx, tDot11fFfba_start_seq_ctrl *pSrc, uint8_t *pBuf) { - uint16_t tmp120__; - tmp120__ = 0U; - tmp120__ |= (pSrc->frag_number << 0); - tmp120__ |= (pSrc->ssn << 4); - frameshtons(pCtx, pBuf, tmp120__, 0); + uint16_t tmp118__; + tmp118__ = 0U; + tmp118__ |= (pSrc->frag_number << 0); + tmp118__ |= (pSrc->ssn << 4); + frameshtons(pCtx, pBuf, tmp118__, 0); (void)pCtx; } /* End dot11f_pack_ff_ba_start_seq_ctrl. */ @@ -20623,12 +20316,12 @@ void dot11f_pack_ff_delba_param_set(tpAniSirGlobal pCtx, tDot11fFfdelba_param_set *pSrc, uint8_t *pBuf) { - uint16_t tmp121__; - tmp121__ = 0U; - tmp121__ |= (pSrc->reserved << 0); - tmp121__ |= (pSrc->initiator << 11); - tmp121__ |= (pSrc->tid << 12); - frameshtons(pCtx, pBuf, tmp121__, 0); + uint16_t tmp119__; + tmp119__ = 0U; + tmp119__ |= (pSrc->reserved << 0); + tmp119__ |= (pSrc->initiator << 11); + tmp119__ |= (pSrc->tid << 12); + frameshtons(pCtx, pBuf, tmp119__, 0); (void)pCtx; } /* End dot11f_pack_ff_delba_param_set. */ @@ -20636,13 +20329,13 @@ void dot11f_pack_ff_ext_chan_switch_ann_action(tpAniSirGlobal pCtx, tDot11fFfext_chan_switch_ann_action *pSrc, uint8_t *pBuf) { - uint32_t tmp122__; - tmp122__ = 0U; - tmp122__ |= (pSrc->switch_mode << 0); - tmp122__ |= (pSrc->op_class << 8); - tmp122__ |= (pSrc->new_channel << 16); - tmp122__ |= (pSrc->switch_count << 24); - frameshtonl(pCtx, pBuf, tmp122__, 0); + uint32_t tmp120__; + tmp120__ = 0U; + tmp120__ |= (pSrc->switch_mode << 0); + tmp120__ |= (pSrc->op_class << 8); + tmp120__ |= (pSrc->new_channel << 16); + tmp120__ |= (pSrc->switch_count << 24); + frameshtonl(pCtx, pBuf, tmp120__, 0); (void)pCtx; } /* End dot11f_pack_ff_ext_chan_switch_ann_action. */ @@ -20745,7 +20438,7 @@ uint32_t dot11f_pack_tlv_version2(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp123__; + uint8_t tmp121__; nNeeded += 3; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -20754,13 +20447,13 @@ uint32_t dot11f_pack_tlv_version2(tpAniSirGlobal pCtx, pBuf += 1; *pnConsumed += 1; pTlvLen = pBuf; pBuf += 1; *pnConsumed += 1; - tmp123__ = 0U; - tmp123__ |= (pSrc->minor << 0); - tmp123__ |= (pSrc->major << 4); + tmp121__ = 0U; + tmp121__ |= (pSrc->minor << 0); + tmp121__ |= (pSrc->major << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp123__; + *pBuf = tmp121__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -21717,7 +21410,7 @@ uint32_t dot11f_pack_tlv_version(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp124__; + uint8_t tmp122__; nNeeded += 5; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -21726,13 +21419,13 @@ uint32_t dot11f_pack_tlv_version(tpAniSirGlobal pCtx, pBuf += 2; *pnConsumed += 2; pTlvLen = pBuf; pBuf += 2; *pnConsumed += 2; - tmp124__ = 0U; - tmp124__ |= (pSrc->minor << 0); - tmp124__ |= (pSrc->major << 4); + tmp122__ = 0U; + tmp122__ |= (pSrc->minor << 0); + tmp122__ |= (pSrc->major << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp124__; + *pBuf = tmp122__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -22115,7 +21808,7 @@ uint32_t dot11f_pack_tlv_oce_cap(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp125__; + uint8_t tmp123__; nNeeded += 3; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -22124,15 +21817,15 @@ uint32_t dot11f_pack_tlv_oce_cap(tpAniSirGlobal pCtx, pBuf += 1; *pnConsumed += 1; pTlvLen = pBuf; pBuf += 1; *pnConsumed += 1; - tmp125__ = 0U; - tmp125__ |= (pSrc->oce_release << 0); - tmp125__ |= (pSrc->is_sta_cfon << 3); - tmp125__ |= (pSrc->non_oce_ap_present << 4); - tmp125__ |= (pSrc->reserved << 5); + tmp123__ = 0U; + tmp123__ |= (pSrc->oce_release << 0); + tmp123__ |= (pSrc->is_sta_cfon << 3); + tmp123__ |= (pSrc->non_oce_ap_present << 4); + tmp123__ |= (pSrc->reserved << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp125__; + *pBuf = tmp123__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -22186,7 +21879,7 @@ uint32_t dot11f_pack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx, uint8_t *pTlvLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp126__; + uint8_t tmp124__; nNeeded += 3; if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; @@ -22195,13 +21888,13 @@ uint32_t dot11f_pack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx, pBuf += 1; *pnConsumed += 1; pTlvLen = pBuf; pBuf += 1; *pnConsumed += 1; - tmp126__ = 0U; - tmp126__ |= (pSrc->downlink_av_cap << 0); - tmp126__ |= (pSrc->uplink_av_cap << 4); + tmp124__ = 0U; + tmp124__ |= (pSrc->downlink_av_cap << 0); + tmp124__ |= (pSrc->uplink_av_cap << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp126__; + *pBuf = tmp124__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -22458,7 +22151,7 @@ uint32_t dot11f_pack_ie_gtk(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp127__; + uint16_t tmp125__; nNeeded += (pSrc->num_key + 11); while (pSrc->present) { if (nNeeded > nBuf) @@ -22467,13 +22160,13 @@ uint32_t dot11f_pack_ie_gtk(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp127__ = 0U; - tmp127__ |= (pSrc->keyId << 0); - tmp127__ |= (pSrc->reserved << 2); + tmp125__ = 0U; + tmp125__ |= (pSrc->keyId << 0); + tmp125__ |= (pSrc->reserved << 2); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp127__, 0); + frameshtons(pCtx, pBuf, tmp125__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -22713,41 +22406,6 @@ uint32_t dot11f_pack_ie_beacon_reporting(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_beacon_reporting. */ -uint32_t dot11f_pack_ie_chan_switch_ann(tpAniSirGlobal pCtx, - tDot11fIEChanSwitchAnn *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += 3; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 37; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->switchMode; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->newChannel; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->switchCount; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_chan_switch_ann. */ - uint32_t dot11f_pack_ie_condensed_country_str(tpAniSirGlobal pCtx, tDot11fIECondensedCountryStr *pSrc, uint8_t *pBuf, @@ -22777,407 +22435,6 @@ uint32_t dot11f_pack_ie_condensed_country_str(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_condensed_country_str. */ -uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, - tDot11fIEEDCAParamSet *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint8_t tmp128__; - uint8_t tmp129__; - uint8_t tmp130__; - uint8_t tmp131__; - uint8_t tmp132__; - uint8_t tmp133__; - uint8_t tmp134__; - uint8_t tmp135__; - nNeeded += 18; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 12; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->qos; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->reserved; - *pnConsumed += 1; - pBuf += 1; - tmp128__ = 0U; - tmp128__ |= (pSrc->acbe_aifsn << 0); - tmp128__ |= (pSrc->acbe_acm << 4); - tmp128__ |= (pSrc->acbe_aci << 5); - tmp128__ |= (pSrc->unused1 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp128__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp129__ = 0U; - tmp129__ |= (pSrc->acbe_acwmin << 0); - tmp129__ |= (pSrc->acbe_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp129__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; - tmp130__ = 0U; - tmp130__ |= (pSrc->acbk_aifsn << 0); - tmp130__ |= (pSrc->acbk_acm << 4); - tmp130__ |= (pSrc->acbk_aci << 5); - tmp130__ |= (pSrc->unused2 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp130__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp131__ = 0U; - tmp131__ |= (pSrc->acbk_acwmin << 0); - tmp131__ |= (pSrc->acbk_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp131__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; - tmp132__ = 0U; - tmp132__ |= (pSrc->acvi_aifsn << 0); - tmp132__ |= (pSrc->acvi_acm << 4); - tmp132__ |= (pSrc->acvi_aci << 5); - tmp132__ |= (pSrc->unused3 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp132__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp133__ = 0U; - tmp133__ |= (pSrc->acvi_acwmin << 0); - tmp133__ |= (pSrc->acvi_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp133__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; - tmp134__ = 0U; - tmp134__ |= (pSrc->acvo_aifsn << 0); - tmp134__ |= (pSrc->acvo_acm << 4); - tmp134__ |= (pSrc->acvo_aci << 5); - tmp134__ |= (pSrc->unused4 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp134__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp135__ = 0U; - tmp135__ |= (pSrc->acvo_acwmin << 0); - tmp135__ |= (pSrc->acvo_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp135__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0); - *pnConsumed += 2; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_edca_param_set. */ - -uint32_t dot11f_pack_ie_ext_cap(tpAniSirGlobal pCtx, - tDot11fIEExtCap *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += pSrc->num_bytes; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 127; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->bytes), pSrc->num_bytes); - *pnConsumed += pSrc->num_bytes; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_ext_cap. */ - -uint32_t dot11f_pack_ie_ext_supp_rates(tpAniSirGlobal pCtx, - tDot11fIEExtSuppRates *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += pSrc->num_rates; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 50; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rates), pSrc->num_rates); - *pnConsumed += pSrc->num_rates; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_ext_supp_rates. */ - -uint32_t dot11f_pack_ie_ht_caps(tpAniSirGlobal pCtx, - tDot11fIEHTCaps *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint16_t tmp136__; - uint8_t tmp137__; - uint16_t tmp138__; - uint32_t tmp139__; - uint8_t tmp140__; - nNeeded += (pSrc->num_rsvd + 26); - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 45; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - tmp136__ = 0U; - tmp136__ |= (pSrc->advCodingCap << 0); - tmp136__ |= (pSrc->supportedChannelWidthSet << 1); - tmp136__ |= (pSrc->mimoPowerSave << 2); - tmp136__ |= (pSrc->greenField << 4); - tmp136__ |= (pSrc->shortGI20MHz << 5); - tmp136__ |= (pSrc->shortGI40MHz << 6); - tmp136__ |= (pSrc->txSTBC << 7); - tmp136__ |= (pSrc->rxSTBC << 8); - tmp136__ |= (pSrc->delayedBA << 10); - tmp136__ |= (pSrc->maximalAMSDUsize << 11); - tmp136__ |= (pSrc->dsssCckMode40MHz << 12); - tmp136__ |= (pSrc->psmp << 13); - tmp136__ |= (pSrc->stbcControlFrame << 14); - tmp136__ |= (pSrc->lsigTXOPProtection << 15); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp136__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp137__ = 0U; - tmp137__ |= (pSrc->maxRxAMPDUFactor << 0); - tmp137__ |= (pSrc->mpduDensity << 2); - tmp137__ |= (pSrc->reserved1 << 5); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp137__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - DOT11F_MEMCPY(pCtx, pBuf, pSrc->supportedMCSSet, 16); - *pnConsumed += 16; - pBuf += 16; - tmp138__ = 0U; - tmp138__ |= (pSrc->pco << 0); - tmp138__ |= (pSrc->transitionTime << 1); - tmp138__ |= (pSrc->reserved2 << 3); - tmp138__ |= (pSrc->mcsFeedback << 8); - tmp138__ |= (pSrc->reserved3 << 10); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp138__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp139__ = 0U; - tmp139__ |= (pSrc->txBF << 0); - tmp139__ |= (pSrc->rxStaggeredSounding << 1); - tmp139__ |= (pSrc->txStaggeredSounding << 2); - tmp139__ |= (pSrc->rxZLF << 3); - tmp139__ |= (pSrc->txZLF << 4); - tmp139__ |= (pSrc->implicitTxBF << 5); - tmp139__ |= (pSrc->calibration << 6); - tmp139__ |= (pSrc->explicitCSITxBF << 8); - tmp139__ |= (pSrc->explicitUncompressedSteeringMatrix << 9); - tmp139__ |= (pSrc->explicitBFCSIFeedback << 10); - tmp139__ |= (pSrc->explicitUncompressedSteeringMatrixFeedback << 13); - tmp139__ |= (pSrc->explicitCompressedSteeringMatrixFeedback << 16); - tmp139__ |= (pSrc->csiNumBFAntennae << 19); - tmp139__ |= (pSrc->uncompressedSteeringMatrixBFAntennae << 21); - tmp139__ |= (pSrc->compressedSteeringMatrixBFAntennae << 23); - tmp139__ |= (pSrc->reserved4 << 25); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp139__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp140__ = 0U; - tmp140__ |= (pSrc->antennaSelection << 0); - tmp140__ |= (pSrc->explicitCSIFeedbackTx << 1); - tmp140__ |= (pSrc->antennaIndicesFeedbackTx << 2); - tmp140__ |= (pSrc->explicitCSIFeedback << 3); - tmp140__ |= (pSrc->antennaIndicesFeedback << 4); - tmp140__ |= (pSrc->rxAS << 5); - tmp140__ |= (pSrc->txSoundingPPDUs << 6); - tmp140__ |= (pSrc->reserved5 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp140__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rsvd), pSrc->num_rsvd); - *pnConsumed += pSrc->num_rsvd; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_ht_caps. */ - -uint32_t dot11f_pack_ie_ht_info(tpAniSirGlobal pCtx, - tDot11fIEHTInfo *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint8_t tmp141__; - uint16_t tmp142__; - uint16_t tmp143__; - nNeeded += (pSrc->num_rsvd + 22); - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 61; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->primaryChannel; - *pnConsumed += 1; - pBuf += 1; - tmp141__ = 0U; - tmp141__ |= (pSrc->secondaryChannelOffset << 0); - tmp141__ |= (pSrc->recommendedTxWidthSet << 2); - tmp141__ |= (pSrc->rifsMode << 3); - tmp141__ |= (pSrc->controlledAccessOnly << 4); - tmp141__ |= (pSrc->serviceIntervalGranularity << 5); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp141__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp142__ = 0U; - tmp142__ |= (pSrc->opMode << 0); - tmp142__ |= (pSrc->nonGFDevicesPresent << 2); - tmp142__ |= (pSrc->transmitBurstLimit << 3); - tmp142__ |= (pSrc->obssNonHTStaPresent << 4); - tmp142__ |= (pSrc->chan_center_freq_seg2 << 5); - tmp142__ |= (pSrc->reserved << 13); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp142__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp143__ = 0U; - tmp143__ |= (pSrc->basicSTBCMCS << 0); - tmp143__ |= (pSrc->dualCTSProtection << 7); - tmp143__ |= (pSrc->secondaryBeacon << 8); - tmp143__ |= (pSrc->lsigTXOPProtectionFullSupport << 9); - tmp143__ |= (pSrc->pcoActive << 10); - tmp143__ |= (pSrc->pcoPhase << 11); - tmp143__ |= (pSrc->reserved2 << 12); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp143__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - DOT11F_MEMCPY(pCtx, pBuf, pSrc->basicMCSSet, 16); - *pnConsumed += 16; - pBuf += 16; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rsvd), pSrc->num_rsvd); - *pnConsumed += pSrc->num_rsvd; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_ht_info. */ - uint32_t dot11f_pack_ie_measurement_pilot(tpAniSirGlobal pCtx, tDot11fIEMeasurementPilot *pSrc, uint8_t *pBuf, @@ -23242,132 +22499,6 @@ uint32_t dot11f_pack_ie_multi_bssid(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_multi_bssid. */ -uint32_t dot11f_pack_ie_operating_mode(tpAniSirGlobal pCtx, - tDot11fIEOperatingMode *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint8_t tmp144__; - nNeeded += 1; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 199; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - tmp144__ = 0U; - tmp144__ |= (pSrc->chanWidth << 0); - tmp144__ |= (pSrc->vht_160_80p80_supp << 2); - tmp144__ |= (pSrc->no_ldpc << 3); - tmp144__ |= (pSrc->rxNSS << 4); - tmp144__ |= (pSrc->rxNSSType << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp144__; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - nBuf -= 1 ; - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_operating_mode. */ - -uint32_t dot11f_pack_ie_p2_p_assoc_res(tpAniSirGlobal pCtx, - tDot11fIEP2PAssocRes *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t n, idx = 0, idxlast; - uint32_t nConsumedSoFar, nConsumedNow; - uint32_t status = DOT11F_PARSE_SUCCESS; - uint32_t nNeeded = 0U; - status = dot11f_get_packed_iep2_p_assoc_res(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - (void)pCtx; - if (pSrc->present) { - do { - nConsumedSoFar = *pnConsumed; - *pBuf = 221; - ++pBuf; --nBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x50; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x6f; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x9a; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x9; - ++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_P2PAssocRes + - 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_p2_p_assoc_res. */ - -uint32_t dot11f_pack_ie_quiet(tpAniSirGlobal pCtx, - tDot11fIEQuiet *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += 6; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 40; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->count; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->period; - *pnConsumed += 1; - pBuf += 1; - frameshtons(pCtx, pBuf, pSrc->duration, 0); - *pnConsumed += 2; - pBuf += 2; - frameshtons(pCtx, pBuf, pSrc->offset, 0); - *pnConsumed += 2; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_quiet. */ - uint32_t dot11f_pack_ie_ric_data(tpAniSirGlobal pCtx, tDot11fIERICData *pSrc, uint8_t *pBuf, @@ -23444,11 +22575,11 @@ uint32_t dot11f_pack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp145__; - uint8_t tmp146__; - uint8_t tmp147__; - uint8_t tmp148__; - uint8_t tmp149__; + uint8_t tmp126__; + uint8_t tmp127__; + uint8_t tmp128__; + uint8_t tmp129__; + uint8_t tmp130__; nNeeded += 5; while (pSrc->present) { if (nNeeded > nBuf) @@ -23457,74 +22588,74 @@ uint32_t dot11f_pack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp145__ = 0U; - tmp145__ |= (pSrc->LinkMeasurement << 0); - tmp145__ |= (pSrc->NeighborRpt << 1); - tmp145__ |= (pSrc->parallel << 2); - tmp145__ |= (pSrc->repeated << 3); - tmp145__ |= (pSrc->BeaconPassive << 4); - tmp145__ |= (pSrc->BeaconActive << 5); - tmp145__ |= (pSrc->BeaconTable << 6); - tmp145__ |= (pSrc->BeaconRepCond << 7); + tmp126__ = 0U; + tmp126__ |= (pSrc->LinkMeasurement << 0); + tmp126__ |= (pSrc->NeighborRpt << 1); + tmp126__ |= (pSrc->parallel << 2); + tmp126__ |= (pSrc->repeated << 3); + tmp126__ |= (pSrc->BeaconPassive << 4); + tmp126__ |= (pSrc->BeaconActive << 5); + tmp126__ |= (pSrc->BeaconTable << 6); + tmp126__ |= (pSrc->BeaconRepCond << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp145__; + *pBuf = tmp126__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp146__ = 0U; - tmp146__ |= (pSrc->FrameMeasurement << 0); - tmp146__ |= (pSrc->ChannelLoad << 1); - tmp146__ |= (pSrc->NoiseHistogram << 2); - tmp146__ |= (pSrc->statistics << 3); - tmp146__ |= (pSrc->LCIMeasurement << 4); - tmp146__ |= (pSrc->LCIAzimuth << 5); - tmp146__ |= (pSrc->TCMCapability << 6); - tmp146__ |= (pSrc->triggeredTCM << 7); + tmp127__ = 0U; + tmp127__ |= (pSrc->FrameMeasurement << 0); + tmp127__ |= (pSrc->ChannelLoad << 1); + tmp127__ |= (pSrc->NoiseHistogram << 2); + tmp127__ |= (pSrc->statistics << 3); + tmp127__ |= (pSrc->LCIMeasurement << 4); + tmp127__ |= (pSrc->LCIAzimuth << 5); + tmp127__ |= (pSrc->TCMCapability << 6); + tmp127__ |= (pSrc->triggeredTCM << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp146__; + *pBuf = tmp127__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp147__ = 0U; - tmp147__ |= (pSrc->APChanReport << 0); - tmp147__ |= (pSrc->RRMMIBEnabled << 1); - tmp147__ |= (pSrc->operatingChanMax << 2); - tmp147__ |= (pSrc->nonOperatinChanMax << 5); + tmp128__ = 0U; + tmp128__ |= (pSrc->APChanReport << 0); + tmp128__ |= (pSrc->RRMMIBEnabled << 1); + tmp128__ |= (pSrc->operatingChanMax << 2); + tmp128__ |= (pSrc->nonOperatinChanMax << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp147__; + *pBuf = tmp128__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp148__ = 0U; - tmp148__ |= (pSrc->MeasurementPilot << 0); - tmp148__ |= (pSrc->MeasurementPilotEnabled << 3); - tmp148__ |= (pSrc->NeighborTSFOffset << 4); - tmp148__ |= (pSrc->RCPIMeasurement << 5); - tmp148__ |= (pSrc->RSNIMeasurement << 6); - tmp148__ |= (pSrc->BssAvgAccessDelay << 7); + tmp129__ = 0U; + tmp129__ |= (pSrc->MeasurementPilot << 0); + tmp129__ |= (pSrc->MeasurementPilotEnabled << 3); + tmp129__ |= (pSrc->NeighborTSFOffset << 4); + tmp129__ |= (pSrc->RCPIMeasurement << 5); + tmp129__ |= (pSrc->RSNIMeasurement << 6); + tmp129__ |= (pSrc->BssAvgAccessDelay << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp148__; + *pBuf = tmp129__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp149__ = 0U; - tmp149__ |= (pSrc->BSSAvailAdmission << 0); - tmp149__ |= (pSrc->AntennaInformation << 1); - tmp149__ |= (pSrc->fine_time_meas_rpt << 2); - tmp149__ |= (pSrc->lci_capability << 3); - tmp149__ |= (pSrc->reserved << 4); + tmp130__ = 0U; + tmp130__ |= (pSrc->BSSAvailAdmission << 0); + tmp130__ |= (pSrc->AntennaInformation << 1); + tmp130__ |= (pSrc->fine_time_meas_rpt << 2); + tmp130__ |= (pSrc->lci_capability << 3); + tmp130__ |= (pSrc->reserved << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp149__; + *pBuf = tmp130__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -23537,93 +22668,6 @@ uint32_t dot11f_pack_ie_rrm_enabled_cap(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_rrm_enabled_cap. */ -uint32_t dot11f_pack_ie_rsn(tpAniSirGlobal pCtx, - tDot11fIERSN *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_iersn(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 48; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - frameshtons(pCtx, pBuf, pSrc->version, 0); - *pnConsumed += 2; - pBuf += 2; - if (pSrc->gp_cipher_suite_present) { - DOT11F_MEMCPY(pCtx, pBuf, pSrc->gp_cipher_suite, 4); - *pnConsumed += 4; - pBuf += 4; - } else { - break; - } - if (pSrc->pwise_cipher_suite_count) { - frameshtons(pCtx, pBuf, pSrc->pwise_cipher_suite_count, 0); - *pnConsumed += 2; - pBuf += 2; - } else { - break; - } - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->pwise_cipher_suites), (pSrc->pwise_cipher_suite_count * 4)); - *pnConsumed += (pSrc->pwise_cipher_suite_count * 4); - pBuf += (pSrc->pwise_cipher_suite_count * 4); - if (pSrc->akm_suite_cnt) { - frameshtons(pCtx, pBuf, pSrc->akm_suite_cnt, 0); - *pnConsumed += 2; - pBuf += 2; - } else { - break; - } - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->akm_suite), (pSrc->akm_suite_cnt * 4)); - *pnConsumed += (pSrc->akm_suite_cnt * 4); - pBuf += (pSrc->akm_suite_cnt * 4); - if (pSrc->RSN_Cap_present) { - DOT11F_MEMCPY(pCtx, pBuf, pSrc->RSN_Cap, 2); - *pnConsumed += 2; - pBuf += 2; - } else { - break; - } - if (pSrc->pmkid_count) { - frameshtons(pCtx, pBuf, pSrc->pmkid_count, 0); - *pnConsumed += 2; - pBuf += 2; - } else { - if (pSrc->gp_mgmt_cipher_suite_present) { - frameshtons(pCtx, pBuf, pSrc->pmkid_count, 0); - *pnConsumed += 2; - pBuf += 2; - } - } - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->pmkid), (pSrc->pmkid_count * 16)); - *pnConsumed += (pSrc->pmkid_count * 16); - pBuf += (pSrc->pmkid_count * 16); - if (pSrc->gp_mgmt_cipher_suite_present) { - DOT11F_MEMCPY(pCtx, pBuf, pSrc->gp_mgmt_cipher_suite, 4); - *pnConsumed += 4; - /* fieldsEndFlag = 1 */ - } else { - break; - } - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return status; -} /* End dot11f_pack_ie_rsn. */ - uint32_t dot11f_pack_ie_requested_info(tpAniSirGlobal pCtx, tDot11fIERequestedInfo *pSrc, uint8_t *pBuf, @@ -23691,7 +22735,7 @@ uint32_t dot11f_pack_ie_schedule(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp150__; + uint16_t tmp131__; nNeeded += 14; while (pSrc->present) { if (nNeeded > nBuf) @@ -23700,15 +22744,15 @@ uint32_t dot11f_pack_ie_schedule(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp150__ = 0U; - tmp150__ |= (pSrc->aggregation << 0); - tmp150__ |= (pSrc->tsid << 1); - tmp150__ |= (pSrc->direction << 5); - tmp150__ |= (pSrc->reserved << 7); + tmp131__ = 0U; + tmp131__ |= (pSrc->aggregation << 0); + tmp131__ |= (pSrc->tsid << 1); + tmp131__ |= (pSrc->direction << 5); + tmp131__ |= (pSrc->reserved << 7); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp150__, 0); + frameshtons(pCtx, pBuf, tmp131__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -23733,64 +22777,6 @@ uint32_t dot11f_pack_ie_schedule(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_schedule. */ -uint32_t dot11f_pack_ie_supp_operating_classes(tpAniSirGlobal pCtx, - tDot11fIESuppOperatingClasses *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += pSrc->num_classes; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 59; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->classes), pSrc->num_classes); - *pnConsumed += pSrc->num_classes; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_supp_operating_classes. */ - -uint32_t dot11f_pack_ie_supp_rates(tpAniSirGlobal pCtx, - tDot11fIESuppRates *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += pSrc->num_rates; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 1; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rates), pSrc->num_rates); - *pnConsumed += pSrc->num_rates; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_supp_rates. */ - uint32_t dot11f_pack_ie_tclas(tpAniSirGlobal pCtx, tDot11fIETCLAS *pSrc, uint8_t *pBuf, @@ -23993,9 +22979,9 @@ uint32_t dot11f_pack_ie_tspec(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp151__; - uint8_t tmp152__; - uint16_t tmp153__; + uint16_t tmp132__; + uint8_t tmp133__; + uint16_t tmp134__; nNeeded += 55; while (pSrc->present) { if (nNeeded > nBuf) @@ -24004,39 +22990,39 @@ uint32_t dot11f_pack_ie_tspec(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp151__ = 0U; - tmp151__ |= (pSrc->traffic_type << 0); - tmp151__ |= (pSrc->tsid << 1); - tmp151__ |= (pSrc->direction << 5); - tmp151__ |= (pSrc->access_policy << 7); - tmp151__ |= (pSrc->aggregation << 9); - tmp151__ |= (pSrc->psb << 10); - tmp151__ |= (pSrc->user_priority << 11); - tmp151__ |= (pSrc->tsinfo_ack_pol << 14); + tmp132__ = 0U; + tmp132__ |= (pSrc->traffic_type << 0); + tmp132__ |= (pSrc->tsid << 1); + tmp132__ |= (pSrc->direction << 5); + tmp132__ |= (pSrc->access_policy << 7); + tmp132__ |= (pSrc->aggregation << 9); + tmp132__ |= (pSrc->psb << 10); + tmp132__ |= (pSrc->user_priority << 11); + tmp132__ |= (pSrc->tsinfo_ack_pol << 14); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp151__, 0); + frameshtons(pCtx, pBuf, tmp132__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; - tmp152__ = 0U; - tmp152__ |= (pSrc->schedule << 0); - tmp152__ |= (pSrc->unused << 1); + tmp133__ = 0U; + tmp133__ |= (pSrc->schedule << 0); + tmp133__ |= (pSrc->unused << 1); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp152__; + *pBuf = tmp133__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp153__ = 0U; - tmp153__ |= (pSrc->size << 0); - tmp153__ |= (pSrc->fixed << 15); + tmp134__ = 0U; + tmp134__ |= (pSrc->size << 0); + tmp134__ |= (pSrc->fixed << 15); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp153__, 0); + frameshtons(pCtx, pBuf, tmp134__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -24100,9 +23086,9 @@ uint32_t dot11f_pack_ie_vht_caps(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint32_t tmp154__; - uint16_t tmp155__; - uint16_t tmp156__; + uint32_t tmp135__; + uint16_t tmp136__; + uint16_t tmp137__; nNeeded += 12; while (pSrc->present) { if (nNeeded > nBuf) @@ -24111,58 +23097,58 @@ uint32_t dot11f_pack_ie_vht_caps(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp154__ = 0U; - tmp154__ |= (pSrc->maxMPDULen << 0); - tmp154__ |= (pSrc->supportedChannelWidthSet << 2); - tmp154__ |= (pSrc->ldpcCodingCap << 4); - tmp154__ |= (pSrc->shortGI80MHz << 5); - tmp154__ |= (pSrc->shortGI160and80plus80MHz << 6); - tmp154__ |= (pSrc->txSTBC << 7); - tmp154__ |= (pSrc->rxSTBC << 8); - tmp154__ |= (pSrc->suBeamFormerCap << 11); - tmp154__ |= (pSrc->suBeamformeeCap << 12); - tmp154__ |= (pSrc->csnofBeamformerAntSup << 13); - tmp154__ |= (pSrc->numSoundingDim << 16); - tmp154__ |= (pSrc->muBeamformerCap << 19); - tmp154__ |= (pSrc->muBeamformeeCap << 20); - tmp154__ |= (pSrc->vhtTXOPPS << 21); - tmp154__ |= (pSrc->htcVHTCap << 22); - tmp154__ |= (pSrc->maxAMPDULenExp << 23); - tmp154__ |= (pSrc->vhtLinkAdaptCap << 26); - tmp154__ |= (pSrc->rxAntPattern << 28); - tmp154__ |= (pSrc->txAntPattern << 29); - tmp154__ |= (pSrc->extended_nss_bw_supp << 30); + tmp135__ = 0U; + tmp135__ |= (pSrc->maxMPDULen << 0); + tmp135__ |= (pSrc->supportedChannelWidthSet << 2); + tmp135__ |= (pSrc->ldpcCodingCap << 4); + tmp135__ |= (pSrc->shortGI80MHz << 5); + tmp135__ |= (pSrc->shortGI160and80plus80MHz << 6); + tmp135__ |= (pSrc->txSTBC << 7); + tmp135__ |= (pSrc->rxSTBC << 8); + tmp135__ |= (pSrc->suBeamFormerCap << 11); + tmp135__ |= (pSrc->suBeamformeeCap << 12); + tmp135__ |= (pSrc->csnofBeamformerAntSup << 13); + tmp135__ |= (pSrc->numSoundingDim << 16); + tmp135__ |= (pSrc->muBeamformerCap << 19); + tmp135__ |= (pSrc->muBeamformeeCap << 20); + tmp135__ |= (pSrc->vhtTXOPPS << 21); + tmp135__ |= (pSrc->htcVHTCap << 22); + tmp135__ |= (pSrc->maxAMPDULenExp << 23); + tmp135__ |= (pSrc->vhtLinkAdaptCap << 26); + tmp135__ |= (pSrc->rxAntPattern << 28); + tmp135__ |= (pSrc->txAntPattern << 29); + tmp135__ |= (pSrc->extended_nss_bw_supp << 30); if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; - frameshtonl(pCtx, pBuf, tmp154__, 0); + frameshtonl(pCtx, pBuf, tmp135__, 0); *pnConsumed += 4; pBuf += 4; nBuf -= 4 ; frameshtons(pCtx, pBuf, pSrc->rxMCSMap, 0); *pnConsumed += 2; pBuf += 2; - tmp155__ = 0U; - tmp155__ |= (pSrc->rxHighSupDataRate << 0); - tmp155__ |= (pSrc->max_nsts_total << 13); + tmp136__ = 0U; + tmp136__ |= (pSrc->rxHighSupDataRate << 0); + tmp136__ |= (pSrc->max_nsts_total << 13); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp155__, 0); + frameshtons(pCtx, pBuf, tmp136__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; frameshtons(pCtx, pBuf, pSrc->txMCSMap, 0); *pnConsumed += 2; pBuf += 2; - tmp156__ = 0U; - tmp156__ |= (pSrc->txSupDataRate << 0); - tmp156__ |= (pSrc->vht_extended_nss_bw_cap << 13); - tmp156__ |= (pSrc->reserved << 14); + tmp137__ = 0U; + tmp137__ |= (pSrc->txSupDataRate << 0); + tmp137__ |= (pSrc->vht_extended_nss_bw_cap << 13); + tmp137__ |= (pSrc->reserved << 14); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp156__, 0); + frameshtons(pCtx, pBuf, tmp137__, 0); *pnConsumed += 2; /* fieldsEndFlag = 1 */ nBuf -= 2 ; @@ -24213,267 +23199,6 @@ uint32_t dot11f_pack_ie_vht_operation(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_vht_operation. */ -uint32_t dot11f_pack_ie_wmm_caps(tpAniSirGlobal pCtx, - tDot11fIEWMMCaps *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint8_t tmp157__; - nNeeded += 2; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 221; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x0; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x50; - ++pBuf; ++(*pnConsumed); - *pBuf = 0xf2; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x2; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x5; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->version; - *pnConsumed += 1; - pBuf += 1; - tmp157__ = 0U; - tmp157__ |= (pSrc->reserved << 0); - tmp157__ |= (pSrc->qack << 4); - tmp157__ |= (pSrc->queue_request << 5); - tmp157__ |= (pSrc->txop_request << 6); - tmp157__ |= (pSrc->more_ack << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp157__; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - nBuf -= 1 ; - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_wmm_caps. */ - -uint32_t dot11f_pack_ie_wmm_info_station(tpAniSirGlobal pCtx, - tDot11fIEWMMInfoStation *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint8_t tmp158__; - nNeeded += 2; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 221; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x0; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x50; - ++pBuf; ++(*pnConsumed); - *pBuf = 0xf2; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x2; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x0; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->version; - *pnConsumed += 1; - pBuf += 1; - tmp158__ = 0U; - tmp158__ |= (pSrc->acvo_uapsd << 0); - tmp158__ |= (pSrc->acvi_uapsd << 1); - tmp158__ |= (pSrc->acbk_uapsd << 2); - tmp158__ |= (pSrc->acbe_uapsd << 3); - tmp158__ |= (pSrc->reserved1 << 4); - tmp158__ |= (pSrc->max_sp_length << 5); - tmp158__ |= (pSrc->reserved2 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp158__; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - nBuf -= 1 ; - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_wmm_info_station. */ - -uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, - tDot11fIEWMMParams *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint8_t tmp159__; - uint8_t tmp160__; - uint8_t tmp161__; - uint8_t tmp162__; - uint8_t tmp163__; - uint8_t tmp164__; - uint8_t tmp165__; - uint8_t tmp166__; - nNeeded += 19; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 221; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x0; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x50; - ++pBuf; ++(*pnConsumed); - *pBuf = 0xf2; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x2; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x1; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->version; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->qosInfo; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->reserved2; - *pnConsumed += 1; - pBuf += 1; - tmp159__ = 0U; - tmp159__ |= (pSrc->acbe_aifsn << 0); - tmp159__ |= (pSrc->acbe_acm << 4); - tmp159__ |= (pSrc->acbe_aci << 5); - tmp159__ |= (pSrc->unused1 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp159__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp160__ = 0U; - tmp160__ |= (pSrc->acbe_acwmin << 0); - tmp160__ |= (pSrc->acbe_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp160__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; - tmp161__ = 0U; - tmp161__ |= (pSrc->acbk_aifsn << 0); - tmp161__ |= (pSrc->acbk_acm << 4); - tmp161__ |= (pSrc->acbk_aci << 5); - tmp161__ |= (pSrc->unused2 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp161__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp162__ = 0U; - tmp162__ |= (pSrc->acbk_acwmin << 0); - tmp162__ |= (pSrc->acbk_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp162__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; - tmp163__ = 0U; - tmp163__ |= (pSrc->acvi_aifsn << 0); - tmp163__ |= (pSrc->acvi_acm << 4); - tmp163__ |= (pSrc->acvi_aci << 5); - tmp163__ |= (pSrc->unused3 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp163__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp164__ = 0U; - tmp164__ |= (pSrc->acvi_acwmin << 0); - tmp164__ |= (pSrc->acvi_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp164__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); - *pnConsumed += 2; - pBuf += 2; - tmp165__ = 0U; - tmp165__ |= (pSrc->acvo_aifsn << 0); - tmp165__ |= (pSrc->acvo_acm << 4); - tmp165__ |= (pSrc->acvo_aci << 5); - tmp165__ |= (pSrc->unused4 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp165__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp166__ = 0U; - tmp166__ |= (pSrc->acvo_acwmin << 0); - tmp166__ |= (pSrc->acvo_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp166__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0); - *pnConsumed += 2; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_wmm_params. */ - uint32_t dot11f_pack_ie_wmm_schedule(tpAniSirGlobal pCtx, tDot11fIEWMMSchedule *pSrc, uint8_t *pBuf, @@ -24483,7 +23208,7 @@ uint32_t dot11f_pack_ie_wmm_schedule(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp167__; + uint16_t tmp138__; nNeeded += 15; while (pSrc->present) { if (nNeeded > nBuf) @@ -24505,15 +23230,15 @@ uint32_t dot11f_pack_ie_wmm_schedule(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp167__ = 0U; - tmp167__ |= (pSrc->aggregation << 0); - tmp167__ |= (pSrc->tsid << 1); - tmp167__ |= (pSrc->direction << 5); - tmp167__ |= (pSrc->reserved << 7); + tmp138__ = 0U; + tmp138__ |= (pSrc->aggregation << 0); + tmp138__ |= (pSrc->tsid << 1); + tmp138__ |= (pSrc->direction << 5); + tmp138__ |= (pSrc->reserved << 7); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp167__, 0); + frameshtons(pCtx, pBuf, tmp138__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -24747,9 +23472,9 @@ uint32_t dot11f_pack_ie_wmmtspec(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp168__; - uint8_t tmp169__; - uint16_t tmp170__; + uint16_t tmp139__; + uint8_t tmp140__; + uint16_t tmp141__; nNeeded += 38; while (pSrc->present) { if (nNeeded > nBuf) @@ -24771,39 +23496,39 @@ uint32_t dot11f_pack_ie_wmmtspec(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp168__ = 0U; - tmp168__ |= (pSrc->traffic_type << 0); - tmp168__ |= (pSrc->tsid << 1); - tmp168__ |= (pSrc->direction << 5); - tmp168__ |= (pSrc->access_policy << 7); - tmp168__ |= (pSrc->aggregation << 9); - tmp168__ |= (pSrc->psb << 10); - tmp168__ |= (pSrc->user_priority << 11); - tmp168__ |= (pSrc->tsinfo_ack_pol << 14); + tmp139__ = 0U; + tmp139__ |= (pSrc->traffic_type << 0); + tmp139__ |= (pSrc->tsid << 1); + tmp139__ |= (pSrc->direction << 5); + tmp139__ |= (pSrc->access_policy << 7); + tmp139__ |= (pSrc->aggregation << 9); + tmp139__ |= (pSrc->psb << 10); + tmp139__ |= (pSrc->user_priority << 11); + tmp139__ |= (pSrc->tsinfo_ack_pol << 14); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp168__, 0); + frameshtons(pCtx, pBuf, tmp139__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; - tmp169__ = 0U; - tmp169__ |= (pSrc->tsinfo_rsvd << 0); - tmp169__ |= (pSrc->burst_size_defn << 7); + tmp140__ = 0U; + tmp140__ |= (pSrc->tsinfo_rsvd << 0); + tmp140__ |= (pSrc->burst_size_defn << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp169__; + *pBuf = tmp140__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp170__ = 0U; - tmp170__ |= (pSrc->size << 0); - tmp170__ |= (pSrc->fixed << 15); + tmp141__ = 0U; + tmp141__ |= (pSrc->size << 0); + tmp141__ |= (pSrc->fixed << 15); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp170__, 0); + frameshtons(pCtx, pBuf, tmp141__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -24858,80 +23583,6 @@ uint32_t dot11f_pack_ie_wmmtspec(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_wmmtspec. */ -uint32_t dot11f_pack_ie_wpa(tpAniSirGlobal pCtx, - tDot11fIEWPA *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_iewpa(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 221; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x0; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x50; - ++pBuf; ++(*pnConsumed); - *pBuf = 0xf2; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x1; - ++pBuf; ++(*pnConsumed); - frameshtons(pCtx, pBuf, pSrc->version, 0); - *pnConsumed += 2; - pBuf += 2; - if (pSrc->multicast_cipher_present) { - DOT11F_MEMCPY(pCtx, pBuf, pSrc->multicast_cipher, 4); - *pnConsumed += 4; - pBuf += 4; - } else { - break; - } - if (pSrc->unicast_cipher_count) { - frameshtons(pCtx, pBuf, pSrc->unicast_cipher_count, 0); - *pnConsumed += 2; - pBuf += 2; - } else { - break; - } - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->unicast_ciphers), (pSrc->unicast_cipher_count * 4)); - *pnConsumed += (pSrc->unicast_cipher_count * 4); - pBuf += (pSrc->unicast_cipher_count * 4); - if (pSrc->auth_suite_count) { - frameshtons(pCtx, pBuf, pSrc->auth_suite_count, 0); - *pnConsumed += 2; - pBuf += 2; - } else { - break; - } - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->auth_suites), (pSrc->auth_suite_count * 4)); - *pnConsumed += (pSrc->auth_suite_count * 4); - pBuf += (pSrc->auth_suite_count * 4); - if (pSrc->caps) { - frameshtons(pCtx, pBuf, pSrc->caps, 0); - *pnConsumed += 2; - /* fieldsEndFlag = 1 */ - } else { - break; - } - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return status; -} /* End dot11f_pack_ie_wpa. */ - uint32_t dot11f_pack_ie_wider_bw_chan_switch_ann(tpAniSirGlobal pCtx, tDot11fIEWiderBWChanSwitchAnn *pSrc, uint8_t *pBuf, @@ -25005,7 +23656,7 @@ uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp171__; + uint16_t tmp142__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -25014,14 +23665,14 @@ uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp171__ = 0U; - tmp171__ |= (pSrc->beacon_report_id << 0); - tmp171__ |= (pSrc->fragment_id_number << 8); - tmp171__ |= (pSrc->more_fragments << 15); + tmp142__ = 0U; + tmp142__ |= (pSrc->beacon_report_id << 0); + tmp142__ |= (pSrc->fragment_id_number << 8); + tmp142__ |= (pSrc->more_fragments << 15); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp171__, 0); + frameshtons(pCtx, pBuf, tmp142__, 0); *pnConsumed += 2; /* fieldsEndFlag = 1 */ nBuf -= 2 ; @@ -25034,644 +23685,6 @@ uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_beacon_report_frm_body_fragment_id. */ -uint32_t dot11f_pack_ie_eht_cap(tpAniSirGlobal pCtx, - tDot11fIEeht_cap *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint16_t tmp172__; - uint32_t tmp173__; - uint32_t tmp174__; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_ie_eht_cap(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 255; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 108; - ++pBuf; ++(*pnConsumed); - tmp172__ = 0U; - tmp172__ |= (pSrc->nsep_pri_access << 0); - tmp172__ |= (pSrc->eht_om_ctl << 1); - tmp172__ |= (pSrc->triggered_txop_sharing << 2); - tmp172__ |= (pSrc->reserved << 3); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp172__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp173__ = 0U; - tmp173__ |= (pSrc->reserved2 << 0); - tmp173__ |= (pSrc->support_320mhz_6ghz << 1); - tmp173__ |= (pSrc->ru_242tone_wt_20mhz << 2); - tmp173__ |= (pSrc->ndp_4x_eht_ltf_3dot2_us_gi << 3); - tmp173__ |= (pSrc->partial_bw_mu_mimo << 4); - tmp173__ |= (pSrc->su_beamformer << 5); - tmp173__ |= (pSrc->su_beamformee << 6); - tmp173__ |= (pSrc->bfee_ss_le_80mhz << 7); - tmp173__ |= (pSrc->bfee_ss_160mhz << 10); - tmp173__ |= (pSrc->bfee_ss_320mhz << 13); - tmp173__ |= (pSrc->num_sounding_dim_le_80mhz << 16); - tmp173__ |= (pSrc->num_sounding_dim_160mhz << 19); - tmp173__ |= (pSrc->num_sounding_dim_320mhz << 22); - tmp173__ |= (pSrc->ng_16_su_feedback << 25); - tmp173__ |= (pSrc->ng_16_mu_feedback << 26); - tmp173__ |= (pSrc->cb_sz_4_2_su_feedback << 27); - tmp173__ |= (pSrc->cb_sz_7_5_su_feedback << 28); - tmp173__ |= (pSrc->trig_su_bforming_feedback << 29); - tmp173__ |= (pSrc->trig_mu_bforming_partial_bw_feedback << 30); - tmp173__ |= (pSrc->triggered_cqi_feedback << 31); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp173__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp174__ = 0U; - tmp174__ |= (pSrc->partial_bw_dl_mu_mimo << 0); - tmp174__ |= (pSrc->psr_based_sr << 1); - tmp174__ |= (pSrc->power_boost_factor << 2); - tmp174__ |= (pSrc->eht_mu_ppdu_4x_ltf_0_8_us_gi << 3); - tmp174__ |= (pSrc->max_nc << 4); - tmp174__ |= (pSrc->non_trig_cqi_feedback << 8); - tmp174__ |= (pSrc->tx_1024_4096_qam_lt_242_tone_ru << 9); - tmp174__ |= (pSrc->rx_1024_4096_qam_lt_242_tone_ru << 10); - tmp174__ |= (pSrc->ppet_present << 11); - tmp174__ |= (pSrc->common_nominal_pkt_padding << 12); - tmp174__ |= (pSrc->max_num_eht_ltf << 14); - tmp174__ |= (pSrc->mcs_15 << 19); - tmp174__ |= (pSrc->eht_dup_6ghz << 23); - tmp174__ |= (pSrc->op_sta_rx_ndp_wider_bw_20mhz << 24); - tmp174__ |= (pSrc->non_ofdma_ul_mu_mimo_le_80mhz << 25); - tmp174__ |= (pSrc->non_ofdma_ul_mu_mimo_160mhz << 26); - tmp174__ |= (pSrc->non_ofdma_ul_mu_mimo_320mhz << 27); - tmp174__ |= (pSrc->mu_bformer_le_80mhz << 28); - tmp174__ |= (pSrc->mu_bformer_160mhz << 29); - tmp174__ |= (pSrc->mu_bformer_320mhz << 30); - tmp174__ |= (pSrc->reserved3 << 31); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp174__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_20), pSrc->num_eht_mcs_map_20); - *pnConsumed += pSrc->num_eht_mcs_map_20; - pBuf += pSrc->num_eht_mcs_map_20; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_le_80), pSrc->num_eht_mcs_map_le_80); - *pnConsumed += pSrc->num_eht_mcs_map_le_80; - pBuf += pSrc->num_eht_mcs_map_le_80; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_160), pSrc->num_eht_mcs_map_160); - *pnConsumed += pSrc->num_eht_mcs_map_160; - pBuf += pSrc->num_eht_mcs_map_160; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_320), (pSrc->support_320mhz_6ghz * 3)); - *pnConsumed += (pSrc->support_320mhz_6ghz * 3); - pBuf += (pSrc->support_320mhz_6ghz * 3); - if (pSrc->ppet_present) { - switch (pSrc->ppet_present) { - case 1: - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->ppet.ppe_threshold.ppe_th), pSrc->ppet.ppe_threshold.num_ppe_th); - *pnConsumed += pSrc->ppet.ppe_threshold.num_ppe_th; - /* fieldsEndFlag = 1 */ - break; - } - } else { - break; - } - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return status; -} /* End dot11f_pack_ie_eht_cap. */ - -uint32_t dot11f_pack_ie_eht_op(tpAniSirGlobal pCtx, - tDot11fIEeht_op *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint8_t tmp175__; - nNeeded += 7; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 255; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 106; - ++pBuf; ++(*pnConsumed); - DOT11F_MEMCPY(pCtx, pBuf, pSrc->basic_mcs_nss_set, 2); - *pnConsumed += 2; - pBuf += 2; - *pBuf = pSrc->primary_channel; - *pnConsumed += 1; - pBuf += 1; - tmp175__ = 0U; - tmp175__ |= (pSrc->width << 0); - tmp175__ |= (pSrc->reserved << 3); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp175__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - *pBuf = pSrc->chan_freq_seg0; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->chan_freq_seg1; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->minimum_rate; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_eht_op. */ - -uint32_t dot11f_pack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, - tDot11fIEext_chan_switch_ann *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += 4; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 60; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = pSrc->switch_mode; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->new_reg_class; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->new_channel; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->switch_count; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_ext_chan_switch_ann. */ - -uint32_t dot11f_pack_ie_fils_indication(tpAniSirGlobal pCtx, - tDot11fIEfils_indication *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint16_t tmp176__; - nNeeded += (pSrc->num_variable_data + 2); - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 240; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - tmp176__ = 0U; - tmp176__ |= (pSrc->public_key_identifiers_cnt << 0); - tmp176__ |= (pSrc->realm_identifiers_cnt << 3); - tmp176__ |= (pSrc->is_ip_config_supported << 6); - tmp176__ |= (pSrc->is_cache_id_present << 7); - tmp176__ |= (pSrc->is_hessid_present << 8); - tmp176__ |= (pSrc->is_fils_sk_auth_supported << 9); - tmp176__ |= (pSrc->is_fils_sk_auth_pfs_supported << 10); - tmp176__ |= (pSrc->is_pk_auth_supported << 11); - tmp176__ |= (pSrc->reserved << 12); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp176__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->variable_data), pSrc->num_variable_data); - *pnConsumed += pSrc->num_variable_data; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_fils_indication. */ - -uint32_t dot11f_pack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, - tDot11fIEhe_6ghz_band_cap *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint16_t tmp177__; - nNeeded += 2; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 255; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 59; - ++pBuf; ++(*pnConsumed); - tmp177__ = 0U; - tmp177__ |= (pSrc->min_mpdu_start_spacing << 0); - tmp177__ |= (pSrc->max_ampdu_len_exp << 3); - tmp177__ |= (pSrc->max_mpdu_len << 6); - tmp177__ |= (pSrc->sm_pow_save << 9); - tmp177__ |= (pSrc->rd_responder << 11); - tmp177__ |= (pSrc->rx_ant_pattern_consistency << 12); - tmp177__ |= (pSrc->tx_ant_pattern_consistency << 13); - tmp177__ |= (pSrc->reserved << 14); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp177__, 0); - *pnConsumed += 2; - /* fieldsEndFlag = 1 */ - nBuf -= 2 ; - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_he_6ghz_band_cap. */ - -uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx, - tDot11fIEhe_cap *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint32_t tmp178__; - uint16_t tmp179__; - uint32_t tmp180__; - uint32_t tmp181__; - uint16_t tmp182__; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_ie_he_cap(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 255; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 35; - ++pBuf; ++(*pnConsumed); - tmp178__ = 0U; - tmp178__ |= (pSrc->htc_he << 0); - tmp178__ |= (pSrc->twt_request << 1); - tmp178__ |= (pSrc->twt_responder << 2); - tmp178__ |= (pSrc->fragmentation << 3); - tmp178__ |= (pSrc->max_num_frag_msdu_amsdu_exp << 5); - tmp178__ |= (pSrc->min_frag_size << 8); - tmp178__ |= (pSrc->trigger_frm_mac_pad << 10); - tmp178__ |= (pSrc->multi_tid_aggr_rx_supp << 12); - tmp178__ |= (pSrc->he_link_adaptation << 15); - tmp178__ |= (pSrc->all_ack << 17); - tmp178__ |= (pSrc->trigd_rsp_sched << 18); - tmp178__ |= (pSrc->a_bsr << 19); - tmp178__ |= (pSrc->broadcast_twt << 20); - tmp178__ |= (pSrc->ba_32bit_bitmap << 21); - tmp178__ |= (pSrc->mu_cascade << 22); - tmp178__ |= (pSrc->ack_enabled_multitid << 23); - tmp178__ |= (pSrc->reserved << 24); - tmp178__ |= (pSrc->omi_a_ctrl << 25); - tmp178__ |= (pSrc->ofdma_ra << 26); - tmp178__ |= (pSrc->max_ampdu_len_exp_ext << 27); - tmp178__ |= (pSrc->amsdu_frag << 29); - tmp178__ |= (pSrc->flex_twt_sched << 30); - tmp178__ |= (pSrc->rx_ctrl_frame << 31); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp178__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp179__ = 0U; - tmp179__ |= (pSrc->bsrp_ampdu_aggr << 0); - tmp179__ |= (pSrc->qtp << 1); - tmp179__ |= (pSrc->a_bqr << 2); - tmp179__ |= (pSrc->spatial_reuse_param_rspder << 3); - tmp179__ |= (pSrc->ndp_feedback_supp << 4); - tmp179__ |= (pSrc->ops_supp << 5); - tmp179__ |= (pSrc->amsdu_in_ampdu << 6); - tmp179__ |= (pSrc->multi_tid_aggr_tx_supp << 7); - tmp179__ |= (pSrc->he_sub_ch_sel_tx_supp << 10); - tmp179__ |= (pSrc->ul_2x996_tone_ru_supp << 11); - tmp179__ |= (pSrc->om_ctrl_ul_mu_data_dis_rx << 12); - tmp179__ |= (pSrc->he_dynamic_smps << 13); - tmp179__ |= (pSrc->punctured_sounding_supp << 14); - tmp179__ |= (pSrc->ht_vht_trg_frm_rx_supp << 15); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp179__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp180__ = 0U; - tmp180__ |= (pSrc->reserved2 << 0); - tmp180__ |= (pSrc->chan_width_0 << 1); - tmp180__ |= (pSrc->chan_width_1 << 2); - tmp180__ |= (pSrc->chan_width_2 << 3); - tmp180__ |= (pSrc->chan_width_3 << 4); - tmp180__ |= (pSrc->chan_width_4 << 5); - tmp180__ |= (pSrc->chan_width_5 << 6); - tmp180__ |= (pSrc->chan_width_6 << 7); - tmp180__ |= (pSrc->rx_pream_puncturing << 8); - tmp180__ |= (pSrc->device_class << 12); - tmp180__ |= (pSrc->ldpc_coding << 13); - tmp180__ |= (pSrc->he_1x_ltf_800_gi_ppdu << 14); - tmp180__ |= (pSrc->midamble_tx_rx_max_nsts << 15); - tmp180__ |= (pSrc->he_4x_ltf_3200_gi_ndp << 17); - tmp180__ |= (pSrc->tb_ppdu_tx_stbc_lt_80mhz << 18); - tmp180__ |= (pSrc->rx_stbc_lt_80mhz << 19); - tmp180__ |= (pSrc->doppler << 20); - tmp180__ |= (pSrc->ul_mu << 22); - tmp180__ |= (pSrc->dcm_enc_tx << 24); - tmp180__ |= (pSrc->dcm_enc_rx << 27); - tmp180__ |= (pSrc->ul_he_mu << 30); - tmp180__ |= (pSrc->su_beamformer << 31); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp180__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp181__ = 0U; - tmp181__ |= (pSrc->su_beamformee << 0); - tmp181__ |= (pSrc->mu_beamformer << 1); - tmp181__ |= (pSrc->bfee_sts_lt_80 << 2); - tmp181__ |= (pSrc->bfee_sts_gt_80 << 5); - tmp181__ |= (pSrc->num_sounding_lt_80 << 8); - tmp181__ |= (pSrc->num_sounding_gt_80 << 11); - tmp181__ |= (pSrc->su_feedback_tone16 << 14); - tmp181__ |= (pSrc->mu_feedback_tone16 << 15); - tmp181__ |= (pSrc->codebook_su << 16); - tmp181__ |= (pSrc->codebook_mu << 17); - tmp181__ |= (pSrc->beamforming_feedback << 18); - tmp181__ |= (pSrc->he_er_su_ppdu << 21); - tmp181__ |= (pSrc->dl_mu_mimo_part_bw << 22); - tmp181__ |= (pSrc->ppet_present << 23); - tmp181__ |= (pSrc->srp << 24); - tmp181__ |= (pSrc->power_boost << 25); - tmp181__ |= (pSrc->he_ltf_800_gi_4x << 26); - tmp181__ |= (pSrc->max_nc << 27); - tmp181__ |= (pSrc->tb_ppdu_tx_stbc_gt_80mhz << 30); - tmp181__ |= (pSrc->rx_stbc_gt_80mhz << 31); - if (unlikely(nBuf < 4)) - return DOT11F_INCOMPLETE_IE; - - frameshtonl(pCtx, pBuf, tmp181__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp182__ = 0U; - tmp182__ |= (pSrc->er_he_ltf_800_gi_4x << 0); - tmp182__ |= (pSrc->he_ppdu_20_in_40Mhz_2G << 1); - tmp182__ |= (pSrc->he_ppdu_20_in_160_80p80Mhz << 2); - tmp182__ |= (pSrc->he_ppdu_80_in_160_80p80Mhz << 3); - tmp182__ |= (pSrc->er_1x_he_ltf_gi << 4); - tmp182__ |= (pSrc->midamble_tx_rx_1x_he_ltf << 5); - tmp182__ |= (pSrc->dcm_max_bw << 6); - tmp182__ |= (pSrc->longer_than_16_he_sigb_ofdm_sym << 8); - tmp182__ |= (pSrc->non_trig_cqi_feedback << 9); - tmp182__ |= (pSrc->tx_1024_qam_lt_242_tone_ru << 10); - tmp182__ |= (pSrc->rx_1024_qam_lt_242_tone_ru << 11); - tmp182__ |= (pSrc->rx_full_bw_su_he_mu_compress_sigb << 12); - tmp182__ |= (pSrc->rx_full_bw_su_he_mu_non_cmpr_sigb << 13); - tmp182__ |= (pSrc->reserved3 << 14); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp182__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - *pBuf = pSrc->reserved4; - *pnConsumed += 1; - pBuf += 1; - frameshtons(pCtx, pBuf, pSrc->rx_he_mcs_map_lt_80, 0); - *pnConsumed += 2; - pBuf += 2; - frameshtons(pCtx, pBuf, pSrc->tx_he_mcs_map_lt_80, 0); - *pnConsumed += 2; - pBuf += 2; - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rx_he_mcs_map_160), (pSrc->chan_width_2 * 2)); - *pnConsumed += (pSrc->chan_width_2 * 2); - pBuf += (pSrc->chan_width_2 * 2); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->tx_he_mcs_map_160), (pSrc->chan_width_2 * 2)); - *pnConsumed += (pSrc->chan_width_2 * 2); - pBuf += (pSrc->chan_width_2 * 2); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rx_he_mcs_map_80_80), (pSrc->chan_width_3 * 2)); - *pnConsumed += (pSrc->chan_width_3 * 2); - pBuf += (pSrc->chan_width_3 * 2); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->tx_he_mcs_map_80_80), (pSrc->chan_width_3 * 2)); - *pnConsumed += (pSrc->chan_width_3 * 2); - pBuf += (pSrc->chan_width_3 * 2); - if (pSrc->ppet_present) { - switch (pSrc->ppet_present) { - case 1: - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->ppet.ppe_threshold.ppe_th), pSrc->ppet.ppe_threshold.num_ppe_th); - *pnConsumed += pSrc->ppet.ppe_threshold.num_ppe_th; - /* fieldsEndFlag = 1 */ - break; - } - } else { - break; - } - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return status; -} /* End dot11f_pack_ie_he_cap. */ - -uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, - tDot11fIEhe_op *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint16_t tmp183__; - uint8_t tmp184__; - uint8_t tmp185__; - uint8_t tmp186__; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_ie_he_op(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 255; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 36; - ++pBuf; ++(*pnConsumed); - tmp183__ = 0U; - tmp183__ |= (pSrc->default_pe << 0); - tmp183__ |= (pSrc->twt_required << 3); - tmp183__ |= (pSrc->txop_rts_threshold << 4); - tmp183__ |= (pSrc->vht_oper_present << 14); - tmp183__ |= (pSrc->co_located_bss << 15); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp183__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - tmp184__ = 0U; - tmp184__ |= (pSrc->er_su_disable << 0); - tmp184__ |= (pSrc->oper_info_6g_present << 1); - tmp184__ |= (pSrc->reserved2 << 2); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp184__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp185__ = 0U; - tmp185__ |= (pSrc->bss_color << 0); - tmp185__ |= (pSrc->partial_bss_col << 6); - tmp185__ |= (pSrc->bss_col_disabled << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp185__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - DOT11F_MEMCPY(pCtx, pBuf, pSrc->basic_mcs_nss, 2); - *pnConsumed += 2; - pBuf += 2; - if (pSrc->vht_oper_present) { - switch (pSrc->vht_oper_present) { - case 1: - *pBuf = pSrc->vht_oper.info.chan_width; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->vht_oper.info.center_freq_seg0; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->vht_oper.info.center_freq_seg1; - *pnConsumed += 1; - pBuf += 1; - break; - } - } - if (pSrc->co_located_bss) { - switch (pSrc->co_located_bss) { - case 1: - *pBuf = pSrc->maxbssid_ind.info.data; - *pnConsumed += 1; - pBuf += 1; - break; - } - } - if (pSrc->oper_info_6g_present) { - switch (pSrc->oper_info_6g_present) { - case 1: - *pBuf = pSrc->oper_info_6g.info.primary_ch; - *pnConsumed += 1; - pBuf += 1; - tmp186__ = 0U; - tmp186__ |= (pSrc->oper_info_6g.info.ch_width << 0); - tmp186__ |= (pSrc->oper_info_6g.info.dup_bcon << 2); - tmp186__ |= (pSrc->oper_info_6g.info.reg_info << 3); - tmp186__ |= (pSrc->oper_info_6g.info.reserved << 6); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp186__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - *pBuf = pSrc->oper_info_6g.info.center_freq_seg0; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->oper_info_6g.info.center_freq_seg1; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->oper_info_6g.info.min_rate; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - break; - } - } - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return status; -} /* End dot11f_pack_ie_he_op. */ - uint32_t dot11f_pack_ie_last_beacon_report_indication(tpAniSirGlobal pCtx, tDot11fIElast_beacon_report_indication *pSrc, uint8_t *pBuf, @@ -25730,88 +23743,6 @@ uint32_t dot11f_pack_ie_max_age(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_max_age. */ -uint32_t dot11f_pack_ie_max_chan_switch_time(tpAniSirGlobal pCtx, - tDot11fIEmax_chan_switch_time *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += 3; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 255; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 52; - ++pBuf; ++(*pnConsumed); - DOT11F_MEMCPY(pCtx, pBuf, pSrc->switch_time, 3); - *pnConsumed += 3; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_max_chan_switch_time. */ - -uint32_t dot11f_pack_ie_mlo_capabilities(tpAniSirGlobal pCtx, - tDot11fIEmlo_capabilities *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint16_t tmp187__; - nNeeded += 2; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 0; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - tmp187__ = 0U; - tmp187__ |= (pSrc->ess << 0); - tmp187__ |= (pSrc->ibss << 1); - tmp187__ |= (pSrc->cfPollable << 2); - tmp187__ |= (pSrc->cfPollReq << 3); - tmp187__ |= (pSrc->privacy << 4); - tmp187__ |= (pSrc->shortPreamble << 5); - tmp187__ |= (pSrc->criticalUpdateFlag << 6); - tmp187__ |= (pSrc->channelAgility << 7); - tmp187__ |= (pSrc->spectrumMgt << 8); - tmp187__ |= (pSrc->qos << 9); - tmp187__ |= (pSrc->shortSlotTime << 10); - tmp187__ |= (pSrc->apsd << 11); - tmp187__ |= (pSrc->rrm << 12); - tmp187__ |= (pSrc->dsssOfdm << 13); - tmp187__ |= (pSrc->delayedBA << 14); - tmp187__ |= (pSrc->immediateBA << 15); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp187__, 0); - *pnConsumed += 2; - /* fieldsEndFlag = 1 */ - nBuf -= 2 ; - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_mlo_capabilities. */ - uint32_t dot11f_pack_ie_mscs_status(tpAniSirGlobal pCtx, tDot11fIEmscs_status *pSrc, uint8_t *pBuf, @@ -25850,8 +23781,8 @@ uint32_t dot11f_pack_ie_neighbor_rpt(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp188__; - uint8_t tmp189__; + uint8_t tmp143__; + uint8_t tmp144__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_neighbor_rpt(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -25866,30 +23797,30 @@ uint32_t dot11f_pack_ie_neighbor_rpt(tpAniSirGlobal pCtx, DOT11F_MEMCPY(pCtx, pBuf, pSrc->bssid, 6); *pnConsumed += 6; pBuf += 6; - tmp188__ = 0U; - tmp188__ |= (pSrc->APReachability << 0); - tmp188__ |= (pSrc->Security << 2); - tmp188__ |= (pSrc->KeyScope << 3); - tmp188__ |= (pSrc->SpecMgmtCap << 4); - tmp188__ |= (pSrc->QosCap << 5); - tmp188__ |= (pSrc->apsd << 6); - tmp188__ |= (pSrc->rrm << 7); + tmp143__ = 0U; + tmp143__ |= (pSrc->APReachability << 0); + tmp143__ |= (pSrc->Security << 2); + tmp143__ |= (pSrc->KeyScope << 3); + tmp143__ |= (pSrc->SpecMgmtCap << 4); + tmp143__ |= (pSrc->QosCap << 5); + tmp143__ |= (pSrc->apsd << 6); + tmp143__ |= (pSrc->rrm << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp188__; + *pBuf = tmp143__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp189__ = 0U; - tmp189__ |= (pSrc->DelayedBA << 0); - tmp189__ |= (pSrc->ImmBA << 1); - tmp189__ |= (pSrc->MobilityDomain << 2); - tmp189__ |= (pSrc->reserved << 3); + tmp144__ = 0U; + tmp144__ |= (pSrc->DelayedBA << 0); + tmp144__ |= (pSrc->ImmBA << 1); + tmp144__ |= (pSrc->MobilityDomain << 2); + tmp144__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp189__; + *pBuf = tmp144__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -25921,85 +23852,6 @@ uint32_t dot11f_pack_ie_neighbor_rpt(tpAniSirGlobal pCtx, return status; } /* End dot11f_pack_ie_neighbor_rpt. */ -uint32_t dot11f_pack_ie_non_inheritance(tpAniSirGlobal pCtx, - tDot11fIEnon_inheritance *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - nNeeded += pSrc->num_data; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 255; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 56; - ++pBuf; ++(*pnConsumed); - DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->data), pSrc->num_data); - *pnConsumed += pSrc->num_data; - /* fieldsEndFlag = 1 */ - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return DOT11F_PARSE_SUCCESS; -} /* End dot11f_pack_ie_non_inheritance. */ - -uint32_t dot11f_pack_ie_qcn_ie(tpAniSirGlobal pCtx, - tDot11fIEqcn_ie *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - 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; - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - (void)pCtx; - 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. */ - uint32_t dot11f_pack_ie_req_mac_addr(tpAniSirGlobal pCtx, tDot11fIEreq_mac_addr *pSrc, uint8_t *pBuf, @@ -26038,87 +23890,24 @@ uint32_t dot11f_pack_ie_sta_profile(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp190__; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_ie_sta_profile(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; + nNeeded += pSrc->num_data; while (pSrc->present) { if (nNeeded > nBuf) return DOT11F_BUFFER_OVERFLOW; *pBuf = 0; - ++pBuf; --nBuf; ++(*pnConsumed); + ++pBuf; ++(*pnConsumed); pIeLen = pBuf; - ++pBuf; --nBuf; ++(*pnConsumed); - tmp190__ = 0U; - tmp190__ |= (pSrc->link_id << 0); - tmp190__ |= (pSrc->complete_profile << 4); - tmp190__ |= (pSrc->sta_mac_addr_present << 5); - tmp190__ |= (pSrc->beacon_interval_present << 6); - tmp190__ |= (pSrc->dtim_info_present << 7); - tmp190__ |= (pSrc->nstr_link_pair_present << 8); - tmp190__ |= (pSrc->nstr_bitmap_size << 9); - tmp190__ |= (pSrc->reserved << 10); - if (unlikely(nBuf < 2)) - return DOT11F_INCOMPLETE_IE; - - frameshtons(pCtx, pBuf, tmp190__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - if (pSrc->sta_mac_addr_present) { - switch (pSrc->sta_mac_addr_present) { - case 1: - DOT11F_MEMCPY(pCtx, pBuf, pSrc->sta_mac_addr.info.sta_mac_addr, 6); - *pnConsumed += 6; - pBuf += 6; - break; - } - } - if (pSrc->beacon_interval_present) { - switch (pSrc->beacon_interval_present) { - case 1: - frameshtons(pCtx, pBuf, pSrc->beacon_interval.info.beacon_interval, 0); - *pnConsumed += 2; - pBuf += 2; - break; - } - } - if (pSrc->dtim_info_present) { - switch (pSrc->dtim_info_present) { - case 1: - *pBuf = pSrc->dtim_info.info.dtim_count; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->dtim_info.info.dtim_period; - *pnConsumed += 1; - pBuf += 1; - break; - } - } - if (pSrc->nstr_link_pair_present) { - switch (pSrc->nstr_link_pair_present) { - case 1: - *pBuf = pSrc->nstr_link_pair.info.nstr_link_pair_num; - *pnConsumed += 1; - pBuf += 1; - break; - } - } - status = pack_core(pCtx, - (uint8_t *)pSrc, - pBuf, - nBuf, - pnConsumed, - FFS_sta_profile, - IES_sta_profile); + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->data), pSrc->num_data); + *pnConsumed += pSrc->num_data; + /* fieldsEndFlag = 1 */ break; } (void)pCtx; if (pIeLen) { *pIeLen = *pnConsumed - nConsumedOnEntry - 2; } - return status; + return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_sta_profile. */ uint32_t dot11f_pack_ie_tclas_mask(tpAniSirGlobal pCtx, @@ -26203,7 +23992,7 @@ uint32_t dot11f_pack_ie_transmit_power_env(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp191__; + uint8_t tmp145__; nNeeded += (pSrc->num_tx_power + 1); while (pSrc->present) { if (nNeeded > nBuf) @@ -26212,14 +24001,14 @@ uint32_t dot11f_pack_ie_transmit_power_env(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp191__ = 0U; - tmp191__ |= (pSrc->max_tx_pwr_count << 0); - tmp191__ |= (pSrc->max_tx_pwr_interpret << 3); - tmp191__ |= (pSrc->max_tx_pwr_category << 6); + tmp145__ = 0U; + tmp145__ |= (pSrc->max_tx_pwr_count << 0); + tmp145__ |= (pSrc->max_tx_pwr_interpret << 3); + tmp145__ |= (pSrc->max_tx_pwr_category << 6); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp191__; + *pBuf = tmp145__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -26331,6 +24120,41 @@ uint32_t dot11f_pack_ie_challenge_text(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_challenge_text. */ +uint32_t dot11f_pack_ie_chan_switch_ann(tpAniSirGlobal pCtx, + tDot11fIEChanSwitchAnn *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 37; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->switchMode; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->newChannel; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->switchCount; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_chan_switch_ann. */ + uint32_t dot11f_pack_ie_channel_switch_wrapper(tpAniSirGlobal pCtx, tDot11fIEChannelSwitchWrapper *pSrc, uint8_t *pBuf, @@ -26438,6 +24262,146 @@ uint32_t dot11f_pack_ie_ds_params(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_ds_params. */ +uint32_t dot11f_pack_ie_edca_param_set(tpAniSirGlobal pCtx, + tDot11fIEEDCAParamSet *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint8_t tmp146__; + uint8_t tmp147__; + uint8_t tmp148__; + uint8_t tmp149__; + uint8_t tmp150__; + uint8_t tmp151__; + uint8_t tmp152__; + uint8_t tmp153__; + nNeeded += 18; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 12; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->qos; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->reserved; + *pnConsumed += 1; + pBuf += 1; + tmp146__ = 0U; + tmp146__ |= (pSrc->acbe_aifsn << 0); + tmp146__ |= (pSrc->acbe_acm << 4); + tmp146__ |= (pSrc->acbe_aci << 5); + tmp146__ |= (pSrc->unused1 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp146__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp147__ = 0U; + tmp147__ |= (pSrc->acbe_acwmin << 0); + tmp147__ |= (pSrc->acbe_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp147__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp148__ = 0U; + tmp148__ |= (pSrc->acbk_aifsn << 0); + tmp148__ |= (pSrc->acbk_acm << 4); + tmp148__ |= (pSrc->acbk_aci << 5); + tmp148__ |= (pSrc->unused2 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp148__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp149__ = 0U; + tmp149__ |= (pSrc->acbk_acwmin << 0); + tmp149__ |= (pSrc->acbk_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp149__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp150__ = 0U; + tmp150__ |= (pSrc->acvi_aifsn << 0); + tmp150__ |= (pSrc->acvi_acm << 4); + tmp150__ |= (pSrc->acvi_aci << 5); + tmp150__ |= (pSrc->unused3 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp150__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp151__ = 0U; + tmp151__ |= (pSrc->acvi_acwmin << 0); + tmp151__ |= (pSrc->acvi_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp151__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp152__ = 0U; + tmp152__ |= (pSrc->acvo_aifsn << 0); + tmp152__ |= (pSrc->acvo_acm << 4); + tmp152__ |= (pSrc->acvo_aci << 5); + tmp152__ |= (pSrc->unused4 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp152__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp153__ = 0U; + tmp153__ |= (pSrc->acvo_acwmin << 0); + tmp153__ |= (pSrc->acvo_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp153__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0); + *pnConsumed += 2; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_edca_param_set. */ + uint32_t dot11f_pack_ie_erp_info(tpAniSirGlobal pCtx, tDot11fIEERPInfo *pSrc, uint8_t *pBuf, @@ -26447,7 +24411,7 @@ uint32_t dot11f_pack_ie_erp_info(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp192__; + uint8_t tmp154__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -26456,15 +24420,15 @@ uint32_t dot11f_pack_ie_erp_info(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp192__ = 0U; - tmp192__ |= (pSrc->non_erp_present << 0); - tmp192__ |= (pSrc->use_prot << 1); - tmp192__ |= (pSrc->barker_preamble << 2); - tmp192__ |= (pSrc->unused << 3); + tmp154__ = 0U; + tmp154__ |= (pSrc->non_erp_present << 0); + tmp154__ |= (pSrc->use_prot << 1); + tmp154__ |= (pSrc->barker_preamble << 2); + tmp154__ |= (pSrc->unused << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp192__; + *pBuf = tmp154__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -26523,7 +24487,7 @@ uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp193__; + uint8_t tmp155__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -26543,13 +24507,13 @@ uint32_t dot11f_pack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, *pBuf = pSrc->mgmt_state; *pnConsumed += 1; pBuf += 1; - tmp193__ = 0U; - tmp193__ |= (pSrc->mbssid_mask << 0); - tmp193__ |= (pSrc->reserved << 3); + tmp155__ = 0U; + tmp155__ |= (pSrc->mbssid_mask << 0); + tmp155__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp193__; + *pBuf = tmp155__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -26722,6 +24686,64 @@ uint32_t dot11f_pack_ie_ese_version(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_ese_version. */ +uint32_t dot11f_pack_ie_ext_cap(tpAniSirGlobal pCtx, + tDot11fIEExtCap *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += pSrc->num_bytes; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 127; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->bytes), pSrc->num_bytes); + *pnConsumed += pSrc->num_bytes; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_ext_cap. */ + +uint32_t dot11f_pack_ie_ext_supp_rates(tpAniSirGlobal pCtx, + tDot11fIEExtSuppRates *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += pSrc->num_rates; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 50; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rates), pSrc->num_rates); + *pnConsumed += pSrc->num_rates; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_ext_supp_rates. */ + uint32_t dot11f_pack_ie_fh_param_set(tpAniSirGlobal pCtx, tDot11fIEFHParamSet *pSrc, uint8_t *pBuf, @@ -26842,7 +24864,7 @@ uint32_t dot11f_pack_ie_ft_info(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp194__; + uint16_t tmp156__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ieft_info(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -26854,13 +24876,13 @@ uint32_t dot11f_pack_ie_ft_info(tpAniSirGlobal pCtx, ++pBuf; --nBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; --nBuf; ++(*pnConsumed); - tmp194__ = 0U; - tmp194__ |= (pSrc->reserved << 0); - tmp194__ |= (pSrc->IECount << 8); + tmp156__ = 0U; + tmp156__ |= (pSrc->reserved << 0); + tmp156__ |= (pSrc->IECount << 8); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp194__, 0); + frameshtons(pCtx, pBuf, tmp156__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -26889,6 +24911,209 @@ uint32_t dot11f_pack_ie_ft_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_pack_ie_ft_info. */ +uint32_t dot11f_pack_ie_ht_caps(tpAniSirGlobal pCtx, + tDot11fIEHTCaps *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint16_t tmp157__; + uint8_t tmp158__; + uint16_t tmp159__; + uint32_t tmp160__; + uint8_t tmp161__; + nNeeded += (pSrc->num_rsvd + 26); + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 45; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + tmp157__ = 0U; + tmp157__ |= (pSrc->advCodingCap << 0); + tmp157__ |= (pSrc->supportedChannelWidthSet << 1); + tmp157__ |= (pSrc->mimoPowerSave << 2); + tmp157__ |= (pSrc->greenField << 4); + tmp157__ |= (pSrc->shortGI20MHz << 5); + tmp157__ |= (pSrc->shortGI40MHz << 6); + tmp157__ |= (pSrc->txSTBC << 7); + tmp157__ |= (pSrc->rxSTBC << 8); + tmp157__ |= (pSrc->delayedBA << 10); + tmp157__ |= (pSrc->maximalAMSDUsize << 11); + tmp157__ |= (pSrc->dsssCckMode40MHz << 12); + tmp157__ |= (pSrc->psmp << 13); + tmp157__ |= (pSrc->stbcControlFrame << 14); + tmp157__ |= (pSrc->lsigTXOPProtection << 15); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp157__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp158__ = 0U; + tmp158__ |= (pSrc->maxRxAMPDUFactor << 0); + tmp158__ |= (pSrc->mpduDensity << 2); + tmp158__ |= (pSrc->reserved1 << 5); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp158__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->supportedMCSSet, 16); + *pnConsumed += 16; + pBuf += 16; + tmp159__ = 0U; + tmp159__ |= (pSrc->pco << 0); + tmp159__ |= (pSrc->transitionTime << 1); + tmp159__ |= (pSrc->reserved2 << 3); + tmp159__ |= (pSrc->mcsFeedback << 8); + tmp159__ |= (pSrc->reserved3 << 10); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp159__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp160__ = 0U; + tmp160__ |= (pSrc->txBF << 0); + tmp160__ |= (pSrc->rxStaggeredSounding << 1); + tmp160__ |= (pSrc->txStaggeredSounding << 2); + tmp160__ |= (pSrc->rxZLF << 3); + tmp160__ |= (pSrc->txZLF << 4); + tmp160__ |= (pSrc->implicitTxBF << 5); + tmp160__ |= (pSrc->calibration << 6); + tmp160__ |= (pSrc->explicitCSITxBF << 8); + tmp160__ |= (pSrc->explicitUncompressedSteeringMatrix << 9); + tmp160__ |= (pSrc->explicitBFCSIFeedback << 10); + tmp160__ |= (pSrc->explicitUncompressedSteeringMatrixFeedback << 13); + tmp160__ |= (pSrc->explicitCompressedSteeringMatrixFeedback << 16); + tmp160__ |= (pSrc->csiNumBFAntennae << 19); + tmp160__ |= (pSrc->uncompressedSteeringMatrixBFAntennae << 21); + tmp160__ |= (pSrc->compressedSteeringMatrixBFAntennae << 23); + tmp160__ |= (pSrc->reserved4 << 25); + if (unlikely(nBuf < 4)) + return DOT11F_INCOMPLETE_IE; + + frameshtonl(pCtx, pBuf, tmp160__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp161__ = 0U; + tmp161__ |= (pSrc->antennaSelection << 0); + tmp161__ |= (pSrc->explicitCSIFeedbackTx << 1); + tmp161__ |= (pSrc->antennaIndicesFeedbackTx << 2); + tmp161__ |= (pSrc->explicitCSIFeedback << 3); + tmp161__ |= (pSrc->antennaIndicesFeedback << 4); + tmp161__ |= (pSrc->rxAS << 5); + tmp161__ |= (pSrc->txSoundingPPDUs << 6); + tmp161__ |= (pSrc->reserved5 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp161__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rsvd), pSrc->num_rsvd); + *pnConsumed += pSrc->num_rsvd; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_ht_caps. */ + +uint32_t dot11f_pack_ie_ht_info(tpAniSirGlobal pCtx, + tDot11fIEHTInfo *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint8_t tmp162__; + uint16_t tmp163__; + uint16_t tmp164__; + nNeeded += (pSrc->num_rsvd + 22); + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 61; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->primaryChannel; + *pnConsumed += 1; + pBuf += 1; + tmp162__ = 0U; + tmp162__ |= (pSrc->secondaryChannelOffset << 0); + tmp162__ |= (pSrc->recommendedTxWidthSet << 2); + tmp162__ |= (pSrc->rifsMode << 3); + tmp162__ |= (pSrc->controlledAccessOnly << 4); + tmp162__ |= (pSrc->serviceIntervalGranularity << 5); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp162__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp163__ = 0U; + tmp163__ |= (pSrc->opMode << 0); + tmp163__ |= (pSrc->nonGFDevicesPresent << 2); + tmp163__ |= (pSrc->transmitBurstLimit << 3); + tmp163__ |= (pSrc->obssNonHTStaPresent << 4); + tmp163__ |= (pSrc->chan_center_freq_seg2 << 5); + tmp163__ |= (pSrc->reserved << 13); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp163__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp164__ = 0U; + tmp164__ |= (pSrc->basicSTBCMCS << 0); + tmp164__ |= (pSrc->dualCTSProtection << 7); + tmp164__ |= (pSrc->secondaryBeacon << 8); + tmp164__ |= (pSrc->lsigTXOPProtectionFullSupport << 9); + tmp164__ |= (pSrc->pcoActive << 10); + tmp164__ |= (pSrc->pcoPhase << 11); + tmp164__ |= (pSrc->reserved2 << 12); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp164__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->basicMCSSet, 16); + *pnConsumed += 16; + pBuf += 16; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rsvd), pSrc->num_rsvd); + *pnConsumed += pSrc->num_rsvd; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_ht_info. */ + uint32_t dot11f_pack_ie_link_identifier(tpAniSirGlobal pCtx, tDot11fIELinkIdentifier *pSrc, uint8_t *pBuf, @@ -26981,9 +25206,9 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp195__; - uint8_t tmp196__; - uint8_t tmp197__; + uint8_t tmp165__; + uint8_t tmp166__; + uint8_t tmp167__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_measurement_report(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -26998,15 +25223,15 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, *pBuf = pSrc->token; *pnConsumed += 1; pBuf += 1; - tmp195__ = 0U; - tmp195__ |= (pSrc->late << 0); - tmp195__ |= (pSrc->incapable << 1); - tmp195__ |= (pSrc->refused << 2); - tmp195__ |= (pSrc->unused << 3); + tmp165__ = 0U; + tmp165__ |= (pSrc->late << 0); + tmp165__ |= (pSrc->incapable << 1); + tmp165__ |= (pSrc->refused << 2); + tmp165__ |= (pSrc->unused << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp195__; + *pBuf = tmp165__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -27025,17 +25250,17 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, frameshtons(pCtx, pBuf, pSrc->report.Basic.meas_duration, 0); *pnConsumed += 2; pBuf += 2; - tmp196__ = 0U; - tmp196__ |= (pSrc->report.Basic.bss << 0); - tmp196__ |= (pSrc->report.Basic.ofdm_preamble << 1); - tmp196__ |= (pSrc->report.Basic.unid_signal << 2); - tmp196__ |= (pSrc->report.Basic.rader << 3); - tmp196__ |= (pSrc->report.Basic.unmeasured << 4); - tmp196__ |= (pSrc->report.Basic.unused << 5); + tmp166__ = 0U; + tmp166__ |= (pSrc->report.Basic.bss << 0); + tmp166__ |= (pSrc->report.Basic.ofdm_preamble << 1); + tmp166__ |= (pSrc->report.Basic.unid_signal << 2); + tmp166__ |= (pSrc->report.Basic.rader << 3); + tmp166__ |= (pSrc->report.Basic.unmeasured << 4); + tmp166__ |= (pSrc->report.Basic.unused << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp196__; + *pBuf = tmp166__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -27102,13 +25327,13 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx, frameshtons(pCtx, pBuf, pSrc->report.Beacon.meas_duration, 0); *pnConsumed += 2; pBuf += 2; - tmp197__ = 0U; - tmp197__ |= (pSrc->report.Beacon.condensed_PHY << 0); - tmp197__ |= (pSrc->report.Beacon.reported_frame_type << 7); + tmp167__ = 0U; + tmp167__ |= (pSrc->report.Beacon.condensed_PHY << 0); + tmp167__ |= (pSrc->report.Beacon.reported_frame_type << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp197__; + *pBuf = tmp167__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -27157,7 +25382,7 @@ uint32_t dot11f_pack_ie_measurement_request(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp198__; + uint8_t tmp168__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_measurement_request(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -27172,17 +25397,17 @@ uint32_t dot11f_pack_ie_measurement_request(tpAniSirGlobal pCtx, *pBuf = pSrc->measurement_token; *pnConsumed += 1; pBuf += 1; - tmp198__ = 0U; - tmp198__ |= (pSrc->parallel << 0); - tmp198__ |= (pSrc->enable << 1); - tmp198__ |= (pSrc->request << 2); - tmp198__ |= (pSrc->report << 3); - tmp198__ |= (pSrc->durationMandatory << 4); - tmp198__ |= (pSrc->unused << 5); + tmp168__ = 0U; + tmp168__ |= (pSrc->parallel << 0); + tmp168__ |= (pSrc->enable << 1); + tmp168__ |= (pSrc->request << 2); + tmp168__ |= (pSrc->report << 3); + tmp168__ |= (pSrc->durationMandatory << 4); + tmp168__ |= (pSrc->unused << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp198__; + *pBuf = tmp168__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -27296,7 +25521,7 @@ uint32_t dot11f_pack_ie_mobility_domain(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp199__; + uint8_t tmp169__; nNeeded += 3; while (pSrc->present) { if (nNeeded > nBuf) @@ -27308,14 +25533,14 @@ uint32_t dot11f_pack_ie_mobility_domain(tpAniSirGlobal pCtx, frameshtons(pCtx, pBuf, pSrc->MDID, 0); *pnConsumed += 2; pBuf += 2; - tmp199__ = 0U; - tmp199__ |= (pSrc->overDSCap << 0); - tmp199__ |= (pSrc->resourceReqCap << 1); - tmp199__ |= (pSrc->reserved << 2); + tmp169__ = 0U; + tmp169__ |= (pSrc->overDSCap << 0); + tmp169__ |= (pSrc->resourceReqCap << 1); + tmp169__ |= (pSrc->reserved << 2); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp199__; + *pBuf = tmp169__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -27337,8 +25562,8 @@ uint32_t dot11f_pack_ie_neighbor_report(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp200__; - uint8_t tmp201__; + uint8_t tmp170__; + uint8_t tmp171__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_neighbor_report(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -27353,30 +25578,30 @@ uint32_t dot11f_pack_ie_neighbor_report(tpAniSirGlobal pCtx, DOT11F_MEMCPY(pCtx, pBuf, pSrc->bssid, 6); *pnConsumed += 6; pBuf += 6; - tmp200__ = 0U; - tmp200__ |= (pSrc->APReachability << 0); - tmp200__ |= (pSrc->Security << 2); - tmp200__ |= (pSrc->KeyScope << 3); - tmp200__ |= (pSrc->SpecMgmtCap << 4); - tmp200__ |= (pSrc->QosCap << 5); - tmp200__ |= (pSrc->apsd << 6); - tmp200__ |= (pSrc->rrm << 7); + tmp170__ = 0U; + tmp170__ |= (pSrc->APReachability << 0); + tmp170__ |= (pSrc->Security << 2); + tmp170__ |= (pSrc->KeyScope << 3); + tmp170__ |= (pSrc->SpecMgmtCap << 4); + tmp170__ |= (pSrc->QosCap << 5); + tmp170__ |= (pSrc->apsd << 6); + tmp170__ |= (pSrc->rrm << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp200__; + *pBuf = tmp170__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp201__ = 0U; - tmp201__ |= (pSrc->DelayedBA << 0); - tmp201__ |= (pSrc->ImmBA << 1); - tmp201__ |= (pSrc->MobilityDomain << 2); - tmp201__ |= (pSrc->reserved << 3); + tmp171__ = 0U; + tmp171__ |= (pSrc->DelayedBA << 0); + tmp171__ |= (pSrc->ImmBA << 1); + tmp171__ |= (pSrc->MobilityDomain << 2); + tmp171__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp201__; + *pBuf = tmp171__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -27455,6 +25680,46 @@ uint32_t dot11f_pack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_obss_scan_parameters. */ +uint32_t dot11f_pack_ie_operating_mode(tpAniSirGlobal pCtx, + tDot11fIEOperatingMode *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint8_t tmp172__; + nNeeded += 1; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 199; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + tmp172__ = 0U; + tmp172__ |= (pSrc->chanWidth << 0); + tmp172__ |= (pSrc->vht_160_80p80_supp << 2); + tmp172__ |= (pSrc->no_ldpc << 3); + tmp172__ |= (pSrc->rxNSS << 4); + tmp172__ |= (pSrc->rxNSSType << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp172__; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + nBuf -= 1 ; + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_operating_mode. */ + uint32_t dot11f_pack_ie_p2_p_assoc_req(tpAniSirGlobal pCtx, tDot11fIEP2PAssocReq *pSrc, uint8_t *pBuf, @@ -27503,6 +25768,54 @@ uint32_t dot11f_pack_ie_p2_p_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_pack_ie_p2_p_assoc_req. */ +uint32_t dot11f_pack_ie_p2_p_assoc_res(tpAniSirGlobal pCtx, + tDot11fIEP2PAssocRes *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t n, idx = 0, idxlast; + uint32_t nConsumedSoFar, nConsumedNow; + uint32_t status = DOT11F_PARSE_SUCCESS; + uint32_t nNeeded = 0U; + status = dot11f_get_packed_iep2_p_assoc_res(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + (void)pCtx; + if (pSrc->present) { + do { + nConsumedSoFar = *pnConsumed; + *pBuf = 221; + ++pBuf; --nBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0x50; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0x6f; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0x9a; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 0x9; + ++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_P2PAssocRes + + 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_p2_p_assoc_res. */ + uint32_t dot11f_pack_ie_p2_p_beacon(tpAniSirGlobal pCtx, tDot11fIEP2PBeacon *pSrc, uint8_t *pBuf, @@ -27869,7 +26182,7 @@ uint32_t dot11f_pack_ie_pu_buffer_status(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp202__; + uint8_t tmp173__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -27878,16 +26191,16 @@ uint32_t dot11f_pack_ie_pu_buffer_status(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp202__ = 0U; - tmp202__ |= (pSrc->ac_bk_traffic_aval << 0); - tmp202__ |= (pSrc->ac_be_traffic_aval << 1); - tmp202__ |= (pSrc->ac_vi_traffic_aval << 2); - tmp202__ |= (pSrc->ac_vo_traffic_aval << 3); - tmp202__ |= (pSrc->reserved << 4); + tmp173__ = 0U; + tmp173__ |= (pSrc->ac_bk_traffic_aval << 0); + tmp173__ |= (pSrc->ac_be_traffic_aval << 1); + tmp173__ |= (pSrc->ac_vi_traffic_aval << 2); + tmp173__ |= (pSrc->ac_vo_traffic_aval << 3); + tmp173__ |= (pSrc->reserved << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp202__; + *pBuf = tmp173__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -28043,7 +26356,7 @@ uint32_t dot11f_pack_ie_qos_caps_ap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp203__; + uint8_t tmp174__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -28052,16 +26365,16 @@ uint32_t dot11f_pack_ie_qos_caps_ap(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp203__ = 0U; - tmp203__ |= (pSrc->count << 0); - tmp203__ |= (pSrc->qack << 4); - tmp203__ |= (pSrc->qreq << 5); - tmp203__ |= (pSrc->txopreq << 6); - tmp203__ |= (pSrc->reserved << 7); + tmp174__ = 0U; + tmp174__ |= (pSrc->count << 0); + tmp174__ |= (pSrc->qack << 4); + tmp174__ |= (pSrc->qreq << 5); + tmp174__ |= (pSrc->txopreq << 6); + tmp174__ |= (pSrc->reserved << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp203__; + *pBuf = tmp174__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -28083,7 +26396,7 @@ uint32_t dot11f_pack_ie_qos_caps_station(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp204__; + uint8_t tmp175__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -28092,18 +26405,18 @@ uint32_t dot11f_pack_ie_qos_caps_station(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp204__ = 0U; - tmp204__ |= (pSrc->acvo_uapsd << 0); - tmp204__ |= (pSrc->acvi_uapsd << 1); - tmp204__ |= (pSrc->acbk_uapsd << 2); - tmp204__ |= (pSrc->acbe_uapsd << 3); - tmp204__ |= (pSrc->qack << 4); - tmp204__ |= (pSrc->max_sp_length << 5); - tmp204__ |= (pSrc->more_data_ack << 7); + tmp175__ = 0U; + tmp175__ |= (pSrc->acvo_uapsd << 0); + tmp175__ |= (pSrc->acvi_uapsd << 1); + tmp175__ |= (pSrc->acbk_uapsd << 2); + tmp175__ |= (pSrc->acbe_uapsd << 3); + tmp175__ |= (pSrc->qack << 4); + tmp175__ |= (pSrc->max_sp_length << 5); + tmp175__ |= (pSrc->more_data_ack << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp204__; + *pBuf = tmp175__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -28145,6 +26458,44 @@ uint32_t dot11f_pack_ie_qos_map_set(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_qos_map_set. */ +uint32_t dot11f_pack_ie_quiet(tpAniSirGlobal pCtx, + tDot11fIEQuiet *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 6; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 40; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->count; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->period; + *pnConsumed += 1; + pBuf += 1; + frameshtons(pCtx, pBuf, pSrc->duration, 0); + *pnConsumed += 2; + pBuf += 2; + frameshtons(pCtx, pBuf, pSrc->offset, 0); + *pnConsumed += 2; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_quiet. */ + uint32_t dot11f_pack_ie_rcpiie(tpAniSirGlobal pCtx, tDot11fIERCPIIE *pSrc, uint8_t *pBuf, @@ -28201,6 +26552,93 @@ uint32_t dot11f_pack_ie_ric_data_desc(tpAniSirGlobal pCtx, return status; } /* End dot11f_pack_ie_ric_data_desc. */ +uint32_t dot11f_pack_ie_rsn(tpAniSirGlobal pCtx, + tDot11fIERSN *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_iersn(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 48; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + frameshtons(pCtx, pBuf, pSrc->version, 0); + *pnConsumed += 2; + pBuf += 2; + if (pSrc->gp_cipher_suite_present) { + DOT11F_MEMCPY(pCtx, pBuf, pSrc->gp_cipher_suite, 4); + *pnConsumed += 4; + pBuf += 4; + } else { + break; + } + if (pSrc->pwise_cipher_suite_count) { + frameshtons(pCtx, pBuf, pSrc->pwise_cipher_suite_count, 0); + *pnConsumed += 2; + pBuf += 2; + } else { + break; + } + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->pwise_cipher_suites), (pSrc->pwise_cipher_suite_count * 4)); + *pnConsumed += (pSrc->pwise_cipher_suite_count * 4); + pBuf += (pSrc->pwise_cipher_suite_count * 4); + if (pSrc->akm_suite_cnt) { + frameshtons(pCtx, pBuf, pSrc->akm_suite_cnt, 0); + *pnConsumed += 2; + pBuf += 2; + } else { + break; + } + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->akm_suite), (pSrc->akm_suite_cnt * 4)); + *pnConsumed += (pSrc->akm_suite_cnt * 4); + pBuf += (pSrc->akm_suite_cnt * 4); + if (pSrc->RSN_Cap_present) { + DOT11F_MEMCPY(pCtx, pBuf, pSrc->RSN_Cap, 2); + *pnConsumed += 2; + pBuf += 2; + } else { + break; + } + if (pSrc->pmkid_count) { + frameshtons(pCtx, pBuf, pSrc->pmkid_count, 0); + *pnConsumed += 2; + pBuf += 2; + } else { + if (pSrc->gp_mgmt_cipher_suite_present) { + frameshtons(pCtx, pBuf, pSrc->pmkid_count, 0); + *pnConsumed += 2; + pBuf += 2; + } + } + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->pmkid), (pSrc->pmkid_count * 16)); + *pnConsumed += (pSrc->pmkid_count * 16); + pBuf += (pSrc->pmkid_count * 16); + if (pSrc->gp_mgmt_cipher_suite_present) { + DOT11F_MEMCPY(pCtx, pBuf, pSrc->gp_mgmt_cipher_suite, 4); + *pnConsumed += 4; + /* fieldsEndFlag = 1 */ + } else { + break; + } + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_rsn. */ + uint32_t dot11f_pack_ie_rsniie(tpAniSirGlobal pCtx, tDot11fIERSNIIE *pSrc, uint8_t *pBuf, @@ -28288,6 +26726,64 @@ uint32_t dot11f_pack_ie_supp_channels(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_supp_channels. */ +uint32_t dot11f_pack_ie_supp_operating_classes(tpAniSirGlobal pCtx, + tDot11fIESuppOperatingClasses *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += pSrc->num_classes; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 59; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->classes), pSrc->num_classes); + *pnConsumed += pSrc->num_classes; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_supp_operating_classes. */ + +uint32_t dot11f_pack_ie_supp_rates(tpAniSirGlobal pCtx, + tDot11fIESuppRates *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += pSrc->num_rates; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 1; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rates), pSrc->num_rates); + *pnConsumed += pSrc->num_rates; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_supp_rates. */ + uint32_t dot11f_pack_ie_tim(tpAniSirGlobal pCtx, tDot11fIETIM *pSrc, uint8_t *pBuf, @@ -28565,7 +27061,7 @@ uint32_t dot11f_pack_ie_wapi(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp205__; + uint16_t tmp176__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_iewapi(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -28595,13 +27091,13 @@ uint32_t dot11f_pack_ie_wapi(tpAniSirGlobal pCtx, DOT11F_MEMCPY(pCtx, pBuf, pSrc->multicast_cipher_suite, 4); *pnConsumed += 4; pBuf += 4; - tmp205__ = 0U; - tmp205__ |= (pSrc->preauth << 0); - tmp205__ |= (pSrc->reserved << 1); + tmp176__ = 0U; + tmp176__ |= (pSrc->preauth << 0); + tmp176__ |= (pSrc->reserved << 1); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp205__, 0); + frameshtons(pCtx, pBuf, tmp176__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -28732,6 +27228,59 @@ uint32_t dot11f_pack_ie_wfdie_opaque(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_wfdie_opaque. */ +uint32_t dot11f_pack_ie_wmm_caps(tpAniSirGlobal pCtx, + tDot11fIEWMMCaps *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint8_t tmp177__; + nNeeded += 2; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 221; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x0; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x50; + ++pBuf; ++(*pnConsumed); + *pBuf = 0xf2; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x2; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x5; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->version; + *pnConsumed += 1; + pBuf += 1; + tmp177__ = 0U; + tmp177__ |= (pSrc->reserved << 0); + tmp177__ |= (pSrc->qack << 4); + tmp177__ |= (pSrc->queue_request << 5); + tmp177__ |= (pSrc->txop_request << 6); + tmp177__ |= (pSrc->more_ack << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp177__; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + nBuf -= 1 ; + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_wmm_caps. */ + uint32_t dot11f_pack_ie_wmm_info_ap(tpAniSirGlobal pCtx, tDot11fIEWMMInfoAp *pSrc, uint8_t *pBuf, @@ -28741,7 +27290,7 @@ uint32_t dot11f_pack_ie_wmm_info_ap(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp206__; + uint8_t tmp178__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -28763,14 +27312,14 @@ uint32_t dot11f_pack_ie_wmm_info_ap(tpAniSirGlobal pCtx, *pBuf = pSrc->version; *pnConsumed += 1; pBuf += 1; - tmp206__ = 0U; - tmp206__ |= (pSrc->param_set_count << 0); - tmp206__ |= (pSrc->reserved << 4); - tmp206__ |= (pSrc->uapsd << 7); + tmp178__ = 0U; + tmp178__ |= (pSrc->param_set_count << 0); + tmp178__ |= (pSrc->reserved << 4); + tmp178__ |= (pSrc->uapsd << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp206__; + *pBuf = tmp178__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -28783,6 +27332,288 @@ uint32_t dot11f_pack_ie_wmm_info_ap(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_wmm_info_ap. */ +uint32_t dot11f_pack_ie_wmm_info_station(tpAniSirGlobal pCtx, + tDot11fIEWMMInfoStation *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint8_t tmp179__; + nNeeded += 2; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 221; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x0; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x50; + ++pBuf; ++(*pnConsumed); + *pBuf = 0xf2; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x2; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x0; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->version; + *pnConsumed += 1; + pBuf += 1; + tmp179__ = 0U; + tmp179__ |= (pSrc->acvo_uapsd << 0); + tmp179__ |= (pSrc->acvi_uapsd << 1); + tmp179__ |= (pSrc->acbk_uapsd << 2); + tmp179__ |= (pSrc->acbe_uapsd << 3); + tmp179__ |= (pSrc->reserved1 << 4); + tmp179__ |= (pSrc->max_sp_length << 5); + tmp179__ |= (pSrc->reserved2 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp179__; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + nBuf -= 1 ; + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_wmm_info_station. */ + +uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx, + tDot11fIEWMMParams *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint8_t tmp180__; + uint8_t tmp181__; + uint8_t tmp182__; + uint8_t tmp183__; + uint8_t tmp184__; + uint8_t tmp185__; + uint8_t tmp186__; + uint8_t tmp187__; + nNeeded += 19; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 221; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x0; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x50; + ++pBuf; ++(*pnConsumed); + *pBuf = 0xf2; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x2; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x1; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->version; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->qosInfo; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->reserved2; + *pnConsumed += 1; + pBuf += 1; + tmp180__ = 0U; + tmp180__ |= (pSrc->acbe_aifsn << 0); + tmp180__ |= (pSrc->acbe_acm << 4); + tmp180__ |= (pSrc->acbe_aci << 5); + tmp180__ |= (pSrc->unused1 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp180__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp181__ = 0U; + tmp181__ |= (pSrc->acbe_acwmin << 0); + tmp181__ |= (pSrc->acbe_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp181__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp182__ = 0U; + tmp182__ |= (pSrc->acbk_aifsn << 0); + tmp182__ |= (pSrc->acbk_acm << 4); + tmp182__ |= (pSrc->acbk_aci << 5); + tmp182__ |= (pSrc->unused2 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp182__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp183__ = 0U; + tmp183__ |= (pSrc->acbk_acwmin << 0); + tmp183__ |= (pSrc->acbk_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp183__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp184__ = 0U; + tmp184__ |= (pSrc->acvi_aifsn << 0); + tmp184__ |= (pSrc->acvi_acm << 4); + tmp184__ |= (pSrc->acvi_aci << 5); + tmp184__ |= (pSrc->unused3 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp184__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp185__ = 0U; + tmp185__ |= (pSrc->acvi_acwmin << 0); + tmp185__ |= (pSrc->acvi_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp185__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0); + *pnConsumed += 2; + pBuf += 2; + tmp186__ = 0U; + tmp186__ |= (pSrc->acvo_aifsn << 0); + tmp186__ |= (pSrc->acvo_acm << 4); + tmp186__ |= (pSrc->acvo_aci << 5); + tmp186__ |= (pSrc->unused4 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp186__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp187__ = 0U; + tmp187__ |= (pSrc->acvo_acwmin << 0); + tmp187__ |= (pSrc->acvo_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp187__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0); + *pnConsumed += 2; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_wmm_params. */ + +uint32_t dot11f_pack_ie_wpa(tpAniSirGlobal pCtx, + tDot11fIEWPA *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_iewpa(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 221; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x0; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x50; + ++pBuf; ++(*pnConsumed); + *pBuf = 0xf2; + ++pBuf; ++(*pnConsumed); + *pBuf = 0x1; + ++pBuf; ++(*pnConsumed); + frameshtons(pCtx, pBuf, pSrc->version, 0); + *pnConsumed += 2; + pBuf += 2; + if (pSrc->multicast_cipher_present) { + DOT11F_MEMCPY(pCtx, pBuf, pSrc->multicast_cipher, 4); + *pnConsumed += 4; + pBuf += 4; + } else { + break; + } + if (pSrc->unicast_cipher_count) { + frameshtons(pCtx, pBuf, pSrc->unicast_cipher_count, 0); + *pnConsumed += 2; + pBuf += 2; + } else { + break; + } + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->unicast_ciphers), (pSrc->unicast_cipher_count * 4)); + *pnConsumed += (pSrc->unicast_cipher_count * 4); + pBuf += (pSrc->unicast_cipher_count * 4); + if (pSrc->auth_suite_count) { + frameshtons(pCtx, pBuf, pSrc->auth_suite_count, 0); + *pnConsumed += 2; + pBuf += 2; + } else { + break; + } + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->auth_suites), (pSrc->auth_suite_count * 4)); + *pnConsumed += (pSrc->auth_suite_count * 4); + pBuf += (pSrc->auth_suite_count * 4); + if (pSrc->caps) { + frameshtons(pCtx, pBuf, pSrc->caps, 0); + *pnConsumed += 2; + /* fieldsEndFlag = 1 */ + } else { + break; + } + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_wpa. */ + uint32_t dot11f_pack_ie_wpa_opaque(tpAniSirGlobal pCtx, tDot11fIEWPAOpaque *pSrc, uint8_t *pBuf, @@ -29250,7 +28081,7 @@ uint32_t dot11f_pack_ie_addba_extn_element(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp207__; + uint8_t tmp188__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -29259,14 +28090,14 @@ uint32_t dot11f_pack_ie_addba_extn_element(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp207__ = 0U; - tmp207__ |= (pSrc->no_fragmentation << 0); - tmp207__ |= (pSrc->he_frag_operation << 1); - tmp207__ |= (pSrc->reserved << 3); + tmp188__ = 0U; + tmp188__ |= (pSrc->no_fragmentation << 0); + tmp188__ |= (pSrc->he_frag_operation << 1); + tmp188__ |= (pSrc->reserved << 3); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp207__; + *pBuf = tmp188__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -29288,7 +28119,7 @@ uint32_t dot11f_pack_ie_bss_color_change(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp208__; + uint8_t tmp189__; nNeeded += 2; while (pSrc->present) { if (nNeeded > nBuf) @@ -29302,13 +28133,13 @@ uint32_t dot11f_pack_ie_bss_color_change(tpAniSirGlobal pCtx, *pBuf = pSrc->countdown; *pnConsumed += 1; pBuf += 1; - tmp208__ = 0U; - tmp208__ |= (pSrc->new_color << 0); - tmp208__ |= (pSrc->reserved << 6); + tmp189__ = 0U; + tmp189__ |= (pSrc->new_color << 0); + tmp189__ |= (pSrc->reserved << 6); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp208__; + *pBuf = tmp189__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -29330,7 +28161,7 @@ uint32_t dot11f_pack_ie_bss_max_idle_period(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp209__; + uint8_t tmp190__; nNeeded += 3; while (pSrc->present) { if (nNeeded > nBuf) @@ -29342,13 +28173,13 @@ uint32_t dot11f_pack_ie_bss_max_idle_period(tpAniSirGlobal pCtx, frameshtons(pCtx, pBuf, pSrc->max_idle_period, 0); *pnConsumed += 2; pBuf += 2; - tmp209__ = 0U; - tmp209__ |= (pSrc->prot_keep_alive_reqd << 0); - tmp209__ |= (pSrc->reserved << 1); + tmp190__ = 0U; + tmp190__ |= (pSrc->prot_keep_alive_reqd << 0); + tmp190__ |= (pSrc->reserved << 1); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp209__; + *pBuf = tmp190__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -29442,6 +28273,186 @@ uint32_t dot11f_pack_ie_dh_parameter_element(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_dh_parameter_element. */ +uint32_t dot11f_pack_ie_eht_cap(tpAniSirGlobal pCtx, + tDot11fIEeht_cap *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint16_t tmp191__; + uint32_t tmp192__; + uint32_t tmp193__; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_ie_eht_cap(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 108; + ++pBuf; ++(*pnConsumed); + tmp191__ = 0U; + tmp191__ |= (pSrc->nsep_pri_access << 0); + tmp191__ |= (pSrc->eht_om_ctl << 1); + tmp191__ |= (pSrc->triggered_txop_sharing << 2); + tmp191__ |= (pSrc->reserved << 3); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp191__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp192__ = 0U; + tmp192__ |= (pSrc->reserved2 << 0); + tmp192__ |= (pSrc->support_320mhz_6ghz << 1); + tmp192__ |= (pSrc->ru_242tone_wt_20mhz << 2); + tmp192__ |= (pSrc->ndp_4x_eht_ltf_3dot2_us_gi << 3); + tmp192__ |= (pSrc->partial_bw_mu_mimo << 4); + tmp192__ |= (pSrc->su_beamformer << 5); + tmp192__ |= (pSrc->su_beamformee << 6); + tmp192__ |= (pSrc->bfee_ss_le_80mhz << 7); + tmp192__ |= (pSrc->bfee_ss_160mhz << 10); + tmp192__ |= (pSrc->bfee_ss_320mhz << 13); + tmp192__ |= (pSrc->num_sounding_dim_le_80mhz << 16); + tmp192__ |= (pSrc->num_sounding_dim_160mhz << 19); + tmp192__ |= (pSrc->num_sounding_dim_320mhz << 22); + tmp192__ |= (pSrc->ng_16_su_feedback << 25); + tmp192__ |= (pSrc->ng_16_mu_feedback << 26); + tmp192__ |= (pSrc->cb_sz_4_2_su_feedback << 27); + tmp192__ |= (pSrc->cb_sz_7_5_su_feedback << 28); + tmp192__ |= (pSrc->trig_su_bforming_feedback << 29); + tmp192__ |= (pSrc->trig_mu_bforming_partial_bw_feedback << 30); + tmp192__ |= (pSrc->triggered_cqi_feedback << 31); + if (unlikely(nBuf < 4)) + return DOT11F_INCOMPLETE_IE; + + frameshtonl(pCtx, pBuf, tmp192__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp193__ = 0U; + tmp193__ |= (pSrc->partial_bw_dl_mu_mimo << 0); + tmp193__ |= (pSrc->psr_based_sr << 1); + tmp193__ |= (pSrc->power_boost_factor << 2); + tmp193__ |= (pSrc->eht_mu_ppdu_4x_ltf_0_8_us_gi << 3); + tmp193__ |= (pSrc->max_nc << 4); + tmp193__ |= (pSrc->non_trig_cqi_feedback << 8); + tmp193__ |= (pSrc->tx_1024_4096_qam_lt_242_tone_ru << 9); + tmp193__ |= (pSrc->rx_1024_4096_qam_lt_242_tone_ru << 10); + tmp193__ |= (pSrc->ppet_present << 11); + tmp193__ |= (pSrc->common_nominal_pkt_padding << 12); + tmp193__ |= (pSrc->max_num_eht_ltf << 14); + tmp193__ |= (pSrc->mcs_15 << 19); + tmp193__ |= (pSrc->eht_dup_6ghz << 23); + tmp193__ |= (pSrc->op_sta_rx_ndp_wider_bw_20mhz << 24); + tmp193__ |= (pSrc->non_ofdma_ul_mu_mimo_le_80mhz << 25); + tmp193__ |= (pSrc->non_ofdma_ul_mu_mimo_160mhz << 26); + tmp193__ |= (pSrc->non_ofdma_ul_mu_mimo_320mhz << 27); + tmp193__ |= (pSrc->mu_bformer_le_80mhz << 28); + tmp193__ |= (pSrc->mu_bformer_160mhz << 29); + tmp193__ |= (pSrc->mu_bformer_320mhz << 30); + tmp193__ |= (pSrc->reserved3 << 31); + if (unlikely(nBuf < 4)) + return DOT11F_INCOMPLETE_IE; + + frameshtonl(pCtx, pBuf, tmp193__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_20), pSrc->num_eht_mcs_map_20); + *pnConsumed += pSrc->num_eht_mcs_map_20; + pBuf += pSrc->num_eht_mcs_map_20; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_le_80), pSrc->num_eht_mcs_map_le_80); + *pnConsumed += pSrc->num_eht_mcs_map_le_80; + pBuf += pSrc->num_eht_mcs_map_le_80; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_160), pSrc->num_eht_mcs_map_160); + *pnConsumed += pSrc->num_eht_mcs_map_160; + pBuf += pSrc->num_eht_mcs_map_160; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->eht_mcs_map_320), (pSrc->support_320mhz_6ghz * 3)); + *pnConsumed += (pSrc->support_320mhz_6ghz * 3); + pBuf += (pSrc->support_320mhz_6ghz * 3); + if (pSrc->ppet_present) { + switch (pSrc->ppet_present) { + case 1: + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->ppet.ppe_threshold.ppe_th), pSrc->ppet.ppe_threshold.num_ppe_th); + *pnConsumed += pSrc->ppet.ppe_threshold.num_ppe_th; + /* fieldsEndFlag = 1 */ + break; + } + } else { + break; + } + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_eht_cap. */ + +uint32_t dot11f_pack_ie_eht_op(tpAniSirGlobal pCtx, + tDot11fIEeht_op *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint8_t tmp194__; + nNeeded += 7; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 106; + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, pSrc->basic_mcs_nss_set, 2); + *pnConsumed += 2; + pBuf += 2; + *pBuf = pSrc->primary_channel; + *pnConsumed += 1; + pBuf += 1; + tmp194__ = 0U; + tmp194__ |= (pSrc->width << 0); + tmp194__ |= (pSrc->reserved << 3); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp194__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + *pBuf = pSrc->chan_freq_seg0; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->chan_freq_seg1; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->minimum_rate; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_eht_op. */ + uint32_t dot11f_pack_ie_esp_information(tpAniSirGlobal pCtx, tDot11fIEesp_information *pSrc, uint8_t *pBuf, @@ -29473,6 +28484,44 @@ uint32_t dot11f_pack_ie_esp_information(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_esp_information. */ +uint32_t dot11f_pack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, + tDot11fIEext_chan_switch_ann *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 4; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 60; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->switch_mode; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->new_reg_class; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->new_channel; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->switch_count; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_ext_chan_switch_ann. */ + uint32_t dot11f_pack_ie_fils_assoc_delay_info(tpAniSirGlobal pCtx, tDot11fIEfils_assoc_delay_info *pSrc, uint8_t *pBuf, @@ -29541,6 +28590,53 @@ uint32_t dot11f_pack_ie_fils_hlp_container(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_fils_hlp_container. */ +uint32_t dot11f_pack_ie_fils_indication(tpAniSirGlobal pCtx, + tDot11fIEfils_indication *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint16_t tmp195__; + nNeeded += (pSrc->num_variable_data + 2); + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 240; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + tmp195__ = 0U; + tmp195__ |= (pSrc->public_key_identifiers_cnt << 0); + tmp195__ |= (pSrc->realm_identifiers_cnt << 3); + tmp195__ |= (pSrc->is_ip_config_supported << 6); + tmp195__ |= (pSrc->is_cache_id_present << 7); + tmp195__ |= (pSrc->is_hessid_present << 8); + tmp195__ |= (pSrc->is_fils_sk_auth_supported << 9); + tmp195__ |= (pSrc->is_fils_sk_auth_pfs_supported << 10); + tmp195__ |= (pSrc->is_pk_auth_supported << 11); + tmp195__ |= (pSrc->reserved << 12); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp195__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->variable_data), pSrc->num_variable_data); + *pnConsumed += pSrc->num_variable_data; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_fils_indication. */ + uint32_t dot11f_pack_ie_fils_kde(tpAniSirGlobal pCtx, tDot11fIEfils_kde *pSrc, uint8_t *pBuf, @@ -29762,6 +28858,379 @@ uint32_t dot11f_pack_ie_fragment_ie(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_fragment_ie. */ +uint32_t dot11f_pack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, + tDot11fIEhe_6ghz_band_cap *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint16_t tmp196__; + nNeeded += 2; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 59; + ++pBuf; ++(*pnConsumed); + tmp196__ = 0U; + tmp196__ |= (pSrc->min_mpdu_start_spacing << 0); + tmp196__ |= (pSrc->max_ampdu_len_exp << 3); + tmp196__ |= (pSrc->max_mpdu_len << 6); + tmp196__ |= (pSrc->sm_pow_save << 9); + tmp196__ |= (pSrc->rd_responder << 11); + tmp196__ |= (pSrc->rx_ant_pattern_consistency << 12); + tmp196__ |= (pSrc->tx_ant_pattern_consistency << 13); + tmp196__ |= (pSrc->reserved << 14); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp196__, 0); + *pnConsumed += 2; + /* fieldsEndFlag = 1 */ + nBuf -= 2 ; + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_he_6ghz_band_cap. */ + +uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx, + tDot11fIEhe_cap *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint32_t tmp197__; + uint16_t tmp198__; + uint32_t tmp199__; + uint32_t tmp200__; + uint16_t tmp201__; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_ie_he_cap(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 35; + ++pBuf; ++(*pnConsumed); + tmp197__ = 0U; + tmp197__ |= (pSrc->htc_he << 0); + tmp197__ |= (pSrc->twt_request << 1); + tmp197__ |= (pSrc->twt_responder << 2); + tmp197__ |= (pSrc->fragmentation << 3); + tmp197__ |= (pSrc->max_num_frag_msdu_amsdu_exp << 5); + tmp197__ |= (pSrc->min_frag_size << 8); + tmp197__ |= (pSrc->trigger_frm_mac_pad << 10); + tmp197__ |= (pSrc->multi_tid_aggr_rx_supp << 12); + tmp197__ |= (pSrc->he_link_adaptation << 15); + tmp197__ |= (pSrc->all_ack << 17); + tmp197__ |= (pSrc->trigd_rsp_sched << 18); + tmp197__ |= (pSrc->a_bsr << 19); + tmp197__ |= (pSrc->broadcast_twt << 20); + tmp197__ |= (pSrc->ba_32bit_bitmap << 21); + tmp197__ |= (pSrc->mu_cascade << 22); + tmp197__ |= (pSrc->ack_enabled_multitid << 23); + tmp197__ |= (pSrc->reserved << 24); + tmp197__ |= (pSrc->omi_a_ctrl << 25); + tmp197__ |= (pSrc->ofdma_ra << 26); + tmp197__ |= (pSrc->max_ampdu_len_exp_ext << 27); + tmp197__ |= (pSrc->amsdu_frag << 29); + tmp197__ |= (pSrc->flex_twt_sched << 30); + tmp197__ |= (pSrc->rx_ctrl_frame << 31); + if (unlikely(nBuf < 4)) + return DOT11F_INCOMPLETE_IE; + + frameshtonl(pCtx, pBuf, tmp197__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp198__ = 0U; + tmp198__ |= (pSrc->bsrp_ampdu_aggr << 0); + tmp198__ |= (pSrc->qtp << 1); + tmp198__ |= (pSrc->a_bqr << 2); + tmp198__ |= (pSrc->spatial_reuse_param_rspder << 3); + tmp198__ |= (pSrc->ndp_feedback_supp << 4); + tmp198__ |= (pSrc->ops_supp << 5); + tmp198__ |= (pSrc->amsdu_in_ampdu << 6); + tmp198__ |= (pSrc->multi_tid_aggr_tx_supp << 7); + tmp198__ |= (pSrc->he_sub_ch_sel_tx_supp << 10); + tmp198__ |= (pSrc->ul_2x996_tone_ru_supp << 11); + tmp198__ |= (pSrc->om_ctrl_ul_mu_data_dis_rx << 12); + tmp198__ |= (pSrc->he_dynamic_smps << 13); + tmp198__ |= (pSrc->punctured_sounding_supp << 14); + tmp198__ |= (pSrc->ht_vht_trg_frm_rx_supp << 15); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp198__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp199__ = 0U; + tmp199__ |= (pSrc->reserved2 << 0); + tmp199__ |= (pSrc->chan_width_0 << 1); + tmp199__ |= (pSrc->chan_width_1 << 2); + tmp199__ |= (pSrc->chan_width_2 << 3); + tmp199__ |= (pSrc->chan_width_3 << 4); + tmp199__ |= (pSrc->chan_width_4 << 5); + tmp199__ |= (pSrc->chan_width_5 << 6); + tmp199__ |= (pSrc->chan_width_6 << 7); + tmp199__ |= (pSrc->rx_pream_puncturing << 8); + tmp199__ |= (pSrc->device_class << 12); + tmp199__ |= (pSrc->ldpc_coding << 13); + tmp199__ |= (pSrc->he_1x_ltf_800_gi_ppdu << 14); + tmp199__ |= (pSrc->midamble_tx_rx_max_nsts << 15); + tmp199__ |= (pSrc->he_4x_ltf_3200_gi_ndp << 17); + tmp199__ |= (pSrc->tb_ppdu_tx_stbc_lt_80mhz << 18); + tmp199__ |= (pSrc->rx_stbc_lt_80mhz << 19); + tmp199__ |= (pSrc->doppler << 20); + tmp199__ |= (pSrc->ul_mu << 22); + tmp199__ |= (pSrc->dcm_enc_tx << 24); + tmp199__ |= (pSrc->dcm_enc_rx << 27); + tmp199__ |= (pSrc->ul_he_mu << 30); + tmp199__ |= (pSrc->su_beamformer << 31); + if (unlikely(nBuf < 4)) + return DOT11F_INCOMPLETE_IE; + + frameshtonl(pCtx, pBuf, tmp199__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp200__ = 0U; + tmp200__ |= (pSrc->su_beamformee << 0); + tmp200__ |= (pSrc->mu_beamformer << 1); + tmp200__ |= (pSrc->bfee_sts_lt_80 << 2); + tmp200__ |= (pSrc->bfee_sts_gt_80 << 5); + tmp200__ |= (pSrc->num_sounding_lt_80 << 8); + tmp200__ |= (pSrc->num_sounding_gt_80 << 11); + tmp200__ |= (pSrc->su_feedback_tone16 << 14); + tmp200__ |= (pSrc->mu_feedback_tone16 << 15); + tmp200__ |= (pSrc->codebook_su << 16); + tmp200__ |= (pSrc->codebook_mu << 17); + tmp200__ |= (pSrc->beamforming_feedback << 18); + tmp200__ |= (pSrc->he_er_su_ppdu << 21); + tmp200__ |= (pSrc->dl_mu_mimo_part_bw << 22); + tmp200__ |= (pSrc->ppet_present << 23); + tmp200__ |= (pSrc->srp << 24); + tmp200__ |= (pSrc->power_boost << 25); + tmp200__ |= (pSrc->he_ltf_800_gi_4x << 26); + tmp200__ |= (pSrc->max_nc << 27); + tmp200__ |= (pSrc->tb_ppdu_tx_stbc_gt_80mhz << 30); + tmp200__ |= (pSrc->rx_stbc_gt_80mhz << 31); + if (unlikely(nBuf < 4)) + return DOT11F_INCOMPLETE_IE; + + frameshtonl(pCtx, pBuf, tmp200__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp201__ = 0U; + tmp201__ |= (pSrc->er_he_ltf_800_gi_4x << 0); + tmp201__ |= (pSrc->he_ppdu_20_in_40Mhz_2G << 1); + tmp201__ |= (pSrc->he_ppdu_20_in_160_80p80Mhz << 2); + tmp201__ |= (pSrc->he_ppdu_80_in_160_80p80Mhz << 3); + tmp201__ |= (pSrc->er_1x_he_ltf_gi << 4); + tmp201__ |= (pSrc->midamble_tx_rx_1x_he_ltf << 5); + tmp201__ |= (pSrc->dcm_max_bw << 6); + tmp201__ |= (pSrc->longer_than_16_he_sigb_ofdm_sym << 8); + tmp201__ |= (pSrc->non_trig_cqi_feedback << 9); + tmp201__ |= (pSrc->tx_1024_qam_lt_242_tone_ru << 10); + tmp201__ |= (pSrc->rx_1024_qam_lt_242_tone_ru << 11); + tmp201__ |= (pSrc->rx_full_bw_su_he_mu_compress_sigb << 12); + tmp201__ |= (pSrc->rx_full_bw_su_he_mu_non_cmpr_sigb << 13); + tmp201__ |= (pSrc->reserved3 << 14); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp201__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + *pBuf = pSrc->reserved4; + *pnConsumed += 1; + pBuf += 1; + frameshtons(pCtx, pBuf, pSrc->rx_he_mcs_map_lt_80, 0); + *pnConsumed += 2; + pBuf += 2; + frameshtons(pCtx, pBuf, pSrc->tx_he_mcs_map_lt_80, 0); + *pnConsumed += 2; + pBuf += 2; + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rx_he_mcs_map_160), (pSrc->chan_width_2 * 2)); + *pnConsumed += (pSrc->chan_width_2 * 2); + pBuf += (pSrc->chan_width_2 * 2); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->tx_he_mcs_map_160), (pSrc->chan_width_2 * 2)); + *pnConsumed += (pSrc->chan_width_2 * 2); + pBuf += (pSrc->chan_width_2 * 2); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->rx_he_mcs_map_80_80), (pSrc->chan_width_3 * 2)); + *pnConsumed += (pSrc->chan_width_3 * 2); + pBuf += (pSrc->chan_width_3 * 2); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->tx_he_mcs_map_80_80), (pSrc->chan_width_3 * 2)); + *pnConsumed += (pSrc->chan_width_3 * 2); + pBuf += (pSrc->chan_width_3 * 2); + if (pSrc->ppet_present) { + switch (pSrc->ppet_present) { + case 1: + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->ppet.ppe_threshold.ppe_th), pSrc->ppet.ppe_threshold.num_ppe_th); + *pnConsumed += pSrc->ppet.ppe_threshold.num_ppe_th; + /* fieldsEndFlag = 1 */ + break; + } + } else { + break; + } + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_he_cap. */ + +uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, + tDot11fIEhe_op *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint16_t tmp202__; + uint8_t tmp203__; + uint8_t tmp204__; + uint8_t tmp205__; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_ie_he_op(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 36; + ++pBuf; ++(*pnConsumed); + tmp202__ = 0U; + tmp202__ |= (pSrc->default_pe << 0); + tmp202__ |= (pSrc->twt_required << 3); + tmp202__ |= (pSrc->txop_rts_threshold << 4); + tmp202__ |= (pSrc->vht_oper_present << 14); + tmp202__ |= (pSrc->co_located_bss << 15); + if (unlikely(nBuf < 2)) + return DOT11F_INCOMPLETE_IE; + + frameshtons(pCtx, pBuf, tmp202__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + tmp203__ = 0U; + tmp203__ |= (pSrc->er_su_disable << 0); + tmp203__ |= (pSrc->oper_info_6g_present << 1); + tmp203__ |= (pSrc->reserved2 << 2); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp203__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp204__ = 0U; + tmp204__ |= (pSrc->bss_color << 0); + tmp204__ |= (pSrc->partial_bss_col << 6); + tmp204__ |= (pSrc->bss_col_disabled << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp204__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->basic_mcs_nss, 2); + *pnConsumed += 2; + pBuf += 2; + if (pSrc->vht_oper_present) { + switch (pSrc->vht_oper_present) { + case 1: + *pBuf = pSrc->vht_oper.info.chan_width; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->vht_oper.info.center_freq_seg0; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->vht_oper.info.center_freq_seg1; + *pnConsumed += 1; + pBuf += 1; + break; + } + } + if (pSrc->co_located_bss) { + switch (pSrc->co_located_bss) { + case 1: + *pBuf = pSrc->maxbssid_ind.info.data; + *pnConsumed += 1; + pBuf += 1; + break; + } + } + if (pSrc->oper_info_6g_present) { + switch (pSrc->oper_info_6g_present) { + case 1: + *pBuf = pSrc->oper_info_6g.info.primary_ch; + *pnConsumed += 1; + pBuf += 1; + tmp205__ = 0U; + tmp205__ |= (pSrc->oper_info_6g.info.ch_width << 0); + tmp205__ |= (pSrc->oper_info_6g.info.dup_bcon << 2); + tmp205__ |= (pSrc->oper_info_6g.info.reg_info << 3); + tmp205__ |= (pSrc->oper_info_6g.info.reserved << 6); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp205__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + *pBuf = pSrc->oper_info_6g.info.center_freq_seg0; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->oper_info_6g.info.center_freq_seg1; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->oper_info_6g.info.min_rate; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + break; + } + } + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_he_op. */ + uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, tDot11fIEhs20vendor_ie *pSrc, uint8_t *pBuf, @@ -29771,7 +29240,7 @@ uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp210__; + uint8_t tmp206__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_hs20vendor_ie(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -29791,15 +29260,15 @@ uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); *pBuf = 0x10; ++pBuf; ++(*pnConsumed); - tmp210__ = 0U; - tmp210__ |= (pSrc->dgaf_dis << 0); - tmp210__ |= (pSrc->hs_id_present << 1); - tmp210__ |= (pSrc->reserved << 3); - tmp210__ |= (pSrc->release_num << 4); + tmp206__ = 0U; + tmp206__ |= (pSrc->dgaf_dis << 0); + tmp206__ |= (pSrc->hs_id_present << 1); + tmp206__ |= (pSrc->reserved << 3); + tmp206__ |= (pSrc->release_num << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp210__; + *pBuf = tmp206__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -29837,7 +29306,7 @@ uint32_t dot11f_pack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp211__; + uint8_t tmp207__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -29846,17 +29315,17 @@ uint32_t dot11f_pack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp211__ = 0U; - tmp211__ |= (pSrc->info_request << 0); - tmp211__ |= (pSrc->forty_mhz_intolerant << 1); - tmp211__ |= (pSrc->twenty_mhz_bsswidth_req << 2); - tmp211__ |= (pSrc->obss_scan_exemption_req << 3); - tmp211__ |= (pSrc->obss_scan_exemption_grant << 4); - tmp211__ |= (pSrc->unused << 5); + tmp207__ = 0U; + tmp207__ |= (pSrc->info_request << 0); + tmp207__ |= (pSrc->forty_mhz_intolerant << 1); + tmp207__ |= (pSrc->twenty_mhz_bsswidth_req << 2); + tmp207__ |= (pSrc->obss_scan_exemption_req << 3); + tmp207__ |= (pSrc->obss_scan_exemption_grant << 4); + tmp207__ |= (pSrc->unused << 5); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp211__; + *pBuf = tmp207__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -29901,6 +29370,37 @@ uint32_t dot11f_pack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_ht2040_bss_intolerant_report. */ +uint32_t dot11f_pack_ie_max_chan_switch_time(tpAniSirGlobal pCtx, + tDot11fIEmax_chan_switch_time *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 3; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 52; + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, pSrc->switch_time, 3); + *pnConsumed += 3; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_max_chan_switch_time. */ + uint32_t dot11f_pack_ie_mlo_ie(tpAniSirGlobal pCtx, tDot11fIEmlo_ie *pSrc, uint8_t *pBuf, @@ -29910,12 +29410,12 @@ uint32_t dot11f_pack_ie_mlo_ie(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp212__; - uint8_t tmp213__; - uint16_t tmp214__; - uint16_t tmp215__; - uint8_t tmp216__; - uint16_t tmp217__; + uint16_t tmp208__; + uint8_t tmp209__; + uint16_t tmp210__; + uint16_t tmp211__; + uint8_t tmp212__; + uint16_t tmp213__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_mlo_ie(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -29929,20 +29429,20 @@ uint32_t dot11f_pack_ie_mlo_ie(tpAniSirGlobal pCtx, ++pBuf; --nBuf; ++(*pnConsumed); *pBuf = 107; ++pBuf; --nBuf; ++(*pnConsumed); - tmp212__ = 0U; - tmp212__ |= (pSrc->type << 0); - tmp212__ |= (pSrc->reserved << 3); - tmp212__ |= (pSrc->mld_mac_addr_present << 4); - tmp212__ |= (pSrc->link_id_info_present << 5); - tmp212__ |= (pSrc->bss_param_change_cnt_present << 6); - tmp212__ |= (pSrc->medium_sync_delay_info_present << 7); - tmp212__ |= (pSrc->eml_capab_present << 8); - tmp212__ |= (pSrc->mld_capab_present << 9); - tmp212__ |= (pSrc->reserved_1 << 10); + tmp208__ = 0U; + tmp208__ |= (pSrc->type << 0); + tmp208__ |= (pSrc->reserved << 3); + tmp208__ |= (pSrc->mld_mac_addr_present << 4); + tmp208__ |= (pSrc->link_id_info_present << 5); + tmp208__ |= (pSrc->bss_param_change_cnt_present << 6); + tmp208__ |= (pSrc->medium_sync_delay_info_present << 7); + tmp208__ |= (pSrc->eml_capab_present << 8); + tmp208__ |= (pSrc->mld_capab_present << 9); + tmp208__ |= (pSrc->reserved_1 << 10); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp212__, 0); + frameshtons(pCtx, pBuf, tmp208__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -29958,13 +29458,13 @@ uint32_t dot11f_pack_ie_mlo_ie(tpAniSirGlobal pCtx, if (pSrc->link_id_info_present) { switch (pSrc->link_id_info_present) { case 1: - tmp213__ = 0U; - tmp213__ |= (pSrc->link_id_info.info.link_id << 0); - tmp213__ |= (pSrc->link_id_info.info.reserved << 4); + tmp209__ = 0U; + tmp209__ |= (pSrc->link_id_info.info.link_id << 0); + tmp209__ |= (pSrc->link_id_info.info.reserved << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp213__; + *pBuf = tmp209__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -29983,14 +29483,14 @@ uint32_t dot11f_pack_ie_mlo_ie(tpAniSirGlobal pCtx, if (pSrc->medium_sync_delay_info_present) { switch (pSrc->medium_sync_delay_info_present) { case 1: - tmp214__ = 0U; - tmp214__ |= (pSrc->medium_sync_delay_info.info.medium_sync_duration << 0); - tmp214__ |= (pSrc->medium_sync_delay_info.info.medium_sync_ofdm_ed_thresh << 8); - tmp214__ |= (pSrc->medium_sync_delay_info.info.medium_sync_max_txop_num << 12); + tmp210__ = 0U; + tmp210__ |= (pSrc->medium_sync_delay_info.info.medium_sync_duration << 0); + tmp210__ |= (pSrc->medium_sync_delay_info.info.medium_sync_ofdm_ed_thresh << 8); + tmp210__ |= (pSrc->medium_sync_delay_info.info.medium_sync_max_txop_num << 12); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp214__, 0); + frameshtons(pCtx, pBuf, tmp210__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -30000,27 +29500,27 @@ uint32_t dot11f_pack_ie_mlo_ie(tpAniSirGlobal pCtx, if (pSrc->eml_capab_present) { switch (pSrc->eml_capab_present) { case 1: - tmp215__ = 0U; - tmp215__ |= (pSrc->eml_capabilities.info.emlsr_support << 0); - tmp215__ |= (pSrc->eml_capabilities.info.emlsr_delay << 1); - tmp215__ |= (pSrc->eml_capabilities.info.emlmr_support << 4); - tmp215__ |= (pSrc->eml_capabilities.info.emlmr_delay << 5); - tmp215__ |= (pSrc->eml_capabilities.info.transition_timeout << 8); - tmp215__ |= (pSrc->eml_capabilities.info.reserved << 12); + tmp211__ = 0U; + tmp211__ |= (pSrc->eml_capabilities.info.emlsr_support << 0); + tmp211__ |= (pSrc->eml_capabilities.info.emlsr_delay << 1); + tmp211__ |= (pSrc->eml_capabilities.info.emlmr_support << 4); + tmp211__ |= (pSrc->eml_capabilities.info.emlmr_delay << 5); + tmp211__ |= (pSrc->eml_capabilities.info.transition_timeout << 8); + tmp211__ |= (pSrc->eml_capabilities.info.reserved << 12); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp215__, 0); + frameshtons(pCtx, pBuf, tmp211__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; - tmp216__ = 0U; - tmp216__ |= (pSrc->eml_capabilities.info.emlmr_rx_nss << 0); - tmp216__ |= (pSrc->eml_capabilities.info.emlmr_tx_nss << 4); + tmp212__ = 0U; + tmp212__ |= (pSrc->eml_capabilities.info.emlmr_rx_nss << 0); + tmp212__ |= (pSrc->eml_capabilities.info.emlmr_tx_nss << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; - *pBuf = tmp216__; + *pBuf = tmp212__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -30030,16 +29530,16 @@ uint32_t dot11f_pack_ie_mlo_ie(tpAniSirGlobal pCtx, if (pSrc->mld_capab_present) { switch (pSrc->mld_capab_present) { case 1: - tmp217__ = 0U; - tmp217__ |= (pSrc->mld_capabilities.info.max_simultaneous_link_num << 0); - tmp217__ |= (pSrc->mld_capabilities.info.srs_support << 4); - tmp217__ |= (pSrc->mld_capabilities.info.tid_link_map_supported << 5); - tmp217__ |= (pSrc->mld_capabilities.info.str_freq_separation << 7); - tmp217__ |= (pSrc->mld_capabilities.info.reserved << 12); + tmp213__ = 0U; + tmp213__ |= (pSrc->mld_capabilities.info.max_simultaneous_link_num << 0); + tmp213__ |= (pSrc->mld_capabilities.info.srs_support << 4); + tmp213__ |= (pSrc->mld_capabilities.info.tid_link_map_supported << 5); + tmp213__ |= (pSrc->mld_capabilities.info.str_freq_separation << 7); + tmp213__ |= (pSrc->mld_capabilities.info.reserved << 12); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp217__, 0); + frameshtons(pCtx, pBuf, tmp213__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -30071,14 +29571,14 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; + uint8_t tmp214__; + uint8_t tmp215__; + uint8_t tmp216__; + uint8_t tmp217__; uint8_t tmp218__; uint8_t tmp219__; uint8_t tmp220__; uint8_t tmp221__; - uint8_t tmp222__; - uint8_t tmp223__; - uint8_t tmp224__; - uint8_t tmp225__; nNeeded += 13; while (pSrc->present) { if (nNeeded > nBuf) @@ -30092,11 +29592,61 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, *pBuf = pSrc->qos; *pnConsumed += 1; pBuf += 1; + tmp214__ = 0U; + tmp214__ |= (pSrc->acbe_aifsn << 0); + tmp214__ |= (pSrc->acbe_acm << 4); + tmp214__ |= (pSrc->acbe_aci << 5); + tmp214__ |= (pSrc->unused1 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp214__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp215__ = 0U; + tmp215__ |= (pSrc->acbe_acwmin << 0); + tmp215__ |= (pSrc->acbe_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp215__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + *pBuf = pSrc->acbe_muedca_timer; + *pnConsumed += 1; + pBuf += 1; + tmp216__ = 0U; + tmp216__ |= (pSrc->acbk_aifsn << 0); + tmp216__ |= (pSrc->acbk_acm << 4); + tmp216__ |= (pSrc->acbk_aci << 5); + tmp216__ |= (pSrc->unused2 << 7); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp216__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp217__ = 0U; + tmp217__ |= (pSrc->acbk_acwmin << 0); + tmp217__ |= (pSrc->acbk_acwmax << 4); + if (unlikely(nBuf < 1)) + return DOT11F_INCOMPLETE_IE; + + *pBuf = tmp217__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + *pBuf = pSrc->acbk_muedca_timer; + *pnConsumed += 1; + pBuf += 1; tmp218__ = 0U; - tmp218__ |= (pSrc->acbe_aifsn << 0); - tmp218__ |= (pSrc->acbe_acm << 4); - tmp218__ |= (pSrc->acbe_aci << 5); - tmp218__ |= (pSrc->unused1 << 7); + tmp218__ |= (pSrc->acvi_aifsn << 0); + tmp218__ |= (pSrc->acvi_acm << 4); + tmp218__ |= (pSrc->acvi_aci << 5); + tmp218__ |= (pSrc->unused3 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -30105,8 +29655,8 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp219__ = 0U; - tmp219__ |= (pSrc->acbe_acwmin << 0); - tmp219__ |= (pSrc->acbe_acwmax << 4); + tmp219__ |= (pSrc->acvi_acwmin << 0); + tmp219__ |= (pSrc->acvi_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -30114,14 +29664,14 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - *pBuf = pSrc->acbe_muedca_timer; + *pBuf = pSrc->acvi_muedca_timer; *pnConsumed += 1; pBuf += 1; tmp220__ = 0U; - tmp220__ |= (pSrc->acbk_aifsn << 0); - tmp220__ |= (pSrc->acbk_acm << 4); - tmp220__ |= (pSrc->acbk_aci << 5); - tmp220__ |= (pSrc->unused2 << 7); + tmp220__ |= (pSrc->acvo_aifsn << 0); + tmp220__ |= (pSrc->acvo_acm << 4); + tmp220__ |= (pSrc->acvo_aci << 5); + tmp220__ |= (pSrc->unused4 << 7); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -30130,8 +29680,8 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, pBuf += 1; nBuf -= 1 ; tmp221__ = 0U; - tmp221__ |= (pSrc->acbk_acwmin << 0); - tmp221__ |= (pSrc->acbk_acwmax << 4); + tmp221__ |= (pSrc->acvo_acwmin << 0); + tmp221__ |= (pSrc->acvo_acwmax << 4); if (unlikely(nBuf < 1)) return DOT11F_INCOMPLETE_IE; @@ -30139,56 +29689,6 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - *pBuf = pSrc->acbk_muedca_timer; - *pnConsumed += 1; - pBuf += 1; - tmp222__ = 0U; - tmp222__ |= (pSrc->acvi_aifsn << 0); - tmp222__ |= (pSrc->acvi_acm << 4); - tmp222__ |= (pSrc->acvi_aci << 5); - tmp222__ |= (pSrc->unused3 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp222__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp223__ = 0U; - tmp223__ |= (pSrc->acvi_acwmin << 0); - tmp223__ |= (pSrc->acvi_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp223__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - *pBuf = pSrc->acvi_muedca_timer; - *pnConsumed += 1; - pBuf += 1; - tmp224__ = 0U; - tmp224__ |= (pSrc->acvo_aifsn << 0); - tmp224__ |= (pSrc->acvo_acm << 4); - tmp224__ |= (pSrc->acvo_aci << 5); - tmp224__ |= (pSrc->unused4 << 7); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp224__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp225__ = 0U; - tmp225__ |= (pSrc->acvo_acwmin << 0); - tmp225__ |= (pSrc->acvo_acwmax << 4); - if (unlikely(nBuf < 1)) - return DOT11F_INCOMPLETE_IE; - - *pBuf = tmp225__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; *pBuf = pSrc->acvo_muedca_timer; *pnConsumed += 1; /* fieldsEndFlag = 1 */ @@ -30201,6 +29701,37 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_mu_edca_param_set. */ +uint32_t dot11f_pack_ie_non_inheritance(tpAniSirGlobal pCtx, + tDot11fIEnon_inheritance *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += pSrc->num_data; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 56; + ++pBuf; ++(*pnConsumed); + DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->data), pSrc->num_data); + *pnConsumed += pSrc->num_data; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_non_inheritance. */ + uint32_t dot11f_pack_ie_oci(tpAniSirGlobal pCtx, tDot11fIEoci *pSrc, uint8_t *pBuf, @@ -30275,6 +29806,54 @@ uint32_t dot11f_pack_ie_osen_ie(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_osen_ie. */ +uint32_t dot11f_pack_ie_qcn_ie(tpAniSirGlobal pCtx, + tDot11fIEqcn_ie *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + 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; + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + (void)pCtx; + 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. */ + uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, tDot11fIEreduced_neighbor_report *pSrc, uint8_t *pBuf, @@ -30284,10 +29863,10 @@ uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint16_t tmp226__; - uint32_t tmp227__; - uint32_t tmp228__; - uint32_t tmp229__; + uint16_t tmp222__; + uint32_t tmp223__; + uint32_t tmp224__; + uint32_t tmp225__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_reduced_neighbor_report(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -30299,16 +29878,16 @@ uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp226__ = 0U; - tmp226__ |= (pSrc->tbtt_type << 0); - tmp226__ |= (pSrc->filtered_neighbor_ap << 2); - tmp226__ |= (pSrc->reserved << 3); - tmp226__ |= (pSrc->tbtt_info_count << 4); - tmp226__ |= (pSrc->tbtt_info_len << 8); + tmp222__ = 0U; + tmp222__ |= (pSrc->tbtt_type << 0); + tmp222__ |= (pSrc->filtered_neighbor_ap << 2); + tmp222__ |= (pSrc->reserved << 3); + tmp222__ |= (pSrc->tbtt_info_count << 4); + tmp222__ |= (pSrc->tbtt_info_len << 8); if (unlikely(nBuf < 2)) return DOT11F_INCOMPLETE_IE; - frameshtons(pCtx, pBuf, tmp226__, 0); + frameshtons(pCtx, pBuf, tmp222__, 0); *pnConsumed += 2; pBuf += 2; nBuf -= 2 ; @@ -30336,15 +29915,15 @@ uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, *pBuf = pSrc->tbtt_info.tbtt_info_4.tbtt_offset; *pnConsumed += 1; pBuf += 1; - tmp227__ = 0U; - tmp227__ |= (pSrc->tbtt_info.tbtt_info_4.mld_id << 0); - tmp227__ |= (pSrc->tbtt_info.tbtt_info_4.link_id << 8); - tmp227__ |= (pSrc->tbtt_info.tbtt_info_4.bss_param_change_cnt << 12); - tmp227__ |= (pSrc->tbtt_info.tbtt_info_4.reserved << 20); + tmp223__ = 0U; + tmp223__ |= (pSrc->tbtt_info.tbtt_info_4.mld_id << 0); + tmp223__ |= (pSrc->tbtt_info.tbtt_info_4.link_id << 8); + tmp223__ |= (pSrc->tbtt_info.tbtt_info_4.bss_param_change_cnt << 12); + tmp223__ |= (pSrc->tbtt_info.tbtt_info_4.reserved << 20); if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; - frameshtonl(pCtx, pBuf, tmp227__, 0); + frameshtonl(pCtx, pBuf, tmp223__, 0); *pnConsumed += 4; /* fieldsEndFlag = 1 */ nBuf -= 4 ; @@ -30408,15 +29987,15 @@ uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, DOT11F_MEMCPY(pCtx, pBuf, pSrc->tbtt_info.tbtt_info_10.bssid, 6); *pnConsumed += 6; pBuf += 6; - tmp228__ = 0U; - tmp228__ |= (pSrc->tbtt_info.tbtt_info_10.mld_id << 0); - tmp228__ |= (pSrc->tbtt_info.tbtt_info_10.link_id << 8); - tmp228__ |= (pSrc->tbtt_info.tbtt_info_10.bss_param_change_cnt << 12); - tmp228__ |= (pSrc->tbtt_info.tbtt_info_10.reserved << 20); + tmp224__ = 0U; + tmp224__ |= (pSrc->tbtt_info.tbtt_info_10.mld_id << 0); + tmp224__ |= (pSrc->tbtt_info.tbtt_info_10.link_id << 8); + tmp224__ |= (pSrc->tbtt_info.tbtt_info_10.bss_param_change_cnt << 12); + tmp224__ |= (pSrc->tbtt_info.tbtt_info_10.reserved << 20); if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; - frameshtonl(pCtx, pBuf, tmp228__, 0); + frameshtonl(pCtx, pBuf, tmp224__, 0); *pnConsumed += 4; /* fieldsEndFlag = 1 */ nBuf -= 4 ; @@ -30479,15 +30058,15 @@ uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx, *pBuf = pSrc->tbtt_info.tbtt_info_16.psd_20mhz; *pnConsumed += 1; pBuf += 1; - tmp229__ = 0U; - tmp229__ |= (pSrc->tbtt_info.tbtt_info_16.mld_id << 0); - tmp229__ |= (pSrc->tbtt_info.tbtt_info_16.link_id << 8); - tmp229__ |= (pSrc->tbtt_info.tbtt_info_16.bss_param_change_cnt << 12); - tmp229__ |= (pSrc->tbtt_info.tbtt_info_16.reserved << 20); + tmp225__ = 0U; + tmp225__ |= (pSrc->tbtt_info.tbtt_info_16.mld_id << 0); + tmp225__ |= (pSrc->tbtt_info.tbtt_info_16.link_id << 8); + tmp225__ |= (pSrc->tbtt_info.tbtt_info_16.bss_param_change_cnt << 12); + tmp225__ |= (pSrc->tbtt_info.tbtt_info_16.reserved << 20); if (unlikely(nBuf < 4)) return DOT11F_INCOMPLETE_IE; - frameshtonl(pCtx, pBuf, tmp229__, 0); + frameshtonl(pCtx, pBuf, tmp225__, 0); *pnConsumed += 4; /* fieldsEndFlag = 1 */ nBuf -= 4 ; @@ -31734,14 +31313,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEBeaconReporting) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeChanSwitchAnn: - status |= - dot11f_pack_ie_chan_switch_ann( - pCtx, (tDot11fIEChanSwitchAnn *) - (pSrc + pIe->offset + - sizeof(tDot11fIEChanSwitchAnn) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeCondensedCountryStr: status |= dot11f_pack_ie_condensed_country_str( @@ -31750,46 +31321,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIECondensedCountryStr) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeEDCAParamSet: - status |= - dot11f_pack_ie_edca_param_set( - pCtx, (tDot11fIEEDCAParamSet *) - (pSrc + pIe->offset + - sizeof(tDot11fIEEDCAParamSet) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeExtCap: - status |= - dot11f_pack_ie_ext_cap( - pCtx, (tDot11fIEExtCap *) - (pSrc + pIe->offset + - sizeof(tDot11fIEExtCap) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeExtSuppRates: - status |= - dot11f_pack_ie_ext_supp_rates( - pCtx, (tDot11fIEExtSuppRates *) - (pSrc + pIe->offset + - sizeof(tDot11fIEExtSuppRates) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeHTCaps: - status |= - dot11f_pack_ie_ht_caps( - pCtx, (tDot11fIEHTCaps *) - (pSrc + pIe->offset + - sizeof(tDot11fIEHTCaps) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeHTInfo: - status |= - dot11f_pack_ie_ht_info( - pCtx, (tDot11fIEHTInfo *) - (pSrc + pIe->offset + - sizeof(tDot11fIEHTInfo) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeMeasurementPilot: status |= dot11f_pack_ie_measurement_pilot( @@ -31806,30 +31337,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEMultiBssid) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeOperatingMode: - status |= - dot11f_pack_ie_operating_mode( - pCtx, (tDot11fIEOperatingMode *) - (pSrc + pIe->offset + - sizeof(tDot11fIEOperatingMode) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeP2PAssocRes: - status |= - dot11f_pack_ie_p2_p_assoc_res( - pCtx, (tDot11fIEP2PAssocRes *) - (pSrc + pIe->offset + - sizeof(tDot11fIEP2PAssocRes) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeQuiet: - status |= - dot11f_pack_ie_quiet( - pCtx, (tDot11fIEQuiet *) - (pSrc + pIe->offset + - sizeof(tDot11fIEQuiet) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeRICData: status |= dot11f_pack_ie_ric_data( @@ -31854,14 +31361,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIERRMEnabledCap) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeRSN: - status |= - dot11f_pack_ie_rsn( - pCtx, (tDot11fIERSN *) - (pSrc + pIe->offset + - sizeof(tDot11fIERSN) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeRequestedInfo: status |= dot11f_pack_ie_requested_info( @@ -31886,22 +31385,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIESchedule) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeSuppOperatingClasses: - status |= - dot11f_pack_ie_supp_operating_classes( - pCtx, (tDot11fIESuppOperatingClasses *) - (pSrc + pIe->offset + - sizeof(tDot11fIESuppOperatingClasses) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeSuppRates: - status |= - dot11f_pack_ie_supp_rates( - pCtx, (tDot11fIESuppRates *) - (pSrc + pIe->offset + - sizeof(tDot11fIESuppRates) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeTCLAS: status |= dot11f_pack_ie_tclas( @@ -31958,30 +31441,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEVHTOperation) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeWMMCaps: - status |= - dot11f_pack_ie_wmm_caps( - pCtx, (tDot11fIEWMMCaps *) - (pSrc + pIe->offset + - sizeof(tDot11fIEWMMCaps) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeWMMInfoStation: - status |= - dot11f_pack_ie_wmm_info_station( - pCtx, (tDot11fIEWMMInfoStation *) - (pSrc + pIe->offset + - sizeof(tDot11fIEWMMInfoStation) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeWMMParams: - status |= - dot11f_pack_ie_wmm_params( - pCtx, (tDot11fIEWMMParams *) - (pSrc + pIe->offset + - sizeof(tDot11fIEWMMParams) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeWMMSchedule: status |= dot11f_pack_ie_wmm_schedule( @@ -32022,14 +31481,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEWMMTSPEC) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeWPA: - status |= - dot11f_pack_ie_wpa( - pCtx, (tDot11fIEWPA *) - (pSrc + pIe->offset + - sizeof(tDot11fIEWPA) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIeWiderBWChanSwitchAnn: status |= dot11f_pack_ie_wider_bw_chan_switch_ann( @@ -32054,62 +31505,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEbeacon_report_frm_body_fragment_id) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIeeht_cap: - status |= - dot11f_pack_ie_eht_cap( - pCtx, (tDot11fIEeht_cap *) - (pSrc + pIe->offset + - sizeof(tDot11fIEeht_cap) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeeht_op: - status |= - dot11f_pack_ie_eht_op( - pCtx, (tDot11fIEeht_op *) - (pSrc + pIe->offset + - sizeof(tDot11fIEeht_op) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeext_chan_switch_ann: - status |= - dot11f_pack_ie_ext_chan_switch_ann( - pCtx, (tDot11fIEext_chan_switch_ann *) - (pSrc + pIe->offset + - sizeof(tDot11fIEext_chan_switch_ann) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIefils_indication: - status |= - dot11f_pack_ie_fils_indication( - pCtx, (tDot11fIEfils_indication *) - (pSrc + pIe->offset + - sizeof(tDot11fIEfils_indication) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIehe_6ghz_band_cap: - status |= - dot11f_pack_ie_he_6ghz_band_cap( - pCtx, (tDot11fIEhe_6ghz_band_cap *) - (pSrc + pIe->offset + - sizeof(tDot11fIEhe_6ghz_band_cap) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIehe_cap: - status |= - dot11f_pack_ie_he_cap( - pCtx, (tDot11fIEhe_cap *) - (pSrc + pIe->offset + - sizeof(tDot11fIEhe_cap) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIehe_op: - status |= - dot11f_pack_ie_he_op( - pCtx, (tDot11fIEhe_op *) - (pSrc + pIe->offset + - sizeof(tDot11fIEhe_op) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIelast_beacon_report_indication: status |= dot11f_pack_ie_last_beacon_report_indication( @@ -32126,22 +31521,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEmax_age) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIemax_chan_switch_time: - status |= - dot11f_pack_ie_max_chan_switch_time( - pCtx, (tDot11fIEmax_chan_switch_time *) - (pSrc + pIe->offset + - sizeof(tDot11fIEmax_chan_switch_time) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIemlo_capabilities: - status |= - dot11f_pack_ie_mlo_capabilities( - pCtx, (tDot11fIEmlo_capabilities *) - (pSrc + pIe->offset + - sizeof(tDot11fIEmlo_capabilities) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIemscs_status: status |= dot11f_pack_ie_mscs_status( @@ -32158,22 +31537,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEneighbor_rpt) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIenon_inheritance: - status |= - dot11f_pack_ie_non_inheritance( - pCtx, (tDot11fIEnon_inheritance *) - (pSrc + pIe->offset + - sizeof(tDot11fIEnon_inheritance) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIeqcn_ie: - status |= - dot11f_pack_ie_qcn_ie( - pCtx, (tDot11fIEqcn_ie *) - (pSrc + pIe->offset + - sizeof(tDot11fIEqcn_ie) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIereq_mac_addr: status |= dot11f_pack_ie_req_mac_addr( @@ -32238,6 +31601,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEChallengeText) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeChanSwitchAnn: + status |= + dot11f_pack_ie_chan_switch_ann( + pCtx, (tDot11fIEChanSwitchAnn *) + (pSrc + pIe->offset + + sizeof(tDot11fIEChanSwitchAnn) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeChannelSwitchWrapper: status |= dot11f_pack_ie_channel_switch_wrapper( @@ -32262,6 +31633,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEDSParams) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeEDCAParamSet: + status |= + dot11f_pack_ie_edca_param_set( + pCtx, (tDot11fIEEDCAParamSet *) + (pSrc + pIe->offset + + sizeof(tDot11fIEEDCAParamSet) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeERPInfo: status |= dot11f_pack_ie_erp_info( @@ -32318,6 +31697,22 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEESEVersion) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeExtCap: + status |= + dot11f_pack_ie_ext_cap( + pCtx, (tDot11fIEExtCap *) + (pSrc + pIe->offset + + sizeof(tDot11fIEExtCap) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIeExtSuppRates: + status |= + dot11f_pack_ie_ext_supp_rates( + pCtx, (tDot11fIEExtSuppRates *) + (pSrc + pIe->offset + + sizeof(tDot11fIEExtSuppRates) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeFHParamSet: status |= dot11f_pack_ie_fh_param_set( @@ -32350,6 +31745,22 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEFTInfo) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeHTCaps: + status |= + dot11f_pack_ie_ht_caps( + pCtx, (tDot11fIEHTCaps *) + (pSrc + pIe->offset + + sizeof(tDot11fIEHTCaps) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIeHTInfo: + status |= + dot11f_pack_ie_ht_info( + pCtx, (tDot11fIEHTInfo *) + (pSrc + pIe->offset + + sizeof(tDot11fIEHTInfo) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeLinkIdentifier: status |= dot11f_pack_ie_link_identifier( @@ -32406,6 +31817,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEOBSSScanParameters) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeOperatingMode: + status |= + dot11f_pack_ie_operating_mode( + pCtx, (tDot11fIEOperatingMode *) + (pSrc + pIe->offset + + sizeof(tDot11fIEOperatingMode) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeP2PAssocReq: status |= dot11f_pack_ie_p2_p_assoc_req( @@ -32414,6 +31833,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEP2PAssocReq) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeP2PAssocRes: + status |= + dot11f_pack_ie_p2_p_assoc_res( + pCtx, (tDot11fIEP2PAssocRes *) + (pSrc + pIe->offset + + sizeof(tDot11fIEP2PAssocRes) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeP2PBeacon: status |= dot11f_pack_ie_p2_p_beacon( @@ -32542,6 +31969,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEQosMapSet) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeQuiet: + status |= + dot11f_pack_ie_quiet( + pCtx, (tDot11fIEQuiet *) + (pSrc + pIe->offset + + sizeof(tDot11fIEQuiet) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeRCPIIE: status |= dot11f_pack_ie_rcpiie( @@ -32558,6 +31993,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIERICDataDesc) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeRSN: + status |= + dot11f_pack_ie_rsn( + pCtx, (tDot11fIERSN *) + (pSrc + pIe->offset + + sizeof(tDot11fIERSN) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeRSNIIE: status |= dot11f_pack_ie_rsniie( @@ -32582,6 +32025,22 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIESuppChannels) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeSuppOperatingClasses: + status |= + dot11f_pack_ie_supp_operating_classes( + pCtx, (tDot11fIESuppOperatingClasses *) + (pSrc + pIe->offset + + sizeof(tDot11fIESuppOperatingClasses) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIeSuppRates: + status |= + dot11f_pack_ie_supp_rates( + pCtx, (tDot11fIESuppRates *) + (pSrc + pIe->offset + + sizeof(tDot11fIESuppRates) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeTIM: status |= dot11f_pack_ie_tim( @@ -32678,6 +32137,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEWFDIEOpaque) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeWMMCaps: + status |= + dot11f_pack_ie_wmm_caps( + pCtx, (tDot11fIEWMMCaps *) + (pSrc + pIe->offset + + sizeof(tDot11fIEWMMCaps) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeWMMInfoAp: status |= dot11f_pack_ie_wmm_info_ap( @@ -32686,6 +32153,30 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEWMMInfoAp) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeWMMInfoStation: + status |= + dot11f_pack_ie_wmm_info_station( + pCtx, (tDot11fIEWMMInfoStation *) + (pSrc + pIe->offset + + sizeof(tDot11fIEWMMInfoStation) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIeWMMParams: + status |= + dot11f_pack_ie_wmm_params( + pCtx, (tDot11fIEWMMParams *) + (pSrc + pIe->offset + + sizeof(tDot11fIEWMMParams) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIeWPA: + status |= + dot11f_pack_ie_wpa( + pCtx, (tDot11fIEWPA *) + (pSrc + pIe->offset + + sizeof(tDot11fIEWPA) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeWPAOpaque: status |= dot11f_pack_ie_wpa_opaque( @@ -32806,6 +32297,22 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEdh_parameter_element) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeeht_cap: + status |= + dot11f_pack_ie_eht_cap( + pCtx, (tDot11fIEeht_cap *) + (pSrc + pIe->offset + + sizeof(tDot11fIEeht_cap) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIeeht_op: + status |= + dot11f_pack_ie_eht_op( + pCtx, (tDot11fIEeht_op *) + (pSrc + pIe->offset + + sizeof(tDot11fIEeht_op) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeesp_information: status |= dot11f_pack_ie_esp_information( @@ -32814,6 +32321,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEesp_information) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeext_chan_switch_ann: + status |= + dot11f_pack_ie_ext_chan_switch_ann( + pCtx, (tDot11fIEext_chan_switch_ann *) + (pSrc + pIe->offset + + sizeof(tDot11fIEext_chan_switch_ann) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIefils_assoc_delay_info: status |= dot11f_pack_ie_fils_assoc_delay_info( @@ -32830,6 +32345,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEfils_hlp_container) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIefils_indication: + status |= + dot11f_pack_ie_fils_indication( + pCtx, (tDot11fIEfils_indication *) + (pSrc + pIe->offset + + sizeof(tDot11fIEfils_indication) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIefils_kde: status |= dot11f_pack_ie_fils_kde( @@ -32886,6 +32409,30 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEfragment_ie) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIehe_6ghz_band_cap: + status |= + dot11f_pack_ie_he_6ghz_band_cap( + pCtx, (tDot11fIEhe_6ghz_band_cap *) + (pSrc + pIe->offset + + sizeof(tDot11fIEhe_6ghz_band_cap) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIehe_cap: + status |= + dot11f_pack_ie_he_cap( + pCtx, (tDot11fIEhe_cap *) + (pSrc + pIe->offset + + sizeof(tDot11fIEhe_cap) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIehe_op: + status |= + dot11f_pack_ie_he_op( + pCtx, (tDot11fIEhe_op *) + (pSrc + pIe->offset + + sizeof(tDot11fIEhe_op) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIehs20vendor_ie: status |= dot11f_pack_ie_hs20vendor_ie( @@ -32910,6 +32457,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEht2040_bss_intolerant_report) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIemax_chan_switch_time: + status |= + dot11f_pack_ie_max_chan_switch_time( + pCtx, (tDot11fIEmax_chan_switch_time *) + (pSrc + pIe->offset + + sizeof(tDot11fIEmax_chan_switch_time) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIemlo_ie: status |= dot11f_pack_ie_mlo_ie( @@ -32926,6 +32481,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEmu_edca_param_set) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIenon_inheritance: + status |= + dot11f_pack_ie_non_inheritance( + pCtx, (tDot11fIEnon_inheritance *) + (pSrc + pIe->offset + + sizeof(tDot11fIEnon_inheritance) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeoci: status |= dot11f_pack_ie_oci( @@ -32942,6 +32505,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEosen_ie) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIeqcn_ie: + status |= + dot11f_pack_ie_qcn_ie( + pCtx, (tDot11fIEqcn_ie *) + (pSrc + pIe->offset + + sizeof(tDot11fIEqcn_ie) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIereduced_neighbor_report: status |= dot11f_pack_ie_reduced_neighbor_report(