blob: 75c50f84ee0360eff641d89fa6935d29e71f7771 [file] [log] [blame]
/*
* Copyright (c) 2011-2015 The Linux Foundation. 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 _HALMSGAPI_H_
#define _HALMSGAPI_H_
#include "cdf_types.h"
#include "sir_api.h"
#include "sir_params.h"
/*
* Validate the OS Type being built
*/
#if defined(ANI_OS_TYPE_ANDROID) /* ANDROID */
#if defined(ANI_OS_TYPE_QNX)
#error "more than one ANI_OS_TYPE_xxx is defined for this build"
#endif
#elif defined (ANI_OS_TYPE_QNX) /* QNX */
#if defined(ANI_OS_TYPE_ANDROID)
#error "more than one ANI_OS_TYPE_xxx is defined for this build"
#endif
#elif !defined(ANI_OS_TYPE_ANDROID) && !defined(ANI_OS_TYPE_QNX) /* NONE */
#error "NONE of the ANI_OS_TYPE_xxx are defined for this build"
#endif
/*
* Validate the compiler
*/
#if (defined (ANI_COMPILER_TYPE_MSVC) && defined (ANI_COMPILER_TYPE_GCC) && defined (ANI_COMPILER_TYPE_RVCT))
#error "more than one ANI_COMPILER_TYPE_xxx is defined for this build"
#elif !(defined (ANI_COMPILER_TYPE_MSVC) || defined (ANI_COMPILER_TYPE_GCC) || defined (ANI_COMPILER_TYPE_RVCT))
#error "NONE of the ANI_COMPILER_TYPE_xxx are defined for this build"
#endif
#define WMA_CONFIG_PARAM_UPDATE_REQ SIR_CFG_PARAM_UPDATE_IND
#define HAL_NUM_BSSID 2
/* operMode in ADD BSS message */
#define BSS_OPERATIONAL_MODE_AP 0
#define BSS_OPERATIONAL_MODE_STA 1
#define BSS_OPERATIONAL_MODE_IBSS 2
/* STA entry type in add sta message */
#define STA_ENTRY_SELF 0
#define STA_ENTRY_OTHER 1
#define STA_ENTRY_BSSID 2
/* Special station id for transmitting broadcast frames. */
#define STA_ENTRY_BCAST 3
#define STA_ENTRY_PEER STA_ENTRY_OTHER
#ifdef FEATURE_WLAN_TDLS
#define STA_ENTRY_TDLS_PEER 4
#endif /* FEATURE_WLAN_TDLS */
#define STA_INVALID_IDX 0xFF
/* invalid channel id. */
#define INVALID_CHANNEL_ID 0
/*
* From NOVA Mac Arch document
* Encryp. mode The encryption mode
* 000: Encryption functionality is not enabled
* 001: Encryption is set to WEP
* 010: Encryption is set to WEP 104
* 011: Encryption is set to TKIP
* 100: Encryption is set to AES
* 101 - 111: Reserved for future
*/
#define ENC_POLICY_NULL 0
#define ENC_POLICY_WEP40 1
#define ENC_POLICY_WEP104 2
#define ENC_POLICY_TKIP 3
#define ENC_POLICY_AES_CCM 4
/* Max number of bytes required for stations bitmap aligned at 4 bytes boundary
*/
#define HALMSG_NUMBYTES_STATION_BITMAP(x) (((x / 32) + ((x % 32) ? 1 : 0)) * 4)
#define HAL_MAX_SUPP_CHANNELS 128
#define HAL_MAX_SUPP_OPER_CLASSES 32
/**
* enum eFrameType - frame types
* @TXRX_FRM_RAW: raw frame
* @TXRX_FRM_ETH2: ethernet frame
* @TXRX_FRM_802_3: 802.3 frame
* @TXRX_FRM_802_11_MGMT: 802.11 mgmt frame
* @TXRX_FRM_802_11_CTRL: 802.11 control frame
* @TXRX_FRM_802_11_DATA: 802.11 data frame
*/
typedef enum {
TXRX_FRM_RAW,
TXRX_FRM_ETH2,
TXRX_FRM_802_3,
TXRX_FRM_802_11_MGMT,
TXRX_FRM_802_11_CTRL,
TXRX_FRM_802_11_DATA,
TXRX_FRM_IGNORED, /* This frame will be dropped */
TXRX_FRM_MAX
} eFrameType;
/**
* enum eFrameTxDir - frame tx direction
* @ANI_TXDIR_IBSS: IBSS frame
* @ANI_TXDIR_TODS: frame to DS
* @ANI_TXDIR_FROMDS: Frame from DS
* @ANI_TXDIR_WDS: WDS frame
*/
typedef enum {
ANI_TXDIR_IBSS = 0,
ANI_TXDIR_TODS,
ANI_TXDIR_FROMDS,
ANI_TXDIR_WDS
} eFrameTxDir;
/**
*struct sAniBeaconStruct - Beacon structure
* @beaconLength: beacon length
* @macHdr: mac header for beacon
*/
typedef struct sAniBeaconStruct {
uint32_t beaconLength;
tSirMacMgmtHdr macHdr;
} cdf_packed tAniBeaconStruct, *tpAniBeaconStruct;
/**
* struct sAniProbeRspStruct - probeRsp template structure
* @macHdr: mac header for probe response
*/
typedef struct sAniProbeRspStruct {
tSirMacMgmtHdr macHdr;
/* probeRsp body follows here */
} cdf_packed tAniProbeRspStruct, *tpAniProbeRspStruct;
/**
* struct tAddStaParams - add sta related parameters
* @bssId: bssid of sta
* @assocId: associd
* @staType: 0 - Self, 1 other/remote, 2 - bssid
* @staMac: MAC Address of STA
* @shortPreambleSupported: is short preamble supported or not
* @listenInterval: Listen interval
* @wmmEnabled: Support for 11e/WMM
* @uAPSD: U-APSD Flags: 1b per AC
* @maxSPLen: Max SP Length
* @htCapable: 11n HT capable STA
* @greenFieldCapable: 11n Green Field preamble support
* @txChannelWidthSet: TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz
* @mimoPS: MIMO Power Save
* @rifsMode: RIFS mode: 0 - NA, 1 - Allowed
* @lsigTxopProtection: L-SIG TXOP Protection mechanism
* @us32MaxAmpduDuration: in units of 32 us
* @maxAmpduSize: 0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k
* @maxAmpduDensity: 3 : 0~7 : 2^(11nAMPDUdensity -4)
* @maxAmsduSize: 1 : 3839 bytes, 0 : 7935 bytes
* @fDsssCckMode40Mhz: DSSS CCK supported 40MHz
* @fShortGI40Mhz: short GI support for 40Mhz packets
* @fShortGI20Mhz: short GI support for 20Mhz packets
* @supportedRates: legacy supported rates
* @status: CDF status
* @staIdx: station index
* @bssIdx: BSSID of BSS to which the station is associated
* @updateSta: pdate the existing STA entry, if this flag is set
* @respReqd: A flag to indicate to HAL if the response message is required
* @rmfEnabled: Robust Management Frame (RMF) enabled/disabled
* @encryptType: The unicast encryption type in the association
* @ucUcastSig: Unicast DPU index
* @ucBcastSig: Broadcast DPU index
* @sessionId: PE session id
* @p2pCapableSta: if this is a P2P Capable Sta
* @csaOffloadEnable: CSA offload enable flag
* @vhtCapable: is VHT capabale or not
* @vhtTxChannelWidthSet: VHT channel width
* @vhtSupportedRxNss: VHT supported RX NSS
* @vhtTxBFCapable: txbf capable or not
* @vhtTxMUBformeeCapable: Bformee capable or not
* @enableVhtpAid: enable VHT AID
* @enableVhtGid: enable VHT GID
* @enableAmpduPs: AMPDU power save
* @enableHtSmps: enable HT SMPS
* @htSmpsconfig: HT SMPS config
* @htLdpcCapable: HT LDPC capable
* @vhtLdpcCapable: VHT LDPC capable
* @smesessionId: sme session id
* @wpa_rsn: RSN capable
* @capab_info: capabality info
* @ht_caps: HT capabalities
* @vht_caps: VHT vapabalities
* @nwType: NW Type
* @maxTxPower: max tx power
* @atimIePresent: Peer Atim Info
* @peerAtimWindowLength: peer ATIM Window length
*
* This structure contains parameter required for
* add sta request of upper layer.
*/
typedef struct {
tSirMacAddr bssId;
uint16_t assocId;
/* Field to indicate if this is sta entry for itself STA adding entry
* for itself or remote (AP adding STA after successful association.
* This may or may not be required in production driver.
*/
uint8_t staType;
uint8_t shortPreambleSupported;
tSirMacAddr staMac;
uint16_t listenInterval;
uint8_t wmmEnabled;
uint8_t uAPSD;
uint8_t maxSPLen;
uint8_t htCapable;
/* 11n Green Field preamble support
* 0 - Not supported, 1 - Supported
* Add it to RA related fields of sta entry in HAL
*/
uint8_t greenFieldCapable;
uint8_t ch_width;
tSirMacHTMIMOPowerSaveState mimoPS;
uint8_t rifsMode;
/* L-SIG TXOP Protection mechanism
* 0 - No Support, 1 - Supported
* SG - there is global field.
*/
uint8_t lsigTxopProtection;
uint8_t us32MaxAmpduDuration;
uint8_t maxAmpduSize;
uint8_t maxAmpduDensity;
uint8_t maxAmsduSize;
/* 11n Parameters */
/* HT STA should set it to 1 if it is enabled in BSS
* HT STA should set it to 0 if AP does not support it.
* This indication is sent to HAL and HAL uses this flag
* to pickup up appropriate 40Mhz rates.
*/
uint8_t fDsssCckMode40Mhz;
uint8_t fShortGI40Mhz;
uint8_t fShortGI20Mhz;
tSirSupportedRates supportedRates;
/*
* Following parameters are for returning status and station index from
* HAL to PE via response message. HAL does not read them.
*/
/* The return status of SIR_HAL_ADD_STA_REQ is reported here */
CDF_STATUS status;
/* Station index; valid only when 'status' field value is
* CDF_STATUS_SUCCESS
*/
uint8_t staIdx;
/* BSSID of BSS to which the station is associated.
* This should be filled back in by HAL, and sent back to LIM as part of
* the response message, so LIM can cache it in the station entry of
* hash table. When station is deleted, LIM will make use of this bssIdx
* to delete BSS from hal tables and from softmac.
*/
uint8_t bssIdx;
uint8_t updateSta;
uint8_t respReqd;
uint8_t rmfEnabled;
uint32_t encryptType;
uint8_t ucUcastSig;
uint8_t ucBcastSig;
uint8_t sessionId;
uint8_t p2pCapableSta;
uint8_t csaOffloadEnable;
uint8_t vhtCapable;
uint8_t vhtSupportedRxNss;
uint8_t vhtTxBFCapable;
uint8_t enable_su_tx_bformer;
uint8_t vhtTxMUBformeeCapable;
uint8_t enableVhtpAid;
uint8_t enableVhtGid;
uint8_t enableAmpduPs;
uint8_t enableHtSmps;
uint8_t htSmpsconfig;
uint8_t htLdpcCapable;
uint8_t vhtLdpcCapable;
uint8_t smesessionId;
uint8_t wpa_rsn;
uint16_t capab_info;
uint16_t ht_caps;
uint32_t vht_caps;
tSirNwType nwType;
tPowerdBm maxTxPower;
uint8_t atimIePresent;
uint32_t peerAtimWindowLength;
uint8_t nonRoamReassoc;
} tAddStaParams, *tpAddStaParams;
/**
* struct tDeleteStaParams - parameters required for del sta request
* @staIdx: station index
* @assocId: association index
* @status: status
* @respReqd: is response required
* @sessionId: PE session id
* @smesessionId: SME session id
* @staType: station type
* @staMac: station mac
*/
typedef struct {
uint16_t staIdx;
uint16_t assocId;
CDF_STATUS status;
uint8_t respReqd;
uint8_t sessionId;
uint8_t smesessionId;
uint8_t staType;
tSirMacAddr staMac;
} tDeleteStaParams, *tpDeleteStaParams;
/**
* struct tSetStaKeyParams - set key params
* @staIdx: station id
* @encType: encryption type
* @wepType: WEP type
* @defWEPIdx: Default WEP key, valid only for static WEP, must between 0 and 3
* @key: valid only for non-static WEP encyrptions
* @singleTidRc: 1=Single TID based Replay Count, 0=Per TID based RC
* @smesessionId: sme session id
* @peerMacAddr: peer mac address
* @status: status
* @sessionId: session id
* @sendRsp: send response
*
* This is used by PE to configure the key information on a given station.
* When the secType is WEP40 or WEP104, the defWEPIdx is used to locate
* a preconfigured key from a BSS the station assoicated with; otherwise
* a new key descriptor is created based on the key field.
*/
typedef struct {
uint16_t staIdx;
tAniEdType encType;
tAniWepType wepType;
uint8_t defWEPIdx;
tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS];
uint8_t singleTidRc;
uint8_t smesessionId;
tSirMacAddr peerMacAddr;
CDF_STATUS status;
uint8_t sessionId;
uint8_t sendRsp;
} tSetStaKeyParams, *tpSetStaKeyParams;
/**
* struct sLimMlmSetKeysReq - set key request parameters
* @peerMacAddr: peer mac address
* @sessionId: PE session id
* @smesessionId: SME session id
* @aid: association id
* @edType: Encryption/Decryption type
* @numKeys: number of keys
* @key: key data
*/
typedef struct sLimMlmSetKeysReq {
tSirMacAddr peerMacAddr;
uint8_t sessionId; /* Added For BT-AMP Support */
uint8_t smesessionId; /* Added for drivers based on wmi interface */
uint16_t aid;
tAniEdType edType; /* Encryption/Decryption type */
uint8_t numKeys;
tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS];
} tLimMlmSetKeysReq, *tpLimMlmSetKeysReq;
/**
* struct tAddBssParams - parameters required for add bss params
* @bssId: MAC Address/BSSID
* @selfMacAddr: Self Mac Address
* @bssType: BSS type
* @operMode: AP - 0; STA - 1;
* @nwType: network type
* @shortSlotTimeSupported: is short slot time supported or not
* @llaCoexist: is 11a coexist or not
* @llbCoexist: 11b coexist supported or not
* @llgCoexist: 11g coexist supported or not
* @ht20Coexist: HT20 coexist supported or not
* @fLsigTXOPProtectionFullSupport: TXOP protection supported or not
* @fRIFSMode: RIFS is supported or not
* @beaconInterval: beacon interval
* @dtimPeriod: DTIM period
* @cfParamSet: CF Param Set
* @rateSet: MAC Rate Set
* @htCapable: Enable/Disable HT capabilities
* @obssProtEnabled: Enable/Disable OBSS protection
* @rmfEnabled: RMF enabled/disabled
* @htOperMode: HT Operating Mode
* @HT Operating Mode: Dual CTS Protection: 0 - Unused, 1 - Used
* @txChannelWidthSet: TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz
* @currentOperChannel: Current Operating Channel
* @currentExtChannel: Current Extension Channel, if applicable
* @staContext: sta context
* @status: status
* @bssIdx: BSS index allocated by HAL
* @updateBss: update the existing BSS entry, if this flag is set
* @ssId: Add BSSID info for rxp filter
* @respReqd: send the response message to LIM only when this flag is set
* @sessionId: PE session id
* @txMgmtPower: tx power used for mgmt frames
* @maxTxPower: max power to be used after applying the power constraint
* @extSetStaKeyParamValid: Ext Bss Config Msg if set
* @extSetStaKeyParam: SetStaKeyParams for ext bss msg
* @ucMaxProbeRespRetryLimit: probe Response Max retries
* @bHiddenSSIDEn: To Enable Hidden ssid.
* @bProxyProbeRespEn: To Enable Disable FW Proxy Probe Resp
* @halPersona: Persona for the BSS can be STA,AP,GO,CLIENT value
* @bSpectrumMgtEnabled: Spectrum Management Capability, 1:Enabled, 0:Disabled.
* @vhtCapable: VHT capablity
* @vhtTxChannelWidthSet: VHT tx channel width
* @reassocReq: Set only during roaming reassociation
* @chainMask: chain mask
* @smpsMode: SMPS mode
* @dot11_mode: 802.11 mode
*/
typedef struct {
tSirMacAddr bssId;
#ifdef HAL_SELF_STA_PER_BSS
tSirMacAddr selfMacAddr;
#endif /* HAL_SELF_STA_PER_BSS */
tSirBssType bssType;
uint8_t operMode;
tSirNwType nwType;
uint8_t shortSlotTimeSupported;
uint8_t llaCoexist;
uint8_t llbCoexist;
uint8_t llgCoexist;
uint8_t ht20Coexist;
uint8_t llnNonGFCoexist;
uint8_t fLsigTXOPProtectionFullSupport;
uint8_t fRIFSMode;
tSirMacBeaconInterval beaconInterval;
uint8_t dtimPeriod;
tSirMacCfParamSet cfParamSet;
tSirMacRateSet rateSet;
uint8_t htCapable;
uint8_t obssProtEnabled;
uint8_t rmfEnabled;
tSirMacHTOperatingMode htOperMode;
uint8_t dualCTSProtection;
uint8_t txChannelWidthSet;
uint8_t currentOperChannel;
tAddStaParams staContext;
CDF_STATUS status;
uint16_t bssIdx;
/* HAL should update the existing BSS entry, if this flag is set.
* PE will set this flag in case of reassoc, where we want to resue the
* the old bssID and still return success.
*/
uint8_t updateBss;
tSirMacSSid ssId;
uint8_t respReqd;
uint8_t sessionId;
#if defined WLAN_FEATURE_VOWIFI
tPowerdBm txMgmtPower;
tPowerdBm maxTxPower;
#endif /* WLAN_FEATURE_VOWIFI */
#if defined WLAN_FEATURE_VOWIFI_11R
uint8_t extSetStaKeyParamValid;
tSetStaKeyParams extSetStaKeyParam;
#endif /* WLAN_FEATURE_VOWIFI_11R */
uint8_t ucMaxProbeRespRetryLimit;
uint8_t bHiddenSSIDEn;
uint8_t bProxyProbeRespEn;
uint8_t halPersona;
uint8_t bSpectrumMgtEnabled;
uint8_t vhtCapable;
phy_ch_width ch_width;
uint8_t ch_center_freq_seg0;
uint8_t ch_center_freq_seg1;
uint8_t reassocReq; /* Set only during roaming reassociation */
uint16_t chainMask;
uint16_t smpsMode;
uint8_t dot11_mode;
uint8_t nonRoamReassoc;
uint8_t wps_state;
uint8_t nss;
} tAddBssParams, *tpAddBssParams;
/**
* struct tDeleteBssParams - params required for del bss request
* @bssIdx: BSSID
* @status: CDF status
* @respReqd: response message to LIM only when this flag is set
* @sessionId: PE session id
* @bssid: BSSID mac address
* @smesessionId: sme session id
*/
typedef struct {
uint8_t bssIdx;
CDF_STATUS status;
uint8_t respReqd;
uint8_t sessionId;
tSirMacAddr bssid;
uint8_t smesessionId;
} tDeleteBssParams, *tpDeleteBssParams;
/**
* struct sSirScanEntry - scan entry
* @bssIdx: BSSID
* @activeBSScnt: active BSS count
*/
typedef struct sSirScanEntry {
uint8_t bssIdx[HAL_NUM_BSSID];
uint8_t activeBSScnt;
} tSirScanEntry, *ptSirScanEntry;
/**
* struct tInitScanParams - params required for init scan request
* @bssid: BSSID
* @notifyBss: notify BSS
* @useNoA: use NOA
* @notifyHost: notify UMAC if set
* @frameLength: frame length
* @frameType: frame type
* @scanDuration: Indicates the scan duration (in ms)
* @macMgmtHdr: For creation of CTS-to-Self and Data-NULL MAC packets
* @scanEntry: scan entry
* @checkLinkTraffic: when this flag is set, HAL should check for
* link traffic prior to scan
* @status: status
*/
typedef struct {
tSirMacAddr bssid;
uint8_t notifyBss;
uint8_t useNoA;
uint8_t notifyHost;
uint8_t frameLength;
uint8_t frameType;
uint16_t scanDuration;
tSirMacMgmtHdr macMgmtHdr;
tSirScanEntry scanEntry;
tSirLinkTrafficCheck checkLinkTraffic;
CDF_STATUS status;
} tInitScanParams, *tpInitScanParams;
typedef enum eDelStaReasonCode {
HAL_DEL_STA_REASON_CODE_KEEP_ALIVE = 0x1,
HAL_DEL_STA_REASON_CODE_TIM_BASED = 0x2,
HAL_DEL_STA_REASON_CODE_RA_BASED = 0x3,
HAL_DEL_STA_REASON_CODE_UNKNOWN_A2 = 0x4
} tDelStaReasonCode;
typedef enum eSmpsModeValue {
STATIC_SMPS_MODE = 0x0,
DYNAMIC_SMPS_MODE = 0x1,
SMPS_MODE_RESERVED = 0x2,
SMPS_MODE_DISABLED = 0x3
} tSmpsModeValue;
/**
* struct tDeleteStaContext - params required for delete sta request
* @assocId: association id
* @staId: station id
* @bssId: mac address
* @addr2: mac address
* @reasonCode: reason code
*/
typedef struct {
uint16_t assocId;
uint16_t staId;
tSirMacAddr bssId;
tSirMacAddr addr2;
uint16_t reasonCode;
} tDeleteStaContext, *tpDeleteStaContext;
/**
* struct tStartScanParams - params required for start scan request
* @scanChannel: Indicates the current scan channel
* @status: return status
* @startTSF: TSF value
* @txMgmtPower: TX mgmt power
*/
typedef struct {
uint8_t scanChannel;
CDF_STATUS status;
#if defined WLAN_FEATURE_VOWIFI
uint32_t startTSF[2];
tPowerdBm txMgmtPower;
#endif /* WLAN_FEATURE_VOWIFI */
} tStartScanParams, *tpStartScanParams;
/**
* struct tEndScanParams - params required for end scan request
* @scanChannel: Indicates the current scan channel
* @status: return status
*/
typedef struct {
uint8_t scanChannel;
CDF_STATUS status;
} tEndScanParams, *tpEndScanParams;
/**
* struct tFinishScanParams - params required for finish scan request
* @bssid: BSSID
* @currentOperChannel: Current operating channel
* @cbState: channel bond state
* @notifyBss: notify BSS flag
* @notifyHost: notify host flag
* @frameLength: frame length
* @frameType: frame type
* @macMgmtHdr: For creation of CTS-to-Self and Data-NULL MAC packets
* @scanEntry: scan entry
* @status: return status
* Request Type = SIR_HAL_FINISH_SCAN_REQ
*/
typedef struct {
tSirMacAddr bssid;
uint8_t currentOperChannel;
/* If 20/40 MHz is operational, this will indicate the 40 MHz extension
* channel in combination with the control channel
*/
ePhyChanBondState cbState;
/* For an STA, indicates if a Data NULL frame needs to be sent
* to the AP with FrameControl.PwrMgmt bit set to 0
*/
uint8_t notifyBss;
uint8_t notifyHost;
uint8_t frameLength;
uint8_t frameType;
tSirMacMgmtHdr macMgmtHdr;
tSirScanEntry scanEntry;
CDF_STATUS status;
} tFinishScanParams, *tpFinishScanParams;
#ifdef FEATURE_OEM_DATA_SUPPORT
#ifndef OEM_DATA_REQ_SIZE
#define OEM_DATA_REQ_SIZE 280
#endif
#ifndef OEM_DATA_RSP_SIZE
#define OEM_DATA_RSP_SIZE 1724
#endif
/**
* struct tStartOemDataReq - start OEM Data request
* @selfMacAddr: self mac address
* @status: return status
* @oemDataReq: OEM Data request
*/
typedef struct {
tSirMacAddr selfMacAddr;
CDF_STATUS status;
uint8_t oemDataReq[OEM_DATA_REQ_SIZE];
} tStartOemDataReq, *tpStartOemDataReq;
/**
* struct tStartOemDataRsp - start OEM Data response
* @oemDataRsp: OEM Data response
*/
typedef struct {
uint8_t oemDataRsp[OEM_DATA_RSP_SIZE];
} tStartOemDataRsp, *tpStartOemDataRsp;
#endif /* FEATURE_OEM_DATA_SUPPORT */
/**
* struct tBeaconGenParams - params required for beacon gen request
* @bssIdx: Identifies the BSSID for which it is time to generate a beacon
* @bssId: BSSID
* @numOfSta: Number of stations in power save, who have data pending
* @numOfStaWithoutData: Number of stations in power save,
* who don't have any data pending
* @fBroadcastTrafficPending: broadcast traffic pending flag
* @dtimCount: DTIM count
* @rsvd: reserved(padding)
*/
typedef struct sBeaconGenParams {
uint8_t bssIdx;
tSirMacAddr bssId;
#ifdef FIXME_VOLANS
uint8_t numOfSta;
uint8_t numOfStaWithoutData;
uint8_t fBroadcastTrafficPending;
uint8_t dtimCount;
#endif /* FIXME_VOLANS */
uint8_t rsvd[3];
} tBeaconGenParams, *tpBeaconGenParams;
/**
* struct tSendbeaconParams - send beacon parameters
* @bssId: BSSID mac address
* @beacon: beacon data
* @beaconLength: beacon length of template
* @timIeOffset: TIM IE offset
* @p2pIeOffset: P2P IE offset
*/
typedef struct {
tSirMacAddr bssId;
uint8_t *beacon;
uint32_t beaconLength;
uint32_t timIeOffset;
uint16_t p2pIeOffset;
} tSendbeaconParams, *tpSendbeaconParams;
/**
* struct tSendProbeRespParams - send probe response parameters
* @bssId: BSSID
* @pProbeRespTemplate: probe response template
* @probeRespTemplateLen: probe response template length
* @ucProxyProbeReqValidIEBmap: valid IE bitmap
*/
typedef struct sSendProbeRespParams {
tSirMacAddr bssId;
uint8_t *pProbeRespTemplate;
uint32_t probeRespTemplateLen;
uint32_t ucProxyProbeReqValidIEBmap[8];
} tSendProbeRespParams, *tpSendProbeRespParams;
/**
* struct tSetBssKeyParams - BSS key parameters
* @bssIdx: BSSID index
* @encType: encryption Type
* @numKeys: number of keys
* @key: key data
* @singleTidRc: 1=Single TID based Replay Count, 0=Per TID based RC
* @smesessionId: sme session id
* @status: return status of command
* @sessionId: PE session id
*/
typedef struct {
uint8_t bssIdx;
tAniEdType encType;
uint8_t numKeys;
tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS];
uint8_t singleTidRc;
uint8_t smesessionId;
CDF_STATUS status;
uint8_t sessionId;
} tSetBssKeyParams, *tpSetBssKeyParams;
/**
* struct tUpdateBeaconParams - update beacon request parameters
* @bssIdx: BSSID index
* @fShortPreamble: shortPreamble mode
* @fShortSlotTime: short Slot time
* @beaconInterval: Beacon Interval
* @llaCoexist: 11a coexist
* @llbCoexist: 11b coexist
* @llgCoexist: 11g coexist
* @ht20MhzCoexist: HT 20MHz coexist
* @fLsigTXOPProtectionFullSupport: TXOP protection supported or not
* @fRIFSMode: RIFS mode
* @paramChangeBitmap: change bitmap
* @smeSessionId: SME session id
*/
typedef struct {
uint8_t bssIdx;
uint8_t fShortPreamble;
uint8_t fShortSlotTime;
uint16_t beaconInterval;
uint8_t llaCoexist;
uint8_t llbCoexist;
uint8_t llgCoexist;
uint8_t ht20MhzCoexist;
uint8_t llnNonGFCoexist;
uint8_t fLsigTXOPProtectionFullSupport;
uint8_t fRIFSMode;
uint16_t paramChangeBitmap;
uint8_t smeSessionId;
} tUpdateBeaconParams, *tpUpdateBeaconParams;
#ifdef WLAN_FEATURE_11AC
/**
* struct tUpdateVHTOpMode - VHT operating mode
* @opMode: VHT operating mode
* @staId: station id
* @smesessionId: SME session id
* @peer_mac: peer mac address
*/
typedef struct {
uint16_t opMode;
uint16_t staId;
uint16_t smesessionId;
tSirMacAddr peer_mac;
} tUpdateVHTOpMode, *tpUpdateVHTOpMode;
/**
* struct tUpdateRxNss - update rx nss parameters
* @rxNss: rx nss value
* @staId: station id
* @smesessionId: sme session id
* @peer_mac: peer mac address
*/
typedef struct {
uint16_t rxNss;
uint16_t staId;
uint16_t smesessionId;
tSirMacAddr peer_mac;
} tUpdateRxNss, *tpUpdateRxNss;
/**
* struct tUpdateMembership - update membership parmaters
* @membership: membership value
* @staId: station id
* @smesessionId: SME session id
* @peer_mac: peer mac address
*/
typedef struct {
uint32_t membership;
uint16_t staId;
uint16_t smesessionId;
tSirMacAddr peer_mac;
} tUpdateMembership, *tpUpdateMembership;
/**
* struct tUpdateUserPos - update user position parmeters
* @userPos: user position
* @staId: station id
* @smesessionId: sme session id
* @peer_mac: peer mac address
*/
typedef struct {
uint32_t userPos;
uint16_t staId;
uint16_t smesessionId;
tSirMacAddr peer_mac;
} tUpdateUserPos, *tpUpdateUserPos;
#endif /* WLAN_FEATURE_11AC */
/**
* struct tUpdateCFParams -CF parameters
* @bssIdx: BSSID index
* @cfpCount: CFP count
* @cfpPeriod: the number of DTIM intervals between the start of CFPs
*/
typedef struct {
uint8_t bssIdx;
/*
* cfpCount indicates how many DTIMs (including the current frame)
* appear before the next CFP start. A CFPCount of 0 indicates that
* the current DTIM marks the start of the CFP.
*/
uint8_t cfpCount;
uint8_t cfpPeriod;
} tUpdateCFParams, *tpUpdateCFParams;
/**
* struct tSwitchChannelParams - switch channel request parameter
* @channelNumber: channel number
* @localPowerConstraint: local power constraint
* @secondaryChannelOffset: scondary channel offset
* @peSessionId: PE session id
* @txMgmtPower: TX mgmt power
* @maxTxPower: max tx power
* @selfStaMacAddr: self mac address
* @bssId: bssid
* @status: CDF status
* @chainMask: chanin mask
* @smpsMode: SMPS mode
* @isDfsChannel: is DFS channel
* @vhtCapable: VHT capable
* @dot11_mode: 802.11 mode
*/
typedef struct {
uint8_t channelNumber;
#ifndef WLAN_FEATURE_VOWIFI
uint8_t localPowerConstraint;
#endif /* WLAN_FEATURE_VOWIFI */
uint8_t peSessionId;
#if defined WLAN_FEATURE_VOWIFI
tPowerdBm txMgmtPower;
tPowerdBm maxTxPower;
#endif /* WLAN_FEATURE_VOWIFI */
tSirMacAddr selfStaMacAddr;
/* the request has power constraints, this should be applied only to
* that session
* VO Wifi comment: BSSID is needed to identify which session issued
* this request. As the request has power constraints, this should be
* applied only to that session
* V IMP: Keep bssId field at the end of this msg.
* It is used to mantain backward compatbility by way of ignoring if
* using new host/old FW or old host/new FW since it is at the end of
* this struct
*/
tSirMacAddr bssId;
CDF_STATUS status;
uint16_t chainMask;
uint16_t smpsMode;
uint8_t isDfsChannel;
uint8_t vhtCapable;
phy_ch_width ch_width;
uint8_t ch_center_freq_seg0;
uint8_t ch_center_freq_seg1;
uint8_t dot11_mode;
uint8_t restart_on_chan_switch;
uint8_t nss;
} tSwitchChannelParams, *tpSwitchChannelParams;
/**
* struct tpCSAOffloadParams - CSA offload request parameters
* @channel: channel
* @switchmode: switch mode
* @sec_chan_offset: second channel offset
* @new_ch_width: new channel width
* @new_ch_freq_seg1: channel center freq 1
* @new_ch_freq_seg2: channel center freq 2
* @ies_present_flag: IE present flag
*/
typedef struct CSAOffloadParams {
uint8_t channel;
uint8_t switchmode;
uint8_t sec_chan_offset;
uint8_t new_ch_width;
uint8_t new_ch_freq_seg1;
uint8_t new_ch_freq_seg2;
uint32_t ies_present_flag;
tSirMacAddr bssId;
} *tpCSAOffloadParams, tCSAOffloadParams;
typedef void (*tpSetLinkStateCallback)(tpAniSirGlobal pMac, void *msgParam,
bool status);
/**
* struct tLinkStateParams - link state parameters
* @bssid: BSSID
* @selfMacAddr: self mac address
* @state: link state
* @callback: callback function pointer
* @callbackArg: callback argument
* @session: session context
*/
typedef struct sLinkStateParams {
/* SIR_HAL_SET_LINK_STATE */
tSirMacAddr bssid;
tSirMacAddr selfMacAddr;
tSirLinkState state;
tpSetLinkStateCallback callback;
void *callbackArg;
#ifdef WLAN_FEATURE_VOWIFI_11R
int ft;
void *session;
#endif /* WLAN_FEATURE_VOWIFI_11R */
bool status;
} tLinkStateParams, *tpLinkStateParams;
/**
* struct tAddTsParams - ADDTS related parameters
* @staIdx: station index
* @tspecIdx: TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
* @tspec: tspec value
* @status: CDF status
* @sessionId: session id
* @tsm_interval: TSM interval period passed from lim to WMA
* @setRICparams: RIC parameters
* @sme_session_id: sme session id
*/
typedef struct {
uint16_t staIdx;
uint16_t tspecIdx;
tSirMacTspecIE tspec;
CDF_STATUS status;
uint8_t sessionId;
#ifdef FEATURE_WLAN_ESE
uint16_t tsm_interval;
#endif /* FEATURE_WLAN_ESE */
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
uint8_t setRICparams;
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
uint8_t sme_session_id;
} tAddTsParams, *tpAddTsParams;
/**
* struct tDelTsParams - DELTS related parameters
* @staIdx: station index
* @tspecIdx: TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS
* @bssId: BSSID
* @sessionId: session id
* @userPrio: user priority
* @delTsInfo: DELTS info
* @setRICparams: RIC parameters
*/
typedef struct {
uint16_t staIdx;
uint16_t tspecIdx;
tSirMacAddr bssId;
uint8_t sessionId;
uint8_t userPrio;
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
tSirDeltsReqInfo delTsInfo;
uint8_t setRICparams;
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
} tDelTsParams, *tpDelTsParams;
#ifdef WLAN_FEATURE_VOWIFI_11R
#define HAL_QOS_NUM_TSPEC_MAX 2
#define HAL_QOS_NUM_AC_MAX 4
/**
* struct tAggrAddTsParams - ADDTS parameters
* @staIdx: station index
* @tspecIdx: TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
* @tspec: tspec value
* @status: CDF status
* @sessionId: session id
*/
typedef struct {
uint16_t staIdx;
uint16_t tspecIdx;
tSirMacTspecIE tspec[HAL_QOS_NUM_AC_MAX];
CDF_STATUS status[HAL_QOS_NUM_AC_MAX];
uint8_t sessionId;
} tAggrAddTsParams, *tpAggrAddTsParams;
#endif /* WLAN_FEATURE_VOWIFI_11R */
typedef tSirRetStatus (*tHalMsgCallback)(tpAniSirGlobal pMac, uint32_t mesgId,
void *mesgParam);
/**
* struct tEdcaParams - EDCA parameters
* @bssIdx: BSSID index
* @acbe: best effort access catagory
* @acbk: Background access catagory
* @acvi: video access catagory
* @acvo: voice access catagory
*/
typedef struct {
uint16_t bssIdx;
tSirMacEdcaParamRecord acbe;
tSirMacEdcaParamRecord acbk;
tSirMacEdcaParamRecord acvi;
tSirMacEdcaParamRecord acvo;
} tEdcaParams, *tpEdcaParams;
/**
* struct tSetMIMOPS - MIMO power save related parameters
* @staIdx: station index
* @htMIMOPSState: MIMO Power Save State
* @status: response status
* @fsendRsp: send response flag
* @peerMac: peer mac address
* @sessionId: session id
*/
typedef struct sSet_MIMOPS {
uint16_t staIdx;
tSirMacHTMIMOPowerSaveState htMIMOPSState;
CDF_STATUS status;
uint8_t fsendRsp;
tSirMacAddr peerMac;
uint8_t sessionId;
} tSetMIMOPS, *tpSetMIMOPS;
/**
* struct tUapsdParams - Uapsd related parameters
* @bkDeliveryEnabled: BK delivery enable flag
* @beDeliveryEnabled: BE delivery enable flag
* @viDeliveryEnabled: VI delivery enable flag
* @voDeliveryEnabled: VO delivery enable flag
* @bkTriggerEnabled: BK trigger enable flag
* @beTriggerEnabled: BE trigger enable flag
* @viTriggerEnabled: VI trigger enable flag
* @voTriggerEnabled: VO trigger enable flag
* @status: response status
* @bssIdx: BSSID index
* Request Type = SIR_HAL_ENTER_UAPSD_REQ
*/
typedef struct sUapsdParams {
uint8_t bkDeliveryEnabled:1;
uint8_t beDeliveryEnabled:1;
uint8_t viDeliveryEnabled:1;
uint8_t voDeliveryEnabled:1;
uint8_t bkTriggerEnabled:1;
uint8_t beTriggerEnabled:1;
uint8_t viTriggerEnabled:1;
uint8_t voTriggerEnabled:1;
CDF_STATUS status;
uint8_t bssIdx;
} tUapsdParams, *tpUapsdParams;
/**
* struct tHalIndCB - hal message indication callback
* @pHalIndCB: hal message indication callabck
*/
typedef struct tHalIndCB {
tHalMsgCallback pHalIndCB;
} tHalIndCB, *tpHalIndCB;
/**
* struct sControlTxParams - control tx parameters
* @stopTx: stop transmission
* @fCtrlGlobal: Master flag to stop or resume all transmission
* @ctrlSta: If this flag is set, staBitmap
* @ctrlBss: If this flag is set, bssBitmap and beaconBitmap is valid
* @bssBitmap: bitmap of BSS indices to be stopped for resumed
* @beaconBitmap: this bitmap contains bitmap of BSS indices to be
* stopped for resumed for beacon transmission
*/
typedef struct sControlTxParams {
bool stopTx;
uint8_t fCtrlGlobal;
uint8_t ctrlSta;
uint8_t ctrlBss;
/* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be
* stopped for resumed for transmission.
* This is 32 bit bitmap, not array of bytes.
*/
uint32_t bssBitmap;
/* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be
* stopped for resumed for beacon transmission.
*/
uint32_t beaconBitmap;
} tTxControlParams, *tpTxControlParams;
/**
* struct tMaxTxPowerParams - Max Tx Power parameters
* @bssId: BSSID is needed to identify which session issued this request
* @selfStaMacAddr: self mac address
* @power: tx power in dbm
* @dev_mode: device mode
* Request Type = SIR_HAL_SET_MAX_TX_POWER_REQ
*/
typedef struct sMaxTxPowerParams {
tSirMacAddr bssId;
tSirMacAddr selfStaMacAddr;
/* In request,
* power == MaxTx power to be used.
* In response,
* power == tx power used for management frames.
*/
tPowerdBm power;
tCDF_CON_MODE dev_mode;
} tMaxTxPowerParams, *tpMaxTxPowerParams;
/**
* struct tMaxTxPowerPerBandParams - max tx power per band info
* @bandInfo: band info
* @power: power in dbm
*/
typedef struct sMaxTxPowerPerBandParams {
eCsrBand bandInfo;
tPowerdBm power;
} tMaxTxPowerPerBandParams, *tpMaxTxPowerPerBandParams;
/**
* struct add_sta_self_params - Add Sta Self params
* @self_mac_addr: self MAC Address
* @curr_device_mode: operating device mode
* @type: Vdev Type
* @sub_type: Vdev Sub Type
* @session_id: SME Session ID
* @status: response status code
*/
struct add_sta_self_params {
tSirMacAddr self_mac_addr;
tCDF_CON_MODE curr_device_mode;
uint32_t type;
uint32_t sub_type;
uint8_t session_id;
uint32_t status;
};
#ifdef FEATURE_WLAN_TDLS
#define HAL_TDLS_MAX_SUPP_CHANNELS 128
#define HAL_TDLS_MAX_SUPP_OPER_CLASSES 32
/**
* struct tTdlsPeerCapParams - TDLS peer capablities parameters
* @isPeerResponder: is peer responder or not
* @peerUapsdQueue: peer uapsd queue
* @peerMaxSp: peer max SP value
* @peerBuffStaSupport: peer buffer sta supported or not
* @peerOffChanSupport: peer offchannel support
* @peerCurrOperClass: peer current operating class
* @selfCurrOperClass: self current operating class
* @peerChanLen: peer channel length
* @peerChan: peer channel list
* @peerOperClassLen: peer operating class length
* @peerOperClass: peer operating class
* @prefOffChanNum: peer offchannel number
* @prefOffChanBandwidth: peer offchannel bandwidth
* @opClassForPrefOffChan: operating class for offchannel
*/
typedef struct {
uint8_t isPeerResponder;
uint8_t peerUapsdQueue;
uint8_t peerMaxSp;
uint8_t peerBuffStaSupport;
uint8_t peerOffChanSupport;
uint8_t peerCurrOperClass;
uint8_t selfCurrOperClass;
uint8_t peerChanLen;
tSirUpdateChanParam peerChan[HAL_TDLS_MAX_SUPP_CHANNELS];
uint8_t peerOperClassLen;
uint8_t peerOperClass[HAL_TDLS_MAX_SUPP_OPER_CLASSES];
uint8_t prefOffChanNum;
uint8_t prefOffChanBandwidth;
uint8_t opClassForPrefOffChan;
} tTdlsPeerCapParams;
/**
* struct tTdlsPeerStateParams - TDLS peer state parameters
* @vdevId: vdev id
* @peerMacAddr: peer mac address
* @peerCap: peer capabality
*/
typedef struct sTdlsPeerStateParams {
uint32_t vdevId;
tSirMacAddr peerMacAddr;
uint32_t peerState;
tTdlsPeerCapParams peerCap;
} tTdlsPeerStateParams;
/**
* struct tdls_chan_switch_params - channel switch parameter structure
* @vdev_id: vdev ID
* @peer_mac_addr: Peer mac address
* @tdls_off_ch_bw_offset: Target off-channel bandwitdh offset
* @tdls_off_ch: Target Off Channel
* @oper_class: Operating class for target channel
* @is_responder: Responder or initiator
*/
typedef struct tdls_chan_switch_params_struct {
uint32_t vdev_id;
tSirMacAddr peer_mac_addr;
uint16_t tdls_off_ch_bw_offset;
uint8_t tdls_off_ch;
uint8_t tdls_sw_mode;
uint8_t oper_class;
uint8_t is_responder;
} tdls_chan_switch_params;
#endif /* FEATURE_WLAN_TDLS */
/**
* struct tAbortScanParams - Abort scan parameters
* @SessionId: session id
*/
typedef struct sAbortScanParams {
uint8_t SessionId;
uint32_t scan_id;
} tAbortScanParams, *tpAbortScanParams;
/**
* struct del_sta_self_params - Del Sta Self params
* @session_id: SME Session ID
* @status: response status code
*/
struct del_sta_self_params {
tSirMacAddr self_mac_addr;
uint8_t session_id;
uint32_t status;
};
/**
* struct tP2pPsParams - P2P powersave related params
* @opp_ps: opportunistic power save
* @ctWindow: CT window
* @count: count
* @duration: duration
* @interval: interval
* @single_noa_duration: single shot noa duration
* @psSelection: power save selection
* @sessionId: session id
*/
typedef struct sP2pPsParams {
uint8_t opp_ps;
uint32_t ctWindow;
uint8_t count;
uint32_t duration;
uint32_t interval;
uint32_t single_noa_duration;
uint8_t psSelection;
uint8_t sessionId;
} tP2pPsParams, *tpP2pPsParams;
/**
* struct tTdlsLinkEstablishParams - TDLS Link establish parameters
* @staIdx: station index
* @isResponder: responder flag
* @uapsdQueues: uapsd queue
* @maxSp: max SP period
* @isBufsta: is station flag
* @isOffChannelSupported: offchannel supported or not
* @peerCurrOperClass: peer current operating class
* @selfCurrOperClass: self current operating class
* @validChannelsLen: valid channel length
* @validChannels: valid channels
* @validOperClassesLen: valid operating class length
* @validOperClasses: valid operating class
* @status: return status of command
*/
typedef struct sTdlsLinkEstablishParams {
uint16_t staIdx;
uint8_t isResponder;
uint8_t uapsdQueues;
uint8_t maxSp;
uint8_t isBufsta;
uint8_t isOffChannelSupported;
uint8_t peerCurrOperClass;
uint8_t selfCurrOperClass;
uint8_t validChannelsLen;
uint8_t validChannels[HAL_MAX_SUPP_CHANNELS];
uint8_t validOperClassesLen;
uint8_t validOperClasses[HAL_MAX_SUPP_OPER_CLASSES];
uint32_t status;
} tTdlsLinkEstablishParams, *tpTdlsLinkEstablishParams;
/**
* struct tHalHiddenSsidVdevRestart - hidden ssid vdev restart params
* @ssidHidden: is hidden ssid or not
* @sessionId: session id
*/
typedef struct tHalHiddenSsidVdevRestart {
uint8_t ssidHidden;
uint8_t sessionId;
} tHalHiddenSsidVdevRestart, *tpHalHiddenSsidVdevRestart;
extern void sys_process_mmh_msg(tpAniSirGlobal pMac, tSirMsgQ *pMsg);
/**
* struct tBeaconFilterMsg - Beacon Filtering data structure
* @capabilityInfo: capability info
* @capabilityMask: capabality mask
* @beaconInterval: beacon interval
* @ieNum: IE number
* @reserved: reserved
*/
typedef struct sBeaconFilterMsg {
uint16_t capabilityInfo;
uint16_t capabilityMask;
uint16_t beaconInterval;
uint16_t ieNum;
uint8_t bssIdx;
uint8_t reserved;
} cdf_packed tBeaconFilterMsg, *tpBeaconFilterMsg;
/**
* struct tEidByteInfo - Eid byte info
* @offset: offset
* @value: value
* @bitMask: BIT mask
* @ref: refrence
*/
typedef struct sEidByteInfo {
uint8_t offset;
uint8_t value;
uint8_t bitMask;
uint8_t ref;
} cdf_packed tEidByteInfo, *tpEidByteInfo;
/**
* struct tBeaconFilterIe - beacon filter IE
* @elementId: element IE
* @checkIePresence: check IE presence
* @byte: Eid byte info
*/
typedef struct sBeaconFilterIe {
uint8_t elementId;
uint8_t checkIePresence;
tEidByteInfo byte;
} cdf_packed tBeaconFilterIe, *tpBeaconFilterIe;
/**
* struct tDisableIntraBssFwd - intra bss forward parameters
* @sessionId: session id
* @disableintrabssfwd: disable intra bss forward flag
*/
typedef struct sDisableIntraBssFwd {
uint16_t sessionId;
bool disableintrabssfwd;
} cdf_packed tDisableIntraBssFwd, *tpDisableIntraBssFwd;
#ifdef WLAN_FEATURE_STATS_EXT
/**
* struct tStatsExtRequest - ext stats request
* @vdev_id: vdev id
* @request_data_len: request data length
* @request_data: request data
*/
typedef struct sStatsExtRequest {
uint32_t vdev_id;
uint32_t request_data_len;
uint8_t request_data[];
} tStatsExtRequest, *tpStatsExtRequest;
#endif /* WLAN_FEATURE_STATS_EXT */
#ifdef WLAN_FEATURE_NAN
/**
* struct tNanRequest - NAN request params
* @request_data_len: request data length
* @request_data: request data
*/
typedef struct sNanRequest {
uint16_t request_data_len;
uint8_t request_data[];
} tNanRequest, *tpNanRequest;
#endif /* WLAN_FEATURE_NAN */
#endif /* _HALMSGAPI_H_ */