/*
 * Copyright (c) 2012-2019, 2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
 *
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

/*
 * This file was originally distributed by Qualcomm Atheros, Inc.
 * under proprietary terms before Copyright ownership was assigned
 * to the Linux Foundation.
 */
#ifndef DOT11F_H
#define DOT11F_H
/**
  * \file dot11f.h
  *
  * \brief Structures, function prototypes & definitions
  * for working with 802.11 Frames
  * This file was automatically generated by 'framesc'
  * Sun Oct 27 23:43:46 2024 from the following file(s):
  *
  * dot11f.frms
  *
  * PLEASE DON'T EDIT THIS FILE BY HAND!
  *
  * Instead, please update the input files & re-run
  * 'framesc'  For more information on 'framesc' & the
  * frames language,  run 'framesc --help'.
  *
  *
  */

typedef tANI_U32 tDOT11F_U64[2];

#if defined ( _MSC_VER )
#   pragma warning (disable: 4214) /* nonstandard extension used */
#endif /* Microsoft C/C++             bit field types other than int */

#if !defined unlikely
#define unlikely(x)    (x)
#endif

/*
 * Frames Return Codes:
 *
 * Success is indicated by a return value of zero.  Failure is indicated
 * by the presence of the high bit.  Warnings encountered in the course
 * of a successful parse are indicated by various bits in the lower 31
 * being turned on.
 *
 * For instance, a return value of 0x0000000a would indicate that the
 * parse succeeded, but that a mandatory IE wasn't present, and some IE
 * was found to be corrupt.
 *
 *
 */

#define DOT11F_PARSE_SUCCESS         ( 0x00000000 )
#define DOT11F_UNKNOWN_IES           ( 0x00000001 )
#define DOT11F_MANDATORY_IE_MISSING  ( 0x00000002 )
#define DOT11F_INCOMPLETE_IE         ( 0x00000004 )
#define DOT11F_SKIPPED_BAD_IE        ( 0x00000008 )
#define DOT11F_LAST_IE_TOO_LONG      ( 0x00000010 )
#define DOT11F_DUPLICATE_IE          ( 0x00000020 )
#define DOT11F_BAD_FIXED_VALUE       ( 0x00000040 )
#define DOT11F_INCOMPLETE_TLV        ( 0x00000080 )
#define DOT11F_INVALID_TLV_LENGTH    ( 0x00000100 )
#define DOT11F_SKIPPED_BAD_TLV       ( 0x00000200 )
#define DOT11F_UNKNOWN_TLVS          ( 0x00000400 )
#define DOT11F_LAST_TLV_TOO_LONG     ( 0x00000800 )
#define DOT11F_INTERNAL_ERROR        ( 0x10000001 )
#define DOT11F_MISSING_FIXED_FIELD   ( 0x10000002 )
#define DOT11F_BAD_INPUT_BUFFER      ( 0x10000003 )
#define DOT11F_BAD_OUTPUT_BUFFER     ( 0x10000004 )
#define DOT11F_BUFFER_OVERFLOW       ( 0x10000005 )
#define DOT11F_MANDATORY_TLV_MISSING ( 0x00001000 )
#define DOT11F_FAILED(code)          ( (code) & 0x10000000 )
#define DOT11F_SUCCEEDED(code)       ( (code) == 0 )
#define DOT11F_WARNED(code)          (!DOT11F_SUCCEEDED(code) && !DOT11F_FAILED(code))

/*********************************************************************
 * Fixed Fields                                                      *
 ********************************************************************/

typedef struct sDot11fFfAID {
    tANI_U16 associd;
} tDot11fFfAID;

#define DOT11F_FF_AID_LEN ( 2 )

void dot11fUnpackFfAID(tpAniSirGlobal, tANI_U8*, tDot11fFfAID*);

void dot11fPackFfAID(tpAniSirGlobal, tDot11fFfAID*, tANI_U8*);

typedef struct sDot11fFfAction {
    tANI_U8 action;
} tDot11fFfAction;

#define DOT11F_FF_ACTION_LEN ( 1 )

void dot11fUnpackFfAction(tpAniSirGlobal, tANI_U8*, tDot11fFfAction*);

void dot11fPackFfAction(tpAniSirGlobal, tDot11fFfAction*, tANI_U8*);

typedef struct sDot11fFfAddBAParameterSet {
    tANI_U16  amsduSupported: 1;
    tANI_U16          policy: 1;
    tANI_U16             tid: 4;
    tANI_U16      bufferSize: 10;
} tDot11fFfAddBAParameterSet;

#define DOT11F_FF_ADDBAPARAMETERSET_LEN ( 2 )

void dot11fUnpackFfAddBAParameterSet(tpAniSirGlobal, tANI_U8*, tDot11fFfAddBAParameterSet*);

void dot11fPackFfAddBAParameterSet(tpAniSirGlobal, tDot11fFfAddBAParameterSet*, tANI_U8*);

#define ADDBAPARAMETERSET_AMSDUSUPPORTED_OFFSET 0
#define ADDBAPARAMETERSET_AMSDUSUPPORTED_WIDTH  1
#define ADDBAPARAMETERSET_POLICY_OFFSET         1
#define ADDBAPARAMETERSET_POLICY_WIDTH          1
#define ADDBAPARAMETERSET_TID_OFFSET            2
#define ADDBAPARAMETERSET_TID_WIDTH             4
#define ADDBAPARAMETERSET_BUFFERSIZE_OFFSET     6
#define ADDBAPARAMETERSET_BUFFERSIZE_WIDTH      10

typedef struct sDot11fFfAuthAlgo {
    tANI_U16 algo;
} tDot11fFfAuthAlgo;

#define DOT11F_FF_AUTHALGO_LEN ( 2 )

void dot11fUnpackFfAuthAlgo(tpAniSirGlobal, tANI_U8*, tDot11fFfAuthAlgo*);

void dot11fPackFfAuthAlgo(tpAniSirGlobal, tDot11fFfAuthAlgo*, tANI_U8*);

typedef struct sDot11fFfAuthSeqNo {
    tANI_U16 no;
} tDot11fFfAuthSeqNo;

#define DOT11F_FF_AUTHSEQNO_LEN ( 2 )

void dot11fUnpackFfAuthSeqNo(tpAniSirGlobal, tANI_U8*, tDot11fFfAuthSeqNo*);

void dot11fPackFfAuthSeqNo(tpAniSirGlobal, tDot11fFfAuthSeqNo*, tANI_U8*);

typedef struct sDot11fFfBAStartingSequenceControl {
    tANI_U16  fragNumber: 4;
    tANI_U16         ssn: 12;
} tDot11fFfBAStartingSequenceControl;

#define DOT11F_FF_BASTARTINGSEQUENCECONTROL_LEN ( 2 )

void dot11fUnpackFfBAStartingSequenceControl(tpAniSirGlobal, tANI_U8*, tDot11fFfBAStartingSequenceControl*);

void dot11fPackFfBAStartingSequenceControl(tpAniSirGlobal, tDot11fFfBAStartingSequenceControl*, tANI_U8*);

#define BASTARTINGSEQUENCECONTROL_FRAGNUMBER_OFFSET 0
#define BASTARTINGSEQUENCECONTROL_FRAGNUMBER_WIDTH  4
#define BASTARTINGSEQUENCECONTROL_SSN_OFFSET        4
#define BASTARTINGSEQUENCECONTROL_SSN_WIDTH         12

typedef struct sDot11fFfBATimeout {
    tANI_U16 timeout;
} tDot11fFfBATimeout;

#define DOT11F_FF_BATIMEOUT_LEN ( 2 )

void dot11fUnpackFfBATimeout(tpAniSirGlobal, tANI_U8*, tDot11fFfBATimeout*);

void dot11fPackFfBATimeout(tpAniSirGlobal, tDot11fFfBATimeout*, tANI_U8*);

typedef struct sDot11fFfBeaconInterval {
    tANI_U16 interval;
} tDot11fFfBeaconInterval;

#define DOT11F_FF_BEACONINTERVAL_LEN ( 2 )

void dot11fUnpackFfBeaconInterval(tpAniSirGlobal, tANI_U8*, tDot11fFfBeaconInterval*);

void dot11fPackFfBeaconInterval(tpAniSirGlobal, tDot11fFfBeaconInterval*, tANI_U8*);

typedef struct sDot11fFfCapabilities {
    tANI_U16             ess: 1;
    tANI_U16            ibss: 1;
    tANI_U16      cfPollable: 1;
    tANI_U16       cfPollReq: 1;
    tANI_U16         privacy: 1;
    tANI_U16   shortPreamble: 1;
    tANI_U16            pbcc: 1;
    tANI_U16  channelAgility: 1;
    tANI_U16     spectrumMgt: 1;
    tANI_U16             qos: 1;
    tANI_U16   shortSlotTime: 1;
    tANI_U16            apsd: 1;
    tANI_U16             rrm: 1;
    tANI_U16        dsssOfdm: 1;
    tANI_U16       delayedBA: 1;
    tANI_U16     immediateBA: 1;
} tDot11fFfCapabilities;

#define DOT11F_FF_CAPABILITIES_LEN ( 2 )

void dot11fUnpackFfCapabilities(tpAniSirGlobal, tANI_U8*, tDot11fFfCapabilities*);

void dot11fPackFfCapabilities(tpAniSirGlobal, tDot11fFfCapabilities*, tANI_U8*);

#define CAPABILITIES_ESS_OFFSET            0
#define CAPABILITIES_ESS_WIDTH             1
#define CAPABILITIES_IBSS_OFFSET           1
#define CAPABILITIES_IBSS_WIDTH            1
#define CAPABILITIES_CFPOLLABLE_OFFSET     2
#define CAPABILITIES_CFPOLLABLE_WIDTH      1
#define CAPABILITIES_CFPOLLREQ_OFFSET      3
#define CAPABILITIES_CFPOLLREQ_WIDTH       1
#define CAPABILITIES_PRIVACY_OFFSET        4
#define CAPABILITIES_PRIVACY_WIDTH         1
#define CAPABILITIES_SHORTPREAMBLE_OFFSET  5
#define CAPABILITIES_SHORTPREAMBLE_WIDTH   1
#define CAPABILITIES_PBCC_OFFSET           6
#define CAPABILITIES_PBCC_WIDTH            1
#define CAPABILITIES_CHANNELAGILITY_OFFSET 7
#define CAPABILITIES_CHANNELAGILITY_WIDTH  1
#define CAPABILITIES_SPECTRUMMGT_OFFSET    8
#define CAPABILITIES_SPECTRUMMGT_WIDTH     1
#define CAPABILITIES_QOS_OFFSET            9
#define CAPABILITIES_QOS_WIDTH             1
#define CAPABILITIES_SHORTSLOTTIME_OFFSET  10
#define CAPABILITIES_SHORTSLOTTIME_WIDTH   1
#define CAPABILITIES_APSD_OFFSET           11
#define CAPABILITIES_APSD_WIDTH            1
#define CAPABILITIES_RRM_OFFSET            12
#define CAPABILITIES_RRM_WIDTH             1
#define CAPABILITIES_DSSSOFDM_OFFSET       13
#define CAPABILITIES_DSSSOFDM_WIDTH        1
#define CAPABILITIES_DELAYEDBA_OFFSET      14
#define CAPABILITIES_DELAYEDBA_WIDTH       1
#define CAPABILITIES_IMMEDIATEBA_OFFSET    15
#define CAPABILITIES_IMMEDIATEBA_WIDTH     1

typedef struct sDot11fFfCategory {
    tANI_U8 category;
} tDot11fFfCategory;

#define DOT11F_FF_CATEGORY_LEN ( 1 )

void dot11fUnpackFfCategory(tpAniSirGlobal, tANI_U8*, tDot11fFfCategory*);

void dot11fPackFfCategory(tpAniSirGlobal, tDot11fFfCategory*, tANI_U8*);

typedef struct sDot11fFfCurrentAPAddress {
    tANI_U8 mac[6];
} tDot11fFfCurrentAPAddress;

#define DOT11F_FF_CURRENTAPADDRESS_LEN ( 6 )

void dot11fUnpackFfCurrentAPAddress(tpAniSirGlobal, tANI_U8*, tDot11fFfCurrentAPAddress*);

void dot11fPackFfCurrentAPAddress(tpAniSirGlobal, tDot11fFfCurrentAPAddress*, tANI_U8*);

typedef struct sDot11fFfDelBAParameterSet {
    tANI_U16   reserved: 11;
    tANI_U16  initiator: 1;
    tANI_U16        tid: 4;
} tDot11fFfDelBAParameterSet;

#define DOT11F_FF_DELBAPARAMETERSET_LEN ( 2 )

void dot11fUnpackFfDelBAParameterSet(tpAniSirGlobal, tANI_U8*, tDot11fFfDelBAParameterSet*);

void dot11fPackFfDelBAParameterSet(tpAniSirGlobal, tDot11fFfDelBAParameterSet*, tANI_U8*);

#define DELBAPARAMETERSET_RESERVED_OFFSET  0
#define DELBAPARAMETERSET_RESERVED_WIDTH   11
#define DELBAPARAMETERSET_INITIATOR_OFFSET 11
#define DELBAPARAMETERSET_INITIATOR_WIDTH  1
#define DELBAPARAMETERSET_TID_OFFSET       12
#define DELBAPARAMETERSET_TID_WIDTH        4

typedef struct sDot11fFfDialogToken {
    tANI_U8 token;
} tDot11fFfDialogToken;

#define DOT11F_FF_DIALOGTOKEN_LEN ( 1 )

void dot11fUnpackFfDialogToken(tpAniSirGlobal, tANI_U8*, tDot11fFfDialogToken*);

void dot11fPackFfDialogToken(tpAniSirGlobal, tDot11fFfDialogToken*, tANI_U8*);

typedef struct sDot11fFfLinkMargin {
    tANI_U8 linkMargin;
} tDot11fFfLinkMargin;

#define DOT11F_FF_LINKMARGIN_LEN ( 1 )

void dot11fUnpackFfLinkMargin(tpAniSirGlobal, tANI_U8*, tDot11fFfLinkMargin*);

void dot11fPackFfLinkMargin(tpAniSirGlobal, tDot11fFfLinkMargin*, tANI_U8*);

typedef struct sDot11fFfListenInterval {
    tANI_U16 interval;
} tDot11fFfListenInterval;

#define DOT11F_FF_LISTENINTERVAL_LEN ( 2 )

void dot11fUnpackFfListenInterval(tpAniSirGlobal, tANI_U8*, tDot11fFfListenInterval*);

void dot11fPackFfListenInterval(tpAniSirGlobal, tDot11fFfListenInterval*, tANI_U8*);

typedef struct sDot11fFfMagicCode {
    tANI_U8 magic[6];
} tDot11fFfMagicCode;

#define DOT11F_FF_MAGICCODE_LEN ( 6 )

void dot11fUnpackFfMagicCode(tpAniSirGlobal, tANI_U8*, tDot11fFfMagicCode*);

void dot11fPackFfMagicCode(tpAniSirGlobal, tDot11fFfMagicCode*, tANI_U8*);

typedef struct sDot11fFfMaxTxPower {
    tANI_U8 maxTxPower;
} tDot11fFfMaxTxPower;

#define DOT11F_FF_MAXTXPOWER_LEN ( 1 )

void dot11fUnpackFfMaxTxPower(tpAniSirGlobal, tANI_U8*, tDot11fFfMaxTxPower*);

void dot11fPackFfMaxTxPower(tpAniSirGlobal, tDot11fFfMaxTxPower*, tANI_U8*);

typedef struct sDot11fFfNumOfRepetitions {
    tANI_U16 repetitions;
} tDot11fFfNumOfRepetitions;

#define DOT11F_FF_NUMOFREPETITIONS_LEN ( 2 )

void dot11fUnpackFfNumOfRepetitions(tpAniSirGlobal, tANI_U8*, tDot11fFfNumOfRepetitions*);

void dot11fPackFfNumOfRepetitions(tpAniSirGlobal, tDot11fFfNumOfRepetitions*, tANI_U8*);

typedef struct sDot11fFfOperatingMode {
    tANI_U8  chanWidth: 2;
    tANI_U8   reserved: 2;
    tANI_U8      rxNSS: 3;
    tANI_U8  rxNSSType: 1;
} tDot11fFfOperatingMode;

#define DOT11F_FF_OPERATINGMODE_LEN ( 1 )

void dot11fUnpackFfOperatingMode(tpAniSirGlobal, tANI_U8*, tDot11fFfOperatingMode*);

void dot11fPackFfOperatingMode(tpAniSirGlobal, tDot11fFfOperatingMode*, tANI_U8*);

#define OPERATINGMODE_CHANWIDTH_OFFSET 0
#define OPERATINGMODE_CHANWIDTH_WIDTH  2
#define OPERATINGMODE_RESERVED_OFFSET  2
#define OPERATINGMODE_RESERVED_WIDTH   2
#define OPERATINGMODE_RXNSS_OFFSET     4
#define OPERATINGMODE_RXNSS_WIDTH      3
#define OPERATINGMODE_RXNSSTYPE_OFFSET 7
#define OPERATINGMODE_RXNSSTYPE_WIDTH  1

typedef struct sDot11fFfP2POUI {
    tANI_U32 oui;
} tDot11fFfP2POUI;

#define DOT11F_FF_P2POUI_LEN ( 4 )

void dot11fUnpackFfP2POUI(tpAniSirGlobal, tANI_U8*, tDot11fFfP2POUI*);

void dot11fPackFfP2POUI(tpAniSirGlobal, tDot11fFfP2POUI*, tANI_U8*);

typedef struct sDot11fFfP2POUISubType {
    tANI_U8 ouiSubtype;
} tDot11fFfP2POUISubType;

#define DOT11F_FF_P2POUISUBTYPE_LEN ( 1 )

void dot11fUnpackFfP2POUISubType(tpAniSirGlobal, tANI_U8*, tDot11fFfP2POUISubType*);

void dot11fPackFfP2POUISubType(tpAniSirGlobal, tDot11fFfP2POUISubType*, tANI_U8*);

typedef struct sDot11fFfRCPI {
    tANI_U8 rcpi;
} tDot11fFfRCPI;

#define DOT11F_FF_RCPI_LEN ( 1 )

void dot11fUnpackFfRCPI(tpAniSirGlobal, tANI_U8*, tDot11fFfRCPI*);

void dot11fPackFfRCPI(tpAniSirGlobal, tDot11fFfRCPI*, tANI_U8*);

typedef struct sDot11fFfRMCDialogToken {
    tANI_U32 token;
} tDot11fFfRMCDialogToken;

#define DOT11F_FF_RMCDIALOGTOKEN_LEN ( 4 )

void dot11fUnpackFfRMCDialogToken(tpAniSirGlobal, tANI_U8*, tDot11fFfRMCDialogToken*);

void dot11fPackFfRMCDialogToken(tpAniSirGlobal, tDot11fFfRMCDialogToken*, tANI_U8*);

typedef struct sDot11fFfRMCOUI {
    tANI_U8 oui[3];
} tDot11fFfRMCOUI;

#define DOT11F_FF_RMCOUI_LEN ( 3 )

void dot11fUnpackFfRMCOUI(tpAniSirGlobal, tANI_U8*, tDot11fFfRMCOUI*);

void dot11fPackFfRMCOUI(tpAniSirGlobal, tDot11fFfRMCOUI*, tANI_U8*);

typedef struct sDot11fFfRMCVersion {
    tANI_U8 version;
} tDot11fFfRMCVersion;

#define DOT11F_FF_RMCVERSION_LEN ( 1 )

void dot11fUnpackFfRMCVersion(tpAniSirGlobal, tANI_U8*, tDot11fFfRMCVersion*);

void dot11fPackFfRMCVersion(tpAniSirGlobal, tDot11fFfRMCVersion*, tANI_U8*);

typedef struct sDot11fFfRSNI {
    tANI_U8 rsni;
} tDot11fFfRSNI;

#define DOT11F_FF_RSNI_LEN ( 1 )

void dot11fUnpackFfRSNI(tpAniSirGlobal, tANI_U8*, tDot11fFfRSNI*);

void dot11fPackFfRSNI(tpAniSirGlobal, tDot11fFfRSNI*, tANI_U8*);

typedef struct sDot11fFfReason {
    tANI_U16 code;
} tDot11fFfReason;

#define DOT11F_FF_REASON_LEN ( 2 )

void dot11fUnpackFfReason(tpAniSirGlobal, tANI_U8*, tDot11fFfReason*);

void dot11fPackFfReason(tpAniSirGlobal, tDot11fFfReason*, tANI_U8*);

typedef struct sDot11fFfRuler {
    tANI_U8 mac[6];
} tDot11fFfRuler;

#define DOT11F_FF_RULER_LEN ( 6 )

void dot11fUnpackFfRuler(tpAniSirGlobal, tANI_U8*, tDot11fFfRuler*);

void dot11fPackFfRuler(tpAniSirGlobal, tDot11fFfRuler*, tANI_U8*);

typedef struct sDot11fFfRxAntennaId {
    tANI_U8 antennaId;
} tDot11fFfRxAntennaId;

#define DOT11F_FF_RXANTENNAID_LEN ( 1 )

void dot11fUnpackFfRxAntennaId(tpAniSirGlobal, tANI_U8*, tDot11fFfRxAntennaId*);

void dot11fPackFfRxAntennaId(tpAniSirGlobal, tDot11fFfRxAntennaId*, tANI_U8*);

typedef struct sDot11fFfSMPowerModeSet {
    tANI_U8  PowerSave_En: 1;
    tANI_U8          Mode: 1;
    tANI_U8      reserved: 6;
} tDot11fFfSMPowerModeSet;

#define DOT11F_FF_SMPOWERMODESET_LEN ( 1 )

void dot11fUnpackFfSMPowerModeSet(tpAniSirGlobal, tANI_U8*, tDot11fFfSMPowerModeSet*);

void dot11fPackFfSMPowerModeSet(tpAniSirGlobal, tDot11fFfSMPowerModeSet*, tANI_U8*);

#define SMPOWERMODESET_POWERSAVE_EN_OFFSET 0
#define SMPOWERMODESET_POWERSAVE_EN_WIDTH  1
#define SMPOWERMODESET_MODE_OFFSET         1
#define SMPOWERMODESET_MODE_WIDTH          1
#define SMPOWERMODESET_RESERVED_OFFSET     2
#define SMPOWERMODESET_RESERVED_WIDTH      6

typedef struct sDot11fFfStatus {
    tANI_U16 status;
} tDot11fFfStatus;

#define DOT11F_FF_STATUS_LEN ( 2 )

void dot11fUnpackFfStatus(tpAniSirGlobal, tANI_U8*, tDot11fFfStatus*);

void dot11fPackFfStatus(tpAniSirGlobal, tDot11fFfStatus*, tANI_U8*);

typedef struct sDot11fFfStatusCode {
    tANI_U8 statusCode;
} tDot11fFfStatusCode;

#define DOT11F_FF_STATUSCODE_LEN ( 1 )

void dot11fUnpackFfStatusCode(tpAniSirGlobal, tANI_U8*, tDot11fFfStatusCode*);

void dot11fPackFfStatusCode(tpAniSirGlobal, tDot11fFfStatusCode*, tANI_U8*);

typedef struct sDot11fFfTPCEleID {
    tANI_U8 TPCId;
} tDot11fFfTPCEleID;

#define DOT11F_FF_TPCELEID_LEN ( 1 )

void dot11fUnpackFfTPCEleID(tpAniSirGlobal, tANI_U8*, tDot11fFfTPCEleID*);

void dot11fPackFfTPCEleID(tpAniSirGlobal, tDot11fFfTPCEleID*, tANI_U8*);

typedef struct sDot11fFfTPCEleLen {
    tANI_U8 TPCLen;
} tDot11fFfTPCEleLen;

#define DOT11F_FF_TPCELELEN_LEN ( 1 )

void dot11fUnpackFfTPCEleLen(tpAniSirGlobal, tANI_U8*, tDot11fFfTPCEleLen*);

void dot11fPackFfTPCEleLen(tpAniSirGlobal, tDot11fFfTPCEleLen*, tANI_U8*);

typedef struct sDot11fFfTSInfo {
    tANI_U32    traffic_type: 1;
    tANI_U32            tsid: 4;
    tANI_U32       direction: 2;
    tANI_U32   access_policy: 2;
    tANI_U32     aggregation: 1;
    tANI_U32             psb: 1;
    tANI_U32   user_priority: 3;
    tANI_U32  tsinfo_ack_pol: 2;
    tANI_U32        schedule: 1;
    tANI_U32          unused: 15;
} tDot11fFfTSInfo;

#define DOT11F_FF_TSINFO_LEN ( 4 )

void dot11fUnpackFfTSInfo(tpAniSirGlobal, tANI_U8*, tDot11fFfTSInfo*);

void dot11fPackFfTSInfo(tpAniSirGlobal, tDot11fFfTSInfo*, tANI_U8*);

#define TSINFO_TRAFFIC_TYPE_OFFSET   0
#define TSINFO_TRAFFIC_TYPE_WIDTH    1
#define TSINFO_TSID_OFFSET           1
#define TSINFO_TSID_WIDTH            4
#define TSINFO_DIRECTION_OFFSET      5
#define TSINFO_DIRECTION_WIDTH       2
#define TSINFO_ACCESS_POLICY_OFFSET  7
#define TSINFO_ACCESS_POLICY_WIDTH   2
#define TSINFO_AGGREGATION_OFFSET    9
#define TSINFO_AGGREGATION_WIDTH     1
#define TSINFO_PSB_OFFSET            10
#define TSINFO_PSB_WIDTH             1
#define TSINFO_USER_PRIORITY_OFFSET  11
#define TSINFO_USER_PRIORITY_WIDTH   3
#define TSINFO_TSINFO_ACK_POL_OFFSET 14
#define TSINFO_TSINFO_ACK_POL_WIDTH  2
#define TSINFO_SCHEDULE_OFFSET       16
#define TSINFO_SCHEDULE_WIDTH        1
#define TSINFO_UNUSED_OFFSET         17
#define TSINFO_UNUSED_WIDTH          15

typedef struct sDot11fFfTimeStamp {
    tDOT11F_U64 timestamp;
} tDot11fFfTimeStamp;

#define DOT11F_FF_TIMESTAMP_LEN ( 8 )

void dot11fUnpackFfTimeStamp(tpAniSirGlobal, tANI_U8*, tDot11fFfTimeStamp*);

void dot11fPackFfTimeStamp(tpAniSirGlobal, tDot11fFfTimeStamp*, tANI_U8*);

typedef struct sDot11fFfTransactionId {
    tANI_U8 transId[2];
} tDot11fFfTransactionId;

#define DOT11F_FF_TRANSACTIONID_LEN ( 2 )

void dot11fUnpackFfTransactionId(tpAniSirGlobal, tANI_U8*, tDot11fFfTransactionId*);

void dot11fPackFfTransactionId(tpAniSirGlobal, tDot11fFfTransactionId*, tANI_U8*);

typedef struct sDot11fFfTxAntennaId {
    tANI_U8 antennaId;
} tDot11fFfTxAntennaId;

#define DOT11F_FF_TXANTENNAID_LEN ( 1 )

void dot11fUnpackFfTxAntennaId(tpAniSirGlobal, tANI_U8*, tDot11fFfTxAntennaId*);

void dot11fPackFfTxAntennaId(tpAniSirGlobal, tDot11fFfTxAntennaId*, tANI_U8*);

typedef struct sDot11fFfTxPower {
    tANI_U8 txPower;
} tDot11fFfTxPower;

#define DOT11F_FF_TXPOWER_LEN ( 1 )

void dot11fUnpackFfTxPower(tpAniSirGlobal, tANI_U8*, tDot11fFfTxPower*);

void dot11fPackFfTxPower(tpAniSirGlobal, tDot11fFfTxPower*, tANI_U8*);

typedef struct sDot11fFfVhtMembershipStatusArray {
    tANI_U8 membershipStatusArray[8];
} tDot11fFfVhtMembershipStatusArray;

#define DOT11F_FF_VHTMEMBERSHIPSTATUSARRAY_LEN ( 8 )

void dot11fUnpackFfVhtMembershipStatusArray(tpAniSirGlobal, tANI_U8*, tDot11fFfVhtMembershipStatusArray*);

void dot11fPackFfVhtMembershipStatusArray(tpAniSirGlobal, tDot11fFfVhtMembershipStatusArray*, tANI_U8*);

typedef struct sDot11fFfVhtUserPositionArray {
    tANI_U8 userPositionArray[16];
} tDot11fFfVhtUserPositionArray;

#define DOT11F_FF_VHTUSERPOSITIONARRAY_LEN ( 16 )

void dot11fUnpackFfVhtUserPositionArray(tpAniSirGlobal, tANI_U8*, tDot11fFfVhtUserPositionArray*);

void dot11fPackFfVhtUserPositionArray(tpAniSirGlobal, tDot11fFfVhtUserPositionArray*, tANI_U8*);

typedef struct sDot11fFfext_chan_switch_ann_action {
    tANI_U32   switch_mode: 8;
    tANI_U32      op_class: 8;
    tANI_U32   new_channel: 8;
    tANI_U32  switch_count: 8;
} tDot11fFfext_chan_switch_ann_action;

#define DOT11F_FF_EXT_CHAN_SWITCH_ANN_ACTION_LEN ( 4 )

void dot11fUnpackFfext_chan_switch_ann_action(tpAniSirGlobal, tANI_U8*, tDot11fFfext_chan_switch_ann_action*);

void dot11fPackFfext_chan_switch_ann_action(tpAniSirGlobal, tDot11fFfext_chan_switch_ann_action*, tANI_U8*);

#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_OFFSET  0
#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_WIDTH   8
#define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_OFFSET     8
#define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_WIDTH      8
#define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_OFFSET  16
#define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_WIDTH   8
#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_OFFSET 24
#define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_WIDTH  8

/*********************************************************************
 * TLVs                                                              *
 ********************************************************************/

// ID 1 (0x0001)
typedef struct sDot11fTLVAuthorizedMACs {
    tANI_U8      present;
    tANI_U8      mac[6];
} tDot11fTLVAuthorizedMACs;

#define DOT11F_TLV_AUTHORIZEDMACS ( 1 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_AUTHORIZEDMACS_MIN_LEN ( 6 )

#define DOT11F_TLV_AUTHORIZEDMACS_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvAuthorizedMACs(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVAuthorizedMACs*);

tANI_U32 dot11fPackTlvAuthorizedMACs(tpAniSirGlobal, tDot11fTLVAuthorizedMACs*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvAuthorizedMACs(tpAniSirGlobal, tDot11fTLVAuthorizedMACs*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 3 (0x0003)
typedef struct sDot11fTLVRequestToEnroll {
    tANI_U8      present;
    tANI_U8      req;
} tDot11fTLVRequestToEnroll;

#define DOT11F_TLV_REQUESTTOENROLL ( 3 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_REQUESTTOENROLL_MIN_LEN ( 1 )

#define DOT11F_TLV_REQUESTTOENROLL_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvRequestToEnroll(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRequestToEnroll*);

tANI_U32 dot11fPackTlvRequestToEnroll(tpAniSirGlobal, tDot11fTLVRequestToEnroll*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvRequestToEnroll(tpAniSirGlobal, tDot11fTLVRequestToEnroll*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 0 (0x0000)
typedef struct sDot11fTLVVersion2 {
    tANI_U8      present;
    tANI_U8            minor: 4;
    tANI_U8            major: 4;
} tDot11fTLVVersion2;

#define DOT11F_TLV_VERSION2 ( 0 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_VERSION2_MIN_LEN ( 1 )

#define DOT11F_TLV_VERSION2_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvVersion2(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVVersion2*);

tANI_U32 dot11fPackTlvVersion2(tpAniSirGlobal, tDot11fTLVVersion2*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvVersion2(tpAniSirGlobal, tDot11fTLVVersion2*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4183 (0x1057)
typedef struct sDot11fTLVAPSetupLocked {
    tANI_U8      present;
    tANI_U8      fLocked;
} tDot11fTLVAPSetupLocked;

#define DOT11F_TLV_APSETUPLOCKED ( 4183 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_APSETUPLOCKED_MIN_LEN ( 3 )

#define DOT11F_TLV_APSETUPLOCKED_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvAPSetupLocked(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVAPSetupLocked*);

tANI_U32 dot11fPackTlvAPSetupLocked(tpAniSirGlobal, tDot11fTLVAPSetupLocked*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvAPSetupLocked(tpAniSirGlobal, tDot11fTLVAPSetupLocked*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4098 (0x1002)
typedef struct sDot11fTLVAssociationState {
    tANI_U8      present;
    tANI_U16     state;
} tDot11fTLVAssociationState;

#define DOT11F_TLV_ASSOCIATIONSTATE ( 4098 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_ASSOCIATIONSTATE_MIN_LEN ( 4 )

#define DOT11F_TLV_ASSOCIATIONSTATE_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvAssociationState(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVAssociationState*);

tANI_U32 dot11fPackTlvAssociationState(tpAniSirGlobal, tDot11fTLVAssociationState*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvAssociationState(tpAniSirGlobal, tDot11fTLVAssociationState*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 11 (0x000b)
typedef struct sDot11fTLVChannelList {
    tANI_U8      present;
    tANI_U8      countryString[3];
    tANI_U8      num_channelList;
    tANI_U8      channelList[251];
} tDot11fTLVChannelList;

#define DOT11F_TLV_CHANNELLIST ( 11 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_CHANNELLIST_MIN_LEN ( 4 )

#define DOT11F_TLV_CHANNELLIST_MAX_LEN ( 255 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvChannelList(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVChannelList*);

tANI_U32 dot11fPackTlvChannelList(tpAniSirGlobal, tDot11fTLVChannelList*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvChannelList(tpAniSirGlobal, tDot11fTLVChannelList*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4104 (0x1008)
typedef struct sDot11fTLVConfigMethods {
    tANI_U8      present;
    tANI_U16     methods;
} tDot11fTLVConfigMethods;

#define DOT11F_TLV_CONFIGMETHODS ( 4104 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_CONFIGMETHODS_MIN_LEN ( 4 )

#define DOT11F_TLV_CONFIGMETHODS_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvConfigMethods(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVConfigMethods*);

tANI_U32 dot11fPackTlvConfigMethods(tpAniSirGlobal, tDot11fTLVConfigMethods*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvConfigMethods(tpAniSirGlobal, tDot11fTLVConfigMethods*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4105 (0x1009)
typedef struct sDot11fTLVConfigurationError {
    tANI_U8      present;
    tANI_U16     error;
} tDot11fTLVConfigurationError;

#define DOT11F_TLV_CONFIGURATIONERROR ( 4105 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_CONFIGURATIONERROR_MIN_LEN ( 4 )

#define DOT11F_TLV_CONFIGURATIONERROR_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvConfigurationError(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVConfigurationError*);

tANI_U32 dot11fPackTlvConfigurationError(tpAniSirGlobal, tDot11fTLVConfigurationError*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvConfigurationError(tpAniSirGlobal, tDot11fTLVConfigurationError*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 5 (0x0005)
typedef struct sDot11fTLVConfigurationTimeout {
    tANI_U8      present;
    tANI_U8      GOConfigTimeout;
    tANI_U8      CLConfigTimeout;
} tDot11fTLVConfigurationTimeout;

#define DOT11F_TLV_CONFIGURATIONTIMEOUT ( 5 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_CONFIGURATIONTIMEOUT_MIN_LEN ( 3 )

#define DOT11F_TLV_CONFIGURATIONTIMEOUT_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvConfigurationTimeout(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVConfigurationTimeout*);

tANI_U32 dot11fPackTlvConfigurationTimeout(tpAniSirGlobal, tDot11fTLVConfigurationTimeout*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvConfigurationTimeout(tpAniSirGlobal, tDot11fTLVConfigurationTimeout*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4113 (0x1011)
typedef struct sDot11fTLVDeviceName {
    tANI_U8      present;
    tANI_U8      num_text;
    tANI_U8      text[32];
} tDot11fTLVDeviceName;

#define DOT11F_TLV_DEVICENAME ( 4113 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_DEVICENAME_MIN_LEN ( 2 )

#define DOT11F_TLV_DEVICENAME_MAX_LEN ( 34 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvDeviceName(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVDeviceName*);

tANI_U32 dot11fPackTlvDeviceName(tpAniSirGlobal, tDot11fTLVDeviceName*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvDeviceName(tpAniSirGlobal, tDot11fTLVDeviceName*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4114 (0x1012)
typedef struct sDot11fTLVDevicePasswordID {
    tANI_U8      present;
    tANI_U16     id;
} tDot11fTLVDevicePasswordID;

#define DOT11F_TLV_DEVICEPASSWORDID ( 4114 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_DEVICEPASSWORDID_MIN_LEN ( 4 )

#define DOT11F_TLV_DEVICEPASSWORDID_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvDevicePasswordID(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVDevicePasswordID*);

tANI_U32 dot11fPackTlvDevicePasswordID(tpAniSirGlobal, tDot11fTLVDevicePasswordID*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvDevicePasswordID(tpAniSirGlobal, tDot11fTLVDevicePasswordID*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 8 (0x0008)
typedef struct sDot11fTLVExtendedListenTiming {
    tANI_U8      present;
    tANI_U16     availibilityPeriod;
    tANI_U16     availibilityInterval;
} tDot11fTLVExtendedListenTiming;

#define DOT11F_TLV_EXTENDEDLISTENTIMING ( 8 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_EXTENDEDLISTENTIMING_MIN_LEN ( 5 )

#define DOT11F_TLV_EXTENDEDLISTENTIMING_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvExtendedListenTiming(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVExtendedListenTiming*);

tANI_U32 dot11fPackTlvExtendedListenTiming(tpAniSirGlobal, tDot11fTLVExtendedListenTiming*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvExtendedListenTiming(tpAniSirGlobal, tDot11fTLVExtendedListenTiming*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4 (0x0004)
typedef struct sDot11fTLVGOIntent {
    tANI_U8      present;
    tANI_U8      GOIntent;
} tDot11fTLVGOIntent;

#define DOT11F_TLV_GOINTENT ( 4 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_GOINTENT_MIN_LEN ( 2 )

#define DOT11F_TLV_GOINTENT_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvGOIntent(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVGOIntent*);

tANI_U32 dot11fPackTlvGOIntent(tpAniSirGlobal, tDot11fTLVGOIntent*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvGOIntent(tpAniSirGlobal, tDot11fTLVGOIntent*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 9 (0x0009)
typedef struct sDot11fTLVIntendedP2PInterfaceAddress {
    tANI_U8      present;
    tANI_U8      P2PInterfaceAddress[6];
} tDot11fTLVIntendedP2PInterfaceAddress;

#define DOT11F_TLV_INTENDEDP2PINTERFACEADDRESS ( 9 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_INTENDEDP2PINTERFACEADDRESS_MIN_LEN ( 7 )

#define DOT11F_TLV_INTENDEDP2PINTERFACEADDRESS_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvIntendedP2PInterfaceAddress(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVIntendedP2PInterfaceAddress*);

tANI_U32 dot11fPackTlvIntendedP2PInterfaceAddress(tpAniSirGlobal, tDot11fTLVIntendedP2PInterfaceAddress*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvIntendedP2PInterfaceAddress(tpAniSirGlobal, tDot11fTLVIntendedP2PInterfaceAddress*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 18 (0x0012)
typedef struct sDot11fTLVInvitationFlags {
    tANI_U8      present;
    tANI_U8      invitationFlags;
} tDot11fTLVInvitationFlags;

#define DOT11F_TLV_INVITATIONFLAGS ( 18 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_INVITATIONFLAGS_MIN_LEN ( 2 )

#define DOT11F_TLV_INVITATIONFLAGS_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvInvitationFlags(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVInvitationFlags*);

tANI_U32 dot11fPackTlvInvitationFlags(tpAniSirGlobal, tDot11fTLVInvitationFlags*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvInvitationFlags(tpAniSirGlobal, tDot11fTLVInvitationFlags*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 6 (0x0006)
typedef struct sDot11fTLVListenChannel {
    tANI_U8      present;
    tANI_U8      countryString[3];
    tANI_U8      regulatoryClass;
    tANI_U8      channel;
} tDot11fTLVListenChannel;

#define DOT11F_TLV_LISTENCHANNEL ( 6 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_LISTENCHANNEL_MIN_LEN ( 6 )

#define DOT11F_TLV_LISTENCHANNEL_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvListenChannel(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVListenChannel*);

tANI_U32 dot11fPackTlvListenChannel(tpAniSirGlobal, tDot11fTLVListenChannel*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvListenChannel(tpAniSirGlobal, tDot11fTLVListenChannel*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4129 (0x1021)
typedef struct sDot11fTLVManufacturer {
    tANI_U8      present;
    tANI_U8      num_name;
    tANI_U8      name[64];
} tDot11fTLVManufacturer;

#define DOT11F_TLV_MANUFACTURER ( 4129 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_MANUFACTURER_MIN_LEN ( 2 )

#define DOT11F_TLV_MANUFACTURER_MAX_LEN ( 66 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvManufacturer(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVManufacturer*);

tANI_U32 dot11fPackTlvManufacturer(tpAniSirGlobal, tDot11fTLVManufacturer*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvManufacturer(tpAniSirGlobal, tDot11fTLVManufacturer*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 1 (0x0001)
typedef struct sDot11fTLVMinorReasonCode {
    tANI_U8      present;
    tANI_U8      minorReasonCode;
} tDot11fTLVMinorReasonCode;

#define DOT11F_TLV_MINORREASONCODE ( 1 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_MINORREASONCODE_MIN_LEN ( 2 )

#define DOT11F_TLV_MINORREASONCODE_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvMinorReasonCode(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVMinorReasonCode*);

tANI_U32 dot11fPackTlvMinorReasonCode(tpAniSirGlobal, tDot11fTLVMinorReasonCode*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvMinorReasonCode(tpAniSirGlobal, tDot11fTLVMinorReasonCode*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4131 (0x1023)
typedef struct sDot11fTLVModelName {
    tANI_U8      present;
    tANI_U8      num_text;
    tANI_U8      text[32];
} tDot11fTLVModelName;

#define DOT11F_TLV_MODELNAME ( 4131 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_MODELNAME_MIN_LEN ( 2 )

#define DOT11F_TLV_MODELNAME_MAX_LEN ( 34 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvModelName(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVModelName*);

tANI_U32 dot11fPackTlvModelName(tpAniSirGlobal, tDot11fTLVModelName*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvModelName(tpAniSirGlobal, tDot11fTLVModelName*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4132 (0x1024)
typedef struct sDot11fTLVModelNumber {
    tANI_U8      present;
    tANI_U8      num_text;
    tANI_U8      text[32];
} tDot11fTLVModelNumber;

#define DOT11F_TLV_MODELNUMBER ( 4132 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_MODELNUMBER_MIN_LEN ( 2 )

#define DOT11F_TLV_MODELNUMBER_MAX_LEN ( 34 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvModelNumber(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVModelNumber*);

tANI_U32 dot11fPackTlvModelNumber(tpAniSirGlobal, tDot11fTLVModelNumber*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvModelNumber(tpAniSirGlobal, tDot11fTLVModelNumber*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 12 (0x000c)
typedef struct sDot11fTLVNoticeOfAbsence {
    tANI_U8      present;
    tANI_U8      index;
    tANI_U8      CTSWindowOppPS;
    tANI_U8      num_NoADesc;
    tANI_U8      NoADesc[36];
} tDot11fTLVNoticeOfAbsence;

#define DOT11F_TLV_NOTICEOFABSENCE ( 12 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_NOTICEOFABSENCE_MIN_LEN ( 3 )

#define DOT11F_TLV_NOTICEOFABSENCE_MAX_LEN ( 39 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvNoticeOfAbsence(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVNoticeOfAbsence*);

tANI_U32 dot11fPackTlvNoticeOfAbsence(tpAniSirGlobal, tDot11fTLVNoticeOfAbsence*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvNoticeOfAbsence(tpAniSirGlobal, tDot11fTLVNoticeOfAbsence*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 17 (0x0011)
typedef struct sDot11fTLVOperatingChannel {
    tANI_U8      present;
    tANI_U8      countryString[3];
    tANI_U8      regulatoryClass;
    tANI_U8      channel;
} tDot11fTLVOperatingChannel;

#define DOT11F_TLV_OPERATINGCHANNEL ( 17 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_OPERATINGCHANNEL_MIN_LEN ( 6 )

#define DOT11F_TLV_OPERATINGCHANNEL_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvOperatingChannel(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVOperatingChannel*);

tANI_U32 dot11fPackTlvOperatingChannel(tpAniSirGlobal, tDot11fTLVOperatingChannel*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvOperatingChannel(tpAniSirGlobal, tDot11fTLVOperatingChannel*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 2 (0x0002)
typedef struct sDot11fTLVP2PCapability {
    tANI_U8      present;
    tANI_U8      deviceCapability;
    tANI_U8      groupCapability;
} tDot11fTLVP2PCapability;

#define DOT11F_TLV_P2PCAPABILITY ( 2 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PCAPABILITY_MIN_LEN ( 3 )

#define DOT11F_TLV_P2PCAPABILITY_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PCapability(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PCapability*);

tANI_U32 dot11fPackTlvP2PCapability(tpAniSirGlobal, tDot11fTLVP2PCapability*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PCapability(tpAniSirGlobal, tDot11fTLVP2PCapability*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 3 (0x0003)
typedef struct sDot11fTLVP2PDeviceId {
    tANI_U8      present;
    tANI_U8      P2PDeviceAddress[6];
} tDot11fTLVP2PDeviceId;

#define DOT11F_TLV_P2PDEVICEID ( 3 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PDEVICEID_MIN_LEN ( 7 )

#define DOT11F_TLV_P2PDEVICEID_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PDeviceId(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PDeviceId*);

tANI_U32 dot11fPackTlvP2PDeviceId(tpAniSirGlobal, tDot11fTLVP2PDeviceId*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PDeviceId(tpAniSirGlobal, tDot11fTLVP2PDeviceId*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 13 (0x000d)
typedef struct sDot11fTLVP2PDeviceInfo {
    tANI_U8              present;
    tANI_U8              P2PDeviceAddress[6];
    tANI_U16             configMethod;
    tANI_U8              primaryDeviceType[8];
    tDot11fTLVDeviceName DeviceName;
} tDot11fTLVP2PDeviceInfo;

#define DOT11F_TLV_P2PDEVICEINFO ( 13 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PDEVICEINFO_MIN_LEN ( 17 )

#define DOT11F_TLV_P2PDEVICEINFO_MAX_LEN ( 53 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PDeviceInfo(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PDeviceInfo*);

tANI_U32 dot11fPackTlvP2PDeviceInfo(tpAniSirGlobal, tDot11fTLVP2PDeviceInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PDeviceInfo(tpAniSirGlobal, tDot11fTLVP2PDeviceInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 7 (0x0007)
typedef struct sDot11fTLVP2PGroupBssid {
    tANI_U8      present;
    tANI_U8      P2PGroupBssid[6];
} tDot11fTLVP2PGroupBssid;

#define DOT11F_TLV_P2PGROUPBSSID ( 7 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PGROUPBSSID_MIN_LEN ( 7 )

#define DOT11F_TLV_P2PGROUPBSSID_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PGroupBssid(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PGroupBssid*);

tANI_U32 dot11fPackTlvP2PGroupBssid(tpAniSirGlobal, tDot11fTLVP2PGroupBssid*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PGroupBssid(tpAniSirGlobal, tDot11fTLVP2PGroupBssid*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 15 (0x000f)
typedef struct sDot11fTLVP2PGroupId {
    tANI_U8      present;
    tANI_U8      deviceAddress[6];
    tANI_U8      num_ssid;
    tANI_U8      ssid[32];
} tDot11fTLVP2PGroupId;

#define DOT11F_TLV_P2PGROUPID ( 15 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PGROUPID_MIN_LEN ( 7 )

#define DOT11F_TLV_P2PGROUPID_MAX_LEN ( 39 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PGroupId(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PGroupId*);

tANI_U32 dot11fPackTlvP2PGroupId(tpAniSirGlobal, tDot11fTLVP2PGroupId*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PGroupId(tpAniSirGlobal, tDot11fTLVP2PGroupId*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 14 (0x000e)
typedef struct sDot11fTLVP2PGroupInfo {
    tANI_U8      present;
    tANI_U8      num_P2PClientInfoDesc;
    tANI_U8      P2PClientInfoDesc[1024];
} tDot11fTLVP2PGroupInfo;

#define DOT11F_TLV_P2PGROUPINFO ( 14 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PGROUPINFO_MIN_LEN ( 1 )

#define DOT11F_TLV_P2PGROUPINFO_MAX_LEN ( 1025 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PGroupInfo(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PGroupInfo*);

tANI_U32 dot11fPackTlvP2PGroupInfo(tpAniSirGlobal, tDot11fTLVP2PGroupInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PGroupInfo(tpAniSirGlobal, tDot11fTLVP2PGroupInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 0 (0x0000)
typedef struct sDot11fTLVP2PStatus {
    tANI_U8      present;
    tANI_U8      status;
} tDot11fTLVP2PStatus;

#define DOT11F_TLV_P2PSTATUS ( 0 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PSTATUS_MIN_LEN ( 2 )

#define DOT11F_TLV_P2PSTATUS_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PStatus(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PStatus*);

tANI_U32 dot11fPackTlvP2PStatus(tpAniSirGlobal, tDot11fTLVP2PStatus*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PStatus(tpAniSirGlobal, tDot11fTLVP2PStatus*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4180 (0x1054)
typedef struct sDot11fTLVPrimaryDeviceType {
    tANI_U8      present;
    tANI_U16     primary_category;
    tANI_U8      oui[4];
    tANI_U16     sub_category;
} tDot11fTLVPrimaryDeviceType;

#define DOT11F_TLV_PRIMARYDEVICETYPE ( 4180 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_PRIMARYDEVICETYPE_MIN_LEN ( 10 )

#define DOT11F_TLV_PRIMARYDEVICETYPE_MAX_LEN ( 10 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvPrimaryDeviceType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVPrimaryDeviceType*);

tANI_U32 dot11fPackTlvPrimaryDeviceType(tpAniSirGlobal, tDot11fTLVPrimaryDeviceType*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvPrimaryDeviceType(tpAniSirGlobal, tDot11fTLVPrimaryDeviceType*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4156 (0x103c)
typedef struct sDot11fTLVRFBands {
    tANI_U8      present;
    tANI_U8      bands;
} tDot11fTLVRFBands;

#define DOT11F_TLV_RFBANDS ( 4156 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_RFBANDS_MIN_LEN ( 3 )

#define DOT11F_TLV_RFBANDS_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvRFBands(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRFBands*);

tANI_U32 dot11fPackTlvRFBands(tpAniSirGlobal, tDot11fTLVRFBands*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvRFBands(tpAniSirGlobal, tDot11fTLVRFBands*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4202 (0x106a)
typedef struct sDot11fTLVRequestDeviceType {
    tANI_U8      present;
    tANI_U16     primary_category;
    tANI_U8      oui[4];
    tANI_U16     sub_category;
} tDot11fTLVRequestDeviceType;

#define DOT11F_TLV_REQUESTDEVICETYPE ( 4202 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_REQUESTDEVICETYPE_MIN_LEN ( 10 )

#define DOT11F_TLV_REQUESTDEVICETYPE_MAX_LEN ( 10 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvRequestDeviceType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRequestDeviceType*);

tANI_U32 dot11fPackTlvRequestDeviceType(tpAniSirGlobal, tDot11fTLVRequestDeviceType*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvRequestDeviceType(tpAniSirGlobal, tDot11fTLVRequestDeviceType*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4154 (0x103a)
typedef struct sDot11fTLVRequestType {
    tANI_U8      present;
    tANI_U8      reqType;
} tDot11fTLVRequestType;

#define DOT11F_TLV_REQUESTTYPE ( 4154 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_REQUESTTYPE_MIN_LEN ( 3 )

#define DOT11F_TLV_REQUESTTYPE_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvRequestType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVRequestType*);

tANI_U32 dot11fPackTlvRequestType(tpAniSirGlobal, tDot11fTLVRequestType*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvRequestType(tpAniSirGlobal, tDot11fTLVRequestType*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4155 (0x103b)
typedef struct sDot11fTLVResponseType {
    tANI_U8      present;
    tANI_U8      resType;
} tDot11fTLVResponseType;

#define DOT11F_TLV_RESPONSETYPE ( 4155 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_RESPONSETYPE_MIN_LEN ( 3 )

#define DOT11F_TLV_RESPONSETYPE_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvResponseType(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVResponseType*);

tANI_U32 dot11fPackTlvResponseType(tpAniSirGlobal, tDot11fTLVResponseType*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvResponseType(tpAniSirGlobal, tDot11fTLVResponseType*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4161 (0x1041)
typedef struct sDot11fTLVSelectedRegistrar {
    tANI_U8      present;
    tANI_U8      selected;
} tDot11fTLVSelectedRegistrar;

#define DOT11F_TLV_SELECTEDREGISTRAR ( 4161 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_SELECTEDREGISTRAR_MIN_LEN ( 3 )

#define DOT11F_TLV_SELECTEDREGISTRAR_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvSelectedRegistrar(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVSelectedRegistrar*);

tANI_U32 dot11fPackTlvSelectedRegistrar(tpAniSirGlobal, tDot11fTLVSelectedRegistrar*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvSelectedRegistrar(tpAniSirGlobal, tDot11fTLVSelectedRegistrar*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4179 (0x1053)
typedef struct sDot11fTLVSelectedRegistrarConfigMethods {
    tANI_U8      present;
    tANI_U16     methods;
} tDot11fTLVSelectedRegistrarConfigMethods;

#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS ( 4179 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MIN_LEN ( 4 )

#define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvSelectedRegistrarConfigMethods(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVSelectedRegistrarConfigMethods*);

tANI_U32 dot11fPackTlvSelectedRegistrarConfigMethods(tpAniSirGlobal, tDot11fTLVSelectedRegistrarConfigMethods*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvSelectedRegistrarConfigMethods(tpAniSirGlobal, tDot11fTLVSelectedRegistrarConfigMethods*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4162 (0x1042)
typedef struct sDot11fTLVSerialNumber {
    tANI_U8      present;
    tANI_U8      num_text;
    tANI_U8      text[32];
} tDot11fTLVSerialNumber;

#define DOT11F_TLV_SERIALNUMBER ( 4162 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_SERIALNUMBER_MIN_LEN ( 2 )

#define DOT11F_TLV_SERIALNUMBER_MAX_LEN ( 34 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvSerialNumber(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVSerialNumber*);

tANI_U32 dot11fPackTlvSerialNumber(tpAniSirGlobal, tDot11fTLVSerialNumber*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvSerialNumber(tpAniSirGlobal, tDot11fTLVSerialNumber*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4167 (0x1047)
typedef struct sDot11fTLVUUID_E {
    tANI_U8      present;
    tANI_U8      uuid[16];
} tDot11fTLVUUID_E;

#define DOT11F_TLV_UUID_E ( 4167 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_UUID_E_MIN_LEN ( 18 )

#define DOT11F_TLV_UUID_E_MAX_LEN ( 18 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvUUID_E(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVUUID_E*);

tANI_U32 dot11fPackTlvUUID_E(tpAniSirGlobal, tDot11fTLVUUID_E*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvUUID_E(tpAniSirGlobal, tDot11fTLVUUID_E*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4168 (0x1048)
typedef struct sDot11fTLVUUID_R {
    tANI_U8      present;
    tANI_U8      uuid[16];
} tDot11fTLVUUID_R;

#define DOT11F_TLV_UUID_R ( 4168 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_UUID_R_MIN_LEN ( 18 )

#define DOT11F_TLV_UUID_R_MAX_LEN ( 18 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvUUID_R(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVUUID_R*);

tANI_U32 dot11fPackTlvUUID_R(tpAniSirGlobal, tDot11fTLVUUID_R*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvUUID_R(tpAniSirGlobal, tDot11fTLVUUID_R*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4169 (0x1049)
typedef struct sDot11fTLVVendorExtension {
    tANI_U8                   present;
    tANI_U8                   vendorId[3];
    tDot11fTLVVersion2        Version2;
    tDot11fTLVAuthorizedMACs  AuthorizedMACs;
    tDot11fTLVRequestToEnroll RequestToEnroll;
} tDot11fTLVVendorExtension;

#define DOT11F_TLV_VENDOREXTENSION ( 4169 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_VENDOREXTENSION_MIN_LEN ( 5 )

#define DOT11F_TLV_VENDOREXTENSION_MAX_LEN ( 19 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvVendorExtension(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVVendorExtension*);

tANI_U32 dot11fPackTlvVendorExtension(tpAniSirGlobal, tDot11fTLVVendorExtension*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvVendorExtension(tpAniSirGlobal, tDot11fTLVVendorExtension*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4170 (0x104a)
typedef struct sDot11fTLVVersion {
    tANI_U8      present;
    tANI_U8            minor: 4;
    tANI_U8            major: 4;
} tDot11fTLVVersion;

#define DOT11F_TLV_VERSION ( 4170 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_VERSION_MIN_LEN ( 3 )

#define DOT11F_TLV_VERSION_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvVersion(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVVersion*);

tANI_U32 dot11fPackTlvVersion(tpAniSirGlobal, tDot11fTLVVersion*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvVersion(tpAniSirGlobal, tDot11fTLVVersion*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 4164 (0x1044)
typedef struct sDot11fTLVWPSState {
    tANI_U8      present;
    tANI_U8      state;
} tDot11fTLVWPSState;

#define DOT11F_TLV_WPSSTATE ( 4164 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_WPSSTATE_MIN_LEN ( 3 )

#define DOT11F_TLV_WPSSTATE_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvWPSState(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVWPSState*);

tANI_U32 dot11fPackTlvWPSState(tpAniSirGlobal, tDot11fTLVWPSState*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvWPSState(tpAniSirGlobal, tDot11fTLVWPSState*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 16 (0x0010)
typedef struct sDot11fTLVP2PInterface {
    tANI_U8      present;
    tANI_U8      P2PDeviceAddress[6];
} tDot11fTLVP2PInterface;

#define DOT11F_TLV_P2PINTERFACE ( 16 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PINTERFACE_MIN_LEN ( 7 )

#define DOT11F_TLV_P2PINTERFACE_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PInterface(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PInterface*);

tANI_U32 dot11fPackTlvP2PInterface(tpAniSirGlobal, tDot11fTLVP2PInterface*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PInterface(tpAniSirGlobal, tDot11fTLVP2PInterface*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// ID 10 (0x000a)
typedef struct sDot11fTLVP2PManageability {
    tANI_U8      present;
    tANI_U8      manageability;
} tDot11fTLVP2PManageability;

#define DOT11F_TLV_P2PMANAGEABILITY ( 10 )

// N.B. These #defines do *not* include the ID & length
#define DOT11F_TLV_P2PMANAGEABILITY_MIN_LEN ( 2 )

#define DOT11F_TLV_P2PMANAGEABILITY_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackTlvP2PManageability(tpAniSirGlobal, tANI_U8*,tANI_U16, tDot11fTLVP2PManageability*);

tANI_U32 dot11fPackTlvP2PManageability(tpAniSirGlobal, tDot11fTLVP2PManageability*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedTlvP2PManageability(tpAniSirGlobal, tDot11fTLVP2PManageability*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/*********************************************************************
 * Information Elements                                              *
 ********************************************************************/

// EID 1 (0x01)
typedef struct sDot11fIEAPName {
    tANI_U8      present;
    tANI_U8      num_name;
    tANI_U8      name[32];
} tDot11fIEAPName;

#define DOT11F_EID_APNAME ( 1 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_APNAME_MIN_LEN ( 1 )

#define DOT11F_IE_APNAME_MAX_LEN ( 32 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeAPName(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEAPName*);

tANI_U32 dot11fPackIeAPName(tpAniSirGlobal, tDot11fIEAPName*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEAPName(tpAniSirGlobal, tDot11fIEAPName*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 4 (0x04)
typedef struct sDot11fIEBPIndicator {
    tANI_U8      present;
    tANI_U8      indicator;
    tANI_U8      type;
} tDot11fIEBPIndicator;

#define DOT11F_EID_BPINDICATOR ( 4 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_BPINDICATOR_MIN_LEN ( 2 )

#define DOT11F_IE_BPINDICATOR_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeBPIndicator(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBPIndicator*);

tANI_U32 dot11fPackIeBPIndicator(tpAniSirGlobal, tDot11fIEBPIndicator*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEBPIndicator(tpAniSirGlobal, tDot11fIEBPIndicator*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 2 (0x02)
typedef struct sDot11fIECondensedCountryStr {
    tANI_U8      present;
    tANI_U8      countryStr[2];
} tDot11fIECondensedCountryStr;

#define DOT11F_EID_CONDENSEDCOUNTRYSTR ( 2 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_CONDENSEDCOUNTRYSTR_MIN_LEN ( 2 )

#define DOT11F_IE_CONDENSEDCOUNTRYSTR_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeCondensedCountryStr(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECondensedCountryStr*);

tANI_U32 dot11fPackIeCondensedCountryStr(tpAniSirGlobal, tDot11fIECondensedCountryStr*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIECondensedCountryStr(tpAniSirGlobal, tDot11fIECondensedCountryStr*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 2 (0x02)
typedef struct sDot11fIEGTK {
    tANI_U8      present;
    tANI_U16            keyId: 2;
    tANI_U16         reserved: 14;
    tANI_U8      keyLength;
    tANI_U8      RSC[8];
    tANI_U8      num_key;
    tANI_U8      key[32];
} tDot11fIEGTK;

#define DOT11F_EID_GTK ( 2 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_GTK_MIN_LEN ( 16 )

#define DOT11F_IE_GTK_MAX_LEN ( 43 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeGTK(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEGTK*);

tANI_U32 dot11fPackIeGTK(tpAniSirGlobal, tDot11fIEGTK*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEGTK(tpAniSirGlobal, tDot11fIEGTK*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 2 (0x02)
typedef struct sDot11fIEHCF {
    tANI_U8      present;
    tANI_U8      enabled;
} tDot11fIEHCF;

#define DOT11F_EID_HCF ( 2 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_HCF_MIN_LEN ( 1 )

#define DOT11F_IE_HCF_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeHCF(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHCF*);

tANI_U32 dot11fPackIeHCF(tpAniSirGlobal, tDot11fIEHCF*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEHCF(tpAniSirGlobal, tDot11fIEHCF*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 4 (0x04)
typedef struct sDot11fIEIGTK {
    tANI_U8      present;
    tANI_U8      keyID[2];
    tANI_U8      IPN[6];
    tANI_U8      keyLength;
    tANI_U8      key[24];
} tDot11fIEIGTK;

#define DOT11F_EID_IGTK ( 4 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_IGTK_MIN_LEN ( 33 )

#define DOT11F_IE_IGTK_MAX_LEN ( 33 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeIGTK(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEIGTK*);

tANI_U32 dot11fPackIeIGTK(tpAniSirGlobal, tDot11fIEIGTK*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEIGTK(tpAniSirGlobal, tDot11fIEIGTK*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 9 (0x09)
typedef struct sDot11fIELLAttr {
    tANI_U8      present;
    tANI_U32     defer_threshold;
} tDot11fIELLAttr;

#define DOT11F_EID_LLATTR ( 9 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_LLATTR_MIN_LEN ( 4 )

#define DOT11F_IE_LLATTR_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeLLAttr(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIELLAttr*);

tANI_U32 dot11fPackIeLLAttr(tpAniSirGlobal, tDot11fIELLAttr*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIELLAttr(tpAniSirGlobal, tDot11fIELLAttr*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 8 (0x08)
typedef struct sDot11fIELoadBalance {
    tANI_U8      present;
    tANI_U8      bssid[6];
    tANI_U8      channel;
} tDot11fIELoadBalance;

#define DOT11F_EID_LOADBALANCE ( 8 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_LOADBALANCE_MIN_LEN ( 7 )

#define DOT11F_IE_LOADBALANCE_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeLoadBalance(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIELoadBalance*);

tANI_U32 dot11fPackIeLoadBalance(tpAniSirGlobal, tDot11fIELoadBalance*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIELoadBalance(tpAniSirGlobal, tDot11fIELoadBalance*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 6 (0x06)
typedef struct sDot11fIELoadInfo {
    tANI_U8      present;
    tANI_U16     num_stas;
    tANI_U16     channel_util;
} tDot11fIELoadInfo;

#define DOT11F_EID_LOADINFO ( 6 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_LOADINFO_MIN_LEN ( 4 )

#define DOT11F_IE_LOADINFO_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeLoadInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIELoadInfo*);

tANI_U32 dot11fPackIeLoadInfo(tpAniSirGlobal, tDot11fIELoadInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIELoadInfo(tpAniSirGlobal, tDot11fIELoadInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 7 (0x07)
typedef struct sDot11fIEPropAssocType {
    tANI_U8      present;
    tANI_U8      type;
} tDot11fIEPropAssocType;

#define DOT11F_EID_PROPASSOCTYPE ( 7 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PROPASSOCTYPE_MIN_LEN ( 1 )

#define DOT11F_IE_PROPASSOCTYPE_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePropAssocType(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropAssocType*);

tANI_U32 dot11fPackIePropAssocType(tpAniSirGlobal, tDot11fIEPropAssocType*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPropAssocType(tpAniSirGlobal, tDot11fIEPropAssocType*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 10 (0x0a)
typedef struct sDot11fIEPropCapability {
    tANI_U8      present;
    tANI_U16     capability;
} tDot11fIEPropCapability;

#define DOT11F_EID_PROPCAPABILITY ( 10 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PROPCAPABILITY_MIN_LEN ( 2 )

#define DOT11F_IE_PROPCAPABILITY_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePropCapability(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropCapability*);

tANI_U32 dot11fPackIePropCapability(tpAniSirGlobal, tDot11fIEPropCapability*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPropCapability(tpAniSirGlobal, tDot11fIEPropCapability*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 15 (0x0f)
typedef struct sDot11fIEPropChannSwitchAnn {
    tANI_U8      present;
    tANI_U8      mode;
    tANI_U8      primary_channel;
    tANI_U8      sub_band;
    tANI_U8      channel_switch_count;
} tDot11fIEPropChannSwitchAnn;

#define DOT11F_EID_PROPCHANNSWITCHANN ( 15 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PROPCHANNSWITCHANN_MIN_LEN ( 4 )

#define DOT11F_IE_PROPCHANNSWITCHANN_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePropChannSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropChannSwitchAnn*);

tANI_U32 dot11fPackIePropChannSwitchAnn(tpAniSirGlobal, tDot11fIEPropChannSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPropChannSwitchAnn(tpAniSirGlobal, tDot11fIEPropChannSwitchAnn*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 12 (0x0c)
typedef struct sDot11fIEPropEDCAParams {
    tANI_U8      present;
    tANI_U8      qos;
    tANI_U8      reserved;
    tANI_U8       acbe_aifsn: 4;
    tANI_U8         acbe_acm: 1;
    tANI_U8         acbe_aci: 2;
    tANI_U8          unused1: 1;
    tANI_U8         acbe_min: 4;
    tANI_U8         acbe_max: 4;
    tANI_U16     acbe_txoplimit;
    tANI_U8       acbk_aifsn: 4;
    tANI_U8         acbk_acm: 1;
    tANI_U8         acbk_aci: 2;
    tANI_U8          unused2: 1;
    tANI_U8         acbk_min: 4;
    tANI_U8         acbk_max: 4;
    tANI_U16     acbk_txoplimit;
    tANI_U8       acvi_aifsn: 4;
    tANI_U8         acvi_acm: 1;
    tANI_U8         acvi_aci: 2;
    tANI_U8          unused3: 1;
    tANI_U8         acvi_min: 4;
    tANI_U8         acvi_max: 4;
    tANI_U16     acvi_txoplimit;
    tANI_U8       acvo_aifsn: 4;
    tANI_U8         acvo_acm: 1;
    tANI_U8         acvo_aci: 2;
    tANI_U8          unused4: 1;
    tANI_U8         acvo_min: 4;
    tANI_U8         acvo_max: 4;
    tANI_U16     acvo_txoplimit;
} tDot11fIEPropEDCAParams;

#define DOT11F_EID_PROPEDCAPARAMS ( 12 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PROPEDCAPARAMS_MIN_LEN ( 18 )

#define DOT11F_IE_PROPEDCAPARAMS_MAX_LEN ( 18 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePropEDCAParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropEDCAParams*);

tANI_U32 dot11fPackIePropEDCAParams(tpAniSirGlobal, tDot11fIEPropEDCAParams*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPropEDCAParams(tpAniSirGlobal, tDot11fIEPropEDCAParams*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 16 (0x10)
typedef struct sDot11fIEPropQuietBSS {
    tANI_U8      present;
    tANI_U8      quiet_count;
    tANI_U8      quiet_period;
    tANI_U16     quiet_duration;
    tANI_U16     quiet_offset;
} tDot11fIEPropQuietBSS;

#define DOT11F_EID_PROPQUIETBSS ( 16 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PROPQUIETBSS_MIN_LEN ( 6 )

#define DOT11F_IE_PROPQUIETBSS_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePropQuietBSS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropQuietBSS*);

tANI_U32 dot11fPackIePropQuietBSS(tpAniSirGlobal, tDot11fIEPropQuietBSS*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPropQuietBSS(tpAniSirGlobal, tDot11fIEPropQuietBSS*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 0 (0x00)
typedef struct sDot11fIEPropSuppRates {
    tANI_U8      present;
    tANI_U8      num_rates;
    tANI_U8      rates[12];
} tDot11fIEPropSuppRates;

#define DOT11F_EID_PROPSUPPRATES ( 0 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PROPSUPPRATES_MIN_LEN ( 1 )

#define DOT11F_IE_PROPSUPPRATES_MAX_LEN ( 12 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePropSuppRates(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPropSuppRates*);

tANI_U32 dot11fPackIePropSuppRates(tpAniSirGlobal, tDot11fIEPropSuppRates*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPropSuppRates(tpAniSirGlobal, tDot11fIEPropSuppRates*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 3 (0x03)
typedef struct sDot11fIER0KH_ID {
    tANI_U8      present;
    tANI_U8      num_PMK_R0_ID;
    tANI_U8      PMK_R0_ID[48];
} tDot11fIER0KH_ID;

#define DOT11F_EID_R0KH_ID ( 3 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_R0KH_ID_MIN_LEN ( 1 )

#define DOT11F_IE_R0KH_ID_MAX_LEN ( 48 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeR0KH_ID(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIER0KH_ID*);

tANI_U32 dot11fPackIeR0KH_ID(tpAniSirGlobal, tDot11fIER0KH_ID*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIER0KH_ID(tpAniSirGlobal, tDot11fIER0KH_ID*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 1 (0x01)
typedef struct sDot11fIER1KH_ID {
    tANI_U8      present;
    tANI_U8      PMK_R1_ID[6];
} tDot11fIER1KH_ID;

#define DOT11F_EID_R1KH_ID ( 1 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_R1KH_ID_MIN_LEN ( 6 )

#define DOT11F_IE_R1KH_ID_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeR1KH_ID(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIER1KH_ID*);

tANI_U32 dot11fPackIeR1KH_ID(tpAniSirGlobal, tDot11fIER1KH_ID*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIER1KH_ID(tpAniSirGlobal, tDot11fIER1KH_ID*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 1 (0x01)
typedef struct sDot11fIETSFInfo {
    tANI_U8      present;
    tANI_U16     TsfOffset;
    tANI_U16     BeaconIntvl;
} tDot11fIETSFInfo;

#define DOT11F_EID_TSFINFO ( 1 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TSFINFO_MIN_LEN ( 4 )

#define DOT11F_IE_TSFINFO_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTSFInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETSFInfo*);

tANI_U32 dot11fPackIeTSFInfo(tpAniSirGlobal, tDot11fIETSFInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETSFInfo(tpAniSirGlobal, tDot11fIETSFInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 18 (0x12)
typedef struct sDot11fIETaurus {
    tANI_U8      present;
    tANI_U16     baTIDBitmap;
    tANI_U16     baPolicy;
    tANI_U16     baBufferSize: 12;
    tANI_U16             rsvd: 4;
} tDot11fIETaurus;

#define DOT11F_EID_TAURUS ( 18 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TAURUS_MIN_LEN ( 6 )

#define DOT11F_IE_TAURUS_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTaurus(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETaurus*);

tANI_U32 dot11fPackIeTaurus(tpAniSirGlobal, tDot11fIETaurus*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETaurus(tpAniSirGlobal, tDot11fIETaurus*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 14 (0x0e)
typedef struct sDot11fIETitan {
    tANI_U8      present;
    tANI_U8      concat_tcid_bitmap;
    tANI_U8      compression_tcid_bitmap;
    tANI_U8      cb_state;
    tANI_U8      rev_fcs_state;
} tDot11fIETitan;

#define DOT11F_EID_TITAN ( 14 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TITAN_MIN_LEN ( 4 )

#define DOT11F_IE_TITAN_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTitan(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETitan*);

tANI_U32 dot11fPackIeTitan(tpAniSirGlobal, tDot11fIETitan*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETitan(tpAniSirGlobal, tDot11fIETitan*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 17 (0x11)
typedef struct sDot11fIETriggerStaBgScan {
    tANI_U8      present;
    tANI_U8      enable;
} tDot11fIETriggerStaBgScan;

#define DOT11F_EID_TRIGGERSTABGSCAN ( 17 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TRIGGERSTABGSCAN_MIN_LEN ( 1 )

#define DOT11F_IE_TRIGGERSTABGSCAN_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTriggerStaBgScan(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETriggerStaBgScan*);

tANI_U32 dot11fPackIeTriggerStaBgScan(tpAniSirGlobal, tDot11fIETriggerStaBgScan*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETriggerStaBgScan(tpAniSirGlobal, tDot11fIETriggerStaBgScan*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 11 (0x0b)
typedef struct sDot11fIEVersion {
    tANI_U8      present;
    tANI_U32     chip_rev;
    tANI_U8      card_type;
    tANI_U8      num_build_version;
    tANI_U8      build_version[20];
} tDot11fIEVersion;

#define DOT11F_EID_VERSION ( 11 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_VERSION_MIN_LEN ( 5 )

#define DOT11F_IE_VERSION_MAX_LEN ( 25 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeVersion(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEVersion*);

tANI_U32 dot11fPackIeVersion(tpAniSirGlobal, tDot11fIEVersion*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEVersion(tpAniSirGlobal, tDot11fIEVersion*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 3 (0x03)
typedef struct sDot11fIEWDS {
    tANI_U8      present;
    tANI_U8      num_wdsData;
    tANI_U8      wdsData[64];
} tDot11fIEWDS;

#define DOT11F_EID_WDS ( 3 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WDS_MIN_LEN ( 0 )

#define DOT11F_IE_WDS_MAX_LEN ( 64 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWDS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWDS*);

tANI_U32 dot11fPackIeWDS(tpAniSirGlobal, tDot11fIEWDS*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWDS(tpAniSirGlobal, tDot11fIEWDS*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 51 (0x33)
typedef struct sDot11fIEAPChannelReport {
    tANI_U8      present;
    tANI_U8      regulatoryClass;
    tANI_U8      num_channelList;
    tANI_U8      channelList[50];
} tDot11fIEAPChannelReport;

#define DOT11F_EID_APCHANNELREPORT ( 51 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_APCHANNELREPORT_MIN_LEN ( 1 )

#define DOT11F_IE_APCHANNELREPORT_MAX_LEN ( 51 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeAPChannelReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEAPChannelReport*);

tANI_U32 dot11fPackIeAPChannelReport(tpAniSirGlobal, tDot11fIEAPChannelReport*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEAPChannelReport(tpAniSirGlobal, tDot11fIEAPChannelReport*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 2 (0x02)
typedef struct sDot11fIEBcnReportingDetail {
    tANI_U8      present;
    tANI_U8      reportingDetail;
} tDot11fIEBcnReportingDetail;

#define DOT11F_EID_BCNREPORTINGDETAIL ( 2 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_BCNREPORTINGDETAIL_MIN_LEN ( 1 )

#define DOT11F_IE_BCNREPORTINGDETAIL_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeBcnReportingDetail(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBcnReportingDetail*);

tANI_U32 dot11fPackIeBcnReportingDetail(tpAniSirGlobal, tDot11fIEBcnReportingDetail*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEBcnReportingDetail(tpAniSirGlobal, tDot11fIEBcnReportingDetail*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 1 (0x01)
typedef struct sDot11fIEBeaconReportFrmBody {
    tANI_U8      present;
    tANI_U8      num_reportedFields;
    tANI_U8      reportedFields[224];
} tDot11fIEBeaconReportFrmBody;

#define DOT11F_EID_BEACONREPORTFRMBODY ( 1 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_BEACONREPORTFRMBODY_MIN_LEN ( 0 )

#define DOT11F_IE_BEACONREPORTFRMBODY_MAX_LEN ( 224 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeBeaconReportFrmBody(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBeaconReportFrmBody*);

tANI_U32 dot11fPackIeBeaconReportFrmBody(tpAniSirGlobal, tDot11fIEBeaconReportFrmBody*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEBeaconReportFrmBody(tpAniSirGlobal, tDot11fIEBeaconReportFrmBody*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 1 (0x01)
typedef struct sDot11fIEBeaconReporting {
    tANI_U8      present;
    tANI_U8      reportingCondition;
    tANI_U8      threshold;
} tDot11fIEBeaconReporting;

#define DOT11F_EID_BEACONREPORTING ( 1 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_BEACONREPORTING_MIN_LEN ( 2 )

#define DOT11F_IE_BEACONREPORTING_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeBeaconReporting(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEBeaconReporting*);

tANI_U32 dot11fPackIeBeaconReporting(tpAniSirGlobal, tDot11fIEBeaconReporting*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEBeaconReporting(tpAniSirGlobal, tDot11fIEBeaconReporting*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 66 (0x42)
typedef struct sDot11fIEMeasurementPilot {
    tANI_U8      present;
    tANI_U8      measurementPilot;
    tANI_U8      num_vendorSpecific;
    tANI_U8      vendorSpecific[255];
} tDot11fIEMeasurementPilot;

#define DOT11F_EID_MEASUREMENTPILOT ( 66 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_MEASUREMENTPILOT_MIN_LEN ( 1 )

#define DOT11F_IE_MEASUREMENTPILOT_MAX_LEN ( 256 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeMeasurementPilot(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMeasurementPilot*);

tANI_U32 dot11fPackIeMeasurementPilot(tpAniSirGlobal, tDot11fIEMeasurementPilot*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEMeasurementPilot(tpAniSirGlobal, tDot11fIEMeasurementPilot*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 71 (0x47)
typedef struct sDot11fIEMultiBssid {
    tANI_U8      present;
    tANI_U8      maxBSSIDIndicator;
    tANI_U8      num_vendorSpecific;
    tANI_U8      vendorSpecific[255];
} tDot11fIEMultiBssid;

#define DOT11F_EID_MULTIBSSID ( 71 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_MULTIBSSID_MIN_LEN ( 1 )

#define DOT11F_IE_MULTIBSSID_MAX_LEN ( 256 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeMultiBssid(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMultiBssid*);

tANI_U32 dot11fPackIeMultiBssid(tpAniSirGlobal, tDot11fIEMultiBssid*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEMultiBssid(tpAniSirGlobal, tDot11fIEMultiBssid*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 57 (0x39)
typedef struct sDot11fIERICData {
    tANI_U8      present;
    tANI_U8      Identifier;
    tANI_U8      resourceDescCount;
    tANI_U16     statusCode;
} tDot11fIERICData;

#define DOT11F_EID_RICDATA ( 57 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_RICDATA_MIN_LEN ( 4 )

#define DOT11F_IE_RICDATA_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRICData(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERICData*);

tANI_U32 dot11fPackIeRICData(tpAniSirGlobal, tDot11fIERICData*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERICData(tpAniSirGlobal, tDot11fIERICData*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 75 (0x4b)
typedef struct sDot11fIERICDescriptor {
    tANI_U8      present;
    tANI_U8      resourceType;
    tANI_U8      num_variableData;
    tANI_U8      variableData[255];
} tDot11fIERICDescriptor;

#define DOT11F_EID_RICDESCRIPTOR ( 75 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_RICDESCRIPTOR_MIN_LEN ( 1 )

#define DOT11F_IE_RICDESCRIPTOR_MAX_LEN ( 256 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRICDescriptor(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERICDescriptor*);

tANI_U32 dot11fPackIeRICDescriptor(tpAniSirGlobal, tDot11fIERICDescriptor*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERICDescriptor(tpAniSirGlobal, tDot11fIERICDescriptor*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 70 (0x46)
typedef struct sDot11fIERRMEnabledCap {
    tANI_U8      present;
    tANI_U8  LinkMeasurement: 1;
    tANI_U8      NeighborRpt: 1;
    tANI_U8         parallel: 1;
    tANI_U8         repeated: 1;
    tANI_U8    BeaconPassive: 1;
    tANI_U8     BeaconActive: 1;
    tANI_U8      BeaconTable: 1;
    tANI_U8    BeaconRepCond: 1;
    tANI_U8 FrameMeasurement: 1;
    tANI_U8      ChannelLoad: 1;
    tANI_U8   NoiseHistogram: 1;
    tANI_U8       statistics: 1;
    tANI_U8   LCIMeasurement: 1;
    tANI_U8       LCIAzimuth: 1;
    tANI_U8    TCMCapability: 1;
    tANI_U8     triggeredTCM: 1;
    tANI_U8     APChanReport: 1;
    tANI_U8    RRMMIBEnabled: 1;
    tANI_U8 operatingChanMax: 3;
    tANI_U8 nonOperatinChanMax: 3;
    tANI_U8 MeasurementPilot: 3;
    tANI_U8 MeasurementPilotEnabled: 1;
    tANI_U8 NeighborTSFOffset: 1;
    tANI_U8  RCPIMeasurement: 1;
    tANI_U8  RSNIMeasurement: 1;
    tANI_U8 BssAvgAccessDelay: 1;
    tANI_U8 BSSAvailAdmission: 1;
    tANI_U8 AntennaInformation: 1;
    tANI_U8         reserved: 6;
} tDot11fIERRMEnabledCap;

#define DOT11F_EID_RRMENABLEDCAP ( 70 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_RRMENABLEDCAP_MIN_LEN ( 5 )

#define DOT11F_IE_RRMENABLEDCAP_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRRMEnabledCap(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERRMEnabledCap*);

tANI_U32 dot11fPackIeRRMEnabledCap(tpAniSirGlobal, tDot11fIERRMEnabledCap*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERRMEnabledCap(tpAniSirGlobal, tDot11fIERRMEnabledCap*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 10 (0x0a)
typedef struct sDot11fIERequestedInfo {
    tANI_U8      present;
    tANI_U8      num_requested_eids;
    tANI_U8      requested_eids[255];
} tDot11fIERequestedInfo;

#define DOT11F_EID_REQUESTEDINFO ( 10 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_REQUESTEDINFO_MIN_LEN ( 0 )

#define DOT11F_IE_REQUESTEDINFO_MAX_LEN ( 255 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRequestedInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERequestedInfo*);

tANI_U32 dot11fPackIeRequestedInfo(tpAniSirGlobal, tDot11fIERequestedInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERequestedInfo(tpAniSirGlobal, tDot11fIERequestedInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 0 (0x00)
typedef struct sDot11fIESSID {
    tANI_U8      present;
    tANI_U8      num_ssid;
    tANI_U8      ssid[32];
} tDot11fIESSID;

#define DOT11F_EID_SSID ( 0 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_SSID_MIN_LEN ( 0 )

#define DOT11F_IE_SSID_MAX_LEN ( 32 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeSSID(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESSID*);

tANI_U32 dot11fPackIeSSID(tpAniSirGlobal, tDot11fIESSID*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIESSID(tpAniSirGlobal, tDot11fIESSID*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 15 (0x0f)
typedef struct sDot11fIESchedule {
    tANI_U8      present;
    tANI_U16      aggregation: 1;
    tANI_U16             tsid: 4;
    tANI_U16        direction: 2;
    tANI_U16         reserved: 9;
    tANI_U32     service_start_time;
    tANI_U32     service_interval;
    tANI_U16     max_service_dur;
    tANI_U16     spec_interval;
} tDot11fIESchedule;

#define DOT11F_EID_SCHEDULE ( 15 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_SCHEDULE_MIN_LEN ( 14 )

#define DOT11F_IE_SCHEDULE_MAX_LEN ( 14 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeSchedule(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESchedule*);

tANI_U32 dot11fPackIeSchedule(tpAniSirGlobal, tDot11fIESchedule*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIESchedule(tpAniSirGlobal, tDot11fIESchedule*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 14 (0x0e)
typedef struct sDot11fIETCLAS {
    tANI_U8      present;
    tANI_U8      user_priority;
    tANI_U8      classifier_type;
    tANI_U8      classifier_mask;
    union
    {
        struct
        {
            tANI_U8 source[6];
            tANI_U8 dest[6];
            tANI_U16 type;
        } EthParams; /* classifier_type = 0 */
        struct
        {
            tANI_U8 version;
            union
            {
                struct
                {
                    tANI_U8 source[4];
                    tANI_U8 dest[4];
                    tANI_U16 src_port;
                    tANI_U16 dest_port;
                    tANI_U8 DSCP;
                    tANI_U8 proto;
                    tANI_U8 reserved;
                } IpV4Params; /* version = 4 */
                struct
                {
                    tANI_U8 source[16];
                    tANI_U8 dest[16];
                    tANI_U16 src_port;
                    tANI_U16 dest_port;
                    tANI_U8 flow_label[3];
                } IpV6Params; /* version = 6 */
            } params;
        } IpParams; /* classifier_type = 1 */
        struct
        {
            tANI_U16 tag_type;
        } Params8021dq; /* classifier_type = 2 */
    } info;
} tDot11fIETCLAS;

#define DOT11F_EID_TCLAS ( 14 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TCLAS_MIN_LEN ( 5 )

#define DOT11F_IE_TCLAS_MAX_LEN ( 43 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTCLAS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETCLAS*);

tANI_U32 dot11fPackIeTCLAS(tpAniSirGlobal, tDot11fIETCLAS*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETCLAS(tpAniSirGlobal, tDot11fIETCLAS*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 44 (0x2c)
typedef struct sDot11fIETCLASSPROC {
    tANI_U8      present;
    tANI_U8      processing;
} tDot11fIETCLASSPROC;

#define DOT11F_EID_TCLASSPROC ( 44 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TCLASSPROC_MIN_LEN ( 1 )

#define DOT11F_IE_TCLASSPROC_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTCLASSPROC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETCLASSPROC*);

tANI_U32 dot11fPackIeTCLASSPROC(tpAniSirGlobal, tDot11fIETCLASSPROC*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETCLASSPROC(tpAniSirGlobal, tDot11fIETCLASSPROC*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 43 (0x2b)
typedef struct sDot11fIETSDelay {
    tANI_U8      present;
    tANI_U32     delay;
} tDot11fIETSDelay;

#define DOT11F_EID_TSDELAY ( 43 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TSDELAY_MIN_LEN ( 4 )

#define DOT11F_IE_TSDELAY_MAX_LEN ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTSDelay(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETSDelay*);

tANI_U32 dot11fPackIeTSDelay(tpAniSirGlobal, tDot11fIETSDelay*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETSDelay(tpAniSirGlobal, tDot11fIETSDelay*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 13 (0x0d)
typedef struct sDot11fIETSPEC {
    tANI_U8      present;
    tANI_U16     traffic_type: 1;
    tANI_U16             tsid: 4;
    tANI_U16        direction: 2;
    tANI_U16    access_policy: 2;
    tANI_U16      aggregation: 1;
    tANI_U16              psb: 1;
    tANI_U16    user_priority: 3;
    tANI_U16   tsinfo_ack_pol: 2;
    tANI_U8         schedule: 1;
    tANI_U8           unused: 7;
    tANI_U16             size: 15;
    tANI_U16            fixed: 1;
    tANI_U16     max_msdu_size;
    tANI_U32     min_service_int;
    tANI_U32     max_service_int;
    tANI_U32     inactivity_int;
    tANI_U32     suspension_int;
    tANI_U32     service_start_time;
    tANI_U32     min_data_rate;
    tANI_U32     mean_data_rate;
    tANI_U32     peak_data_rate;
    tANI_U32     burst_size;
    tANI_U32     delay_bound;
    tANI_U32     min_phy_rate;
    tANI_U16     surplus_bw_allowance;
    tANI_U16     medium_time;
} tDot11fIETSPEC;

#define DOT11F_EID_TSPEC ( 13 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TSPEC_MIN_LEN ( 55 )

#define DOT11F_IE_TSPEC_MAX_LEN ( 55 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTSPEC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETSPEC*);

tANI_U32 dot11fPackIeTSPEC(tpAniSirGlobal, tDot11fIETSPEC*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETSPEC(tpAniSirGlobal, tDot11fIETSPEC*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x09}
typedef struct sDot11fIEWMMSchedule {
    tANI_U8      present;
    tANI_U8      version /* Must be 1! */;
    tANI_U16      aggregation: 1;
    tANI_U16             tsid: 4;
    tANI_U16        direction: 2;
    tANI_U16         reserved: 9;
    tANI_U32     service_start_time;
    tANI_U32     service_interval;
    tANI_U16     max_service_dur;
    tANI_U16     spec_interval;
} tDot11fIEWMMSchedule;

#define DOT11F_EID_WMMSCHEDULE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WMMSCHEDULE_MIN_LEN ( 20 )

#define DOT11F_IE_WMMSCHEDULE_MAX_LEN ( 20 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWMMSchedule(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMSchedule*);

tANI_U32 dot11fPackIeWMMSchedule(tpAniSirGlobal, tDot11fIEWMMSchedule*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMSchedule(tpAniSirGlobal, tDot11fIEWMMSchedule*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x06}
typedef struct sDot11fIEWMMTCLAS {
    tANI_U8      present;
    tANI_U8      version /* Must be 1! */;
    tANI_U8      user_priority;
    tANI_U8      classifier_type;
    tANI_U8      classifier_mask;
    union
    {
        struct
        {
            tANI_U8 source[6];
            tANI_U8 dest[6];
            tANI_U16 type;
        } EthParams; /* classifier_type = 0 */
        struct
        {
            tANI_U8 version;
            union
            {
                struct
                {
                    tANI_U8 source[4];
                    tANI_U8 dest[4];
                    tANI_U16 src_port;
                    tANI_U16 dest_port;
                    tANI_U8 DSCP;
                    tANI_U8 proto;
                    tANI_U8 reserved;
                } IpV4Params; /* version = 4 */
                struct
                {
                    tANI_U8 source[16];
                    tANI_U8 dest[16];
                    tANI_U16 src_port;
                    tANI_U16 dest_port;
                    tANI_U8 flow_label[3];
                } IpV6Params; /* version = 6 */
            } params;
        } IpParams; /* classifier_type = 1 */
        struct
        {
            tANI_U16 tag_type;
        } Params8021dq; /* classifier_type = 2 */
    } info;
} tDot11fIEWMMTCLAS;

#define DOT11F_EID_WMMTCLAS ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WMMTCLAS_MIN_LEN ( 11 )

#define DOT11F_IE_WMMTCLAS_MAX_LEN ( 49 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWMMTCLAS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTCLAS*);

tANI_U32 dot11fPackIeWMMTCLAS(tpAniSirGlobal, tDot11fIEWMMTCLAS*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMTCLAS(tpAniSirGlobal, tDot11fIEWMMTCLAS*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x07}
typedef struct sDot11fIEWMMTCLASPROC {
    tANI_U8      present;
    tANI_U8      version /* Must be 1! */;
    tANI_U8      processing;
} tDot11fIEWMMTCLASPROC;

#define DOT11F_EID_WMMTCLASPROC ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WMMTCLASPROC_MIN_LEN ( 7 )

#define DOT11F_IE_WMMTCLASPROC_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWMMTCLASPROC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTCLASPROC*);

tANI_U32 dot11fPackIeWMMTCLASPROC(tpAniSirGlobal, tDot11fIEWMMTCLASPROC*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMTCLASPROC(tpAniSirGlobal, tDot11fIEWMMTCLASPROC*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x08}
typedef struct sDot11fIEWMMTSDelay {
    tANI_U8      present;
    tANI_U8      version /* Must be 1! */;
    tANI_U32     delay;
} tDot11fIEWMMTSDelay;

#define DOT11F_EID_WMMTSDELAY ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WMMTSDELAY_MIN_LEN ( 10 )

#define DOT11F_IE_WMMTSDELAY_MAX_LEN ( 10 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWMMTSDelay(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTSDelay*);

tANI_U32 dot11fPackIeWMMTSDelay(tpAniSirGlobal, tDot11fIEWMMTSDelay*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMTSDelay(tpAniSirGlobal, tDot11fIEWMMTSDelay*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x02}
typedef struct sDot11fIEWMMTSPEC {
    tANI_U8      present;
    tANI_U8      version /* Must be 1! */;
    tANI_U16     traffic_type: 1;
    tANI_U16             tsid: 4;
    tANI_U16        direction: 2;
    tANI_U16    access_policy: 2;
    tANI_U16      aggregation: 1;
    tANI_U16              psb: 1;
    tANI_U16    user_priority: 3;
    tANI_U16   tsinfo_ack_pol: 2;
    tANI_U8      tsinfo_rsvd: 7;
    tANI_U8  burst_size_defn: 1;
    tANI_U16             size: 15;
    tANI_U16            fixed: 1;
    tANI_U16     max_msdu_size;
    tANI_U32     min_service_int;
    tANI_U32     max_service_int;
    tANI_U32     inactivity_int;
    tANI_U32     suspension_int;
    tANI_U32     service_start_time;
    tANI_U32     min_data_rate;
    tANI_U32     mean_data_rate;
    tANI_U32     peak_data_rate;
    tANI_U32     burst_size;
    tANI_U32     delay_bound;
    tANI_U32     min_phy_rate;
    tANI_U16     surplus_bw_allowance;
    tANI_U16     medium_time;
} tDot11fIEWMMTSPEC;

#define DOT11F_EID_WMMTSPEC ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WMMTSPEC_MIN_LEN ( 61 )

#define DOT11F_IE_WMMTSPEC_MAX_LEN ( 61 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWMMTSPEC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMTSPEC*);

tANI_U32 dot11fPackIeWMMTSPEC(tpAniSirGlobal, tDot11fIEWMMTSPEC*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMTSPEC(tpAniSirGlobal, tDot11fIEWMMTSPEC*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 197 (0xc5)
typedef struct sDot11fIEAID {
    tANI_U8      present;
    tANI_U16     assocId;
} tDot11fIEAID;

#define DOT11F_EID_AID ( 197 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_AID_MIN_LEN ( 2 )

#define DOT11F_IE_AID_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeAID(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEAID*);

tANI_U32 dot11fPackIeAID(tpAniSirGlobal, tDot11fIEAID*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEAID(tpAniSirGlobal, tDot11fIEAID*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x0a, 0xf5}
typedef struct sDot11fIEAirgo {
    tANI_U8                     present;
    tDot11fIEPropSuppRates      PropSuppRates;
    tDot11fIEAPName             APName;
    tDot11fIEHCF                HCF;
    tDot11fIEWDS                WDS;
    tDot11fIEBPIndicator        BPIndicator;
    tDot11fIELoadInfo           LoadInfo;
    tDot11fIELoadBalance        LoadBalance;
    tDot11fIEPropAssocType      PropAssocType;
    tDot11fIELLAttr             LLAttr;
    tDot11fIEPropCapability     PropCapability;
    tDot11fIEVersion            Version;
    tDot11fIEPropEDCAParams     PropEDCAParams;
    tDot11fIETitan              Titan;
    tDot11fIEPropChannSwitchAnn PropChannSwitchAnn;
    tDot11fIEPropQuietBSS       PropQuietBSS;
    tDot11fIETriggerStaBgScan   TriggerStaBgScan;
    tDot11fIETaurus             Taurus;
} tDot11fIEAirgo;

#define DOT11F_EID_AIRGO ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_AIRGO_MIN_LEN ( 3 )

#define DOT11F_IE_AIRGO_MAX_LEN ( 230 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeAirgo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEAirgo*);

tANI_U32 dot11fPackIeAirgo(tpAniSirGlobal, tDot11fIEAirgo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEAirgo(tpAniSirGlobal, tDot11fIEAirgo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 4 (0x04)
typedef struct sDot11fIECFParams {
    tANI_U8      present;
    tANI_U8      cfp_count;
    tANI_U8      cfp_period;
    tANI_U16     cfp_maxduration;
    tANI_U16     cfp_durremaining;
} tDot11fIECFParams;

#define DOT11F_EID_CFPARAMS ( 4 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_CFPARAMS_MIN_LEN ( 6 )

#define DOT11F_IE_CFPARAMS_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeCFParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECFParams*);

tANI_U32 dot11fPackIeCFParams(tpAniSirGlobal, tDot11fIECFParams*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIECFParams(tpAniSirGlobal, tDot11fIECFParams*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 16 (0x10)
typedef struct sDot11fIEChallengeText {
    tANI_U8      present;
    tANI_U8      num_text;
    tANI_U8      text[253];
} tDot11fIEChallengeText;

#define DOT11F_EID_CHALLENGETEXT ( 16 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_CHALLENGETEXT_MIN_LEN ( 1 )

#define DOT11F_IE_CHALLENGETEXT_MAX_LEN ( 253 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeChallengeText(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEChallengeText*);

tANI_U32 dot11fPackIeChallengeText(tpAniSirGlobal, tDot11fIEChallengeText*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEChallengeText(tpAniSirGlobal, tDot11fIEChallengeText*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 37 (0x25)
typedef struct sDot11fIEChanSwitchAnn {
    tANI_U8      present;
    tANI_U8      switchMode;
    tANI_U8      newChannel;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeChanSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEChanSwitchAnn*);

tANI_U32 dot11fPackIeChanSwitchAnn(tpAniSirGlobal, tDot11fIEChanSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEChanSwitchAnn(tpAniSirGlobal, tDot11fIEChanSwitchAnn*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 7 (0x07)
typedef struct sDot11fIECountry {
    tANI_U8      present;
    tANI_U8      country[3];
    tANI_U8      num_triplets;
    tANI_U8      triplets[84][3];
} tDot11fIECountry;

#define DOT11F_EID_COUNTRY ( 7 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_COUNTRY_MIN_LEN ( 3 )

#define DOT11F_IE_COUNTRY_MAX_LEN ( 255 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeCountry(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIECountry*);

tANI_U32 dot11fPackIeCountry(tpAniSirGlobal, tDot11fIECountry*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIECountry(tpAniSirGlobal, tDot11fIECountry*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 3 (0x03)
typedef struct sDot11fIEDSParams {
    tANI_U8      present;
    tANI_U8      curr_channel;
} tDot11fIEDSParams;

#define DOT11F_EID_DSPARAMS ( 3 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_DSPARAMS_MIN_LEN ( 1 )

#define DOT11F_IE_DSPARAMS_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeDSParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEDSParams*);

tANI_U32 dot11fPackIeDSParams(tpAniSirGlobal, tDot11fIEDSParams*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEDSParams(tpAniSirGlobal, tDot11fIEDSParams*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 12 (0x0c)
typedef struct sDot11fIEEDCAParamSet {
    tANI_U8      present;
    tANI_U8      qos;
    tANI_U8      reserved;
    tANI_U8       acbe_aifsn: 4;
    tANI_U8         acbe_acm: 1;
    tANI_U8         acbe_aci: 2;
    tANI_U8          unused1: 1;
    tANI_U8      acbe_acwmin: 4;
    tANI_U8      acbe_acwmax: 4;
    tANI_U16     acbe_txoplimit;
    tANI_U8       acbk_aifsn: 4;
    tANI_U8         acbk_acm: 1;
    tANI_U8         acbk_aci: 2;
    tANI_U8          unused2: 1;
    tANI_U8      acbk_acwmin: 4;
    tANI_U8      acbk_acwmax: 4;
    tANI_U16     acbk_txoplimit;
    tANI_U8       acvi_aifsn: 4;
    tANI_U8         acvi_acm: 1;
    tANI_U8         acvi_aci: 2;
    tANI_U8          unused3: 1;
    tANI_U8      acvi_acwmin: 4;
    tANI_U8      acvi_acwmax: 4;
    tANI_U16     acvi_txoplimit;
    tANI_U8       acvo_aifsn: 4;
    tANI_U8         acvo_acm: 1;
    tANI_U8         acvo_aci: 2;
    tANI_U8          unused4: 1;
    tANI_U8      acvo_acwmin: 4;
    tANI_U8      acvo_acwmax: 4;
    tANI_U16     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++ */
tANI_U32 dot11fUnpackIeEDCAParamSet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEEDCAParamSet*);

tANI_U32 dot11fPackIeEDCAParamSet(tpAniSirGlobal, tDot11fIEEDCAParamSet*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEEDCAParamSet(tpAniSirGlobal, tDot11fIEEDCAParamSet*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 42 (0x2a)
typedef struct sDot11fIEERPInfo {
    tANI_U8      present;
    tANI_U8  non_erp_present: 1;
    tANI_U8         use_prot: 1;
    tANI_U8  barker_preamble: 1;
    tANI_U8           unused: 5;
} tDot11fIEERPInfo;

#define DOT11F_EID_ERPINFO ( 42 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_ERPINFO_MIN_LEN ( 1 )

#define DOT11F_IE_ERPINFO_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeERPInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEERPInfo*);

tANI_U32 dot11fPackIeERPInfo(tpAniSirGlobal, tDot11fIEERPInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEERPInfo(tpAniSirGlobal, tDot11fIEERPInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00}
typedef struct sDot11fIEESECckmOpaque {
    tANI_U8      present;
    tANI_U8      num_data;
    tANI_U8      data[20];
} tDot11fIEESECckmOpaque;

#define DOT11F_EID_ESECCKMOPAQUE ( 156 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_ESECCKMOPAQUE_MIN_LEN ( 10 )

#define DOT11F_IE_ESECCKMOPAQUE_MAX_LEN ( 24 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeESECckmOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEESECckmOpaque*);

tANI_U32 dot11fPackIeESECckmOpaque(tpAniSirGlobal, tDot11fIEESECckmOpaque*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEESECckmOpaque(tpAniSirGlobal, tDot11fIEESECckmOpaque*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01}
typedef struct sDot11fIEESERadMgmtCap {
    tANI_U8      present;
    tANI_U8      mgmt_state;
    tANI_U8      mbssid_mask: 3;
    tANI_U8         reserved: 5;
} tDot11fIEESERadMgmtCap;

#define DOT11F_EID_ESERADMGMTCAP ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_ESERADMGMTCAP_MIN_LEN ( 6 )

#define DOT11F_IE_ESERADMGMTCAP_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeESERadMgmtCap(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEESERadMgmtCap*);

tANI_U32 dot11fPackIeESERadMgmtCap(tpAniSirGlobal, tDot11fIEESERadMgmtCap*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEESERadMgmtCap(tpAniSirGlobal, tDot11fIEESERadMgmtCap*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07}
typedef struct sDot11fIEESETrafStrmMet {
    tANI_U8      present;
    tANI_U8      tsid;
    tANI_U8      state;
    tANI_U16     msmt_interval;
} tDot11fIEESETrafStrmMet;

#define DOT11F_EID_ESETRAFSTRMMET ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_ESETRAFSTRMMET_MIN_LEN ( 8 )

#define DOT11F_IE_ESETRAFSTRMMET_MAX_LEN ( 8 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeESETrafStrmMet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEESETrafStrmMet*);

tANI_U32 dot11fPackIeESETrafStrmMet(tpAniSirGlobal, tDot11fIEESETrafStrmMet*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEESETrafStrmMet(tpAniSirGlobal, tDot11fIEESETrafStrmMet*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08}
typedef struct sDot11fIEESETrafStrmRateSet {
    tANI_U8      present;
    tANI_U8      tsid;
    tANI_U8      num_tsrates;
    tANI_U8      tsrates[8];
} tDot11fIEESETrafStrmRateSet;

#define DOT11F_EID_ESETRAFSTRMRATESET ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_ESETRAFSTRMRATESET_MIN_LEN ( 5 )

#define DOT11F_IE_ESETRAFSTRMRATESET_MAX_LEN ( 13 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeESETrafStrmRateSet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEESETrafStrmRateSet*);

tANI_U32 dot11fPackIeESETrafStrmRateSet(tpAniSirGlobal, tDot11fIEESETrafStrmRateSet*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEESETrafStrmRateSet(tpAniSirGlobal, tDot11fIEESETrafStrmRateSet*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00}
typedef struct sDot11fIEESETxmitPower {
    tANI_U8      present;
    tANI_U8      power_limit;
    tANI_U8      reserved;
} tDot11fIEESETxmitPower;

#define DOT11F_EID_ESETXMITPOWER ( 150 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_ESETXMITPOWER_MIN_LEN ( 6 )

#define DOT11F_IE_ESETXMITPOWER_MAX_LEN ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeESETxmitPower(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEESETxmitPower*);

tANI_U32 dot11fPackIeESETxmitPower(tpAniSirGlobal, tDot11fIEESETxmitPower*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEESETxmitPower(tpAniSirGlobal, tDot11fIEESETxmitPower*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03}
typedef struct sDot11fIEESEVersion {
    tANI_U8      present;
    tANI_U8      version;
} tDot11fIEESEVersion;

#define DOT11F_EID_ESEVERSION ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_ESEVERSION_MIN_LEN ( 5 )

#define DOT11F_IE_ESEVERSION_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeESEVersion(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEESEVersion*);

tANI_U32 dot11fPackIeESEVersion(tpAniSirGlobal, tDot11fIEESEVersion*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEESEVersion(tpAniSirGlobal, tDot11fIEESEVersion*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 127 (0x7f)
typedef struct sDot11fIEExtCap {
    tANI_U8      present;
    tANI_U8      num_bytes;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEExtCap*);

tANI_U32 dot11fPackIeExtCap(tpAniSirGlobal, tDot11fIEExtCap*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEExtCap(tpAniSirGlobal, tDot11fIEExtCap*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 50 (0x32)
typedef struct sDot11fIEExtSuppRates {
    tANI_U8      present;
    tANI_U8      num_rates;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeExtSuppRates(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEExtSuppRates*);

tANI_U32 dot11fPackIeExtSuppRates(tpAniSirGlobal, tDot11fIEExtSuppRates*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEExtSuppRates(tpAniSirGlobal, tDot11fIEExtSuppRates*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 2 (0x02)
typedef struct sDot11fIEFHParamSet {
    tANI_U8      present;
    tANI_U16     dwell_time;
    tANI_U8      hop_set;
    tANI_U8      hop_pattern;
    tANI_U8      hop_index;
} tDot11fIEFHParamSet;

#define DOT11F_EID_FHPARAMSET ( 2 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_FHPARAMSET_MIN_LEN ( 5 )

#define DOT11F_IE_FHPARAMSET_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeFHParamSet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFHParamSet*);

tANI_U32 dot11fPackIeFHParamSet(tpAniSirGlobal, tDot11fIEFHParamSet*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEFHParamSet(tpAniSirGlobal, tDot11fIEFHParamSet*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 8 (0x08)
typedef struct sDot11fIEFHParams {
    tANI_U8      present;
    tANI_U8      radix;
    tANI_U8      nchannels;
} tDot11fIEFHParams;

#define DOT11F_EID_FHPARAMS ( 8 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_FHPARAMS_MIN_LEN ( 2 )

#define DOT11F_IE_FHPARAMS_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeFHParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFHParams*);

tANI_U32 dot11fPackIeFHParams(tpAniSirGlobal, tDot11fIEFHParams*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEFHParams(tpAniSirGlobal, tDot11fIEFHParams*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 9 (0x09)
typedef struct sDot11fIEFHPattTable {
    tANI_U8      present;
    tANI_U8      flag;
    tANI_U8      nsets;
    tANI_U8      modulus;
    tANI_U8      offset;
    tANI_U8      num_randtable;
    tANI_U8      randtable[251];
} tDot11fIEFHPattTable;

#define DOT11F_EID_FHPATTTABLE ( 9 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_FHPATTTABLE_MIN_LEN ( 4 )

#define DOT11F_IE_FHPATTTABLE_MAX_LEN ( 255 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeFHPattTable(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFHPattTable*);

tANI_U32 dot11fPackIeFHPattTable(tpAniSirGlobal, tDot11fIEFHPattTable*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEFHPattTable(tpAniSirGlobal, tDot11fIEFHPattTable*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 55 (0x37)
typedef struct sDot11fIEFTInfo {
    tANI_U8          present;
    tANI_U16             reserved: 8;
    tANI_U16              IECount: 8;
    tANI_U8          MIC[16];
    tANI_U8          Anonce[32];
    tANI_U8          Snonce[32];
    tDot11fIER1KH_ID R1KH_ID;
    tDot11fIEGTK     GTK;
    tDot11fIER0KH_ID R0KH_ID;
    tDot11fIEIGTK    IGTK;
} tDot11fIEFTInfo;

#define DOT11F_EID_FTINFO ( 55 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_FTINFO_MIN_LEN ( 82 )

#define DOT11F_IE_FTINFO_MAX_LEN ( 220 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeFTInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFTInfo*);

tANI_U32 dot11fPackIeFTInfo(tpAniSirGlobal, tDot11fIEFTInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEFTInfo(tpAniSirGlobal, tDot11fIEFTInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 72 (0x48)
typedef struct sDot11fIEHT2040BSSCoexistence {
    tANI_U8      present;
    tANI_U8      infoRequest: 1;
    tANI_U8 fortyMHzIntolerant: 1;
    tANI_U8 twentyMHzBssWidthReq: 1;
    tANI_U8 obssScanExemptionReq: 1;
    tANI_U8 obssScanExemptionGrant: 1;
    tANI_U8           unused: 3;
} tDot11fIEHT2040BSSCoexistence;

#define DOT11F_EID_HT2040BSSCOEXISTENCE ( 72 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_HT2040BSSCOEXISTENCE_MIN_LEN ( 1 )

#define DOT11F_IE_HT2040BSSCOEXISTENCE_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeHT2040BSSCoexistence(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHT2040BSSCoexistence*);

tANI_U32 dot11fPackIeHT2040BSSCoexistence(tpAniSirGlobal, tDot11fIEHT2040BSSCoexistence*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEHT2040BSSCoexistence(tpAniSirGlobal, tDot11fIEHT2040BSSCoexistence*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 73 (0x49)
typedef struct sDot11fIEHT2040BSSIntolerantReport {
    tANI_U8      present;
    tANI_U8      operatingClass;
    tANI_U8      num_channelList;
    tANI_U8      channelList[50];
} tDot11fIEHT2040BSSIntolerantReport;

#define DOT11F_EID_HT2040BSSINTOLERANTREPORT ( 73 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_HT2040BSSINTOLERANTREPORT_MIN_LEN ( 1 )

#define DOT11F_IE_HT2040BSSINTOLERANTREPORT_MAX_LEN ( 51 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeHT2040BSSIntolerantReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHT2040BSSIntolerantReport*);

tANI_U32 dot11fPackIeHT2040BSSIntolerantReport(tpAniSirGlobal, tDot11fIEHT2040BSSIntolerantReport*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEHT2040BSSIntolerantReport(tpAniSirGlobal, tDot11fIEHT2040BSSIntolerantReport*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 45 (0x2d)
typedef struct sDot11fIEHTCaps {
    tANI_U8      present;
    tANI_U16     advCodingCap: 1;
    tANI_U16 supportedChannelWidthSet: 1;
    tANI_U16    mimoPowerSave: 2;
    tANI_U16       greenField: 1;
    tANI_U16     shortGI20MHz: 1;
    tANI_U16     shortGI40MHz: 1;
    tANI_U16           txSTBC: 1;
    tANI_U16           rxSTBC: 2;
    tANI_U16        delayedBA: 1;
    tANI_U16 maximalAMSDUsize: 1;
    tANI_U16 dsssCckMode40MHz: 1;
    tANI_U16             psmp: 1;
    tANI_U16 stbcControlFrame: 1;
    tANI_U16 lsigTXOPProtection: 1;
    tANI_U8 maxRxAMPDUFactor: 2;
    tANI_U8      mpduDensity: 3;
    tANI_U8        reserved1: 3;
    tANI_U8      supportedMCSSet[16];
    tANI_U16              pco: 1;
    tANI_U16   transitionTime: 2;
    tANI_U16        reserved2: 5;
    tANI_U16      mcsFeedback: 2;
    tANI_U16        reserved3: 6;
    tANI_U32             txBF: 1;
    tANI_U32 rxStaggeredSounding: 1;
    tANI_U32 txStaggeredSounding: 1;
    tANI_U32            rxZLF: 1;
    tANI_U32            txZLF: 1;
    tANI_U32     implicitTxBF: 1;
    tANI_U32      calibration: 2;
    tANI_U32  explicitCSITxBF: 1;
    tANI_U32 explicitUncompressedSteeringMatrix: 1;
    tANI_U32 explicitBFCSIFeedback: 3;
    tANI_U32 explicitUncompressedSteeringMatrixFeedback: 3;
    tANI_U32 explicitCompressedSteeringMatrixFeedback: 3;
    tANI_U32 csiNumBFAntennae: 2;
    tANI_U32 uncompressedSteeringMatrixBFAntennae: 2;
    tANI_U32 compressedSteeringMatrixBFAntennae: 2;
    tANI_U32        reserved4: 7;
    tANI_U8 antennaSelection: 1;
    tANI_U8 explicitCSIFeedbackTx: 1;
    tANI_U8 antennaIndicesFeedbackTx: 1;
    tANI_U8 explicitCSIFeedback: 1;
    tANI_U8 antennaIndicesFeedback: 1;
    tANI_U8             rxAS: 1;
    tANI_U8  txSoundingPPDUs: 1;
    tANI_U8        reserved5: 1;
    tANI_U8      num_rsvd;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeHTCaps(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHTCaps*);

tANI_U32 dot11fPackIeHTCaps(tpAniSirGlobal, tDot11fIEHTCaps*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEHTCaps(tpAniSirGlobal, tDot11fIEHTCaps*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 61 (0x3d)
typedef struct sDot11fIEHTInfo {
    tANI_U8      present;
    tANI_U8      primaryChannel;
    tANI_U8 secondaryChannelOffset: 2;
    tANI_U8 recommendedTxWidthSet: 1;
    tANI_U8         rifsMode: 1;
    tANI_U8 controlledAccessOnly: 1;
    tANI_U8 serviceIntervalGranularity: 3;
    tANI_U16           opMode: 2;
    tANI_U16 nonGFDevicesPresent: 1;
    tANI_U16 transmitBurstLimit: 1;
    tANI_U16 obssNonHTStaPresent: 1;
    tANI_U16         reserved: 11;
    tANI_U16     basicSTBCMCS: 7;
    tANI_U16 dualCTSProtection: 1;
    tANI_U16  secondaryBeacon: 1;
    tANI_U16 lsigTXOPProtectionFullSupport: 1;
    tANI_U16        pcoActive: 1;
    tANI_U16         pcoPhase: 1;
    tANI_U16        reserved2: 4;
    tANI_U8      basicMCSSet[16];
    tANI_U8      num_rsvd;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeHTInfo(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEHTInfo*);

tANI_U32 dot11fPackIeHTInfo(tpAniSirGlobal, tDot11fIEHTInfo*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEHTInfo(tpAniSirGlobal, tDot11fIEHTInfo*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 6 (0x06)
typedef struct sDot11fIEIBSSParams {
    tANI_U8      present;
    tANI_U16     atim;
} tDot11fIEIBSSParams;

#define DOT11F_EID_IBSSPARAMS ( 6 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_IBSSPARAMS_MIN_LEN ( 2 )

#define DOT11F_IE_IBSSPARAMS_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeIBSSParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEIBSSParams*);

tANI_U32 dot11fPackIeIBSSParams(tpAniSirGlobal, tDot11fIEIBSSParams*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEIBSSParams(tpAniSirGlobal, tDot11fIEIBSSParams*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 101 (0x65)
typedef struct sDot11fIELinkIdentifier {
    tANI_U8      present;
    tANI_U8      bssid[6];
    tANI_U8      InitStaAddr[6];
    tANI_U8      RespStaAddr[6];
} tDot11fIELinkIdentifier;

#define DOT11F_EID_LINKIDENTIFIER ( 101 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_LINKIDENTIFIER_MIN_LEN ( 18 )

#define DOT11F_IE_LINKIDENTIFIER_MAX_LEN ( 18 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeLinkIdentifier(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIELinkIdentifier*);

tANI_U32 dot11fPackIeLinkIdentifier(tpAniSirGlobal, tDot11fIELinkIdentifier*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIELinkIdentifier(tpAniSirGlobal, tDot11fIELinkIdentifier*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 39 (0x27)
typedef struct sDot11fIEMeasurementReport {
    tANI_U8      present;
    tANI_U8      token;
    tANI_U8             late: 1;
    tANI_U8        incapable: 1;
    tANI_U8          refused: 1;
    tANI_U8           unused: 5;
    tANI_U8      type;
    union
    {
        struct
        {
            tANI_U8 channel;
            tDOT11F_U64 meas_start_time;
            tANI_U16 meas_duration;
            tANI_U8            bss: 1;
            tANI_U8  ofdm_preamble: 1;
            tANI_U8    unid_signal: 1;
            tANI_U8          rader: 1;
            tANI_U8     unmeasured: 1;
            tANI_U8         unused: 3;
        } Basic; /* type = 0 */
        struct
        {
            tANI_U8 channel;
            tDOT11F_U64 meas_start_time;
            tANI_U16 meas_duration;
            tANI_U8 cca_busy_fraction;
        } CCA; /* type = 1 */
        struct
        {
            tANI_U8 channel;
            tDOT11F_U64 meas_start_time;
            tANI_U16 meas_duration;
            tANI_U8 rpi0_density;
            tANI_U8 rpi1_density;
            tANI_U8 rpi2_density;
            tANI_U8 rpi3_density;
            tANI_U8 rpi4_density;
            tANI_U8 rpi5_density;
            tANI_U8 rpi6_density;
            tANI_U8 rpi7_density;
        } RPIHistogram; /* type = 2 */
        struct
        {
            tANI_U8 regClass;
            tANI_U8 channel;
            tDOT11F_U64 meas_start_time;
            tANI_U16 meas_duration;
            tANI_U8        condensed_PHY: 7;
            tANI_U8  reported_frame_type: 1;
            tANI_U8 RCPI;
            tANI_U8 RSNI;
            tANI_U8 BSSID[6];
            tANI_U8 antenna_id;
            tANI_U32 parent_TSF;
    tDot11fIEBeaconReportFrmBody BeaconReportFrmBody;
        } Beacon; /* type = 5 */
    } report;
} tDot11fIEMeasurementReport;

#define DOT11F_EID_MEASUREMENTREPORT ( 39 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN ( 3 )

#define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN ( 29 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeMeasurementReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMeasurementReport*);

tANI_U32 dot11fPackIeMeasurementReport(tpAniSirGlobal, tDot11fIEMeasurementReport*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEMeasurementReport(tpAniSirGlobal, tDot11fIEMeasurementReport*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 38 (0x26)
typedef struct sDot11fIEMeasurementRequest {
    tANI_U8      present;
    tANI_U8      measurement_token;
    tANI_U8         parallel: 1;
    tANI_U8           enable: 1;
    tANI_U8          request: 1;
    tANI_U8           report: 1;
    tANI_U8 durationMandatory: 1;
    tANI_U8           unused: 3;
    tANI_U8      measurement_type;
    union
    {
        struct
        {
            tANI_U8 channel_no;
            tANI_U8 meas_start_time[8];
            tANI_U16 meas_duration;
        } Basic; /* measurement_type = 0 */
        struct
        {
            tANI_U8 channel_no;
            tANI_U8 meas_start_time[8];
            tANI_U16 meas_duration;
        } CCA; /* measurement_type = 1 */
        struct
        {
            tANI_U8 channel_no;
            tANI_U8 meas_start_time[8];
            tANI_U16 meas_duration;
        } RPIHistogram; /* measurement_type = 2 */
        struct
        {
            tANI_U8 regClass;
            tANI_U8 channel;
            tANI_U16 randomization;
            tANI_U16 meas_duration;
            tANI_U8 meas_mode;
            tANI_U8 BSSID[6];
    tDot11fIESSID SSID;
    tDot11fIEBeaconReporting BeaconReporting;
    tDot11fIEBcnReportingDetail BcnReportingDetail;
    tDot11fIERequestedInfo RequestedInfo;
    tANI_U16 num_APChannelReport;
    tDot11fIEAPChannelReport APChannelReport[2];
        } Beacon; /* measurement_type = 5 */
    } measurement_request;
} tDot11fIEMeasurementRequest;

#define DOT11F_EID_MEASUREMENTREQUEST ( 38 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN ( 14 )

#define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN ( 16 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeMeasurementRequest(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMeasurementRequest*);

tANI_U32 dot11fPackIeMeasurementRequest(tpAniSirGlobal, tDot11fIEMeasurementRequest*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEMeasurementRequest(tpAniSirGlobal, tDot11fIEMeasurementRequest*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 54 (0x36)
typedef struct sDot11fIEMobilityDomain {
    tANI_U8      present;
    tANI_U16     MDID;
    tANI_U8        overDSCap: 1;
    tANI_U8   resourceReqCap: 1;
    tANI_U8         reserved: 6;
} tDot11fIEMobilityDomain;

#define DOT11F_EID_MOBILITYDOMAIN ( 54 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN ( 3 )

#define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeMobilityDomain(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEMobilityDomain*);

tANI_U32 dot11fPackIeMobilityDomain(tpAniSirGlobal, tDot11fIEMobilityDomain*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEMobilityDomain(tpAniSirGlobal, tDot11fIEMobilityDomain*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 52 (0x34)
typedef struct sDot11fIENeighborReport {
    tANI_U8                      present;
    tANI_U8                      bssid[6];
    tANI_U8                   APReachability: 2;
    tANI_U8                         Security: 1;
    tANI_U8                         KeyScope: 1;
    tANI_U8                      SpecMgmtCap: 1;
    tANI_U8                           QosCap: 1;
    tANI_U8                             apsd: 1;
    tANI_U8                              rrm: 1;
    tANI_U8                        DelayedBA: 1;
    tANI_U8                            ImmBA: 1;
    tANI_U8                   MobilityDomain: 1;
    tANI_U8                         reserved: 5;
    tANI_U16                     reserved1;
    tANI_U8                      regulatoryClass;
    tANI_U8                      channel;
    tANI_U8                      PhyType;
    tDot11fIETSFInfo             TSFInfo;
    tDot11fIECondensedCountryStr CondensedCountryStr;
    tDot11fIEMeasurementPilot    MeasurementPilot;
    tDot11fIERRMEnabledCap       RRMEnabledCap;
    tDot11fIEMultiBssid          MultiBssid;
} tDot11fIENeighborReport;

#define DOT11F_EID_NEIGHBORREPORT ( 52 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_NEIGHBORREPORT_MIN_LEN ( 13 )

#define DOT11F_IE_NEIGHBORREPORT_MAX_LEN ( 546 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeNeighborReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIENeighborReport*);

tANI_U32 dot11fPackIeNeighborReport(tpAniSirGlobal, tDot11fIENeighborReport*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIENeighborReport(tpAniSirGlobal, tDot11fIENeighborReport*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 74 (0x4a)
typedef struct sDot11fIEOBSSScanParameters {
    tANI_U8      present;
    tANI_U16     obssScanPassiveDwell;
    tANI_U16     obssScanActiveDwell;
    tANI_U16     bssChannelWidthTriggerScanInterval;
    tANI_U16     obssScanPassiveTotalPerChannel;
    tANI_U16     obssScanActiveTotalPerChannel;
    tANI_U16     bssWidthChannelTransitionDelayFactor;
    tANI_U16     obssScanActivityThreshold;
} tDot11fIEOBSSScanParameters;

#define DOT11F_EID_OBSSSCANPARAMETERS ( 74 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_OBSSSCANPARAMETERS_MIN_LEN ( 14 )

#define DOT11F_IE_OBSSSCANPARAMETERS_MAX_LEN ( 14 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeOBSSScanParameters(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEOBSSScanParameters*);

tANI_U32 dot11fPackIeOBSSScanParameters(tpAniSirGlobal, tDot11fIEOBSSScanParameters*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEOBSSScanParameters(tpAniSirGlobal, tDot11fIEOBSSScanParameters*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 199 (0xc7)
typedef struct sDot11fIEOperatingMode {
    tANI_U8      present;
    tANI_U8        chanWidth: 2;
    tANI_U8         reserved: 2;
    tANI_U8            rxNSS: 3;
    tANI_U8        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++ */
tANI_U32 dot11fUnpackIeOperatingMode(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEOperatingMode*);

tANI_U32 dot11fPackIeOperatingMode(tpAniSirGlobal, tDot11fIEOperatingMode*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEOperatingMode(tpAniSirGlobal, tDot11fIEOperatingMode*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PAssocReq {
    tANI_U8      present;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVExtendedListenTiming ExtendedListenTiming;
    tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
} tDot11fIEP2PAssocReq;

#define DOT11F_EID_P2PASSOCREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PASSOCREQ_MIN_LEN ( 4 )

#define DOT11F_IE_P2PASSOCREQ_MAX_LEN ( 71 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PAssocReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PAssocReq*);

tANI_U32 dot11fPackIeP2PAssocReq(tpAniSirGlobal, tDot11fIEP2PAssocReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PAssocReq(tpAniSirGlobal, tDot11fIEP2PAssocReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PAssocRes {
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeP2PAssocRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PAssocRes*);

tANI_U32 dot11fPackIeP2PAssocRes(tpAniSirGlobal, tDot11fIEP2PAssocRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PAssocRes(tpAniSirGlobal, tDot11fIEP2PAssocRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PBeacon {
    tANI_U8      present;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVP2PDeviceId P2PDeviceId;
    tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
} tDot11fIEP2PBeacon;

#define DOT11F_EID_P2PBEACON ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PBEACON_MIN_LEN ( 4 )

#define DOT11F_IE_P2PBEACON_MAX_LEN ( 59 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PBeacon(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PBeacon*);

tANI_U32 dot11fPackIeP2PBeacon(tpAniSirGlobal, tDot11fIEP2PBeacon*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PBeacon(tpAniSirGlobal, tDot11fIEP2PBeacon*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PBeaconProbeRes {
    tANI_U8      present;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVP2PDeviceId P2PDeviceId;
    tDot11fTLVExtendedListenTiming ExtendedListenTiming;
    tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
    tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
    tDot11fTLVP2PGroupInfo P2PGroupInfo;
} tDot11fIEP2PBeaconProbeRes;

#define DOT11F_EID_P2PBEACONPROBERES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN ( 4 )

#define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN ( 1148 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PBeaconProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PBeaconProbeRes*);

tANI_U32 dot11fPackIeP2PBeaconProbeRes(tpAniSirGlobal, tDot11fIEP2PBeaconProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PBeaconProbeRes(tpAniSirGlobal, tDot11fIEP2PBeaconProbeRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PDeAuth {
    tANI_U8      present;
    tDot11fTLVMinorReasonCode MinorReasonCode;
} tDot11fIEP2PDeAuth;

#define DOT11F_EID_P2PDEAUTH ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PDEAUTH_MIN_LEN ( 4 )

#define DOT11F_IE_P2PDEAUTH_MAX_LEN ( 8 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PDeAuth(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDeAuth*);

tANI_U32 dot11fPackIeP2PDeAuth(tpAniSirGlobal, tDot11fIEP2PDeAuth*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PDeAuth(tpAniSirGlobal, tDot11fIEP2PDeAuth*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PDeviceDiscoverabilityReq {
    tANI_U8      present;
    tDot11fTLVP2PDeviceId P2PDeviceId;
    tDot11fTLVP2PGroupId P2PGroupId;
} tDot11fIEP2PDeviceDiscoverabilityReq;

#define DOT11F_EID_P2PDEVICEDISCOVERABILITYREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PDEVICEDISCOVERABILITYREQ_MIN_LEN ( 4 )

#define DOT11F_IE_P2PDEVICEDISCOVERABILITYREQ_MAX_LEN ( 54 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PDeviceDiscoverabilityReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDeviceDiscoverabilityReq*);

tANI_U32 dot11fPackIeP2PDeviceDiscoverabilityReq(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PDeviceDiscoverabilityReq(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PDeviceDiscoverabilityRes {
    tANI_U8      present;
    tDot11fTLVP2PStatus P2PStatus;
} tDot11fIEP2PDeviceDiscoverabilityRes;

#define DOT11F_EID_P2PDEVICEDISCOVERABILITYRES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PDEVICEDISCOVERABILITYRES_MIN_LEN ( 4 )

#define DOT11F_IE_P2PDEVICEDISCOVERABILITYRES_MAX_LEN ( 8 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PDeviceDiscoverabilityRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDeviceDiscoverabilityRes*);

tANI_U32 dot11fPackIeP2PDeviceDiscoverabilityRes(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PDeviceDiscoverabilityRes(tpAniSirGlobal, tDot11fIEP2PDeviceDiscoverabilityRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PDisAssoc {
    tANI_U8      present;
    tDot11fTLVMinorReasonCode MinorReasonCode;
} tDot11fIEP2PDisAssoc;

#define DOT11F_EID_P2PDISASSOC ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PDISASSOC_MIN_LEN ( 4 )

#define DOT11F_IE_P2PDISASSOC_MAX_LEN ( 8 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PDisAssoc(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PDisAssoc*);

tANI_U32 dot11fPackIeP2PDisAssoc(tpAniSirGlobal, tDot11fIEP2PDisAssoc*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PDisAssoc(tpAniSirGlobal, tDot11fIEP2PDisAssoc*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PGONegCnf {
    tANI_U8      present;
    tDot11fTLVP2PStatus P2PStatus;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVOperatingChannel OperatingChannel;
    tDot11fTLVChannelList ChannelList;
    tDot11fTLVP2PGroupId P2PGroupId;
} tDot11fIEP2PGONegCnf;

#define DOT11F_EID_P2PGONEGCNF ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PGONEGCNF_MIN_LEN ( 4 )

#define DOT11F_IE_P2PGONEGCNF_MAX_LEN ( 319 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PGONegCnf(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegCnf*);

tANI_U32 dot11fPackIeP2PGONegCnf(tpAniSirGlobal, tDot11fIEP2PGONegCnf*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PGONegCnf(tpAniSirGlobal, tDot11fIEP2PGONegCnf*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PGONegReq {
    tANI_U8      present;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVGOIntent GOIntent;
    tDot11fTLVConfigurationTimeout ConfigurationTimeout;
    tDot11fTLVListenChannel ListenChannel;
    tDot11fTLVExtendedListenTiming ExtendedListenTiming;
    tDot11fTLVIntendedP2PInterfaceAddress IntendedP2PInterfaceAddress;
    tDot11fTLVChannelList ChannelList;
    tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
    tDot11fTLVOperatingChannel OperatingChannel;
} tDot11fIEP2PGONegReq;

#define DOT11F_EID_P2PGONEGREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PGONEGREQ_MIN_LEN ( 4 )

#define DOT11F_IE_P2PGONEGREQ_MAX_LEN ( 362 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PGONegReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegReq*);

tANI_U32 dot11fPackIeP2PGONegReq(tpAniSirGlobal, tDot11fIEP2PGONegReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PGONegReq(tpAniSirGlobal, tDot11fIEP2PGONegReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PGONegRes {
    tANI_U8      present;
    tDot11fTLVP2PStatus P2PStatus;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVGOIntent GOIntent;
    tDot11fTLVConfigurationTimeout ConfigurationTimeout;
    tDot11fTLVOperatingChannel OperatingChannel;
    tDot11fTLVIntendedP2PInterfaceAddress IntendedP2PInterfaceAddress;
    tDot11fTLVChannelList ChannelList;
    tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
    tDot11fTLVP2PGroupId P2PGroupId;
} tDot11fIEP2PGONegRes;

#define DOT11F_EID_P2PGONEGRES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PGONEGRES_MIN_LEN ( 4 )

#define DOT11F_IE_P2PGONEGRES_MAX_LEN ( 392 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PGONegRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegRes*);

tANI_U32 dot11fPackIeP2PGONegRes(tpAniSirGlobal, tDot11fIEP2PGONegRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PGONegRes(tpAniSirGlobal, tDot11fIEP2PGONegRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEP2PGONegWPS {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVDevicePasswordID DevicePasswordID;
} tDot11fIEP2PGONegWPS;

#define DOT11F_EID_P2PGONEGWPS ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PGONEGWPS_MIN_LEN ( 4 )

#define DOT11F_IE_P2PGONEGWPS_MAX_LEN ( 15 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PGONegWPS(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PGONegWPS*);

tANI_U32 dot11fPackIeP2PGONegWPS(tpAniSirGlobal, tDot11fIEP2PGONegWPS*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PGONegWPS(tpAniSirGlobal, tDot11fIEP2PGONegWPS*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09}
typedef struct sDot11fIEP2PIEOpaque {
    tANI_U8      present;
    tANI_U8      num_data;
    tANI_U8      data[249];
} tDot11fIEP2PIEOpaque;

#define DOT11F_EID_P2PIEOPAQUE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PIEOPAQUE_MIN_LEN ( 6 )

#define DOT11F_IE_P2PIEOPAQUE_MAX_LEN ( 253 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PIEOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PIEOpaque*);

tANI_U32 dot11fPackIeP2PIEOpaque(tpAniSirGlobal, tDot11fIEP2PIEOpaque*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PIEOpaque(tpAniSirGlobal, tDot11fIEP2PIEOpaque*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PInvitationReq {
    tANI_U8      present;
    tDot11fTLVConfigurationTimeout ConfigurationTimeout;
    tDot11fTLVInvitationFlags InvitationFlags;
    tDot11fTLVOperatingChannel OperatingChannel;
    tDot11fTLVP2PGroupBssid P2PGroupBssid;
    tDot11fTLVChannelList ChannelList;
    tDot11fTLVP2PGroupId P2PGroupId;
    tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
} tDot11fIEP2PInvitationReq;

#define DOT11F_EID_P2PINVITATIONREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PINVITATIONREQ_MIN_LEN ( 4 )

#define DOT11F_IE_P2PINVITATIONREQ_MAX_LEN ( 383 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PInvitationReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PInvitationReq*);

tANI_U32 dot11fPackIeP2PInvitationReq(tpAniSirGlobal, tDot11fIEP2PInvitationReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PInvitationReq(tpAniSirGlobal, tDot11fIEP2PInvitationReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PInvitationRes {
    tANI_U8      present;
    tDot11fTLVP2PStatus P2PStatus;
    tDot11fTLVConfigurationTimeout ConfigurationTimeout;
    tDot11fTLVOperatingChannel OperatingChannel;
    tDot11fTLVP2PGroupBssid P2PGroupBssid;
    tDot11fTLVChannelList ChannelList;
} tDot11fIEP2PInvitationRes;

#define DOT11F_EID_P2PINVITATIONRES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PINVITATIONRES_MIN_LEN ( 4 )

#define DOT11F_IE_P2PINVITATIONRES_MAX_LEN ( 287 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PInvitationRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PInvitationRes*);

tANI_U32 dot11fPackIeP2PInvitationRes(tpAniSirGlobal, tDot11fIEP2PInvitationRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PInvitationRes(tpAniSirGlobal, tDot11fIEP2PInvitationRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PNoticeOfAbsence {
    tANI_U8      present;
    tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
} tDot11fIEP2PNoticeOfAbsence;

#define DOT11F_EID_P2PNOTICEOFABSENCE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PNOTICEOFABSENCE_MIN_LEN ( 4 )

#define DOT11F_IE_P2PNOTICEOFABSENCE_MAX_LEN ( 45 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PNoticeOfAbsence(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PNoticeOfAbsence*);

tANI_U32 dot11fPackIeP2PNoticeOfAbsence(tpAniSirGlobal, tDot11fIEP2PNoticeOfAbsence*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PNoticeOfAbsence(tpAniSirGlobal, tDot11fIEP2PNoticeOfAbsence*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PPresenceResponse {
    tANI_U8      present;
    tDot11fTLVP2PStatus P2PStatus;
    tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
} tDot11fIEP2PPresenceResponse;

#define DOT11F_EID_P2PPRESENCERESPONSE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PPRESENCERESPONSE_MIN_LEN ( 4 )

#define DOT11F_IE_P2PPRESENCERESPONSE_MAX_LEN ( 49 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PPresenceResponse(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PPresenceResponse*);

tANI_U32 dot11fPackIeP2PPresenceResponse(tpAniSirGlobal, tDot11fIEP2PPresenceResponse*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PPresenceResponse(tpAniSirGlobal, tDot11fIEP2PPresenceResponse*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PProbeReq {
    tANI_U8      present;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVP2PDeviceId P2PDeviceId;
    tDot11fTLVListenChannel ListenChannel;
    tDot11fTLVExtendedListenTiming ExtendedListenTiming;
    tDot11fTLVOperatingChannel OperatingChannel;
} tDot11fIEP2PProbeReq;

#define DOT11F_EID_P2PPROBEREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PPROBEREQ_MIN_LEN ( 4 )

#define DOT11F_IE_P2PPROBEREQ_MAX_LEN ( 41 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PProbeReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PProbeReq*);

tANI_U32 dot11fPackIeP2PProbeReq(tpAniSirGlobal, tDot11fIEP2PProbeReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PProbeReq(tpAniSirGlobal, tDot11fIEP2PProbeReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PProbeRes {
    tANI_U8      present;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVExtendedListenTiming ExtendedListenTiming;
    tDot11fTLVNoticeOfAbsence NoticeOfAbsence;
    tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
    tDot11fTLVP2PGroupInfo P2PGroupInfo;
} tDot11fIEP2PProbeRes;

#define DOT11F_EID_P2PPROBERES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PPROBERES_MIN_LEN ( 4 )

#define DOT11F_IE_P2PPROBERES_MAX_LEN ( 1139 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PProbeRes*);

tANI_U32 dot11fPackIeP2PProbeRes(tpAniSirGlobal, tDot11fIEP2PProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PProbeRes(tpAniSirGlobal, tDot11fIEP2PProbeRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
typedef struct sDot11fIEP2PProvisionDiscoveryReq {
    tANI_U8      present;
    tDot11fTLVP2PCapability P2PCapability;
    tDot11fTLVP2PDeviceInfo P2PDeviceInfo;
    tDot11fTLVP2PGroupId P2PGroupId;
} tDot11fIEP2PProvisionDiscoveryReq;

#define DOT11F_EID_P2PPROVISIONDISCOVERYREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PPROVISIONDISCOVERYREQ_MIN_LEN ( 4 )

#define DOT11F_IE_P2PPROVISIONDISCOVERYREQ_MAX_LEN ( 105 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PProvisionDiscoveryReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PProvisionDiscoveryReq*);

tANI_U32 dot11fPackIeP2PProvisionDiscoveryReq(tpAniSirGlobal, tDot11fIEP2PProvisionDiscoveryReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PProvisionDiscoveryReq(tpAniSirGlobal, tDot11fIEP2PProvisionDiscoveryReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEP2PWSCProvisionDiscoveryRes {
    tANI_U8      present;
    tDot11fTLVConfigMethods ConfigMethods;
} tDot11fIEP2PWSCProvisionDiscoveryRes;

#define DOT11F_EID_P2PWSCPROVISIONDISCOVERYRES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_P2PWSCPROVISIONDISCOVERYRES_MIN_LEN ( 4 )

#define DOT11F_IE_P2PWSCPROVISIONDISCOVERYRES_MAX_LEN ( 10 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeP2PWSCProvisionDiscoveryRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEP2PWSCProvisionDiscoveryRes*);

tANI_U32 dot11fPackIeP2PWSCProvisionDiscoveryRes(tpAniSirGlobal, tDot11fIEP2PWSCProvisionDiscoveryRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEP2PWSCProvisionDiscoveryRes(tpAniSirGlobal, tDot11fIEP2PWSCProvisionDiscoveryRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 105 (0x69)
typedef struct sDot11fIEPTIControl {
    tANI_U8      present;
    tANI_U8      tid;
    tANI_U16     sequence_control;
} tDot11fIEPTIControl;

#define DOT11F_EID_PTICONTROL ( 105 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PTICONTROL_MIN_LEN ( 3 )

#define DOT11F_IE_PTICONTROL_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePTIControl(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPTIControl*);

tANI_U32 dot11fPackIePTIControl(tpAniSirGlobal, tDot11fIEPTIControl*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPTIControl(tpAniSirGlobal, tDot11fIEPTIControl*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 106 (0x6a)
typedef struct sDot11fIEPUBufferStatus {
    tANI_U8      present;
    tANI_U8 ac_bk_traffic_aval: 1;
    tANI_U8 ac_be_traffic_aval: 1;
    tANI_U8 ac_vi_traffic_aval: 1;
    tANI_U8 ac_vo_traffic_aval: 1;
    tANI_U8         reserved: 4;
} tDot11fIEPUBufferStatus;

#define DOT11F_EID_PUBUFFERSTATUS ( 106 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_PUBUFFERSTATUS_MIN_LEN ( 1 )

#define DOT11F_IE_PUBUFFERSTATUS_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePUBufferStatus(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPUBufferStatus*);

tANI_U32 dot11fPackIePUBufferStatus(tpAniSirGlobal, tDot11fIEPUBufferStatus*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPUBufferStatus(tpAniSirGlobal, tDot11fIEPUBufferStatus*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 33 (0x21)
typedef struct sDot11fIEPowerCaps {
    tANI_U8      present;
    tANI_U8      minTxPower;
    tANI_U8      maxTxPower;
} tDot11fIEPowerCaps;

#define DOT11F_EID_POWERCAPS ( 33 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_POWERCAPS_MIN_LEN ( 2 )

#define DOT11F_IE_POWERCAPS_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePowerCaps(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPowerCaps*);

tANI_U32 dot11fPackIePowerCaps(tpAniSirGlobal, tDot11fIEPowerCaps*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPowerCaps(tpAniSirGlobal, tDot11fIEPowerCaps*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 32 (0x20)
typedef struct sDot11fIEPowerConstraints {
    tANI_U8      present;
    tANI_U8      localPowerConstraints;
} tDot11fIEPowerConstraints;

#define DOT11F_EID_POWERCONSTRAINTS ( 32 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN ( 1 )

#define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIePowerConstraints(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEPowerConstraints*);

tANI_U32 dot11fPackIePowerConstraints(tpAniSirGlobal, tDot11fIEPowerConstraints*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEPowerConstraints(tpAniSirGlobal, tDot11fIEPowerConstraints*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 11 (0x0b)
typedef struct sDot11fIEQBSSLoad {
    tANI_U8      present;
    tANI_U16     stacount;
    tANI_U8      chautil;
    tANI_U16     avail;
} tDot11fIEQBSSLoad;

#define DOT11F_EID_QBSSLOAD ( 11 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_QBSSLOAD_MIN_LEN ( 5 )

#define DOT11F_IE_QBSSLOAD_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeQBSSLoad(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQBSSLoad*);

tANI_U32 dot11fPackIeQBSSLoad(tpAniSirGlobal, tDot11fIEQBSSLoad*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEQBSSLoad(tpAniSirGlobal, tDot11fIEQBSSLoad*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 46 (0x2e)
typedef struct sDot11fIEQOSCapsAp {
    tANI_U8      present;
    tANI_U8            count: 4;
    tANI_U8             qack: 1;
    tANI_U8             qreq: 1;
    tANI_U8          txopreq: 1;
    tANI_U8         reserved: 1;
} tDot11fIEQOSCapsAp;

#define DOT11F_EID_QOSCAPSAP ( 46 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_QOSCAPSAP_MIN_LEN ( 1 )

#define DOT11F_IE_QOSCAPSAP_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeQOSCapsAp(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQOSCapsAp*);

tANI_U32 dot11fPackIeQOSCapsAp(tpAniSirGlobal, tDot11fIEQOSCapsAp*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEQOSCapsAp(tpAniSirGlobal, tDot11fIEQOSCapsAp*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 46 (0x2e)
typedef struct sDot11fIEQOSCapsStation {
    tANI_U8      present;
    tANI_U8       acvo_uapsd: 1;
    tANI_U8       acvi_uapsd: 1;
    tANI_U8       acbk_uapsd: 1;
    tANI_U8       acbe_uapsd: 1;
    tANI_U8             qack: 1;
    tANI_U8    max_sp_length: 2;
    tANI_U8    more_data_ack: 1;
} tDot11fIEQOSCapsStation;

#define DOT11F_EID_QOSCAPSSTATION ( 46 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_QOSCAPSSTATION_MIN_LEN ( 1 )

#define DOT11F_IE_QOSCAPSSTATION_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeQOSCapsStation(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQOSCapsStation*);

tANI_U32 dot11fPackIeQOSCapsStation(tpAniSirGlobal, tDot11fIEQOSCapsStation*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEQOSCapsStation(tpAniSirGlobal, tDot11fIEQOSCapsStation*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 110 (0x6e)
typedef struct sDot11fIEQosMapSet {
    tANI_U8      present;
    tANI_U8      num_dscp_exceptions;
    tANI_U8      dscp_exceptions[60];
} tDot11fIEQosMapSet;

#define DOT11F_EID_QOSMAPSET ( 110 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_QOSMAPSET_MIN_LEN ( 0 )

#define DOT11F_IE_QOSMAPSET_MAX_LEN ( 60 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeQosMapSet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQosMapSet*);

tANI_U32 dot11fPackIeQosMapSet(tpAniSirGlobal, tDot11fIEQosMapSet*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEQosMapSet(tpAniSirGlobal, tDot11fIEQosMapSet*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 40 (0x28)
typedef struct sDot11fIEQuiet {
    tANI_U8      present;
    tANI_U8      count;
    tANI_U8      period;
    tANI_U16     duration;
    tANI_U16     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++ */
tANI_U32 dot11fUnpackIeQuiet(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEQuiet*);

tANI_U32 dot11fPackIeQuiet(tpAniSirGlobal, tDot11fIEQuiet*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEQuiet(tpAniSirGlobal, tDot11fIEQuiet*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 53 (0x35)
typedef struct sDot11fIERCPIIE {
    tANI_U8      present;
    tANI_U8      rcpi;
} tDot11fIERCPIIE;

#define DOT11F_EID_RCPIIE ( 53 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_RCPIIE_MIN_LEN ( 1 )

#define DOT11F_IE_RCPIIE_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRCPIIE(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERCPIIE*);

tANI_U32 dot11fPackIeRCPIIE(tpAniSirGlobal, tDot11fIERCPIIE*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERCPIIE(tpAniSirGlobal, tDot11fIERCPIIE*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 57 (0x39)
typedef struct sDot11fIERICDataDesc {
    tANI_U8                present;
    tDot11fIERICData       RICData;
    tDot11fIERICDescriptor RICDescriptor;
    tDot11fIETSPEC         TSPEC;
    tANI_U16               num_TCLAS;
    tDot11fIETCLAS         TCLAS[2];
    tDot11fIETCLASSPROC    TCLASSPROC;
    tDot11fIETSDelay       TSDelay;
    tDot11fIESchedule      Schedule;
    tDot11fIEWMMTSPEC      WMMTSPEC;
    tANI_U16               num_WMMTCLAS;
    tDot11fIEWMMTCLAS      WMMTCLAS[2];
    tDot11fIEWMMTCLASPROC  WMMTCLASPROC;
    tDot11fIEWMMTSDelay    WMMTSDelay;
    tDot11fIEWMMSchedule   WMMSchedule;
} tDot11fIERICDataDesc;

#define DOT11F_EID_RICDATADESC ( 57 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_RICDATADESC_MIN_LEN ( 0 )

#define DOT11F_IE_RICDATADESC_MAX_LEN ( 548 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRICDataDesc(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERICDataDesc*);

tANI_U32 dot11fPackIeRICDataDesc(tpAniSirGlobal, tDot11fIERICDataDesc*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERICDataDesc(tpAniSirGlobal, tDot11fIERICDataDesc*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 48 (0x30)
typedef struct sDot11fIERSN {
    tANI_U8      present;
    tANI_U16     version /* Must be 1! */;
    tANI_U8      gp_cipher_suite_present;
    tANI_U8      gp_cipher_suite[4];
    tANI_U16     pwise_cipher_suite_count;
    tANI_U8      pwise_cipher_suites[4][4];
    tANI_U16     akm_suite_cnt;
    tANI_U8      akm_suite[4][4];
    tANI_U8      RSN_Cap_present;
    tANI_U8      RSN_Cap[2];
    tANI_U16     pmkid_count;
    tANI_U8      pmkid[4][16];
    tANI_U8      gp_mgmt_cipher_suite_present;
    tANI_U8      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 ( 114 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRSN(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERSN*);

tANI_U32 dot11fPackIeRSN(tpAniSirGlobal, tDot11fIERSN*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERSN(tpAniSirGlobal, tDot11fIERSN*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 65 (0x41)
typedef struct sDot11fIERSNIIE {
    tANI_U8      present;
    tANI_U8      rsni;
} tDot11fIERSNIIE;

#define DOT11F_EID_RSNIIE ( 65 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_RSNIIE_MIN_LEN ( 1 )

#define DOT11F_IE_RSNIIE_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRSNIIE(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERSNIIE*);

tANI_U32 dot11fPackIeRSNIIE(tpAniSirGlobal, tDot11fIERSNIIE*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERSNIIE(tpAniSirGlobal, tDot11fIERSNIIE*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 48 (0x30)
typedef struct sDot11fIERSNOpaque {
    tANI_U8      present;
    tANI_U8      num_data;
    tANI_U8      data[253];
} tDot11fIERSNOpaque;

#define DOT11F_EID_RSNOPAQUE ( 48 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_RSNOPAQUE_MIN_LEN ( 0 )

#define DOT11F_IE_RSNOPAQUE_MAX_LEN ( 253 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeRSNOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIERSNOpaque*);

tANI_U32 dot11fPackIeRSNOpaque(tpAniSirGlobal, tDot11fIERSNOpaque*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIERSNOpaque(tpAniSirGlobal, tDot11fIERSNOpaque*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 36 (0x24)
typedef struct sDot11fIESuppChannels {
    tANI_U8      present;
    tANI_U8      num_bands;
    tANI_U8      bands[48][2];
} tDot11fIESuppChannels;

#define DOT11F_EID_SUPPCHANNELS ( 36 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_SUPPCHANNELS_MIN_LEN ( 0 )

#define DOT11F_IE_SUPPCHANNELS_MAX_LEN ( 96 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeSuppChannels(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESuppChannels*);

tANI_U32 dot11fPackIeSuppChannels(tpAniSirGlobal, tDot11fIESuppChannels*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIESuppChannels(tpAniSirGlobal, tDot11fIESuppChannels*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 59 (0x3b)
typedef struct sDot11fIESuppOperatingClasses {
    tANI_U8      present;
    tANI_U8      num_classes;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeSuppOperatingClasses(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESuppOperatingClasses*);

tANI_U32 dot11fPackIeSuppOperatingClasses(tpAniSirGlobal, tDot11fIESuppOperatingClasses*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIESuppOperatingClasses(tpAniSirGlobal, tDot11fIESuppOperatingClasses*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 1 (0x01)
typedef struct sDot11fIESuppRates {
    tANI_U8      present;
    tANI_U8      num_rates;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeSuppRates(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIESuppRates*);

tANI_U32 dot11fPackIeSuppRates(tpAniSirGlobal, tDot11fIESuppRates*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIESuppRates(tpAniSirGlobal, tDot11fIESuppRates*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 5 (0x05)
typedef struct sDot11fIETIM {
    tANI_U8      present;
    tANI_U8      dtim_count;
    tANI_U8      dtim_period;
    tANI_U8      bmpctl;
    tANI_U8      num_vbmp;
    tANI_U8      vbmp[251];
} tDot11fIETIM;

#define DOT11F_EID_TIM ( 5 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TIM_MIN_LEN ( 4 )

#define DOT11F_IE_TIM_MAX_LEN ( 254 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTIM(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETIM*);

tANI_U32 dot11fPackIeTIM(tpAniSirGlobal, tDot11fIETIM*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETIM(tpAniSirGlobal, tDot11fIETIM*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 35 (0x23)
typedef struct sDot11fIETPCReport {
    tANI_U8      present;
    tANI_U8      tx_power;
    tANI_U8      link_margin;
} tDot11fIETPCReport;

#define DOT11F_EID_TPCREPORT ( 35 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TPCREPORT_MIN_LEN ( 2 )

#define DOT11F_IE_TPCREPORT_MAX_LEN ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTPCReport(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETPCReport*);

tANI_U32 dot11fPackIeTPCReport(tpAniSirGlobal, tDot11fIETPCReport*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETPCReport(tpAniSirGlobal, tDot11fIETPCReport*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 34 (0x22)
typedef struct sDot11fIETPCRequest {
    tANI_U8      present;
} tDot11fIETPCRequest;

#define DOT11F_EID_TPCREQUEST ( 34 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TPCREQUEST_MIN_LEN ( 0 )

#define DOT11F_IE_TPCREQUEST_MAX_LEN ( 0 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTPCRequest(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETPCRequest*);

tANI_U32 dot11fPackIeTPCRequest(tpAniSirGlobal, tDot11fIETPCRequest*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETPCRequest(tpAniSirGlobal, tDot11fIETPCRequest*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 56 (0x38)
typedef struct sDot11fIETimeoutInterval {
    tANI_U8      present;
    tANI_U8      timeoutType;
    tANI_U32     timeoutValue;
} tDot11fIETimeoutInterval;

#define DOT11F_EID_TIMEOUTINTERVAL ( 56 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN ( 5 )

#define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeTimeoutInterval(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETimeoutInterval*);

tANI_U32 dot11fPackIeTimeoutInterval(tpAniSirGlobal, tDot11fIETimeoutInterval*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIETimeoutInterval(tpAniSirGlobal, tDot11fIETimeoutInterval*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 191 (0xbf)
typedef struct sDot11fIEVHTCaps {
    tANI_U8      present;
    tANI_U32       maxMPDULen: 2;
    tANI_U32 supportedChannelWidthSet: 2;
    tANI_U32    ldpcCodingCap: 1;
    tANI_U32     shortGI80MHz: 1;
    tANI_U32 shortGI160and80plus80MHz: 1;
    tANI_U32           txSTBC: 1;
    tANI_U32           rxSTBC: 3;
    tANI_U32  suBeamFormerCap: 1;
    tANI_U32  suBeamformeeCap: 1;
    tANI_U32 csnofBeamformerAntSup: 3;
    tANI_U32   numSoundingDim: 3;
    tANI_U32  muBeamformerCap: 1;
    tANI_U32  muBeamformeeCap: 1;
    tANI_U32        vhtTXOPPS: 1;
    tANI_U32        htcVHTCap: 1;
    tANI_U32   maxAMPDULenExp: 3;
    tANI_U32  vhtLinkAdaptCap: 2;
    tANI_U32     rxAntPattern: 1;
    tANI_U32     txAntPattern: 1;
    tANI_U32        reserved1: 2;
    tANI_U16     rxMCSMap;
    tANI_U16 rxHighSupDataRate: 13;
    tANI_U16        reserved2: 3;
    tANI_U16     txMCSMap;
    tANI_U16    txSupDataRate: 13;
    tANI_U16        reserved3: 3;
} tDot11fIEVHTCaps;

#define DOT11F_EID_VHTCAPS ( 191 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_VHTCAPS_MIN_LEN ( 12 )

#define DOT11F_IE_VHTCAPS_MAX_LEN ( 12 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeVHTCaps(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEVHTCaps*);

tANI_U32 dot11fPackIeVHTCaps(tpAniSirGlobal, tDot11fIEVHTCaps*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEVHTCaps(tpAniSirGlobal, tDot11fIEVHTCaps*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 193 (0xc1)
typedef struct sDot11fIEVHTExtBssLoad {
    tANI_U8      present;
    tANI_U8      muMIMOCapStaCount;
    tANI_U8      ssUnderUtil;
    tANI_U8      FortyMHzUtil;
    tANI_U8      EightyMHzUtil;
    tANI_U8      OneSixtyMHzUtil;
} tDot11fIEVHTExtBssLoad;

#define DOT11F_EID_VHTEXTBSSLOAD ( 193 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_VHTEXTBSSLOAD_MIN_LEN ( 5 )

#define DOT11F_IE_VHTEXTBSSLOAD_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeVHTExtBssLoad(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEVHTExtBssLoad*);

tANI_U32 dot11fPackIeVHTExtBssLoad(tpAniSirGlobal, tDot11fIEVHTExtBssLoad*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEVHTExtBssLoad(tpAniSirGlobal, tDot11fIEVHTExtBssLoad*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 192 (0xc0)
typedef struct sDot11fIEVHTOperation {
    tANI_U8      present;
    tANI_U8      chanWidth;
    tANI_U8      chanCenterFreqSeg1;
    tANI_U8      chanCenterFreqSeg2;
    tANI_U16     basicMCSSet;
} tDot11fIEVHTOperation;

#define DOT11F_EID_VHTOPERATION ( 192 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_VHTOPERATION_MIN_LEN ( 5 )

#define DOT11F_IE_VHTOPERATION_MAX_LEN ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeVHTOperation(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEVHTOperation*);

tANI_U32 dot11fPackIeVHTOperation(tpAniSirGlobal, tDot11fIEVHTOperation*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEVHTOperation(tpAniSirGlobal, tDot11fIEVHTOperation*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 68 (0x44)
typedef struct sDot11fIEWAPI {
    tANI_U8      present;
    tANI_U16     version /* Must be 1! */;
    tANI_U16     akm_suite_count;
    tANI_U8      akm_suites[4][4];
    tANI_U16     unicast_cipher_suite_count;
    tANI_U8      unicast_cipher_suites[4][4];
    tANI_U8      multicast_cipher_suite[4];
    tANI_U16          preauth: 1;
    tANI_U16         reserved: 15;
    tANI_U16     bkid_count;
    tANI_U8      bkid[4][16];
} tDot11fIEWAPI;

#define DOT11F_EID_WAPI ( 68 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WAPI_MIN_LEN ( 12 )

#define DOT11F_IE_WAPI_MAX_LEN ( 110 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWAPI(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWAPI*);

tANI_U32 dot11fPackIeWAPI(tpAniSirGlobal, tDot11fIEWAPI*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWAPI(tpAniSirGlobal, tDot11fIEWAPI*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 68 (0x44)
typedef struct sDot11fIEWAPIOpaque {
    tANI_U8      present;
    tANI_U8      num_data;
    tANI_U8      data[253];
} tDot11fIEWAPIOpaque;

#define DOT11F_EID_WAPIOPAQUE ( 68 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WAPIOPAQUE_MIN_LEN ( 6 )

#define DOT11F_IE_WAPIOPAQUE_MAX_LEN ( 253 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWAPIOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWAPIOpaque*);

tANI_U32 dot11fPackIeWAPIOpaque(tpAniSirGlobal, tDot11fIEWAPIOpaque*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWAPIOpaque(tpAniSirGlobal, tDot11fIEWAPIOpaque*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00}
typedef struct sDot11fIEWFATPC {
    tANI_U8      present;
    tANI_U8      txPower;
    tANI_U8      linkMargin;
} tDot11fIEWFATPC;

#define DOT11F_EID_WFATPC ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WFATPC_MIN_LEN ( 7 )

#define DOT11F_IE_WFATPC_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWFATPC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWFATPC*);

tANI_U32 dot11fPackIeWFATPC(tpAniSirGlobal, tDot11fIEWFATPC*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWFATPC(tpAniSirGlobal, tDot11fIEWFATPC*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x0a}
typedef struct sDot11fIEWFDIEOpaque {
    tANI_U8      present;
    tANI_U8      num_data;
    tANI_U8      data[249];
} tDot11fIEWFDIEOpaque;

#define DOT11F_EID_WFDIEOPAQUE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WFDIEOPAQUE_MIN_LEN ( 6 )

#define DOT11F_IE_WFDIEOPAQUE_MAX_LEN ( 253 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWFDIEOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWFDIEOpaque*);

tANI_U32 dot11fPackIeWFDIEOpaque(tpAniSirGlobal, tDot11fIEWFDIEOpaque*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWFDIEOpaque(tpAniSirGlobal, tDot11fIEWFDIEOpaque*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05}
typedef struct sDot11fIEWMMCaps {
    tANI_U8      present;
    tANI_U8      version /* Must be 1! */;
    tANI_U8         reserved: 4;
    tANI_U8             qack: 1;
    tANI_U8    queue_request: 1;
    tANI_U8     txop_request: 1;
    tANI_U8         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++ */
tANI_U32 dot11fUnpackIeWMMCaps(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMCaps*);

tANI_U32 dot11fPackIeWMMCaps(tpAniSirGlobal, tDot11fIEWMMCaps*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMCaps(tpAniSirGlobal, tDot11fIEWMMCaps*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00}
typedef struct sDot11fIEWMMInfoAp {
    tANI_U8      present;
    tANI_U8      version;
    tANI_U8  param_set_count: 4;
    tANI_U8         reserved: 3;
    tANI_U8            uapsd: 1;
} tDot11fIEWMMInfoAp;

#define DOT11F_EID_WMMINFOAP ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WMMINFOAP_MIN_LEN ( 7 )

#define DOT11F_IE_WMMINFOAP_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWMMInfoAp(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMInfoAp*);

tANI_U32 dot11fPackIeWMMInfoAp(tpAniSirGlobal, tDot11fIEWMMInfoAp*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMInfoAp(tpAniSirGlobal, tDot11fIEWMMInfoAp*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00}
typedef struct sDot11fIEWMMInfoStation {
    tANI_U8      present;
    tANI_U8      version;
    tANI_U8       acvo_uapsd: 1;
    tANI_U8       acvi_uapsd: 1;
    tANI_U8       acbk_uapsd: 1;
    tANI_U8       acbe_uapsd: 1;
    tANI_U8        reserved1: 1;
    tANI_U8    max_sp_length: 2;
    tANI_U8        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++ */
tANI_U32 dot11fUnpackIeWMMInfoStation(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMInfoStation*);

tANI_U32 dot11fPackIeWMMInfoStation(tpAniSirGlobal, tDot11fIEWMMInfoStation*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMInfoStation(tpAniSirGlobal, tDot11fIEWMMInfoStation*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01}
typedef struct sDot11fIEWMMParams {
    tANI_U8      present;
    tANI_U8      version /* Must be 1! */;
    tANI_U8      qosInfo;
    tANI_U8      reserved2;
    tANI_U8       acbe_aifsn: 4;
    tANI_U8         acbe_acm: 1;
    tANI_U8         acbe_aci: 2;
    tANI_U8          unused1: 1;
    tANI_U8      acbe_acwmin: 4;
    tANI_U8      acbe_acwmax: 4;
    tANI_U16     acbe_txoplimit;
    tANI_U8       acbk_aifsn: 4;
    tANI_U8         acbk_acm: 1;
    tANI_U8         acbk_aci: 2;
    tANI_U8          unused2: 1;
    tANI_U8      acbk_acwmin: 4;
    tANI_U8      acbk_acwmax: 4;
    tANI_U16     acbk_txoplimit;
    tANI_U8       acvi_aifsn: 4;
    tANI_U8         acvi_acm: 1;
    tANI_U8         acvi_aci: 2;
    tANI_U8          unused3: 1;
    tANI_U8      acvi_acwmin: 4;
    tANI_U8      acvi_acwmax: 4;
    tANI_U16     acvi_txoplimit;
    tANI_U8       acvo_aifsn: 4;
    tANI_U8         acvo_acm: 1;
    tANI_U8         acvo_aci: 2;
    tANI_U8          unused4: 1;
    tANI_U8      acvo_acwmin: 4;
    tANI_U8      acvo_acwmax: 4;
    tANI_U16     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++ */
tANI_U32 dot11fUnpackIeWMMParams(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWMMParams*);

tANI_U32 dot11fPackIeWMMParams(tpAniSirGlobal, tDot11fIEWMMParams*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWMMParams(tpAniSirGlobal, tDot11fIEWMMParams*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01}
typedef struct sDot11fIEWPA {
    tANI_U8      present;
    tANI_U16     version /* Must be 1! */;
    tANI_U8      multicast_cipher_present;   //field added to fix the bug in dot11fPackIEWPA
    tANI_U8      multicast_cipher[4];
    tANI_U16     unicast_cipher_count;
    tANI_U8      unicast_ciphers[4][4];
    tANI_U16     auth_suite_count;
    tANI_U8      auth_suites[4][4];
    tANI_U16     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++ */
tANI_U32 dot11fUnpackIeWPA(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWPA*);

tANI_U32 dot11fPackIeWPA(tpAniSirGlobal, tDot11fIEWPA*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWPA(tpAniSirGlobal, tDot11fIEWPA*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01}
typedef struct sDot11fIEWPAOpaque {
    tANI_U8      present;
    tANI_U8      num_data;
    tANI_U8      data[249];
} tDot11fIEWPAOpaque;

#define DOT11F_EID_WPAOPAQUE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WPAOPAQUE_MIN_LEN ( 6 )

#define DOT11F_IE_WPAOPAQUE_MAX_LEN ( 253 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWPAOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWPAOpaque*);

tANI_U32 dot11fPackIeWPAOpaque(tpAniSirGlobal, tDot11fIEWPAOpaque*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWPAOpaque(tpAniSirGlobal, tDot11fIEWPAOpaque*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWSC {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVWPSState WPSState;
    tDot11fTLVAPSetupLocked APSetupLocked;
    tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
    tDot11fTLVUUID_E UUID_E;
    tDot11fTLVUUID_R UUID_R;
    tDot11fTLVRFBands RFBands;
    tDot11fTLVSelectedRegistrar SelectedRegistrar;
    tDot11fTLVConfigMethods ConfigMethods;
    tDot11fTLVAssociationState AssociationState;
    tDot11fTLVConfigurationError ConfigurationError;
    tDot11fTLVManufacturer Manufacturer;
    tDot11fTLVModelName ModelName;
    tDot11fTLVModelNumber ModelNumber;
    tDot11fTLVSerialNumber SerialNumber;
    tDot11fTLVDeviceName DeviceName;
    tDot11fTLVDevicePasswordID DevicePasswordID;
    tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
    tDot11fTLVRequestType RequestType;
    tDot11fTLVResponseType ResponseType;
    tDot11fTLVVendorExtension VendorExtension;
    tDot11fTLVRequestDeviceType RequestDeviceType;
} tDot11fIEWSC;

#define DOT11F_EID_WSC ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSC_MIN_LEN ( 4 )

#define DOT11F_IE_WSC_MAX_LEN ( 366 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWSC(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWSC*);

tANI_U32 dot11fPackIeWSC(tpAniSirGlobal, tDot11fIEWSC*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWSC(tpAniSirGlobal, tDot11fIEWSC*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 194 (0xc2)
typedef struct sDot11fIEWiderBWChanSwitchAnn {
    tANI_U8      present;
    tANI_U8      newChanWidth;
    tANI_U8      newCenterChanFreq0;
    tANI_U8      newCenterChanFreq1;
} tDot11fIEWiderBWChanSwitchAnn;

#define DOT11F_EID_WIDERBWCHANSWITCHANN ( 194 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WIDERBWCHANSWITCHANN_MIN_LEN ( 3 )

#define DOT11F_IE_WIDERBWCHANSWITCHANN_MAX_LEN ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWiderBWChanSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWiderBWChanSwitchAnn*);

tANI_U32 dot11fPackIeWiderBWChanSwitchAnn(tpAniSirGlobal, tDot11fIEWiderBWChanSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWiderBWChanSwitchAnn(tpAniSirGlobal, tDot11fIEWiderBWChanSwitchAnn*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscAssocReq {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVRequestType RequestType;
    tDot11fTLVVendorExtension VendorExtension;
} tDot11fIEWscAssocReq;

#define DOT11F_EID_WSCASSOCREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCASSOCREQ_MIN_LEN ( 4 )

#define DOT11F_IE_WSCASSOCREQ_MAX_LEN ( 35 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscAssocReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscAssocReq*);

tANI_U32 dot11fPackIeWscAssocReq(tpAniSirGlobal, tDot11fIEWscAssocReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscAssocReq(tpAniSirGlobal, tDot11fIEWscAssocReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscAssocRes {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVResponseType ResponseType;
    tDot11fTLVVendorExtension VendorExtension;
} tDot11fIEWscAssocRes;

#define DOT11F_EID_WSCASSOCRES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCASSOCRES_MIN_LEN ( 4 )

#define DOT11F_IE_WSCASSOCRES_MAX_LEN ( 35 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscAssocRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscAssocRes*);

tANI_U32 dot11fPackIeWscAssocRes(tpAniSirGlobal, tDot11fIEWscAssocRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscAssocRes(tpAniSirGlobal, tDot11fIEWscAssocRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscBeacon {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVWPSState WPSState;
    tDot11fTLVAPSetupLocked APSetupLocked;
    tDot11fTLVSelectedRegistrar SelectedRegistrar;
    tDot11fTLVDevicePasswordID DevicePasswordID;
    tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
    tDot11fTLVUUID_E UUID_E;
    tDot11fTLVRFBands RFBands;
    tDot11fTLVVendorExtension VendorExtension;
} tDot11fIEWscBeacon;

#define DOT11F_EID_WSCBEACON ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCBEACON_MIN_LEN ( 4 )

#define DOT11F_IE_WSCBEACON_MAX_LEN ( 82 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscBeacon(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscBeacon*);

tANI_U32 dot11fPackIeWscBeacon(tpAniSirGlobal, tDot11fIEWscBeacon*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscBeacon(tpAniSirGlobal, tDot11fIEWscBeacon*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscBeaconProbeRes {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVWPSState WPSState;
    tDot11fTLVAPSetupLocked APSetupLocked;
    tDot11fTLVSelectedRegistrar SelectedRegistrar;
    tDot11fTLVDevicePasswordID DevicePasswordID;
    tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
    tDot11fTLVResponseType ResponseType;
    tDot11fTLVUUID_E UUID_E;
    tDot11fTLVManufacturer Manufacturer;
    tDot11fTLVModelName ModelName;
    tDot11fTLVModelNumber ModelNumber;
    tDot11fTLVSerialNumber SerialNumber;
    tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
    tDot11fTLVDeviceName DeviceName;
    tDot11fTLVConfigMethods ConfigMethods;
    tDot11fTLVRFBands RFBands;
    tDot11fTLVVendorExtension VendorExtension;
} tDot11fIEWscBeaconProbeRes;

#define DOT11F_EID_WSCBEACONPROBERES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN ( 4 )

#define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN ( 317 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscBeaconProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscBeaconProbeRes*);

tANI_U32 dot11fPackIeWscBeaconProbeRes(tpAniSirGlobal, tDot11fIEWscBeaconProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscBeaconProbeRes(tpAniSirGlobal, tDot11fIEWscBeaconProbeRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04}
typedef struct sDot11fIEWscIEOpaque {
    tANI_U8      present;
    tANI_U8      num_data;
    tANI_U8      data[249];
} tDot11fIEWscIEOpaque;

#define DOT11F_EID_WSCIEOPAQUE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCIEOPAQUE_MIN_LEN ( 6 )

#define DOT11F_IE_WSCIEOPAQUE_MAX_LEN ( 253 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscIEOpaque(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscIEOpaque*);

tANI_U32 dot11fPackIeWscIEOpaque(tpAniSirGlobal, tDot11fIEWscIEOpaque*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscIEOpaque(tpAniSirGlobal, tDot11fIEWscIEOpaque*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscProbeReq {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVRequestType RequestType;
    tDot11fTLVConfigMethods ConfigMethods;
    tDot11fTLVUUID_E UUID_E;
    tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
    tDot11fTLVRFBands RFBands;
    tDot11fTLVAssociationState AssociationState;
    tDot11fTLVConfigurationError ConfigurationError;
    tDot11fTLVDevicePasswordID DevicePasswordID;
    tDot11fTLVManufacturer Manufacturer;
    tDot11fTLVModelName ModelName;
    tDot11fTLVModelNumber ModelNumber;
    tDot11fTLVDeviceName DeviceName;
    tDot11fTLVVendorExtension VendorExtension;
    tDot11fTLVRequestDeviceType RequestDeviceType;
} tDot11fIEWscProbeReq;

#define DOT11F_EID_WSCPROBEREQ ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCPROBEREQ_MIN_LEN ( 4 )

#define DOT11F_IE_WSCPROBEREQ_MAX_LEN ( 284 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscProbeReq(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscProbeReq*);

tANI_U32 dot11fPackIeWscProbeReq(tpAniSirGlobal, tDot11fIEWscProbeReq*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscProbeReq(tpAniSirGlobal, tDot11fIEWscProbeReq*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscProbeRes {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVWPSState WPSState;
    tDot11fTLVAPSetupLocked APSetupLocked;
    tDot11fTLVSelectedRegistrar SelectedRegistrar;
    tDot11fTLVDevicePasswordID DevicePasswordID;
    tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods;
    tDot11fTLVResponseType ResponseType;
    tDot11fTLVUUID_E UUID_E;
    tDot11fTLVManufacturer Manufacturer;
    tDot11fTLVModelName ModelName;
    tDot11fTLVModelNumber ModelNumber;
    tDot11fTLVSerialNumber SerialNumber;
    tDot11fTLVPrimaryDeviceType PrimaryDeviceType;
    tDot11fTLVDeviceName DeviceName;
    tDot11fTLVConfigMethods ConfigMethods;
    tDot11fTLVRFBands RFBands;
    tDot11fTLVVendorExtension VendorExtension;
} tDot11fIEWscProbeRes;

#define DOT11F_EID_WSCPROBERES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCPROBERES_MIN_LEN ( 4 )

#define DOT11F_IE_WSCPROBERES_MAX_LEN ( 317 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscProbeRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscProbeRes*);

tANI_U32 dot11fPackIeWscProbeRes(tpAniSirGlobal, tDot11fIEWscProbeRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscProbeRes(tpAniSirGlobal, tDot11fIEWscProbeRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscReassocRes {
    tANI_U8      present;
    tDot11fTLVVersion Version;
    tDot11fTLVResponseType ResponseType;
    tDot11fTLVVendorExtension VendorExtension;
} tDot11fIEWscReassocRes;

#define DOT11F_EID_WSCREASSOCRES ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_WSCREASSOCRES_MIN_LEN ( 4 )

#define DOT11F_IE_WSCREASSOCRES_MAX_LEN ( 35 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIeWscReassocRes(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWscReassocRes*);

tANI_U32 dot11fPackIeWscReassocRes(tpAniSirGlobal, tDot11fIEWscReassocRes*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEWscReassocRes(tpAniSirGlobal, tDot11fIEWscReassocRes*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 255 (0xff) Extended EID 32 (0x20)
typedef struct sDot11fIEdh_parameter_element {
    tANI_U8      present;
    tANI_U8      group[2];
    tANI_U8      num_public_key;
    tANI_U8      public_key[255];
} tDot11fIEdh_parameter_element;

#define DOT11F_EID_DH_PARAMETER_ELEMENT ( 255 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_DH_PARAMETER_ELEMENT_MIN_LEN ( 2 )

#define DOT11F_IE_DH_PARAMETER_ELEMENT_MAX_LEN ( 257 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIedh_parameter_element(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEdh_parameter_element*);

tANI_U32 dot11fPackIedh_parameter_element(tpAniSirGlobal, tDot11fIEdh_parameter_element*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEdh_parameter_element(tpAniSirGlobal, tDot11fIEdh_parameter_element*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 60 (0x3c)
typedef struct sDot11fIEext_chan_switch_ann {
    tANI_U8      present;
    tANI_U8      switch_mode;
    tANI_U8      new_reg_class;
    tANI_U8      new_channel;
    tANI_U8      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++ */
tANI_U32 dot11fUnpackIeext_chan_switch_ann(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEext_chan_switch_ann*);

tANI_U32 dot11fPackIeext_chan_switch_ann(tpAniSirGlobal, tDot11fIEext_chan_switch_ann*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEext_chan_switch_ann(tpAniSirGlobal, tDot11fIEext_chan_switch_ann*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10}
typedef struct sDot11fIEhs20vendor_ie {
    tANI_U8      present;
    tANI_U8         dgaf_dis: 1;
    tANI_U8    hs_id_present: 2;
    tANI_U8         reserved: 1;
    tANI_U8      release_num: 4;
    union
    {
        struct
        {
            tANI_U16 pps_mo_id;
        } pps_mo; /* hs_id_present = 1 */
        struct
        {
            tANI_U16 anqp_domain_id;
        } anqp_domain; /* hs_id_present = 2 */
    } hs_id;
} tDot11fIEhs20vendor_ie;

#define DOT11F_EID_HS20VENDOR_IE ( 221 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_HS20VENDOR_IE_MIN_LEN ( 5 )

#define DOT11F_IE_HS20VENDOR_IE_MAX_LEN ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIehs20vendor_ie(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEhs20vendor_ie*);

tANI_U32 dot11fPackIehs20vendor_ie(tpAniSirGlobal, tDot11fIEhs20vendor_ie*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEhs20vendor_ie(tpAniSirGlobal, tDot11fIEhs20vendor_ie*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
// EID 62 (0x3e)
typedef struct sDot11fIEsec_chan_offset {
    tANI_U8      present;
    tANI_U8      secondaryChannelOffset;
} tDot11fIEsec_chan_offset;

#define DOT11F_EID_SEC_CHAN_OFFSET ( 62 )

// N.B. These #defines do *not* include the EID & length
#define DOT11F_IE_SEC_CHAN_OFFSET_MIN_LEN ( 1 )

#define DOT11F_IE_SEC_CHAN_OFFSET_MAX_LEN ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */
tANI_U32 dot11fUnpackIesec_chan_offset(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEsec_chan_offset*);

tANI_U32 dot11fPackIesec_chan_offset(tpAniSirGlobal, tDot11fIEsec_chan_offset*, tANI_U8*, tANI_U32, tANI_U32*);

tANI_U32 dot11fGetPackedIEsec_chan_offset(tpAniSirGlobal, tDot11fIEsec_chan_offset*, tANI_U32*);

#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/************************************************************************
 * Frames
 **********************************************************************/

typedef struct sDot11fAddBAReq{
    tDot11fFfCategory                  Category;
    tDot11fFfAction                    Action;
    tDot11fFfDialogToken               DialogToken;
    tDot11fFfAddBAParameterSet         AddBAParameterSet;
    tDot11fFfBATimeout                 BATimeout;
    tDot11fFfBAStartingSequenceControl BAStartingSequenceControl;
} tDot11fAddBAReq;

#define DOT11F_ADDBAREQ ( 1 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackAddBAReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddBAReq *pFrm);
tANI_U32 dot11fPackAddBAReq(tpAniSirGlobal pCtx, tDot11fAddBAReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedAddBAReqSize(tpAniSirGlobal pCtx, tDot11fAddBAReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fAddBARsp{
    tDot11fFfCategory          Category;
    tDot11fFfAction            Action;
    tDot11fFfDialogToken       DialogToken;
    tDot11fFfStatus            Status;
    tDot11fFfAddBAParameterSet AddBAParameterSet;
    tDot11fFfBATimeout         BATimeout;
} tDot11fAddBARsp;

#define DOT11F_ADDBARSP ( 2 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackAddBARsp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddBARsp *pFrm);
tANI_U32 dot11fPackAddBARsp(tpAniSirGlobal pCtx, tDot11fAddBARsp *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedAddBARspSize(tpAniSirGlobal pCtx, tDot11fAddBARsp *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fAddTSRequest{
    tDot11fFfCategory           Category;
    tDot11fFfAction             Action;
    tDot11fFfDialogToken        DialogToken;
    tDot11fIETSPEC              TSPEC;
    tANI_U16                    num_TCLAS;
    tDot11fIETCLAS              TCLAS[2];
    tDot11fIETCLASSPROC         TCLASSPROC;
    tDot11fIEWMMTSPEC           WMMTSPEC;
    tANI_U16                    num_WMMTCLAS;
    tDot11fIEWMMTCLAS           WMMTCLAS[2];
    tDot11fIEWMMTCLASPROC       WMMTCLASPROC;
    tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
} tDot11fAddTSRequest;

#define DOT11F_ADDTSREQUEST ( 3 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackAddTSRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddTSRequest *pFrm);
tANI_U32 dot11fPackAddTSRequest(tpAniSirGlobal pCtx, tDot11fAddTSRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedAddTSRequestSize(tpAniSirGlobal pCtx, tDot11fAddTSRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fAddTSResponse{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfDialogToken    DialogToken;
    tDot11fFfStatus         Status;
    tDot11fIETSDelay        TSDelay;
    tDot11fIETSPEC          TSPEC;
    tANI_U16                num_TCLAS;
    tDot11fIETCLAS          TCLAS[2];
    tDot11fIETCLASSPROC     TCLASSPROC;
    tDot11fIESchedule       Schedule;
    tDot11fIEWMMTSDelay     WMMTSDelay;
    tDot11fIEWMMSchedule    WMMSchedule;
    tDot11fIEWMMTSPEC       WMMTSPEC;
    tANI_U16                num_WMMTCLAS;
    tDot11fIEWMMTCLAS       WMMTCLAS[2];
    tDot11fIEWMMTCLASPROC   WMMTCLASPROC;
    tDot11fIEESETrafStrmMet ESETrafStrmMet;
} tDot11fAddTSResponse;

#define DOT11F_ADDTSRESPONSE ( 4 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackAddTSResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAddTSResponse *pFrm);
tANI_U32 dot11fPackAddTSResponse(tpAniSirGlobal pCtx, tDot11fAddTSResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedAddTSResponseSize(tpAniSirGlobal pCtx, tDot11fAddTSResponse *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fAssocRequest{
    tDot11fFfCapabilities         Capabilities;
    tDot11fFfListenInterval       ListenInterval;
    tDot11fIESSID                 SSID;
    tDot11fIESuppRates            SuppRates;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIEPowerCaps            PowerCaps;
    tDot11fIESuppChannels         SuppChannels;
    tDot11fIERSNOpaque            RSNOpaque;
    tDot11fIEQOSCapsStation       QOSCapsStation;
    tDot11fIERRMEnabledCap        RRMEnabledCap;
    tDot11fIEMobilityDomain       MobilityDomain;
    tDot11fIEdh_parameter_element dh_parameter_element;
    tDot11fIEWPAOpaque            WPAOpaque;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEWMMCaps              WMMCaps;
    tDot11fIEWMMInfoStation       WMMInfoStation;
    tDot11fIEAirgo                Airgo;
    tDot11fIEWscIEOpaque          WscIEOpaque;
    tDot11fIEWAPIOpaque           WAPIOpaque;
    tDot11fIEESERadMgmtCap        ESERadMgmtCap;
    tDot11fIEESEVersion           ESEVersion;
    tDot11fIEP2PIEOpaque          P2PIEOpaque;
    tDot11fIEWFDIEOpaque          WFDIEOpaque;
    tDot11fIEVHTCaps              VHTCaps;
    tDot11fIEExtCap               ExtCap;
    tDot11fIEOperatingMode        OperatingMode;
    tDot11fIEQosMapSet            QosMapSet;
    tDot11fIEhs20vendor_ie        hs20vendor_ie;
} tDot11fAssocRequest;

#define DOT11F_ASSOCREQUEST ( 5 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackAssocRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAssocRequest *pFrm);
tANI_U32 dot11fPackAssocRequest(tpAniSirGlobal pCtx, tDot11fAssocRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedAssocRequestSize(tpAniSirGlobal pCtx, tDot11fAssocRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fAssocResponse{
    tDot11fFfCapabilities       Capabilities;
    tDot11fFfStatus             Status;
    tDot11fFfAID                AID;
    tDot11fIESuppRates          SuppRates;
    tDot11fIEExtSuppRates       ExtSuppRates;
    tDot11fIEEDCAParamSet       EDCAParamSet;
    tDot11fIERCPIIE             RCPIIE;
    tDot11fIERSNIIE             RSNIIE;
    tDot11fIERRMEnabledCap      RRMEnabledCap;
    tDot11fIEMobilityDomain     MobilityDomain;
    tDot11fIEFTInfo             FTInfo;
    tANI_U16                    num_RICDataDesc;
    tDot11fIERICDataDesc        RICDataDesc[2];
    tDot11fIEWPA                WPA;
    tDot11fIETimeoutInterval    TimeoutInterval;
    tDot11fIEHTCaps             HTCaps;
    tDot11fIEHTInfo             HTInfo;
    tDot11fIEWMMParams          WMMParams;
    tDot11fIEWMMCaps            WMMCaps;
    tDot11fIEESERadMgmtCap      ESERadMgmtCap;
    tDot11fIEESETrafStrmMet     ESETrafStrmMet;
    tDot11fIEESETxmitPower      ESETxmitPower;
    tANI_U16                    num_WMMTSPEC;
    tDot11fIEWMMTSPEC           WMMTSPEC[4];
    tDot11fIEAirgo              Airgo;
    tDot11fIEWscAssocRes        WscAssocRes;
    tDot11fIEP2PAssocRes        P2PAssocRes;
    tDot11fIEVHTCaps            VHTCaps;
    tDot11fIEVHTOperation       VHTOperation;
    tDot11fIEExtCap             ExtCap;
    tDot11fIEOBSSScanParameters OBSSScanParameters;
    tDot11fIEQosMapSet          QosMapSet;
} tDot11fAssocResponse;

#define DOT11F_ASSOCRESPONSE ( 6 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackAssocResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAssocResponse *pFrm);
tANI_U32 dot11fPackAssocResponse(tpAniSirGlobal pCtx, tDot11fAssocResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedAssocResponseSize(tpAniSirGlobal pCtx, tDot11fAssocResponse *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fAuthentication{
    tDot11fFfAuthAlgo        AuthAlgo;
    tDot11fFfAuthSeqNo       AuthSeqNo;
    tDot11fFfStatus          Status;
    tDot11fIEChallengeText   ChallengeText;
    tDot11fIERSNOpaque       RSNOpaque;
    tDot11fIEMobilityDomain  MobilityDomain;
    tDot11fIEFTInfo          FTInfo;
    tDot11fIETimeoutInterval TimeoutInterval;
    tANI_U16                 num_RICDataDesc;
    tDot11fIERICDataDesc     RICDataDesc[2];
} tDot11fAuthentication;

#define DOT11F_AUTHENTICATION ( 7 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackAuthentication(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fAuthentication *pFrm);
tANI_U32 dot11fPackAuthentication(tpAniSirGlobal pCtx, tDot11fAuthentication *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedAuthenticationSize(tpAniSirGlobal pCtx, tDot11fAuthentication *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fBeacon{
    tDot11fFfTimeStamp            TimeStamp;
    tDot11fFfBeaconInterval       BeaconInterval;
    tDot11fFfCapabilities         Capabilities;
    tDot11fIESSID                 SSID;
    tDot11fIESuppRates            SuppRates;
    tDot11fIEFHParamSet           FHParamSet;
    tDot11fIEDSParams             DSParams;
    tDot11fIECFParams             CFParams;
    tDot11fIEIBSSParams           IBSSParams;
    tDot11fIETIM                  TIM;
    tDot11fIECountry              Country;
    tDot11fIEFHParams             FHParams;
    tDot11fIEFHPattTable          FHPattTable;
    tDot11fIEPowerConstraints     PowerConstraints;
    tDot11fIEChanSwitchAnn        ChanSwitchAnn;
    tDot11fIEext_chan_switch_ann  ext_chan_switch_ann;
    tDot11fIEQuiet                Quiet;
    tDot11fIETPCReport            TPCReport;
    tDot11fIEERPInfo              ERPInfo;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIERSN                  RSN;
    tDot11fIEQBSSLoad             QBSSLoad;
    tDot11fIEEDCAParamSet         EDCAParamSet;
    tDot11fIEQOSCapsAp            QOSCapsAp;
    tDot11fIEAPChannelReport      APChannelReport;
    tDot11fIERRMEnabledCap        RRMEnabledCap;
    tDot11fIEMobilityDomain       MobilityDomain;
    tDot11fIEWPA                  WPA;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEHTInfo               HTInfo;
    tDot11fIEsec_chan_offset      sec_chan_offset;
    tDot11fIEWMMInfoAp            WMMInfoAp;
    tDot11fIEWMMParams            WMMParams;
    tDot11fIEWMMCaps              WMMCaps;
    tDot11fIEWAPI                 WAPI;
    tDot11fIEESERadMgmtCap        ESERadMgmtCap;
    tDot11fIEESETrafStrmMet       ESETrafStrmMet;
    tDot11fIEESETxmitPower        ESETxmitPower;
    tDot11fIEAirgo                Airgo;
    tDot11fIEWscBeacon            WscBeacon;
    tDot11fIEP2PBeacon            P2PBeacon;
    tDot11fIEVHTCaps              VHTCaps;
    tDot11fIEVHTOperation         VHTOperation;
    tDot11fIEVHTExtBssLoad        VHTExtBssLoad;
    tDot11fIEExtCap               ExtCap;
    tDot11fIEOperatingMode        OperatingMode;
    tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
    tDot11fIEOBSSScanParameters   OBSSScanParameters;
    tDot11fIEhs20vendor_ie        hs20vendor_ie;
} tDot11fBeacon;

#define DOT11F_BEACON ( 8 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackBeacon(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon *pFrm);
tANI_U32 dot11fPackBeacon(tpAniSirGlobal pCtx, tDot11fBeacon *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedBeaconSize(tpAniSirGlobal pCtx, tDot11fBeacon *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fBeacon1{
    tDot11fFfTimeStamp      TimeStamp;
    tDot11fFfBeaconInterval BeaconInterval;
    tDot11fFfCapabilities   Capabilities;
    tDot11fIESSID           SSID;
    tDot11fIESuppRates      SuppRates;
    tDot11fIEDSParams       DSParams;
    tDot11fIEIBSSParams     IBSSParams;
} tDot11fBeacon1;

#define DOT11F_BEACON1 ( 9 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackBeacon1(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon1 *pFrm);
tANI_U32 dot11fPackBeacon1(tpAniSirGlobal pCtx, tDot11fBeacon1 *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedBeacon1Size(tpAniSirGlobal pCtx, tDot11fBeacon1 *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fBeacon2{
    tDot11fIECountry              Country;
    tDot11fIEPowerConstraints     PowerConstraints;
    tDot11fIEChanSwitchAnn        ChanSwitchAnn;
    tDot11fIEext_chan_switch_ann  ext_chan_switch_ann;
    tDot11fIEQuiet                Quiet;
    tDot11fIETPCReport            TPCReport;
    tDot11fIEERPInfo              ERPInfo;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIERSNOpaque            RSNOpaque;
    tDot11fIEEDCAParamSet         EDCAParamSet;
    tDot11fIEAPChannelReport      APChannelReport;
    tDot11fIERRMEnabledCap        RRMEnabledCap;
    tDot11fIEMobilityDomain       MobilityDomain;
    tDot11fIEWPA                  WPA;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEHTInfo               HTInfo;
    tDot11fIEsec_chan_offset      sec_chan_offset;
    tDot11fIEWMMInfoAp            WMMInfoAp;
    tDot11fIEWMMParams            WMMParams;
    tDot11fIEWMMCaps              WMMCaps;
    tDot11fIEAirgo                Airgo;
    tDot11fIEWscBeacon            WscBeacon;
    tDot11fIEWAPI                 WAPI;
    tDot11fIEESERadMgmtCap        ESERadMgmtCap;
    tDot11fIEESETrafStrmMet       ESETrafStrmMet;
    tDot11fIEESETxmitPower        ESETxmitPower;
    tDot11fIEP2PBeacon            P2PBeacon;
    tDot11fIEVHTCaps              VHTCaps;
    tDot11fIEVHTOperation         VHTOperation;
    tDot11fIEVHTExtBssLoad        VHTExtBssLoad;
    tDot11fIEExtCap               ExtCap;
    tDot11fIEOperatingMode        OperatingMode;
    tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
    tDot11fIEOBSSScanParameters   OBSSScanParameters;
    tDot11fIEhs20vendor_ie        hs20vendor_ie;
} tDot11fBeacon2;

#define DOT11F_BEACON2 ( 10 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackBeacon2(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon2 *pFrm);
tANI_U32 dot11fPackBeacon2(tpAniSirGlobal pCtx, tDot11fBeacon2 *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedBeacon2Size(tpAniSirGlobal pCtx, tDot11fBeacon2 *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fBeaconIEs{
    tDot11fIESSID                 SSID;
    tDot11fIESuppRates            SuppRates;
    tDot11fIEFHParamSet           FHParamSet;
    tDot11fIEDSParams             DSParams;
    tDot11fIECFParams             CFParams;
    tDot11fIEIBSSParams           IBSSParams;
    tDot11fIETIM                  TIM;
    tDot11fIECountry              Country;
    tDot11fIEFHParams             FHParams;
    tDot11fIEFHPattTable          FHPattTable;
    tDot11fIEPowerConstraints     PowerConstraints;
    tDot11fIEChanSwitchAnn        ChanSwitchAnn;
    tDot11fIEext_chan_switch_ann  ext_chan_switch_ann;
    tDot11fIEQuiet                Quiet;
    tDot11fIETPCReport            TPCReport;
    tDot11fIEERPInfo              ERPInfo;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIERSN                  RSN;
    tDot11fIEQBSSLoad             QBSSLoad;
    tDot11fIEEDCAParamSet         EDCAParamSet;
    tDot11fIEQOSCapsAp            QOSCapsAp;
    tDot11fIEAPChannelReport      APChannelReport;
    tDot11fIERRMEnabledCap        RRMEnabledCap;
    tDot11fIEMobilityDomain       MobilityDomain;
    tDot11fIEWPA                  WPA;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEHTInfo               HTInfo;
    tDot11fIEsec_chan_offset      sec_chan_offset;
    tDot11fIEWMMInfoAp            WMMInfoAp;
    tDot11fIEWMMParams            WMMParams;
    tDot11fIEWMMCaps              WMMCaps;
    tDot11fIEWAPI                 WAPI;
    tDot11fIEESEVersion           ESEVersion;
    tDot11fIEESERadMgmtCap        ESERadMgmtCap;
    tDot11fIEESETrafStrmMet       ESETrafStrmMet;
    tDot11fIEESETxmitPower        ESETxmitPower;
    tDot11fIEAirgo                Airgo;
    tDot11fIEWscBeaconProbeRes    WscBeaconProbeRes;
    tDot11fIEP2PBeaconProbeRes    P2PBeaconProbeRes;
    tDot11fIEVHTCaps              VHTCaps;
    tDot11fIEVHTOperation         VHTOperation;
    tDot11fIEVHTExtBssLoad        VHTExtBssLoad;
    tDot11fIEExtCap               ExtCap;
    tDot11fIEOperatingMode        OperatingMode;
    tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
    tDot11fIEOBSSScanParameters   OBSSScanParameters;
    tDot11fIEhs20vendor_ie        hs20vendor_ie;
} tDot11fBeaconIEs;

#define DOT11F_BEACONIES ( 11 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackBeaconIEs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeaconIEs *pFrm);
tANI_U32 dot11fPackBeaconIEs(tpAniSirGlobal pCtx, tDot11fBeaconIEs *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedBeaconIEsSize(tpAniSirGlobal pCtx, tDot11fBeaconIEs *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fChannelSwitch{
    tDot11fFfCategory             Category;
    tDot11fFfAction               Action;
    tDot11fIEChanSwitchAnn        ChanSwitchAnn;
    tDot11fIEsec_chan_offset      sec_chan_offset;
    tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
} tDot11fChannelSwitch;

#define DOT11F_CHANNELSWITCH ( 12 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackChannelSwitch(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fChannelSwitch *pFrm);
tANI_U32 dot11fPackChannelSwitch(tpAniSirGlobal pCtx, tDot11fChannelSwitch *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedChannelSwitchSize(tpAniSirGlobal pCtx, tDot11fChannelSwitch *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fDeAuth{
    tDot11fFfReason    Reason;
    tDot11fIEP2PDeAuth P2PDeAuth;
} tDot11fDeAuth;

#define DOT11F_DEAUTH ( 13 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackDeAuth(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDeAuth *pFrm);
tANI_U32 dot11fPackDeAuth(tpAniSirGlobal pCtx, tDot11fDeAuth *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedDeAuthSize(tpAniSirGlobal pCtx, tDot11fDeAuth *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fDelBAInd{
    tDot11fFfCategory          Category;
    tDot11fFfAction            Action;
    tDot11fFfDelBAParameterSet DelBAParameterSet;
    tDot11fFfReason            Reason;
} tDot11fDelBAInd;

#define DOT11F_DELBAIND ( 14 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackDelBAInd(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDelBAInd *pFrm);
tANI_U32 dot11fPackDelBAInd(tpAniSirGlobal pCtx, tDot11fDelBAInd *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedDelBAIndSize(tpAniSirGlobal pCtx, tDot11fDelBAInd *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fDelTS{
    tDot11fFfCategory Category;
    tDot11fFfAction   Action;
    tDot11fFfTSInfo   TSInfo;
    tDot11fFfReason   Reason;
} tDot11fDelTS;

#define DOT11F_DELTS ( 15 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackDelTS(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDelTS *pFrm);
tANI_U32 dot11fPackDelTS(tpAniSirGlobal pCtx, tDot11fDelTS *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedDelTSSize(tpAniSirGlobal pCtx, tDot11fDelTS *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fDeviceDiscoverabilityReq{
    tDot11fFfCategory                    Category;
    tDot11fFfAction                      Action;
    tDot11fFfP2POUI                      P2POUI;
    tDot11fFfP2POUISubType               P2POUISubType;
    tDot11fFfDialogToken                 DialogToken;
    tDot11fIEP2PDeviceDiscoverabilityReq P2PDeviceDiscoverabilityReq;
} tDot11fDeviceDiscoverabilityReq;

#define DOT11F_DEVICEDISCOVERABILITYREQ ( 16 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackDeviceDiscoverabilityReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDeviceDiscoverabilityReq *pFrm);
tANI_U32 dot11fPackDeviceDiscoverabilityReq(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedDeviceDiscoverabilityReqSize(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fDeviceDiscoverabilityRes{
    tDot11fFfCategory                    Category;
    tDot11fFfAction                      Action;
    tDot11fFfP2POUI                      P2POUI;
    tDot11fFfP2POUISubType               P2POUISubType;
    tDot11fFfDialogToken                 DialogToken;
    tDot11fIEP2PDeviceDiscoverabilityRes P2PDeviceDiscoverabilityRes;
} tDot11fDeviceDiscoverabilityRes;

#define DOT11F_DEVICEDISCOVERABILITYRES ( 17 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackDeviceDiscoverabilityRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDeviceDiscoverabilityRes *pFrm);
tANI_U32 dot11fPackDeviceDiscoverabilityRes(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedDeviceDiscoverabilityResSize(tpAniSirGlobal pCtx, tDot11fDeviceDiscoverabilityRes *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fDisassociation{
    tDot11fFfReason      Reason;
    tDot11fIEP2PDisAssoc P2PDisAssoc;
} tDot11fDisassociation;

#define DOT11F_DISASSOCIATION ( 18 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackDisassociation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fDisassociation *pFrm);
tANI_U32 dot11fPackDisassociation(tpAniSirGlobal pCtx, tDot11fDisassociation *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedDisassociationSize(tpAniSirGlobal pCtx, tDot11fDisassociation *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fGODiscoverabilityReq{
    tDot11fFfCategory      Category;
    tDot11fFfP2POUI        P2POUI;
    tDot11fFfP2POUISubType P2POUISubType;
    tDot11fFfDialogToken   DialogToken;
} tDot11fGODiscoverabilityReq;

#define DOT11F_GODISCOVERABILITYREQ ( 19 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackGODiscoverabilityReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGODiscoverabilityReq *pFrm);
tANI_U32 dot11fPackGODiscoverabilityReq(tpAniSirGlobal pCtx, tDot11fGODiscoverabilityReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedGODiscoverabilityReqSize(tpAniSirGlobal pCtx, tDot11fGODiscoverabilityReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fGONegCnf{
    tDot11fFfCategory      Category;
    tDot11fFfAction        Action;
    tDot11fFfP2POUI        P2POUI;
    tDot11fFfP2POUISubType P2POUISubType;
    tDot11fFfDialogToken   DialogToken;
    tDot11fIEP2PGONegCnf   P2PGONegCnf;
} tDot11fGONegCnf;

#define DOT11F_GONEGCNF ( 20 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackGONegCnf(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGONegCnf *pFrm);
tANI_U32 dot11fPackGONegCnf(tpAniSirGlobal pCtx, tDot11fGONegCnf *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedGONegCnfSize(tpAniSirGlobal pCtx, tDot11fGONegCnf *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fGONegReq{
    tDot11fFfCategory      Category;
    tDot11fFfAction        Action;
    tDot11fFfP2POUI        P2POUI;
    tDot11fFfP2POUISubType P2POUISubType;
    tDot11fFfDialogToken   DialogToken;
    tDot11fIEP2PGONegWPS   P2PGONegWPS;
    tDot11fIEP2PGONegReq   P2PGONegReq;
} tDot11fGONegReq;

#define DOT11F_GONEGREQ ( 21 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackGONegReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGONegReq *pFrm);
tANI_U32 dot11fPackGONegReq(tpAniSirGlobal pCtx, tDot11fGONegReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedGONegReqSize(tpAniSirGlobal pCtx, tDot11fGONegReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fGONegRes{
    tDot11fFfCategory      Category;
    tDot11fFfAction        Action;
    tDot11fFfP2POUI        P2POUI;
    tDot11fFfP2POUISubType P2POUISubType;
    tDot11fFfDialogToken   DialogToken;
    tDot11fIEP2PGONegWPS   P2PGONegWPS;
    tDot11fIEP2PGONegRes   P2PGONegRes;
} tDot11fGONegRes;

#define DOT11F_GONEGRES ( 22 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackGONegRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fGONegRes *pFrm);
tANI_U32 dot11fPackGONegRes(tpAniSirGlobal pCtx, tDot11fGONegRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedGONegResSize(tpAniSirGlobal pCtx, tDot11fGONegRes *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fHT2040BSSCoexistenceManagementActionFrame{
    tDot11fFfCategory                  Category;
    tDot11fFfAction                    Action;
    tDot11fIEHT2040BSSCoexistence      HT2040BSSCoexistence;
    tDot11fIEHT2040BSSIntolerantReport HT2040BSSIntolerantReport;
} tDot11fHT2040BSSCoexistenceManagementActionFrame;

#define DOT11F_HT2040BSSCOEXISTENCEMANAGEMENTACTIONFRAME ( 23 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackHT2040BSSCoexistenceManagementActionFrame(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fHT2040BSSCoexistenceManagementActionFrame *pFrm);
tANI_U32 dot11fPackHT2040BSSCoexistenceManagementActionFrame(tpAniSirGlobal pCtx, tDot11fHT2040BSSCoexistenceManagementActionFrame *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedHT2040BSSCoexistenceManagementActionFrameSize(tpAniSirGlobal pCtx, tDot11fHT2040BSSCoexistenceManagementActionFrame *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fInvitationReq{
    tDot11fFfCategory         Category;
    tDot11fFfAction           Action;
    tDot11fFfP2POUI           P2POUI;
    tDot11fFfP2POUISubType    P2POUISubType;
    tDot11fFfDialogToken      DialogToken;
    tDot11fIEP2PInvitationReq P2PInvitationReq;
} tDot11fInvitationReq;

#define DOT11F_INVITATIONREQ ( 24 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackInvitationReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fInvitationReq *pFrm);
tANI_U32 dot11fPackInvitationReq(tpAniSirGlobal pCtx, tDot11fInvitationReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedInvitationReqSize(tpAniSirGlobal pCtx, tDot11fInvitationReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fInvitationRes{
    tDot11fFfCategory         Category;
    tDot11fFfAction           Action;
    tDot11fFfP2POUI           P2POUI;
    tDot11fFfP2POUISubType    P2POUISubType;
    tDot11fFfDialogToken      DialogToken;
    tDot11fIEP2PInvitationRes P2PInvitationRes;
} tDot11fInvitationRes;

#define DOT11F_INVITATIONRES ( 25 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackInvitationRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fInvitationRes *pFrm);
tANI_U32 dot11fPackInvitationRes(tpAniSirGlobal pCtx, tDot11fInvitationRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedInvitationResSize(tpAniSirGlobal pCtx, tDot11fInvitationRes *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fLinkMeasurementReport{
    tDot11fFfCategory    Category;
    tDot11fFfAction      Action;
    tDot11fFfDialogToken DialogToken;
    tDot11fFfTPCEleID    TPCEleID;
    tDot11fFfTPCEleLen   TPCEleLen;
    tDot11fFfTxPower     TxPower;
    tDot11fFfLinkMargin  LinkMargin;
    tDot11fFfRxAntennaId RxAntennaId;
    tDot11fFfTxAntennaId TxAntennaId;
    tDot11fFfRCPI        RCPI;
    tDot11fFfRSNI        RSNI;
} tDot11fLinkMeasurementReport;

#define DOT11F_LINKMEASUREMENTREPORT ( 26 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackLinkMeasurementReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fLinkMeasurementReport *pFrm);
tANI_U32 dot11fPackLinkMeasurementReport(tpAniSirGlobal pCtx, tDot11fLinkMeasurementReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedLinkMeasurementReportSize(tpAniSirGlobal pCtx, tDot11fLinkMeasurementReport *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fLinkMeasurementRequest{
    tDot11fFfCategory    Category;
    tDot11fFfAction      Action;
    tDot11fFfDialogToken DialogToken;
    tDot11fFfTxPower     TxPower;
    tDot11fFfMaxTxPower  MaxTxPower;
} tDot11fLinkMeasurementRequest;

#define DOT11F_LINKMEASUREMENTREQUEST ( 27 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackLinkMeasurementRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fLinkMeasurementRequest *pFrm);
tANI_U32 dot11fPackLinkMeasurementRequest(tpAniSirGlobal pCtx, tDot11fLinkMeasurementRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedLinkMeasurementRequestSize(tpAniSirGlobal pCtx, tDot11fLinkMeasurementRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fMeasurementReport{
    tDot11fFfCategory          Category;
    tDot11fFfAction            Action;
    tDot11fFfDialogToken       DialogToken;
    tDot11fIEMeasurementReport MeasurementReport;
} tDot11fMeasurementReport;

#define DOT11F_MEASUREMENTREPORT ( 28 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackMeasurementReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fMeasurementReport *pFrm);
tANI_U32 dot11fPackMeasurementReport(tpAniSirGlobal pCtx, tDot11fMeasurementReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedMeasurementReportSize(tpAniSirGlobal pCtx, tDot11fMeasurementReport *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fMeasurementRequest{
    tDot11fFfCategory           Category;
    tDot11fFfAction             Action;
    tDot11fFfDialogToken        DialogToken;
    tANI_U16                    num_MeasurementRequest;
    tDot11fIEMeasurementRequest MeasurementRequest[4];
} tDot11fMeasurementRequest;

#define DOT11F_MEASUREMENTREQUEST ( 29 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackMeasurementRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fMeasurementRequest *pFrm);
tANI_U32 dot11fPackMeasurementRequest(tpAniSirGlobal pCtx, tDot11fMeasurementRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedMeasurementRequestSize(tpAniSirGlobal pCtx, tDot11fMeasurementRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fNeighborReportRequest{
    tDot11fFfCategory    Category;
    tDot11fFfAction      Action;
    tDot11fFfDialogToken DialogToken;
    tDot11fIESSID        SSID;
} tDot11fNeighborReportRequest;

#define DOT11F_NEIGHBORREPORTREQUEST ( 30 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackNeighborReportRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fNeighborReportRequest *pFrm);
tANI_U32 dot11fPackNeighborReportRequest(tpAniSirGlobal pCtx, tDot11fNeighborReportRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedNeighborReportRequestSize(tpAniSirGlobal pCtx, tDot11fNeighborReportRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fNeighborReportResponse{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfDialogToken    DialogToken;
    tANI_U16                num_NeighborReport;
    tDot11fIENeighborReport NeighborReport[4];
} tDot11fNeighborReportResponse;

#define DOT11F_NEIGHBORREPORTRESPONSE ( 31 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackNeighborReportResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fNeighborReportResponse *pFrm);
tANI_U32 dot11fPackNeighborReportResponse(tpAniSirGlobal pCtx, tDot11fNeighborReportResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedNeighborReportResponseSize(tpAniSirGlobal pCtx, tDot11fNeighborReportResponse *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fNoticeOfAbs{
    tDot11fFfCategory           Category;
    tDot11fFfP2POUI             P2POUI;
    tDot11fFfP2POUISubType      P2POUISubType;
    tDot11fFfDialogToken        DialogToken;
    tDot11fIEP2PNoticeOfAbsence P2PNoticeOfAbsence;
} tDot11fNoticeOfAbs;

#define DOT11F_NOTICEOFABS ( 32 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackNoticeOfAbs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fNoticeOfAbs *pFrm);
tANI_U32 dot11fPackNoticeOfAbs(tpAniSirGlobal pCtx, tDot11fNoticeOfAbs *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedNoticeOfAbsSize(tpAniSirGlobal pCtx, tDot11fNoticeOfAbs *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fOperatingMode{
    tDot11fFfCategory      Category;
    tDot11fFfAction        Action;
    tDot11fFfOperatingMode OperatingMode;
} tDot11fOperatingMode;

#define DOT11F_OPERATINGMODE ( 33 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackOperatingMode(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fOperatingMode *pFrm);
tANI_U32 dot11fPackOperatingMode(tpAniSirGlobal pCtx, tDot11fOperatingMode *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedOperatingModeSize(tpAniSirGlobal pCtx, tDot11fOperatingMode *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fPresenceReq{
    tDot11fFfCategory           Category;
    tDot11fFfP2POUI             P2POUI;
    tDot11fFfP2POUISubType      P2POUISubType;
    tDot11fFfDialogToken        DialogToken;
    tDot11fIEP2PNoticeOfAbsence P2PNoticeOfAbsence;
} tDot11fPresenceReq;

#define DOT11F_PRESENCEREQ ( 34 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackPresenceReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fPresenceReq *pFrm);
tANI_U32 dot11fPackPresenceReq(tpAniSirGlobal pCtx, tDot11fPresenceReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedPresenceReqSize(tpAniSirGlobal pCtx, tDot11fPresenceReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fPresenceRes{
    tDot11fFfCategory            Category;
    tDot11fFfP2POUI              P2POUI;
    tDot11fFfP2POUISubType       P2POUISubType;
    tDot11fFfDialogToken         DialogToken;
    tDot11fIEP2PPresenceResponse P2PPresenceResponse;
} tDot11fPresenceRes;

#define DOT11F_PRESENCERES ( 35 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackPresenceRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fPresenceRes *pFrm);
tANI_U32 dot11fPackPresenceRes(tpAniSirGlobal pCtx, tDot11fPresenceRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedPresenceResSize(tpAniSirGlobal pCtx, tDot11fPresenceRes *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fProbeRequest{
    tDot11fIESSID          SSID;
    tDot11fIESuppRates     SuppRates;
    tDot11fIERequestedInfo RequestedInfo;
    tDot11fIEExtSuppRates  ExtSuppRates;
    tDot11fIEDSParams      DSParams;
    tDot11fIEHTCaps        HTCaps;
    tDot11fIEWscProbeReq   WscProbeReq;
    tDot11fIEWFATPC        WFATPC;
    tDot11fIEP2PProbeReq   P2PProbeReq;
    tDot11fIEVHTCaps       VHTCaps;
} tDot11fProbeRequest;

#define DOT11F_PROBEREQUEST ( 36 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackProbeRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProbeRequest *pFrm);
tANI_U32 dot11fPackProbeRequest(tpAniSirGlobal pCtx, tDot11fProbeRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedProbeRequestSize(tpAniSirGlobal pCtx, tDot11fProbeRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fProbeResponse{
    tDot11fFfTimeStamp            TimeStamp;
    tDot11fFfBeaconInterval       BeaconInterval;
    tDot11fFfCapabilities         Capabilities;
    tDot11fIESSID                 SSID;
    tDot11fIESuppRates            SuppRates;
    tDot11fIEFHParamSet           FHParamSet;
    tDot11fIEDSParams             DSParams;
    tDot11fIECFParams             CFParams;
    tDot11fIEIBSSParams           IBSSParams;
    tDot11fIECountry              Country;
    tDot11fIEFHParams             FHParams;
    tDot11fIEFHPattTable          FHPattTable;
    tDot11fIEPowerConstraints     PowerConstraints;
    tDot11fIEChanSwitchAnn        ChanSwitchAnn;
    tDot11fIEext_chan_switch_ann  ext_chan_switch_ann;
    tDot11fIEQuiet                Quiet;
    tDot11fIETPCReport            TPCReport;
    tDot11fIEERPInfo              ERPInfo;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIERSNOpaque            RSNOpaque;
    tDot11fIEQBSSLoad             QBSSLoad;
    tDot11fIEEDCAParamSet         EDCAParamSet;
    tDot11fIERRMEnabledCap        RRMEnabledCap;
    tDot11fIEAPChannelReport      APChannelReport;
    tDot11fIEMobilityDomain       MobilityDomain;
    tDot11fIEWPA                  WPA;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEHTInfo               HTInfo;
    tDot11fIEsec_chan_offset      sec_chan_offset;
    tDot11fIEWMMInfoAp            WMMInfoAp;
    tDot11fIEWMMParams            WMMParams;
    tDot11fIEWMMCaps              WMMCaps;
    tDot11fIEWAPI                 WAPI;
    tDot11fIEESERadMgmtCap        ESERadMgmtCap;
    tDot11fIEESETrafStrmMet       ESETrafStrmMet;
    tDot11fIEESETxmitPower        ESETxmitPower;
    tDot11fIEAirgo                Airgo;
    tDot11fIEWscProbeRes          WscProbeRes;
    tDot11fIEP2PProbeRes          P2PProbeRes;
    tDot11fIEVHTCaps              VHTCaps;
    tDot11fIEVHTOperation         VHTOperation;
    tDot11fIEVHTExtBssLoad        VHTExtBssLoad;
    tDot11fIEExtCap               ExtCap;
    tDot11fIEOBSSScanParameters   OBSSScanParameters;
    tDot11fIEhs20vendor_ie        hs20vendor_ie;
    tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
} tDot11fProbeResponse;

#define DOT11F_PROBERESPONSE ( 37 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackProbeResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProbeResponse *pFrm);
tANI_U32 dot11fPackProbeResponse(tpAniSirGlobal pCtx, tDot11fProbeResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedProbeResponseSize(tpAniSirGlobal pCtx, tDot11fProbeResponse *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fProvisionDiscoveryReq{
    tDot11fFfCategory                 Category;
    tDot11fFfAction                   Action;
    tDot11fFfP2POUI                   P2POUI;
    tDot11fFfP2POUISubType            P2POUISubType;
    tDot11fFfDialogToken              DialogToken;
    tDot11fIEP2PProvisionDiscoveryReq P2PProvisionDiscoveryReq;
} tDot11fProvisionDiscoveryReq;

#define DOT11F_PROVISIONDISCOVERYREQ ( 38 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackProvisionDiscoveryReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProvisionDiscoveryReq *pFrm);
tANI_U32 dot11fPackProvisionDiscoveryReq(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedProvisionDiscoveryReqSize(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fProvisionDiscoveryRes{
    tDot11fFfCategory                    Category;
    tDot11fFfAction                      Action;
    tDot11fFfP2POUI                      P2POUI;
    tDot11fFfP2POUISubType               P2POUISubType;
    tDot11fFfDialogToken                 DialogToken;
    tDot11fIEP2PWSCProvisionDiscoveryRes P2PWSCProvisionDiscoveryRes;
} tDot11fProvisionDiscoveryRes;

#define DOT11F_PROVISIONDISCOVERYRES ( 39 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackProvisionDiscoveryRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProvisionDiscoveryRes *pFrm);
tANI_U32 dot11fPackProvisionDiscoveryRes(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryRes *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedProvisionDiscoveryResSize(tpAniSirGlobal pCtx, tDot11fProvisionDiscoveryRes *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fQosMapConfigure{
    tDot11fFfCategory  Category;
    tDot11fFfAction    Action;
    tDot11fIEQosMapSet QosMapSet;
} tDot11fQosMapConfigure;

#define DOT11F_QOSMAPCONFIGURE ( 40 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackQosMapConfigure(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fQosMapConfigure *pFrm);
tANI_U32 dot11fPackQosMapConfigure(tpAniSirGlobal pCtx, tDot11fQosMapConfigure *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedQosMapConfigureSize(tpAniSirGlobal pCtx, tDot11fQosMapConfigure *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fRMC{
    tDot11fFfCategory       Category;
    tDot11fFfRMCOUI         RMCOUI;
    tDot11fFfMagicCode      MagicCode;
    tDot11fFfRMCVersion     RMCVersion;
    tDot11fFfAction         Action;
    tDot11fFfRMCDialogToken RMCDialogToken;
    tDot11fFfRuler          Ruler;
} tDot11fRMC;

#define DOT11F_RMC ( 41 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackRMC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fRMC *pFrm);
tANI_U32 dot11fPackRMC(tpAniSirGlobal pCtx, tDot11fRMC *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedRMCSize(tpAniSirGlobal pCtx, tDot11fRMC *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fRadioMeasurementReport{
    tDot11fFfCategory          Category;
    tDot11fFfAction            Action;
    tDot11fFfDialogToken       DialogToken;
    tANI_U16                   num_MeasurementReport;
    tDot11fIEMeasurementReport MeasurementReport[4];
} tDot11fRadioMeasurementReport;

#define DOT11F_RADIOMEASUREMENTREPORT ( 42 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackRadioMeasurementReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fRadioMeasurementReport *pFrm);
tANI_U32 dot11fPackRadioMeasurementReport(tpAniSirGlobal pCtx, tDot11fRadioMeasurementReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedRadioMeasurementReportSize(tpAniSirGlobal pCtx, tDot11fRadioMeasurementReport *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fRadioMeasurementRequest{
    tDot11fFfCategory           Category;
    tDot11fFfAction             Action;
    tDot11fFfDialogToken        DialogToken;
    tDot11fFfNumOfRepetitions   NumOfRepetitions;
    tANI_U16                    num_MeasurementRequest;
    tDot11fIEMeasurementRequest MeasurementRequest[2];
} tDot11fRadioMeasurementRequest;

#define DOT11F_RADIOMEASUREMENTREQUEST ( 43 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackRadioMeasurementRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fRadioMeasurementRequest *pFrm);
tANI_U32 dot11fPackRadioMeasurementRequest(tpAniSirGlobal pCtx, tDot11fRadioMeasurementRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedRadioMeasurementRequestSize(tpAniSirGlobal pCtx, tDot11fRadioMeasurementRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fReAssocRequest{
    tDot11fFfCapabilities       Capabilities;
    tDot11fFfListenInterval     ListenInterval;
    tDot11fFfCurrentAPAddress   CurrentAPAddress;
    tDot11fIESSID               SSID;
    tDot11fIESuppRates          SuppRates;
    tDot11fIEExtSuppRates       ExtSuppRates;
    tDot11fIEPowerCaps          PowerCaps;
    tDot11fIESuppChannels       SuppChannels;
    tDot11fIERSNOpaque          RSNOpaque;
    tDot11fIEQOSCapsStation     QOSCapsStation;
    tDot11fIERRMEnabledCap      RRMEnabledCap;
    tDot11fIEMobilityDomain     MobilityDomain;
    tDot11fIEFTInfo             FTInfo;
    tANI_U16                    num_RICDataDesc;
    tDot11fIERICDataDesc        RICDataDesc[2];
    tDot11fIEWPAOpaque          WPAOpaque;
    tDot11fIEHTCaps             HTCaps;
    tDot11fIEWMMCaps            WMMCaps;
    tDot11fIEWMMInfoStation     WMMInfoStation;
    tDot11fIEAirgo              Airgo;
    tDot11fIEWscIEOpaque        WscIEOpaque;
    tDot11fIEWAPIOpaque         WAPIOpaque;
    tDot11fIEESERadMgmtCap      ESERadMgmtCap;
    tDot11fIEESEVersion         ESEVersion;
    tDot11fIEESECckmOpaque      ESECckmOpaque;
    tANI_U16                    num_WMMTSPEC;
    tDot11fIEWMMTSPEC           WMMTSPEC[4];
    tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
    tDot11fIEP2PIEOpaque        P2PIEOpaque;
    tDot11fIEWFDIEOpaque        WFDIEOpaque;
    tDot11fIEVHTCaps            VHTCaps;
    tDot11fIEExtCap             ExtCap;
    tDot11fIEOperatingMode      OperatingMode;
    tDot11fIEQosMapSet          QosMapSet;
    tDot11fIEhs20vendor_ie      hs20vendor_ie;
} tDot11fReAssocRequest;

#define DOT11F_REASSOCREQUEST ( 44 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackReAssocRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fReAssocRequest *pFrm);
tANI_U32 dot11fPackReAssocRequest(tpAniSirGlobal pCtx, tDot11fReAssocRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedReAssocRequestSize(tpAniSirGlobal pCtx, tDot11fReAssocRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fReAssocResponse{
    tDot11fFfCapabilities       Capabilities;
    tDot11fFfStatus             Status;
    tDot11fFfAID                AID;
    tDot11fIESuppRates          SuppRates;
    tDot11fIEExtSuppRates       ExtSuppRates;
    tDot11fIEEDCAParamSet       EDCAParamSet;
    tDot11fIERCPIIE             RCPIIE;
    tDot11fIERSNIIE             RSNIIE;
    tDot11fIERRMEnabledCap      RRMEnabledCap;
    tDot11fIERSNOpaque          RSNOpaque;
    tDot11fIEMobilityDomain     MobilityDomain;
    tDot11fIEFTInfo             FTInfo;
    tANI_U16                    num_RICDataDesc;
    tDot11fIERICDataDesc        RICDataDesc[2];
    tDot11fIEWPA                WPA;
    tDot11fIETimeoutInterval    TimeoutInterval;
    tDot11fIEHTCaps             HTCaps;
    tDot11fIEHTInfo             HTInfo;
    tDot11fIEWMMParams          WMMParams;
    tDot11fIEESERadMgmtCap      ESERadMgmtCap;
    tDot11fIEESETrafStrmMet     ESETrafStrmMet;
    tDot11fIEESETxmitPower      ESETxmitPower;
    tANI_U16                    num_WMMTSPEC;
    tDot11fIEWMMTSPEC           WMMTSPEC[4];
    tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
    tDot11fIEAirgo              Airgo;
    tDot11fIEWscReassocRes      WscReassocRes;
    tDot11fIEP2PAssocRes        P2PAssocRes;
    tDot11fIEVHTCaps            VHTCaps;
    tDot11fIEVHTOperation       VHTOperation;
    tDot11fIEExtCap             ExtCap;
    tDot11fIEOBSSScanParameters OBSSScanParameters;
    tDot11fIEQosMapSet          QosMapSet;
} tDot11fReAssocResponse;

#define DOT11F_REASSOCRESPONSE ( 45 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackReAssocResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fReAssocResponse *pFrm);
tANI_U32 dot11fPackReAssocResponse(tpAniSirGlobal pCtx, tDot11fReAssocResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedReAssocResponseSize(tpAniSirGlobal pCtx, tDot11fReAssocResponse *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fSMPowerSave{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfSMPowerModeSet SMPowerModeSet;
} tDot11fSMPowerSave;

#define DOT11F_SMPOWERSAVE ( 46 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackSMPowerSave(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fSMPowerSave *pFrm);
tANI_U32 dot11fPackSMPowerSave(tpAniSirGlobal pCtx, tDot11fSMPowerSave *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedSMPowerSaveSize(tpAniSirGlobal pCtx, tDot11fSMPowerSave *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fSaQueryReq{
    tDot11fFfCategory      Category;
    tDot11fFfAction        Action;
    tDot11fFfTransactionId TransactionId;
} tDot11fSaQueryReq;

#define DOT11F_SAQUERYREQ ( 47 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackSaQueryReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fSaQueryReq *pFrm);
tANI_U32 dot11fPackSaQueryReq(tpAniSirGlobal pCtx, tDot11fSaQueryReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedSaQueryReqSize(tpAniSirGlobal pCtx, tDot11fSaQueryReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fSaQueryRsp{
    tDot11fFfCategory      Category;
    tDot11fFfAction        Action;
    tDot11fFfTransactionId TransactionId;
} tDot11fSaQueryRsp;

#define DOT11F_SAQUERYRSP ( 48 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackSaQueryRsp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fSaQueryRsp *pFrm);
tANI_U32 dot11fPackSaQueryRsp(tpAniSirGlobal pCtx, tDot11fSaQueryRsp *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedSaQueryRspSize(tpAniSirGlobal pCtx, tDot11fSaQueryRsp *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSDisReq{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfDialogToken    DialogToken;
    tDot11fIELinkIdentifier LinkIdentifier;
} tDot11fTDLSDisReq;

#define DOT11F_TDLSDISREQ ( 49 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSDisReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSDisReq *pFrm);
tANI_U32 dot11fPackTDLSDisReq(tpAniSirGlobal pCtx, tDot11fTDLSDisReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSDisReqSize(tpAniSirGlobal pCtx, tDot11fTDLSDisReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSDisRsp{
    tDot11fFfCategory             Category;
    tDot11fFfAction               Action;
    tDot11fFfDialogToken          DialogToken;
    tDot11fFfCapabilities         Capabilities;
    tDot11fIESuppRates            SuppRates;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIESuppChannels         SuppChannels;
    tDot11fIESuppOperatingClasses SuppOperatingClasses;
    tDot11fIERSN                  RSN;
    tDot11fIEExtCap               ExtCap;
    tDot11fIEFTInfo               FTInfo;
    tDot11fIETimeoutInterval      TimeoutInterval;
    tDot11fIERICData              RICData;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEHT2040BSSCoexistence HT2040BSSCoexistence;
    tDot11fIELinkIdentifier       LinkIdentifier;
    tDot11fIEVHTCaps              VHTCaps;
} tDot11fTDLSDisRsp;

#define DOT11F_TDLSDISRSP ( 50 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSDisRsp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSDisRsp *pFrm);
tANI_U32 dot11fPackTDLSDisRsp(tpAniSirGlobal pCtx, tDot11fTDLSDisRsp *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSDisRspSize(tpAniSirGlobal pCtx, tDot11fTDLSDisRsp *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSPeerTrafficInd{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfDialogToken    DialogToken;
    tDot11fIELinkIdentifier LinkIdentifier;
    tDot11fIEPTIControl     PTIControl;
    tDot11fIEPUBufferStatus PUBufferStatus;
} tDot11fTDLSPeerTrafficInd;

#define DOT11F_TDLSPEERTRAFFICIND ( 51 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSPeerTrafficInd(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSPeerTrafficInd *pFrm);
tANI_U32 dot11fPackTDLSPeerTrafficInd(tpAniSirGlobal pCtx, tDot11fTDLSPeerTrafficInd *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSPeerTrafficIndSize(tpAniSirGlobal pCtx, tDot11fTDLSPeerTrafficInd *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSPeerTrafficRsp{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfDialogToken    DialogToken;
    tDot11fIELinkIdentifier LinkIdentifier;
} tDot11fTDLSPeerTrafficRsp;

#define DOT11F_TDLSPEERTRAFFICRSP ( 52 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSPeerTrafficRsp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSPeerTrafficRsp *pFrm);
tANI_U32 dot11fPackTDLSPeerTrafficRsp(tpAniSirGlobal pCtx, tDot11fTDLSPeerTrafficRsp *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSPeerTrafficRspSize(tpAniSirGlobal pCtx, tDot11fTDLSPeerTrafficRsp *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSSetupCnf{
    tDot11fFfCategory             Category;
    tDot11fFfAction               Action;
    tDot11fFfStatus               Status;
    tDot11fFfDialogToken          DialogToken;
    tDot11fIERSN                  RSN;
    tDot11fIEEDCAParamSet         EDCAParamSet;
    tDot11fIEFTInfo               FTInfo;
    tDot11fIETimeoutInterval      TimeoutInterval;
    tDot11fIEHTInfo               HTInfo;
    tDot11fIEHT2040BSSCoexistence HT2040BSSCoexistence;
    tDot11fIELinkIdentifier       LinkIdentifier;
    tDot11fIEWMMParams            WMMParams;
    tDot11fIEVHTOperation         VHTOperation;
    tDot11fIEOperatingMode        OperatingMode;
} tDot11fTDLSSetupCnf;

#define DOT11F_TDLSSETUPCNF ( 53 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSSetupCnf(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSSetupCnf *pFrm);
tANI_U32 dot11fPackTDLSSetupCnf(tpAniSirGlobal pCtx, tDot11fTDLSSetupCnf *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSSetupCnfSize(tpAniSirGlobal pCtx, tDot11fTDLSSetupCnf *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSSetupReq{
    tDot11fFfCategory             Category;
    tDot11fFfAction               Action;
    tDot11fFfDialogToken          DialogToken;
    tDot11fFfCapabilities         Capabilities;
    tDot11fIESuppRates            SuppRates;
    tDot11fIECountry              Country;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIESuppChannels         SuppChannels;
    tDot11fIERSN                  RSN;
    tDot11fIEExtCap               ExtCap;
    tDot11fIESuppOperatingClasses SuppOperatingClasses;
    tDot11fIEQOSCapsStation       QOSCapsStation;
    tDot11fIEFTInfo               FTInfo;
    tDot11fIETimeoutInterval      TimeoutInterval;
    tDot11fIERICData              RICData;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEHT2040BSSCoexistence HT2040BSSCoexistence;
    tDot11fIELinkIdentifier       LinkIdentifier;
    tDot11fIEWMMInfoStation       WMMInfoStation;
    tDot11fIEAID                  AID;
    tDot11fIEVHTCaps              VHTCaps;
} tDot11fTDLSSetupReq;

#define DOT11F_TDLSSETUPREQ ( 54 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSSetupReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSSetupReq *pFrm);
tANI_U32 dot11fPackTDLSSetupReq(tpAniSirGlobal pCtx, tDot11fTDLSSetupReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSSetupReqSize(tpAniSirGlobal pCtx, tDot11fTDLSSetupReq *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSSetupRsp{
    tDot11fFfCategory             Category;
    tDot11fFfAction               Action;
    tDot11fFfStatus               Status;
    tDot11fFfDialogToken          DialogToken;
    tDot11fFfCapabilities         Capabilities;
    tDot11fIESuppRates            SuppRates;
    tDot11fIECountry              Country;
    tDot11fIEExtSuppRates         ExtSuppRates;
    tDot11fIESuppChannels         SuppChannels;
    tDot11fIERSN                  RSN;
    tDot11fIEExtCap               ExtCap;
    tDot11fIESuppOperatingClasses SuppOperatingClasses;
    tDot11fIEQOSCapsStation       QOSCapsStation;
    tDot11fIEFTInfo               FTInfo;
    tDot11fIETimeoutInterval      TimeoutInterval;
    tDot11fIERICData              RICData;
    tDot11fIEHTCaps               HTCaps;
    tDot11fIEHT2040BSSCoexistence HT2040BSSCoexistence;
    tDot11fIELinkIdentifier       LinkIdentifier;
    tDot11fIEWMMInfoStation       WMMInfoStation;
    tDot11fIEAID                  AID;
    tDot11fIEVHTCaps              VHTCaps;
    tDot11fIEOperatingMode        OperatingMode;
} tDot11fTDLSSetupRsp;

#define DOT11F_TDLSSETUPRSP ( 55 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSSetupRsp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSSetupRsp *pFrm);
tANI_U32 dot11fPackTDLSSetupRsp(tpAniSirGlobal pCtx, tDot11fTDLSSetupRsp *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSSetupRspSize(tpAniSirGlobal pCtx, tDot11fTDLSSetupRsp *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTDLSTeardown{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfReason         Reason;
    tDot11fIEFTInfo         FTInfo;
    tDot11fIELinkIdentifier LinkIdentifier;
} tDot11fTDLSTeardown;

#define DOT11F_TDLSTEARDOWN ( 56 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTDLSTeardown(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTDLSTeardown *pFrm);
tANI_U32 dot11fPackTDLSTeardown(tpAniSirGlobal pCtx, tDot11fTDLSTeardown *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTDLSTeardownSize(tpAniSirGlobal pCtx, tDot11fTDLSTeardown *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTPCReport{
    tDot11fFfCategory    Category;
    tDot11fFfAction      Action;
    tDot11fFfDialogToken DialogToken;
    tDot11fIETPCReport   TPCReport;
} tDot11fTPCReport;

#define DOT11F_TPCREPORT ( 57 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTPCReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTPCReport *pFrm);
tANI_U32 dot11fPackTPCReport(tpAniSirGlobal pCtx, tDot11fTPCReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTPCReportSize(tpAniSirGlobal pCtx, tDot11fTPCReport *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fTPCRequest{
    tDot11fFfCategory    Category;
    tDot11fFfAction      Action;
    tDot11fFfDialogToken DialogToken;
    tDot11fIETPCRequest  TPCRequest;
} tDot11fTPCRequest;

#define DOT11F_TPCREQUEST ( 58 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackTPCRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fTPCRequest *pFrm);
tANI_U32 dot11fPackTPCRequest(tpAniSirGlobal pCtx, tDot11fTPCRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedTPCRequestSize(tpAniSirGlobal pCtx, tDot11fTPCRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fVHTGidManagementActionFrame{
    tDot11fFfCategory                 Category;
    tDot11fFfAction                   Action;
    tDot11fFfVhtMembershipStatusArray VhtMembershipStatusArray;
    tDot11fFfVhtUserPositionArray     VhtUserPositionArray;
} tDot11fVHTGidManagementActionFrame;

#define DOT11F_VHTGIDMANAGEMENTACTIONFRAME ( 59 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackVHTGidManagementActionFrame(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fVHTGidManagementActionFrame *pFrm);
tANI_U32 dot11fPackVHTGidManagementActionFrame(tpAniSirGlobal pCtx, tDot11fVHTGidManagementActionFrame *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedVHTGidManagementActionFrameSize(tpAniSirGlobal pCtx, tDot11fVHTGidManagementActionFrame *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fWMMAddTSRequest{
    tDot11fFfCategory           Category;
    tDot11fFfAction             Action;
    tDot11fFfDialogToken        DialogToken;
    tDot11fFfStatusCode         StatusCode;
    tDot11fIEWMMTSPEC           WMMTSPEC;
    tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet;
} tDot11fWMMAddTSRequest;

#define DOT11F_WMMADDTSREQUEST ( 60 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackWMMAddTSRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fWMMAddTSRequest *pFrm);
tANI_U32 dot11fPackWMMAddTSRequest(tpAniSirGlobal pCtx, tDot11fWMMAddTSRequest *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedWMMAddTSRequestSize(tpAniSirGlobal pCtx, tDot11fWMMAddTSRequest *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fWMMAddTSResponse{
    tDot11fFfCategory       Category;
    tDot11fFfAction         Action;
    tDot11fFfDialogToken    DialogToken;
    tDot11fFfStatusCode     StatusCode;
    tDot11fIEWMMTSPEC       WMMTSPEC;
    tDot11fIEESETrafStrmMet ESETrafStrmMet;
} tDot11fWMMAddTSResponse;

#define DOT11F_WMMADDTSRESPONSE ( 61 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackWMMAddTSResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fWMMAddTSResponse *pFrm);
tANI_U32 dot11fPackWMMAddTSResponse(tpAniSirGlobal pCtx, tDot11fWMMAddTSResponse *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedWMMAddTSResponseSize(tpAniSirGlobal pCtx, tDot11fWMMAddTSResponse *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fWMMDelTS{
    tDot11fFfCategory    Category;
    tDot11fFfAction      Action;
    tDot11fFfDialogToken DialogToken;
    tDot11fFfStatusCode  StatusCode;
    tDot11fIEWMMTSPEC    WMMTSPEC;
} tDot11fWMMDelTS;

#define DOT11F_WMMDELTS ( 62 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackWMMDelTS(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fWMMDelTS *pFrm);
tANI_U32 dot11fPackWMMDelTS(tpAniSirGlobal pCtx, tDot11fWMMDelTS *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedWMMDelTSSize(tpAniSirGlobal pCtx, tDot11fWMMDelTS *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

typedef struct sDot11fext_channel_switch_action_frame{
    tDot11fFfCategory                   Category;
    tDot11fFfAction                     Action;
    tDot11fFfext_chan_switch_ann_action ext_chan_switch_ann_action;
} tDot11fext_channel_switch_action_frame;

#define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME ( 63 )

#ifdef __cplusplus
extern "C" {
#endif /* C++ */

tANI_U32 dot11fUnpackext_channel_switch_action_frame(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fext_channel_switch_action_frame *pFrm);
tANI_U32 dot11fPackext_channel_switch_action_frame(tpAniSirGlobal pCtx, tDot11fext_channel_switch_action_frame *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
tANI_U32 dot11fGetPackedext_channel_switch_action_frameSize(tpAniSirGlobal pCtx, tDot11fext_channel_switch_action_frame *pFrm, tANI_U32 *pnNeeded);

#ifdef __cplusplus
} /* End extern "C". */
#endif /* C++ */

#endif /* DOT11F_H */
