xref: /wlan-driver/qcacld-3.0/core/wma/inc/wma_if.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #ifndef _HALMSGAPI_H_
21*5113495bSYour Name #define _HALMSGAPI_H_
22*5113495bSYour Name 
23*5113495bSYour Name #include "qdf_types.h"
24*5113495bSYour Name #include "sir_api.h"
25*5113495bSYour Name #include "sir_params.h"
26*5113495bSYour Name 
27*5113495bSYour Name /*
28*5113495bSYour Name  * Validate the OS Type being built
29*5113495bSYour Name  */
30*5113495bSYour Name 
31*5113495bSYour Name #if defined(ANI_OS_TYPE_ANDROID)        /* ANDROID */
32*5113495bSYour Name 
33*5113495bSYour Name #if defined(ANI_OS_TYPE_QNX)
34*5113495bSYour Name #error "more than one ANI_OS_TYPE_xxx is defined for this build"
35*5113495bSYour Name #endif
36*5113495bSYour Name 
37*5113495bSYour Name #elif defined(ANI_OS_TYPE_QNX)        /* QNX */
38*5113495bSYour Name 
39*5113495bSYour Name #if defined(ANI_OS_TYPE_ANDROID)
40*5113495bSYour Name #error "more than one ANI_OS_TYPE_xxx is defined for this build"
41*5113495bSYour Name #endif
42*5113495bSYour Name 
43*5113495bSYour Name #elif !defined(ANI_OS_TYPE_ANDROID) && !defined(ANI_OS_TYPE_QNX) /* NONE */
44*5113495bSYour Name #error "NONE of the ANI_OS_TYPE_xxx are defined for this build"
45*5113495bSYour Name #endif
46*5113495bSYour Name 
47*5113495bSYour Name /* operMode in ADD BSS message */
48*5113495bSYour Name #define BSS_OPERATIONAL_MODE_AP     0
49*5113495bSYour Name #define BSS_OPERATIONAL_MODE_STA    1
50*5113495bSYour Name #define BSS_OPERATIONAL_MODE_IBSS   2
51*5113495bSYour Name #define BSS_OPERATIONAL_MODE_NDI    3
52*5113495bSYour Name 
53*5113495bSYour Name /* STA entry type in add sta message */
54*5113495bSYour Name #define STA_ENTRY_SELF              0
55*5113495bSYour Name #define STA_ENTRY_OTHER             1
56*5113495bSYour Name #define STA_ENTRY_BSSID             2
57*5113495bSYour Name /* Special station id for transmitting broadcast frames. */
58*5113495bSYour Name #define STA_ENTRY_BCAST             3
59*5113495bSYour Name #define STA_ENTRY_PEER              STA_ENTRY_OTHER
60*5113495bSYour Name #define STA_ENTRY_TDLS_PEER         4
61*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS
62*5113495bSYour Name #define IS_TDLS_PEER(type) ((type) == STA_ENTRY_TDLS_PEER)
63*5113495bSYour Name #else /* !FEATURE_WLAN_TDLS */
64*5113495bSYour Name #define IS_TDLS_PEER(type) false
65*5113495bSYour Name #endif /* FEATURE_WLAN_TDLS */
66*5113495bSYour Name #define STA_ENTRY_NDI_PEER          5
67*5113495bSYour Name 
68*5113495bSYour Name #define STA_INVALID_IDX 0xFF
69*5113495bSYour Name 
70*5113495bSYour Name /* invalid channel id. */
71*5113495bSYour Name #define INVALID_CHANNEL_ID 0
72*5113495bSYour Name 
73*5113495bSYour Name /**
74*5113495bSYour Name  * enum eFrameType - frame types
75*5113495bSYour Name  * @TXRX_FRM_RAW: raw frame
76*5113495bSYour Name  * @TXRX_FRM_ETH2: ethernet frame
77*5113495bSYour Name  * @TXRX_FRM_802_3: 802.3 frame
78*5113495bSYour Name  * @TXRX_FRM_802_11_MGMT: 802.11 mgmt frame
79*5113495bSYour Name  * @TXRX_FRM_802_11_CTRL: 802.11 control frame
80*5113495bSYour Name  * @TXRX_FRM_802_11_DATA: 802.11 data frame
81*5113495bSYour Name  */
82*5113495bSYour Name typedef enum {
83*5113495bSYour Name 	TXRX_FRM_RAW,
84*5113495bSYour Name 	TXRX_FRM_ETH2,
85*5113495bSYour Name 	TXRX_FRM_802_3,
86*5113495bSYour Name 	TXRX_FRM_802_11_MGMT,
87*5113495bSYour Name 	TXRX_FRM_802_11_CTRL,
88*5113495bSYour Name 	TXRX_FRM_802_11_DATA,
89*5113495bSYour Name 	TXRX_FRM_IGNORED,   /* This frame will be dropped */
90*5113495bSYour Name 	TXRX_FRM_MAX
91*5113495bSYour Name } eFrameType;
92*5113495bSYour Name 
93*5113495bSYour Name /**
94*5113495bSYour Name  * enum eFrameTxDir - frame tx direction
95*5113495bSYour Name  * @ANI_TXDIR_IBSS: IBSS frame
96*5113495bSYour Name  * @ANI_TXDIR_TODS: frame to DS
97*5113495bSYour Name  * @ANI_TXDIR_FROMDS: Frame from DS
98*5113495bSYour Name  * @ANI_TXDIR_WDS: WDS frame
99*5113495bSYour Name  */
100*5113495bSYour Name typedef enum {
101*5113495bSYour Name 	ANI_TXDIR_IBSS = 0,
102*5113495bSYour Name 	ANI_TXDIR_TODS,
103*5113495bSYour Name 	ANI_TXDIR_FROMDS,
104*5113495bSYour Name 	ANI_TXDIR_WDS
105*5113495bSYour Name } eFrameTxDir;
106*5113495bSYour Name 
107*5113495bSYour Name /**
108*5113495bSYour Name  *struct sAniBeaconStruct - Beacon structure
109*5113495bSYour Name  * @beaconLength: beacon length
110*5113495bSYour Name  * @macHdr: mac header for beacon
111*5113495bSYour Name  */
112*5113495bSYour Name typedef struct sAniBeaconStruct {
113*5113495bSYour Name 	uint32_t beaconLength;
114*5113495bSYour Name 	tSirMacMgmtHdr macHdr;
115*5113495bSYour Name } qdf_packed tAniBeaconStruct, *tpAniBeaconStruct;
116*5113495bSYour Name 
117*5113495bSYour Name /**
118*5113495bSYour Name  * struct sAniProbeRspStruct - probeRsp template structure
119*5113495bSYour Name  * @macHdr: mac header for probe response
120*5113495bSYour Name  */
121*5113495bSYour Name struct sAniProbeRspStruct {
122*5113495bSYour Name 	tSirMacMgmtHdr macHdr;
123*5113495bSYour Name 	/* probeRsp body follows here */
124*5113495bSYour Name } qdf_packed;
125*5113495bSYour Name 
126*5113495bSYour Name /**
127*5113495bSYour Name  * med_sync_delay - medium sync delay info
128*5113495bSYour Name  * @med_sync_duration: medium sync duration
129*5113495bSYour Name  * @med_sync_ofdm_ed_thresh: medium sync OFDM ED threshold
130*5113495bSYour Name  * @med_sync_max_txop_num: medium sync max txop num
131*5113495bSYour Name  */
132*5113495bSYour Name struct med_sync_delay {
133*5113495bSYour Name 	uint16_t med_sync_duration:8;
134*5113495bSYour Name 	uint16_t med_sync_ofdm_ed_thresh:4;
135*5113495bSYour Name 	uint16_t med_sync_max_txop_num:4;
136*5113495bSYour Name };
137*5113495bSYour Name 
138*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
139*5113495bSYour Name /**
140*5113495bSYour Name  * struct ml_partner_link_info: partner link info
141*5113495bSYour Name  * @link_id: partner link ID
142*5113495bSYour Name  * @link_addr: partner link address
143*5113495bSYour Name  * @ch_freq:Channel in Mhz
144*5113495bSYour Name  * @ch_phymode: Channel phymode
145*5113495bSYour Name  */
146*5113495bSYour Name struct ml_partner_link_info {
147*5113495bSYour Name 	uint8_t vdev_id;
148*5113495bSYour Name 	uint8_t link_id;
149*5113495bSYour Name 	struct qdf_mac_addr link_addr;
150*5113495bSYour Name 	struct qdf_mac_addr self_mac_addr;
151*5113495bSYour Name 	struct wlan_channel channel_info;
152*5113495bSYour Name };
153*5113495bSYour Name 
154*5113495bSYour Name struct peer_ml_info {
155*5113495bSYour Name 	uint32_t vdev_id;
156*5113495bSYour Name 	uint32_t link_id;
157*5113495bSYour Name 	struct qdf_mac_addr link_addr;
158*5113495bSYour Name 	struct wlan_channel channel_info;
159*5113495bSYour Name 	struct qdf_mac_addr self_mac_addr;
160*5113495bSYour Name 	uint8_t num_links;
161*5113495bSYour Name 	struct ml_partner_link_info partner_info[MLD_MAX_LINKS - 1];
162*5113495bSYour Name 	uint8_t rec_max_simultaneous_links;
163*5113495bSYour Name };
164*5113495bSYour Name #endif
165*5113495bSYour Name 
166*5113495bSYour Name /**
167*5113495bSYour Name  * struct tAddStaParams - add sta related parameters
168*5113495bSYour Name  * @bssId: bssid of sta
169*5113495bSYour Name  * @assocId: associd
170*5113495bSYour Name  * @staType: 0 - Self, 1 other/remote, 2 - bssid
171*5113495bSYour Name  * @staMac: MAC Address of STA
172*5113495bSYour Name  * @listenInterval: Listen interval
173*5113495bSYour Name  * @wmmEnabled: Support for 11e/WMM
174*5113495bSYour Name  * @uAPSD: U-APSD Flags: 1b per AC
175*5113495bSYour Name  * @maxSPLen: Max SP Length
176*5113495bSYour Name  * @htCapable: 11n HT capable STA
177*5113495bSYour Name  * @txChannelWidthSet: TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz
178*5113495bSYour Name  * @mimoPS: MIMO Power Save
179*5113495bSYour Name  * @maxAmpduDensity: 3 : 0~7 : 2^(11nAMPDUdensity -4)
180*5113495bSYour Name  * @maxAmsduSize: 1 : 3839 bytes, 0 : 7935 bytes
181*5113495bSYour Name  * @fShortGI40Mhz: short GI support for 40Mhz packets
182*5113495bSYour Name  * @fShortGI20Mhz: short GI support for 20Mhz packets
183*5113495bSYour Name  * @supportedRates: legacy supported rates
184*5113495bSYour Name  * @status: QDF status
185*5113495bSYour Name  * @staIdx: station index
186*5113495bSYour Name  * @updateSta: pdate the existing STA entry, if this flag is set
187*5113495bSYour Name  * @rmfEnabled: Robust Management Frame (RMF) enabled/disabled
188*5113495bSYour Name  * @encryptType: The unicast encryption type in the association
189*5113495bSYour Name  * @sessionId: PE session id
190*5113495bSYour Name  * @p2pCapableSta: if this is a P2P Capable Sta
191*5113495bSYour Name  * @csaOffloadEnable: CSA offload enable flag
192*5113495bSYour Name  * @vhtCapable: is VHT capabale or not
193*5113495bSYour Name  * @vhtTxChannelWidthSet: VHT channel width
194*5113495bSYour Name  * @vhtSupportedRxNss: VHT supported RX NSS
195*5113495bSYour Name  * @vhtTxBFCapable: txbf capable or not
196*5113495bSYour Name  * @vhtTxMUBformeeCapable: Bformee capable or not
197*5113495bSYour Name  * @enableVhtpAid: enable VHT AID
198*5113495bSYour Name  * @enableAmpduPs: AMPDU power save
199*5113495bSYour Name  * @enableHtSmps: enable HT SMPS
200*5113495bSYour Name  * @htSmpsconfig: HT SMPS config
201*5113495bSYour Name  * @htLdpcCapable: HT LDPC capable
202*5113495bSYour Name  * @vhtLdpcCapable: VHT LDPC capable
203*5113495bSYour Name  * @vht_mcs_10_11_supp: VHT MCS 10 & 11 support
204*5113495bSYour Name  * @smesessionId: sme session id
205*5113495bSYour Name  * @wpa_rsn: RSN capable
206*5113495bSYour Name  * @capab_info: capabality info
207*5113495bSYour Name  * @ht_caps: HT capabalities
208*5113495bSYour Name  * @vht_caps: VHT vapabalities
209*5113495bSYour Name  * @nwType: NW Type
210*5113495bSYour Name  * @maxTxPower: max tx power
211*5113495bSYour Name  * @nss: Return the number of spatial streams supported
212*5113495bSYour Name  * @stbc_capable: stbc capable
213*5113495bSYour Name  * @no_ptk_4_way: Do not need 4-way handshake
214*5113495bSYour Name  * @eht_capable: is EHT capabale or not
215*5113495bSYour Name  * @eht_config: EHT capability
216*5113495bSYour Name  * @eht_op: EHT operation
217*5113495bSYour Name  * @mld_mac_addr: mld mac address
218*5113495bSYour Name  * @is_assoc_peer: is assoc peer or not
219*5113495bSYour Name  * @emlsr_support: is EMLSR mode supported or not
220*5113495bSYour Name  * @msd_caps_present: is MSD capability present in MLO IE or not
221*5113495bSYour Name  * @link_id: per link id
222*5113495bSYour Name  * @emlsr_trans_timeout: EMLSR transition timeout value
223*5113495bSYour Name  *
224*5113495bSYour Name  * This structure contains parameter required for
225*5113495bSYour Name  * add sta request of upper layer.
226*5113495bSYour Name  */
227*5113495bSYour Name typedef struct {
228*5113495bSYour Name 	tSirMacAddr bssId;
229*5113495bSYour Name 	uint16_t assocId;
230*5113495bSYour Name 	/* Field to indicate if this is sta entry for itself STA adding entry
231*5113495bSYour Name 	 * for itself or remote (AP adding STA after successful association.
232*5113495bSYour Name 	 * This may or may not be required in production driver.
233*5113495bSYour Name 	 */
234*5113495bSYour Name 	uint8_t staType;
235*5113495bSYour Name 	tSirMacAddr staMac;
236*5113495bSYour Name 	uint16_t listenInterval;
237*5113495bSYour Name 	uint8_t wmmEnabled;
238*5113495bSYour Name 	uint8_t uAPSD;
239*5113495bSYour Name 	uint8_t maxSPLen;
240*5113495bSYour Name 	uint8_t htCapable;
241*5113495bSYour Name 	enum phy_ch_width ch_width;
242*5113495bSYour Name 	tSirMacHTMIMOPowerSaveState mimoPS;
243*5113495bSYour Name 	uint8_t maxAmpduSize;
244*5113495bSYour Name 	uint8_t maxAmpduDensity;
245*5113495bSYour Name 	/* 11n Parameters */
246*5113495bSYour Name 	/* HT STA should set it to 1 if it is enabled in BSS
247*5113495bSYour Name 	 * HT STA should set it to 0 if AP does not support it.
248*5113495bSYour Name 	 * This indication is sent to HAL and HAL uses this flag
249*5113495bSYour Name 	 * to pickup up appropriate 40Mhz rates.
250*5113495bSYour Name 	 */
251*5113495bSYour Name 	uint8_t fShortGI40Mhz;
252*5113495bSYour Name 	uint8_t fShortGI20Mhz;
253*5113495bSYour Name 	struct supported_rates supportedRates;
254*5113495bSYour Name 	/*
255*5113495bSYour Name 	 * Following parameters are for returning status and station index from
256*5113495bSYour Name 	 * HAL to PE via response message. HAL does not read them.
257*5113495bSYour Name 	 */
258*5113495bSYour Name 	/* The return status of SIR_HAL_ADD_STA_REQ is reported here */
259*5113495bSYour Name 	QDF_STATUS status;
260*5113495bSYour Name 	uint8_t updateSta;
261*5113495bSYour Name 	uint8_t rmfEnabled;
262*5113495bSYour Name 	uint32_t encryptType;
263*5113495bSYour Name 	uint8_t sessionId;
264*5113495bSYour Name 	uint8_t p2pCapableSta;
265*5113495bSYour Name 	uint8_t csaOffloadEnable;
266*5113495bSYour Name 	uint8_t vhtCapable;
267*5113495bSYour Name 	uint8_t vhtSupportedRxNss;
268*5113495bSYour Name 	uint8_t vht_160mhz_nss;
269*5113495bSYour Name 	uint8_t vht_80p80mhz_nss;
270*5113495bSYour Name 	uint8_t vht_extended_nss_bw_cap;
271*5113495bSYour Name 	uint8_t vhtTxBFCapable;
272*5113495bSYour Name 	uint8_t enable_su_tx_bformer;
273*5113495bSYour Name 	uint8_t vhtTxMUBformeeCapable;
274*5113495bSYour Name 	uint8_t enableVhtpAid;
275*5113495bSYour Name 	uint8_t enableAmpduPs;
276*5113495bSYour Name 	uint8_t enableHtSmps;
277*5113495bSYour Name 	uint8_t htSmpsconfig;
278*5113495bSYour Name 	bool send_smps_action;
279*5113495bSYour Name 	uint8_t htLdpcCapable;
280*5113495bSYour Name 	uint8_t vhtLdpcCapable;
281*5113495bSYour Name 	uint8_t vht_mcs_10_11_supp;
282*5113495bSYour Name 	uint8_t smesessionId;
283*5113495bSYour Name 	uint8_t wpa_rsn;
284*5113495bSYour Name 	uint16_t capab_info;
285*5113495bSYour Name 	uint16_t ht_caps;
286*5113495bSYour Name 	uint32_t vht_caps;
287*5113495bSYour Name 	tSirNwType nwType;
288*5113495bSYour Name 	int8_t maxTxPower;
289*5113495bSYour Name 	uint8_t nonRoamReassoc;
290*5113495bSYour Name 	uint32_t nss;
291*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
292*5113495bSYour Name 	bool he_capable;
293*5113495bSYour Name 	tDot11fIEhe_cap he_config;
294*5113495bSYour Name 	tDot11fIEhe_op he_op;
295*5113495bSYour Name 	tDot11fIEhe_6ghz_band_cap he_6ghz_band_caps;
296*5113495bSYour Name 	uint16_t he_mcs_12_13_map;
297*5113495bSYour Name #endif
298*5113495bSYour Name 	uint8_t stbc_capable;
299*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT
300*5113495bSYour Name 	uint8_t twt_requestor;
301*5113495bSYour Name 	uint8_t twt_responder;
302*5113495bSYour Name #endif
303*5113495bSYour Name 	bool no_ptk_4_way;
304*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
305*5113495bSYour Name 	bool eht_capable;
306*5113495bSYour Name 	tDot11fIEeht_cap eht_config;
307*5113495bSYour Name 	tDot11fIEeht_op eht_op;
308*5113495bSYour Name #endif
309*5113495bSYour Name 	struct med_sync_delay msd_caps;
310*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
311*5113495bSYour Name 	uint8_t mld_mac_addr[QDF_MAC_ADDR_SIZE];
312*5113495bSYour Name 	bool is_assoc_peer;
313*5113495bSYour Name 	bool emlsr_support;
314*5113495bSYour Name 	bool msd_caps_present;
315*5113495bSYour Name 	uint8_t link_id;
316*5113495bSYour Name 	uint16_t emlsr_trans_timeout;
317*5113495bSYour Name 	struct ml_partner_link_info ml_partner_info[MLD_MAX_LINKS - 1];
318*5113495bSYour Name 	struct peer_ml_info ml_info;
319*5113495bSYour Name #endif
320*5113495bSYour Name } tAddStaParams, *tpAddStaParams;
321*5113495bSYour Name 
322*5113495bSYour Name /**
323*5113495bSYour Name  * struct tDeleteStaParams - parameters required for del sta request
324*5113495bSYour Name  * @assocId: association index
325*5113495bSYour Name  * @status: status
326*5113495bSYour Name  * @respReqd: is response required
327*5113495bSYour Name  * @sessionId: PE session id
328*5113495bSYour Name  * @smesessionId: SME session id
329*5113495bSYour Name  * @staType: station type
330*5113495bSYour Name  * @staMac: station mac
331*5113495bSYour Name  */
332*5113495bSYour Name typedef struct {
333*5113495bSYour Name 	uint16_t assocId;
334*5113495bSYour Name 	QDF_STATUS status;
335*5113495bSYour Name 	uint8_t respReqd;
336*5113495bSYour Name 	uint8_t sessionId;
337*5113495bSYour Name 	uint8_t smesessionId;
338*5113495bSYour Name 	uint8_t staType;
339*5113495bSYour Name 	tSirMacAddr staMac;
340*5113495bSYour Name } tDeleteStaParams, *tpDeleteStaParams;
341*5113495bSYour Name 
342*5113495bSYour Name /**
343*5113495bSYour Name  * struct tSetStaKeyParams - set key params
344*5113495bSYour Name  * @encType: encryption type
345*5113495bSYour Name  * @defWEPIdx: Default WEP key, valid only for static WEP, must between 0 and 3
346*5113495bSYour Name  * @singleTidRc: 1=Single TID based Replay Count, 0=Per TID based RC
347*5113495bSYour Name  * @vdev_id: vdev_id
348*5113495bSYour Name  * @peerMacAddr: peer mac address
349*5113495bSYour Name  * @status: status
350*5113495bSYour Name  * @macaddr: MAC address of the peer
351*5113495bSYour Name  * @key_len: key len
352*5113495bSYour Name  *
353*5113495bSYour Name  * This is used by PE to configure the key information on a given station.
354*5113495bSYour Name  * When the secType is WEP40 or WEP104, the defWEPIdx is used to locate
355*5113495bSYour Name  * a preconfigured key from a BSS the station associated with; otherwise
356*5113495bSYour Name  * a new key descriptor is created based on the key field.
357*5113495bSYour Name  */
358*5113495bSYour Name typedef struct {
359*5113495bSYour Name 	tAniEdType encType;
360*5113495bSYour Name 	uint8_t defWEPIdx;
361*5113495bSYour Name 	uint8_t singleTidRc;
362*5113495bSYour Name 	uint8_t vdev_id;
363*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
364*5113495bSYour Name 	QDF_STATUS status;
365*5113495bSYour Name 	uint8_t sendRsp;
366*5113495bSYour Name 	struct qdf_mac_addr macaddr;
367*5113495bSYour Name 	uint16_t key_len;
368*5113495bSYour Name } tSetStaKeyParams, *tpSetStaKeyParams;
369*5113495bSYour Name 
370*5113495bSYour Name /**
371*5113495bSYour Name  * struct bss_params - parameters required for add bss params
372*5113495bSYour Name  * @bssId: MAC Address/BSSID
373*5113495bSYour Name  * @nwType: network type
374*5113495bSYour Name  * @shortSlotTimeSupported: is short slot time supported or not
375*5113495bSYour Name  * @llbCoexist: 11b coexist supported or not
376*5113495bSYour Name  * @beaconInterval: beacon interval
377*5113495bSYour Name  * @dtimPeriod: DTIM period
378*5113495bSYour Name  * @htCapable: Enable/Disable HT capabilities
379*5113495bSYour Name  * @rmfEnabled: RMF enabled/disabled
380*5113495bSYour Name  * @staContext: sta context
381*5113495bSYour Name  * @updateBss: update the existing BSS entry, if this flag is set
382*5113495bSYour Name  * @maxTxPower: max power to be used after applying the power constraint
383*5113495bSYour Name  * @bSpectrumMgtEnabled: Spectrum Management Capability, 1:Enabled, 0:Disabled.
384*5113495bSYour Name  * @vhtCapable: VHT capability
385*5113495bSYour Name  * @ch_width: VHT tx channel width
386*5113495bSYour Name  * @he_capable: HE Capability
387*5113495bSYour Name  * @no_ptk_4_way: Do not need 4-way handshake
388*5113495bSYour Name  * @eht_capable: EHT capability
389*5113495bSYour Name  */
390*5113495bSYour Name struct bss_params {
391*5113495bSYour Name 	tSirMacAddr bssId;
392*5113495bSYour Name 	tSirNwType nwType;
393*5113495bSYour Name 	uint8_t shortSlotTimeSupported;
394*5113495bSYour Name 	uint8_t llbCoexist;
395*5113495bSYour Name 	tSirMacBeaconInterval beaconInterval;
396*5113495bSYour Name 	uint8_t dtimPeriod;
397*5113495bSYour Name 	uint8_t htCapable;
398*5113495bSYour Name 	uint8_t rmfEnabled;
399*5113495bSYour Name 	tAddStaParams staContext;
400*5113495bSYour Name 	/* HAL should update the existing BSS entry, if this flag is set.
401*5113495bSYour Name 	 * PE will set this flag in case of reassoc, where we want to reuse the
402*5113495bSYour Name 	 * the old bssID and still return success.
403*5113495bSYour Name 	 */
404*5113495bSYour Name 	uint8_t updateBss;
405*5113495bSYour Name 	int8_t maxTxPower;
406*5113495bSYour Name 	uint8_t vhtCapable;
407*5113495bSYour Name 	enum phy_ch_width ch_width;
408*5113495bSYour Name 	uint8_t nonRoamReassoc;
409*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
410*5113495bSYour Name 	bool he_capable;
411*5113495bSYour Name 	uint32_t he_sta_obsspd;
412*5113495bSYour Name #endif
413*5113495bSYour Name 	bool no_ptk_4_way;
414*5113495bSYour Name 	uint16_t bss_max_idle_period;
415*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
416*5113495bSYour Name 	bool eht_capable;
417*5113495bSYour Name #endif
418*5113495bSYour Name };
419*5113495bSYour Name 
420*5113495bSYour Name /**
421*5113495bSYour Name  * struct add_bss_rsp - params required for add bss response
422*5113495bSYour Name  * @vdev_id: vdev_id
423*5113495bSYour Name  * @status: QDF status
424*5113495bSYour Name  * @chain_mask: chain mask vdev start resp
425*5113495bSYour Name  * @smps_mode: smps mode in vdev start resp
426*5113495bSYour Name  */
427*5113495bSYour Name struct add_bss_rsp {
428*5113495bSYour Name 	uint8_t vdev_id;
429*5113495bSYour Name 	QDF_STATUS status;
430*5113495bSYour Name 	uint32_t chain_mask;
431*5113495bSYour Name 	uint8_t smps_mode;
432*5113495bSYour Name };
433*5113495bSYour Name 
434*5113495bSYour Name typedef enum eDelStaReasonCode {
435*5113495bSYour Name 	HAL_DEL_STA_REASON_CODE_KEEP_ALIVE = 0x1,
436*5113495bSYour Name 	HAL_DEL_STA_REASON_CODE_TIM_BASED = 0x2,
437*5113495bSYour Name 	HAL_DEL_STA_REASON_CODE_RA_BASED = 0x3,
438*5113495bSYour Name 	HAL_DEL_STA_REASON_CODE_UNKNOWN_A2 = 0x4,
439*5113495bSYour Name 	HAL_DEL_STA_REASON_CODE_BTM_DISASSOC_IMMINENT = 0x5,
440*5113495bSYour Name 	HAL_DEL_STA_REASON_CODE_SA_QUERY_TIMEOUT = 0x6,
441*5113495bSYour Name 	HAL_DEL_STA_REASON_CODE_XRETRY = 0x7,
442*5113495bSYour Name } tDelStaReasonCode;
443*5113495bSYour Name 
444*5113495bSYour Name typedef enum eSmpsModeValue {
445*5113495bSYour Name 	STATIC_SMPS_MODE = 0x0,
446*5113495bSYour Name 	DYNAMIC_SMPS_MODE = 0x1,
447*5113495bSYour Name 	SMPS_MODE_RESERVED = 0x2,
448*5113495bSYour Name 	SMPS_MODE_DISABLED = 0x3
449*5113495bSYour Name } tSmpsModeValue;
450*5113495bSYour Name 
451*5113495bSYour Name /**
452*5113495bSYour Name  * struct tDeleteStaContext - params required for delete sta request
453*5113495bSYour Name  * @assocId: association id
454*5113495bSYour Name  * @bssId: mac address
455*5113495bSYour Name  * @addr2: mac address
456*5113495bSYour Name  * @reasonCode: reason code
457*5113495bSYour Name  * @rssi: rssi value during disconnection
458*5113495bSYour Name  */
459*5113495bSYour Name typedef struct {
460*5113495bSYour Name 	bool is_tdls;
461*5113495bSYour Name 	uint8_t vdev_id;
462*5113495bSYour Name 	uint16_t assocId;
463*5113495bSYour Name 	tSirMacAddr bssId;
464*5113495bSYour Name 	tSirMacAddr addr2;
465*5113495bSYour Name 	uint16_t reasonCode;
466*5113495bSYour Name 	int8_t rssi;
467*5113495bSYour Name } tDeleteStaContext, *tpDeleteStaContext;
468*5113495bSYour Name 
469*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT
470*5113495bSYour Name 
471*5113495bSYour Name #ifndef OEM_DATA_RSP_SIZE
472*5113495bSYour Name #define OEM_DATA_RSP_SIZE 1724
473*5113495bSYour Name #endif
474*5113495bSYour Name 
475*5113495bSYour Name /**
476*5113495bSYour Name  * struct tStartOemDataRsp - start OEM Data response
477*5113495bSYour Name  * @target_rsp: Indicates if the rsp is from Target or WMA generated.
478*5113495bSYour Name  * @rsp_len: oem data response length
479*5113495bSYour Name  * @oem_data_rsp: pointer to OEM Data response
480*5113495bSYour Name  */
481*5113495bSYour Name typedef struct {
482*5113495bSYour Name 	bool target_rsp;
483*5113495bSYour Name 	uint32_t rsp_len;
484*5113495bSYour Name 	uint8_t *oem_data_rsp;
485*5113495bSYour Name } tStartOemDataRsp, *tpStartOemDataRsp;
486*5113495bSYour Name #endif /* FEATURE_OEM_DATA_SUPPORT */
487*5113495bSYour Name 
488*5113495bSYour Name /**
489*5113495bSYour Name  * struct beacon_gen_params - params required for beacon gen request
490*5113495bSYour Name  * @bssdd: BSSID for which it is time to generate a beacon
491*5113495bSYour Name  */
492*5113495bSYour Name struct beacon_gen_params {
493*5113495bSYour Name 	tSirMacAddr bssid;
494*5113495bSYour Name };
495*5113495bSYour Name 
496*5113495bSYour Name /**
497*5113495bSYour Name  * struct tSendbeaconParams - send beacon parameters
498*5113495bSYour Name  * vdev_id: vdev id
499*5113495bSYour Name  * @bssId: BSSID mac address
500*5113495bSYour Name  * @beacon: beacon data
501*5113495bSYour Name  * @beaconLength: beacon length of template
502*5113495bSYour Name  * @timIeOffset: TIM IE offset
503*5113495bSYour Name  * @p2pIeOffset: P2P IE offset
504*5113495bSYour Name  * @csa_count_offset: Offset of Switch count field in CSA IE
505*5113495bSYour Name  * @ecsa_count_offset: Offset of Switch count field in ECSA IE
506*5113495bSYour Name  * @reason: bcn update reason
507*5113495bSYour Name  * @status: beacon send status
508*5113495bSYour Name  */
509*5113495bSYour Name typedef struct {
510*5113495bSYour Name 	uint8_t vdev_id;
511*5113495bSYour Name 	tSirMacAddr bssId;
512*5113495bSYour Name 	uint8_t beacon[SIR_MAX_BEACON_SIZE];
513*5113495bSYour Name 	uint32_t beaconLength;
514*5113495bSYour Name 	uint32_t timIeOffset;
515*5113495bSYour Name 	uint16_t p2pIeOffset;
516*5113495bSYour Name 	uint32_t csa_count_offset;
517*5113495bSYour Name 	uint32_t ecsa_count_offset;
518*5113495bSYour Name 	enum sir_bcn_update_reason reason;
519*5113495bSYour Name 	QDF_STATUS status;
520*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
521*5113495bSYour Name 	struct mlo_bcn_templ_partner_links mlo_partner;
522*5113495bSYour Name #endif
523*5113495bSYour Name } tSendbeaconParams, *tpSendbeaconParams;
524*5113495bSYour Name 
525*5113495bSYour Name /**
526*5113495bSYour Name  * struct tSendProbeRespParams - send probe response parameters
527*5113495bSYour Name  * @bssId: BSSID
528*5113495bSYour Name  * @probeRespTemplate: probe response template
529*5113495bSYour Name  * @probeRespTemplateLen: probe response template length
530*5113495bSYour Name  * @ucProxyProbeReqValidIEBmap: valid IE bitmap
531*5113495bSYour Name  * @go_ignore_non_p2p_probe_req: go ignore non-p2p probe req
532*5113495bSYour Name  */
533*5113495bSYour Name typedef struct sSendProbeRespParams {
534*5113495bSYour Name 	tSirMacAddr bssId;
535*5113495bSYour Name 	uint8_t probeRespTemplate[SIR_MAX_PROBE_RESP_SIZE];
536*5113495bSYour Name 	uint32_t probeRespTemplateLen;
537*5113495bSYour Name 	uint32_t ucProxyProbeReqValidIEBmap[8];
538*5113495bSYour Name 	bool go_ignore_non_p2p_probe_req;
539*5113495bSYour Name } tSendProbeRespParams, *tpSendProbeRespParams;
540*5113495bSYour Name 
541*5113495bSYour Name /**
542*5113495bSYour Name  * struct tSetBssKeyParams - BSS key parameters
543*5113495bSYour Name  * @vdev_id: vdev id id
544*5113495bSYour Name  * @status: return status of command
545*5113495bSYour Name  * @macaddr: MAC address of the peer
546*5113495bSYour Name  * @key_len: key len
547*5113495bSYour Name  */
548*5113495bSYour Name typedef struct {
549*5113495bSYour Name 	uint8_t vdev_id;
550*5113495bSYour Name 	QDF_STATUS status;
551*5113495bSYour Name 	struct qdf_mac_addr macaddr;
552*5113495bSYour Name 	uint16_t key_len;
553*5113495bSYour Name } tSetBssKeyParams, *tpSetBssKeyParams;
554*5113495bSYour Name 
555*5113495bSYour Name /**
556*5113495bSYour Name  * struct tUpdateBeaconParams - update beacon request parameters
557*5113495bSYour Name  * @bss_idx: BSSID index
558*5113495bSYour Name  * @fShortPreamble: shortPreamble mode
559*5113495bSYour Name  * @fShortSlotTime: short Slot time
560*5113495bSYour Name  * @beaconInterval: Beacon Interval
561*5113495bSYour Name  * @llaCoexist: 11a coexist
562*5113495bSYour Name  * @llbCoexist: 11b coexist
563*5113495bSYour Name  * @llgCoexist: 11g coexist
564*5113495bSYour Name  * @ht20MhzCoexist: HT 20MHz coexist
565*5113495bSYour Name  * @fLsigTXOPProtectionFullSupport: TXOP protection supported or not
566*5113495bSYour Name  * @fRIFSMode: RIFS mode
567*5113495bSYour Name  * @paramChangeBitmap: change bitmap
568*5113495bSYour Name  * @vdev_id: vdev_id
569*5113495bSYour Name  */
570*5113495bSYour Name typedef struct {
571*5113495bSYour Name 	uint8_t bss_idx;
572*5113495bSYour Name 	uint8_t fShortPreamble;
573*5113495bSYour Name 	uint8_t fShortSlotTime;
574*5113495bSYour Name 	uint16_t beaconInterval;
575*5113495bSYour Name 	uint8_t llaCoexist;
576*5113495bSYour Name 	uint8_t llbCoexist;
577*5113495bSYour Name 	uint8_t llgCoexist;
578*5113495bSYour Name 	uint8_t ht20MhzCoexist;
579*5113495bSYour Name 	uint8_t llnNonGFCoexist;
580*5113495bSYour Name 	uint8_t fLsigTXOPProtectionFullSupport;
581*5113495bSYour Name 	uint8_t fRIFSMode;
582*5113495bSYour Name 	uint16_t paramChangeBitmap;
583*5113495bSYour Name 	uint8_t vdev_id;
584*5113495bSYour Name 	uint32_t bss_color;
585*5113495bSYour Name 	bool bss_color_disabled;
586*5113495bSYour Name } tUpdateBeaconParams, *tpUpdateBeaconParams;
587*5113495bSYour Name 
588*5113495bSYour Name /**
589*5113495bSYour Name  * struct tUpdateVHTOpMode - VHT operating mode
590*5113495bSYour Name  * @opMode: VHT operating mode
591*5113495bSYour Name  * @staId: station id
592*5113495bSYour Name  * @smesessionId: SME session id
593*5113495bSYour Name  * @peer_mac: peer mac address
594*5113495bSYour Name  */
595*5113495bSYour Name typedef struct {
596*5113495bSYour Name 	uint16_t opMode;
597*5113495bSYour Name 	uint16_t smesessionId;
598*5113495bSYour Name 	tSirMacAddr peer_mac;
599*5113495bSYour Name } tUpdateVHTOpMode, *tpUpdateVHTOpMode;
600*5113495bSYour Name 
601*5113495bSYour Name /**
602*5113495bSYour Name  * struct tUpdateRxNss - update rx nss parameters
603*5113495bSYour Name  * @rxNss: rx nss value
604*5113495bSYour Name  * @staId: station id
605*5113495bSYour Name  * @smesessionId: sme session id
606*5113495bSYour Name  * @peer_mac: peer mac address
607*5113495bSYour Name  */
608*5113495bSYour Name typedef struct {
609*5113495bSYour Name 	uint16_t rxNss;
610*5113495bSYour Name 	uint16_t smesessionId;
611*5113495bSYour Name 	tSirMacAddr peer_mac;
612*5113495bSYour Name } tUpdateRxNss, *tpUpdateRxNss;
613*5113495bSYour Name 
614*5113495bSYour Name /**
615*5113495bSYour Name  * struct tUpdateMembership - update membership parameters
616*5113495bSYour Name  * @membership: membership value
617*5113495bSYour Name  * @staId: station id
618*5113495bSYour Name  * @smesessionId: SME session id
619*5113495bSYour Name  * @peer_mac: peer mac address
620*5113495bSYour Name  */
621*5113495bSYour Name typedef struct {
622*5113495bSYour Name 	uint32_t membership;
623*5113495bSYour Name 	uint16_t smesessionId;
624*5113495bSYour Name 	tSirMacAddr peer_mac;
625*5113495bSYour Name } tUpdateMembership, *tpUpdateMembership;
626*5113495bSYour Name 
627*5113495bSYour Name /**
628*5113495bSYour Name  * struct tUpdateUserPos - update user position parameters
629*5113495bSYour Name  * @userPos: user position
630*5113495bSYour Name  * @staId: station id
631*5113495bSYour Name  * @smesessionId: sme session id
632*5113495bSYour Name  * @peer_mac: peer mac address
633*5113495bSYour Name  */
634*5113495bSYour Name typedef struct {
635*5113495bSYour Name 	uint32_t userPos;
636*5113495bSYour Name 	uint16_t smesessionId;
637*5113495bSYour Name 	tSirMacAddr peer_mac;
638*5113495bSYour Name } tUpdateUserPos, *tpUpdateUserPos;
639*5113495bSYour Name 
640*5113495bSYour Name /**
641*5113495bSYour Name  * struct tEdcaParams - EDCA parameters
642*5113495bSYour Name  * @vdev_id: vdev id
643*5113495bSYour Name  * @acbe: best effort access category
644*5113495bSYour Name  * @acbk: Background access category
645*5113495bSYour Name  * @acvi: video access category
646*5113495bSYour Name  * @acvo: voice access category
647*5113495bSYour Name  * @mu_edca_params: flag to indicate MU EDCA
648*5113495bSYour Name  */
649*5113495bSYour Name typedef struct {
650*5113495bSYour Name 	uint16_t vdev_id;
651*5113495bSYour Name 	tSirMacEdcaParamRecord acbe;
652*5113495bSYour Name 	tSirMacEdcaParamRecord acbk;
653*5113495bSYour Name 	tSirMacEdcaParamRecord acvi;
654*5113495bSYour Name 	tSirMacEdcaParamRecord acvo;
655*5113495bSYour Name 	bool mu_edca_params;
656*5113495bSYour Name } tEdcaParams, *tpEdcaParams;
657*5113495bSYour Name 
658*5113495bSYour Name /**
659*5113495bSYour Name  * struct tSetMIMOPS - MIMO power save related parameters
660*5113495bSYour Name  * @htMIMOPSState: MIMO Power Save State
661*5113495bSYour Name  * @status: response status
662*5113495bSYour Name  * @fsendRsp: send response flag
663*5113495bSYour Name  * @peerMac: peer mac address
664*5113495bSYour Name  * @sessionId: session id
665*5113495bSYour Name  */
666*5113495bSYour Name typedef struct sSet_MIMOPS {
667*5113495bSYour Name 	tSirMacHTMIMOPowerSaveState htMIMOPSState;
668*5113495bSYour Name 	QDF_STATUS status;
669*5113495bSYour Name 	uint8_t fsendRsp;
670*5113495bSYour Name 	tSirMacAddr peerMac;
671*5113495bSYour Name 	uint8_t sessionId;
672*5113495bSYour Name } tSetMIMOPS, *tpSetMIMOPS;
673*5113495bSYour Name 
674*5113495bSYour Name /**
675*5113495bSYour Name  * struct tMaxTxPowerParams - Max Tx Power parameters
676*5113495bSYour Name  * @bssId: BSSID is needed to identify which session issued this request
677*5113495bSYour Name  * @selfStaMacAddr: self mac address
678*5113495bSYour Name  * @power: tx power in dbm
679*5113495bSYour Name  * @dev_mode: device mode
680*5113495bSYour Name  * Request Type = SIR_HAL_SET_MAX_TX_POWER_REQ
681*5113495bSYour Name  */
682*5113495bSYour Name typedef struct sMaxTxPowerParams {
683*5113495bSYour Name 	struct qdf_mac_addr bssId;
684*5113495bSYour Name 	struct qdf_mac_addr selfStaMacAddr;
685*5113495bSYour Name 	/* In request,
686*5113495bSYour Name 	 * power == MaxTx power to be used.
687*5113495bSYour Name 	 * In response,
688*5113495bSYour Name 	 * power == tx power used for management frames.
689*5113495bSYour Name 	 */
690*5113495bSYour Name 	int8_t power;
691*5113495bSYour Name 	enum QDF_OPMODE dev_mode;
692*5113495bSYour Name } tMaxTxPowerParams, *tpMaxTxPowerParams;
693*5113495bSYour Name 
694*5113495bSYour Name /**
695*5113495bSYour Name  * struct tMaxTxPowerPerBandParams - max tx power per band info
696*5113495bSYour Name  * @bandInfo: band info
697*5113495bSYour Name  * @power: power in dbm
698*5113495bSYour Name  */
699*5113495bSYour Name typedef struct sMaxTxPowerPerBandParams {
700*5113495bSYour Name 	enum band_info bandInfo;
701*5113495bSYour Name 	int8_t power;
702*5113495bSYour Name } tMaxTxPowerPerBandParams, *tpMaxTxPowerPerBandParams;
703*5113495bSYour Name 
704*5113495bSYour Name /**
705*5113495bSYour Name  * struct set_ie_param - set IE params structure
706*5113495bSYour Name  * @pdev_id: pdev id
707*5113495bSYour Name  * @ie_type: IE type
708*5113495bSYour Name  * @nss: Nss value
709*5113495bSYour Name  * @ie_len: IE length
710*5113495bSYour Name  * @ie_ptr: Pointer to IE data
711*5113495bSYour Name  *
712*5113495bSYour Name  * Holds the set pdev IE req data.
713*5113495bSYour Name  */
714*5113495bSYour Name struct set_ie_param {
715*5113495bSYour Name 	uint8_t pdev_id;
716*5113495bSYour Name 	uint8_t ie_type;
717*5113495bSYour Name 	uint8_t nss;
718*5113495bSYour Name 	uint8_t ie_len;
719*5113495bSYour Name 	uint8_t *ie_ptr;
720*5113495bSYour Name };
721*5113495bSYour Name 
722*5113495bSYour Name /**
723*5113495bSYour Name  * struct set_dtim_params - dtim params
724*5113495bSYour Name  * @session_id: SME Session ID
725*5113495bSYour Name  * @dtim_period: dtim period
726*5113495bSYour Name  */
727*5113495bSYour Name struct set_dtim_params {
728*5113495bSYour Name 	uint8_t session_id;
729*5113495bSYour Name 	uint8_t dtim_period;
730*5113495bSYour Name };
731*5113495bSYour Name 
732*5113495bSYour Name #define DOT11_HT_IE     1
733*5113495bSYour Name #define DOT11_VHT_IE    2
734*5113495bSYour Name 
735*5113495bSYour Name /**
736*5113495bSYour Name  * struct del_vdev_params - Del Sta Self params
737*5113495bSYour Name  * @session_id: SME Session ID
738*5113495bSYour Name  * @status: response status code
739*5113495bSYour Name  * @vdev: Object to vdev
740*5113495bSYour Name  */
741*5113495bSYour Name struct del_vdev_params {
742*5113495bSYour Name 	tSirMacAddr self_mac_addr;
743*5113495bSYour Name 	uint8_t vdev_id;
744*5113495bSYour Name 	uint32_t status;
745*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
746*5113495bSYour Name };
747*5113495bSYour Name 
748*5113495bSYour Name /**
749*5113495bSYour Name  * struct del_sta_self_rsp_params - Del Sta Self response params
750*5113495bSYour Name  * @self_sta_param: sta params
751*5113495bSYour Name  * @generate_rsp: generate response to upper layers
752*5113495bSYour Name  */
753*5113495bSYour Name struct del_sta_self_rsp_params {
754*5113495bSYour Name 	struct del_vdev_params *self_sta_param;
755*5113495bSYour Name };
756*5113495bSYour Name 
757*5113495bSYour Name /**
758*5113495bSYour Name  * struct send_peer_unmap_conf_params - Send Peer Unmap Conf param
759*5113495bSYour Name  * @vdev_id: vdev ID
760*5113495bSYour Name  * @peer_id_cnt: peer_id count
761*5113495bSYour Name  * @peer_id_list: list of peer IDs
762*5113495bSYour Name  */
763*5113495bSYour Name struct send_peer_unmap_conf_params {
764*5113495bSYour Name 	uint8_t vdev_id;
765*5113495bSYour Name 	uint32_t peer_id_cnt;
766*5113495bSYour Name 	uint16_t *peer_id_list;
767*5113495bSYour Name };
768*5113495bSYour Name 
769*5113495bSYour Name /**
770*5113495bSYour Name  * struct peer_create_rsp_params  - Peer create response parameters
771*5113495bSYour Name  * @peer_mac: Peer mac address
772*5113495bSYour Name  */
773*5113495bSYour Name struct peer_create_rsp_params {
774*5113495bSYour Name 	struct qdf_mac_addr peer_mac;
775*5113495bSYour Name };
776*5113495bSYour Name 
777*5113495bSYour Name /**
778*5113495bSYour Name  * struct tDisableIntraBssFwd - intra bss forward parameters
779*5113495bSYour Name  * @sessionId: session id
780*5113495bSYour Name  * @disableintrabssfwd: disable intra bss forward flag
781*5113495bSYour Name  */
782*5113495bSYour Name typedef struct sDisableIntraBssFwd {
783*5113495bSYour Name 	uint16_t sessionId;
784*5113495bSYour Name 	bool disableintrabssfwd;
785*5113495bSYour Name } qdf_packed tDisableIntraBssFwd, *tpDisableIntraBssFwd;
786*5113495bSYour Name 
787*5113495bSYour Name #ifdef WLAN_FEATURE_STATS_EXT
788*5113495bSYour Name /**
789*5113495bSYour Name  * struct tStatsExtRequest - ext stats request
790*5113495bSYour Name  * @vdev_id: vdev id
791*5113495bSYour Name  * @request_data_len: request data length
792*5113495bSYour Name  * @request_data: request data
793*5113495bSYour Name  */
794*5113495bSYour Name typedef struct sStatsExtRequest {
795*5113495bSYour Name 	uint32_t vdev_id;
796*5113495bSYour Name 	uint32_t request_data_len;
797*5113495bSYour Name 	uint8_t request_data[];
798*5113495bSYour Name } tStatsExtRequest, *tpStatsExtRequest;
799*5113495bSYour Name #endif /* WLAN_FEATURE_STATS_EXT */
800*5113495bSYour Name 
801*5113495bSYour Name #endif /* _HALMSGAPI_H_ */
802