xref: /wlan-driver/qcacld-3.0/components/tdls/dispatcher/inc/wlan_tdls_public_structs.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2017-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 /**
21*5113495bSYour Name  * DOC: wlan_tdls_public_structs.h
22*5113495bSYour Name  *
23*5113495bSYour Name  * TDLS public structure definitions
24*5113495bSYour Name  */
25*5113495bSYour Name 
26*5113495bSYour Name #ifndef _WLAN_TDLS_STRUCTS_H_
27*5113495bSYour Name #define _WLAN_TDLS_STRUCTS_H_
28*5113495bSYour Name #include <qdf_timer.h>
29*5113495bSYour Name #include <qdf_list.h>
30*5113495bSYour Name #include <qdf_mc_timer.h>
31*5113495bSYour Name #include <wlan_cmn.h>
32*5113495bSYour Name #include <wlan_cmn_ieee80211.h>
33*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM
34*5113495bSYour Name #include <wlan_pmo_common_public_struct.h>
35*5113495bSYour Name #endif
36*5113495bSYour Name 
37*5113495bSYour Name #define WLAN_TDLS_STA_MAX_NUM                        8
38*5113495bSYour Name #define WLAN_TDLS_STA_P_UAPSD_OFFCHAN_MAX_NUM        1
39*5113495bSYour Name #define WLAN_TDLS_PEER_LIST_SIZE                     16
40*5113495bSYour Name #define WLAN_TDLS_CT_TABLE_SIZE                      8
41*5113495bSYour Name #define WLAN_TDLS_PEER_SUB_LIST_SIZE                 10
42*5113495bSYour Name #define WLAN_MAC_MAX_EXTN_CAP                        8
43*5113495bSYour Name #define WLAN_MAC_MAX_SUPP_CHANNELS                   100
44*5113495bSYour Name #define WLAN_MAC_WMI_MAX_SUPP_CHANNELS               128
45*5113495bSYour Name #define WLAN_MAX_SUPP_OPER_CLASSES                   32
46*5113495bSYour Name #define WLAN_MAC_MAX_SUPP_RATES                      32
47*5113495bSYour Name #define WLAN_CHANNEL_14                              14
48*5113495bSYour Name 
49*5113495bSYour Name /* Enable TDLS off-channel switch */
50*5113495bSYour Name #define ENABLE_CHANSWITCH                            1
51*5113495bSYour Name 
52*5113495bSYour Name /*
53*5113495bSYour Name  * Passive(peer requested) responder mode off-channel switch.
54*5113495bSYour Name  * If peer initiates off channel request, that will be honored in
55*5113495bSYour Name  * this mode
56*5113495bSYour Name  */
57*5113495bSYour Name #define DISABLE_CHANSWITCH                           2
58*5113495bSYour Name 
59*5113495bSYour Name /*
60*5113495bSYour Name  * Disable TDLS off-channel operation completely.
61*5113495bSYour Name  * Peer initiated requests will also be discarded.
62*5113495bSYour Name  */
63*5113495bSYour Name #define DISABLE_ACTIVE_CHANSWITCH                    3
64*5113495bSYour Name 
65*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_NUM_MIN      1
66*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_NUM_MAX      165
67*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_NUM_DEF      36
68*5113495bSYour Name #define WLAN_TDLS_PREFERRED_OFF_CHANNEL_FRQ_DEF     5180
69*5113495bSYour Name #define WLAN_TDLS_MAX_CONCURRENT_VDEV_SUPPORTED      3
70*5113495bSYour Name 
71*5113495bSYour Name #define AC_PRIORITY_NUM                 4
72*5113495bSYour Name 
73*5113495bSYour Name /* Default tdls serialize timeout is set to 4 (peer delete) + 1 secs */
74*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM
75*5113495bSYour Name /* Add extra PMO_RESUME_TIMEOUT for runtime PM resume timeout */
76*5113495bSYour Name #define TDLS_DELETE_PEER_CMD_TIMEOUT (4000 + 1000 + PMO_RESUME_TIMEOUT)
77*5113495bSYour Name #else
78*5113495bSYour Name #define TDLS_DELETE_PEER_CMD_TIMEOUT (4000 + 1000)
79*5113495bSYour Name #endif
80*5113495bSYour Name 
81*5113495bSYour Name /** Maximum time(ms) to wait for tdls del sta to complete **/
82*5113495bSYour Name #define WAIT_TIME_TDLS_DEL_STA  (TDLS_DELETE_PEER_CMD_TIMEOUT + 1000)
83*5113495bSYour Name 
84*5113495bSYour Name #define TDLS_DEFAULT_SERIALIZE_CMD_TIMEOUT (4000)
85*5113495bSYour Name 
86*5113495bSYour Name /** Maximum time(ms) to wait for tdls add sta to complete **/
87*5113495bSYour Name #define WAIT_TIME_TDLS_ADD_STA  (TDLS_DEFAULT_SERIALIZE_CMD_TIMEOUT + 1000)
88*5113495bSYour Name 
89*5113495bSYour Name /** Maximum time(ms) to wait for Link Establish Req to complete **/
90*5113495bSYour Name #define WAIT_TIME_TDLS_LINK_ESTABLISH_REQ      1500
91*5113495bSYour Name 
92*5113495bSYour Name /** Maximum time(ms) to wait for tdls mgmt to complete **/
93*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_MGMT         3000
94*5113495bSYour Name 
95*5113495bSYour Name /** Maximum time(ms) to wait for tdls mgmt to complete **/
96*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_USER_CMD     11000
97*5113495bSYour Name 
98*5113495bSYour Name /** Maximum waittime for TDLS teardown links **/
99*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_TEARDOWN_LINKS 10000
100*5113495bSYour Name 
101*5113495bSYour Name /** Maximum waittime for TDLS antenna switch **/
102*5113495bSYour Name #define WAIT_TIME_FOR_TDLS_ANTENNA_SWITCH 1000
103*5113495bSYour Name 
104*5113495bSYour Name #define TDLS_TEARDOWN_PEER_UNREACHABLE   25
105*5113495bSYour Name #define TDLS_TEARDOWN_PEER_UNSPEC_REASON 26
106*5113495bSYour Name 
107*5113495bSYour Name #define INVALID_TDLS_PEER_INDEX 0xFF
108*5113495bSYour Name 
109*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
110*5113495bSYour Name #define MIN_TDLS_HE_CAP_LEN 17
111*5113495bSYour Name #define MAX_TDLS_HE_CAP_LEN 29
112*5113495bSYour Name #endif
113*5113495bSYour Name 
114*5113495bSYour Name /**
115*5113495bSYour Name  * enum tdls_add_oper - add peer type
116*5113495bSYour Name  * @TDLS_OPER_NONE: none
117*5113495bSYour Name  * @TDLS_OPER_ADD: add new peer
118*5113495bSYour Name  * @TDLS_OPER_UPDATE: used to update peer
119*5113495bSYour Name  */
120*5113495bSYour Name enum tdls_add_oper {
121*5113495bSYour Name 	TDLS_OPER_NONE,
122*5113495bSYour Name 	TDLS_OPER_ADD,
123*5113495bSYour Name 	TDLS_OPER_UPDATE
124*5113495bSYour Name };
125*5113495bSYour Name 
126*5113495bSYour Name /**
127*5113495bSYour Name  * enum tdls_conc_cap - tdls concurrency support
128*5113495bSYour Name  * @TDLS_SUPPORTED_ONLY_ON_STA: only support sta tdls
129*5113495bSYour Name  * @TDLS_SUPPORTED_ONLY_ON_P2P_CLIENT: only support p2p client tdls
130*5113495bSYour Name  */
131*5113495bSYour Name enum tdls_conc_cap {
132*5113495bSYour Name 	TDLS_SUPPORTED_ONLY_ON_STA = 0,
133*5113495bSYour Name 	TDLS_SUPPORTED_ONLY_ON_P2P_CLIENT,
134*5113495bSYour Name };
135*5113495bSYour Name 
136*5113495bSYour Name /**
137*5113495bSYour Name  * enum tdls_peer_capab - tdls capability type
138*5113495bSYour Name  * @TDLS_CAP_NOT_SUPPORTED: tdls not supported
139*5113495bSYour Name  * @TDLS_CAP_UNKNOWN: unknown capability
140*5113495bSYour Name  * @TDLS_CAP_SUPPORTED: tdls capability supported
141*5113495bSYour Name  */
142*5113495bSYour Name enum tdls_peer_capab {
143*5113495bSYour Name 	TDLS_CAP_NOT_SUPPORTED = -1,
144*5113495bSYour Name 	TDLS_CAP_UNKNOWN       = 0,
145*5113495bSYour Name 	TDLS_CAP_SUPPORTED     = 1,
146*5113495bSYour Name };
147*5113495bSYour Name 
148*5113495bSYour Name /**
149*5113495bSYour Name  * enum tdls_peer_state - tdls peer state
150*5113495bSYour Name  * @TDLS_PEER_STATE_PEERING: tdls connection in progress
151*5113495bSYour Name  * @TDLS_PEER_STATE_CONNECTED: tdls peer is connected
152*5113495bSYour Name  * @TDLS_PEER_STATE_TEARDOWN: tdls peer is tear down
153*5113495bSYour Name  * @TDLS_PEER_ADD_MAC_ADDR: add peer mac into connection table
154*5113495bSYour Name  * @TDLS_PEER_REMOVE_MAC_ADDR: remove peer mac from connection table
155*5113495bSYour Name  */
156*5113495bSYour Name enum tdls_peer_state {
157*5113495bSYour Name 	TDLS_PEER_STATE_PEERING,
158*5113495bSYour Name 	TDLS_PEER_STATE_CONNECTED,
159*5113495bSYour Name 	TDLS_PEER_STATE_TEARDOWN,
160*5113495bSYour Name 	TDLS_PEER_ADD_MAC_ADDR,
161*5113495bSYour Name 	TDLS_PEER_REMOVE_MAC_ADDR
162*5113495bSYour Name };
163*5113495bSYour Name 
164*5113495bSYour Name /**
165*5113495bSYour Name  * enum tdls_link_state - tdls link state
166*5113495bSYour Name  * @TDLS_LINK_IDLE: tdls link idle
167*5113495bSYour Name  * @TDLS_LINK_DISCOVERING: tdls link discovering
168*5113495bSYour Name  * @TDLS_LINK_DISCOVERED: tdls link discovered
169*5113495bSYour Name  * @TDLS_LINK_CONNECTING: tdls link connecting
170*5113495bSYour Name  * @TDLS_LINK_CONNECTED: tdls link connected
171*5113495bSYour Name  * @TDLS_LINK_TEARING: tdls link tearing
172*5113495bSYour Name  */
173*5113495bSYour Name enum tdls_link_state {
174*5113495bSYour Name 	TDLS_LINK_IDLE = 0,
175*5113495bSYour Name 	TDLS_LINK_DISCOVERING,
176*5113495bSYour Name 	TDLS_LINK_DISCOVERED,
177*5113495bSYour Name 	TDLS_LINK_CONNECTING,
178*5113495bSYour Name 	TDLS_LINK_CONNECTED,
179*5113495bSYour Name 	TDLS_LINK_TEARING,
180*5113495bSYour Name };
181*5113495bSYour Name 
182*5113495bSYour Name /**
183*5113495bSYour Name  * enum tdls_link_state_reason - tdls link reason
184*5113495bSYour Name  * @TDLS_LINK_SUCCESS: Success
185*5113495bSYour Name  * @TDLS_LINK_UNSPECIFIED: Unspecified reason
186*5113495bSYour Name  * @TDLS_LINK_NOT_SUPPORTED: Remote side doesn't support TDLS
187*5113495bSYour Name  * @TDLS_LINK_UNSUPPORTED_BAND: Remote side doesn't support this band
188*5113495bSYour Name  * @TDLS_LINK_NOT_BENEFICIAL: Going to AP is better than direct
189*5113495bSYour Name  * @TDLS_LINK_DROPPED_BY_REMOTE: Remote side doesn't want it anymore
190*5113495bSYour Name  */
191*5113495bSYour Name enum tdls_link_state_reason {
192*5113495bSYour Name 	TDLS_LINK_SUCCESS,
193*5113495bSYour Name 	TDLS_LINK_UNSPECIFIED         = -1,
194*5113495bSYour Name 	TDLS_LINK_NOT_SUPPORTED       = -2,
195*5113495bSYour Name 	TDLS_LINK_UNSUPPORTED_BAND    = -3,
196*5113495bSYour Name 	TDLS_LINK_NOT_BENEFICIAL      = -4,
197*5113495bSYour Name 	TDLS_LINK_DROPPED_BY_REMOTE   = -5,
198*5113495bSYour Name };
199*5113495bSYour Name 
200*5113495bSYour Name /**
201*5113495bSYour Name  * enum tdls_feature_mode - TDLS support mode
202*5113495bSYour Name  * @TDLS_SUPPORT_DISABLED: Disabled in ini or FW
203*5113495bSYour Name  * @TDLS_SUPPORT_SUSPENDED: TDLS supported by ini and FW, but disabled
204*5113495bSYour Name  *            temporarily due to off-channel operations or due to other reasons
205*5113495bSYour Name  * @TDLS_SUPPORT_EXP_TRIG_ONLY: Explicit trigger mode
206*5113495bSYour Name  * @TDLS_SUPPORT_IMP_MODE: Implicit mode
207*5113495bSYour Name  * @TDLS_SUPPORT_EXT_CONTROL: External control mode
208*5113495bSYour Name  */
209*5113495bSYour Name enum tdls_feature_mode {
210*5113495bSYour Name 	TDLS_SUPPORT_DISABLED = 0,
211*5113495bSYour Name 	TDLS_SUPPORT_SUSPENDED,
212*5113495bSYour Name 	TDLS_SUPPORT_EXP_TRIG_ONLY,
213*5113495bSYour Name 	TDLS_SUPPORT_IMP_MODE,
214*5113495bSYour Name 	TDLS_SUPPORT_EXT_CONTROL,
215*5113495bSYour Name };
216*5113495bSYour Name 
217*5113495bSYour Name /**
218*5113495bSYour Name  * enum tdls_command_type - TDLS command type
219*5113495bSYour Name  * @TDLS_CMD_TX_ACTION: send tdls action frame
220*5113495bSYour Name  * @TDLS_CMD_ADD_STA: add tdls peer
221*5113495bSYour Name  * @TDLS_CMD_CHANGE_STA: change tdls peer
222*5113495bSYour Name  * @TDLS_CMD_ENABLE_LINK: enable tdls link
223*5113495bSYour Name  * @TDLS_CMD_DISABLE_LINK: disable tdls link
224*5113495bSYour Name  * @TDLS_CMD_CONFIG_FORCE_PEER: config external peer
225*5113495bSYour Name  * @TDLS_CMD_REMOVE_FORCE_PEER: remove external peer
226*5113495bSYour Name  * @TDLS_CMD_STATS_UPDATE: update tdls stats
227*5113495bSYour Name  * @TDLS_CMD_CONFIG_UPDATE: config tdls
228*5113495bSYour Name  * @TDLS_CMD_SCAN_DONE: scon done event
229*5113495bSYour Name  * @TDLS_CMD_SET_RESPONDER: responder event
230*5113495bSYour Name  * @TDLS_NOTIFY_STA_CONNECTION: notify sta connection
231*5113495bSYour Name  * @TDLS_NOTIFY_STA_DISCONNECTION: notify sta disconnection
232*5113495bSYour Name  * @TDLS_CMD_SET_TDLS_MODE: set the tdls mode
233*5113495bSYour Name  * @TDLS_CMD_SESSION_INCREMENT: notify session increment
234*5113495bSYour Name  * @TDLS_CMD_SESSION_DECREMENT: notify session decrement
235*5113495bSYour Name  * @TDLS_CMD_TEARDOWN_LINKS: notify teardown
236*5113495bSYour Name  * @TDLS_NOTIFY_RESET_ADAPTERS: notify adapter reset
237*5113495bSYour Name  * @TDLS_CMD_GET_ALL_PEERS: get all the tdls peers from the list
238*5113495bSYour Name  * @TDLS_CMD_ANTENNA_SWITCH: dynamic tdls antenna switch
239*5113495bSYour Name  * @TDLS_CMD_SET_OFFCHANNEL: tdls offchannel
240*5113495bSYour Name  * @TDLS_CMD_SET_OFFCHANMODE: tdls offchannel mode
241*5113495bSYour Name  * @TDLS_CMD_SET_SECOFFCHANOFFSET: tdls secondary offchannel offset
242*5113495bSYour Name  * @TDLS_DELETE_ALL_PEERS_INDICATION: tdls delete all peers indication
243*5113495bSYour Name  * @TDLS_CMD_START_BSS: SAP start indication to tdls module
244*5113495bSYour Name  * @TDLS_CMD_SET_LINK_UNFORCE: tdls to unforce link for MLO case
245*5113495bSYour Name  */
246*5113495bSYour Name enum tdls_command_type {
247*5113495bSYour Name 	TDLS_CMD_TX_ACTION = 1,
248*5113495bSYour Name 	TDLS_CMD_ADD_STA,
249*5113495bSYour Name 	TDLS_CMD_CHANGE_STA,
250*5113495bSYour Name 	TDLS_CMD_ENABLE_LINK,
251*5113495bSYour Name 	TDLS_CMD_DISABLE_LINK,
252*5113495bSYour Name 	TDLS_CMD_CONFIG_FORCE_PEER,
253*5113495bSYour Name 	TDLS_CMD_REMOVE_FORCE_PEER,
254*5113495bSYour Name 	TDLS_CMD_STATS_UPDATE,
255*5113495bSYour Name 	TDLS_CMD_CONFIG_UPDATE,
256*5113495bSYour Name 	TDLS_CMD_SCAN_DONE,
257*5113495bSYour Name 	TDLS_CMD_SET_RESPONDER,
258*5113495bSYour Name 	TDLS_NOTIFY_STA_CONNECTION,
259*5113495bSYour Name 	TDLS_NOTIFY_STA_DISCONNECTION,
260*5113495bSYour Name 	TDLS_CMD_SET_TDLS_MODE,
261*5113495bSYour Name 	TDLS_CMD_SESSION_INCREMENT,
262*5113495bSYour Name 	TDLS_CMD_SESSION_DECREMENT,
263*5113495bSYour Name 	TDLS_CMD_TEARDOWN_LINKS,
264*5113495bSYour Name 	TDLS_NOTIFY_RESET_ADAPTERS,
265*5113495bSYour Name 	TDLS_CMD_GET_ALL_PEERS,
266*5113495bSYour Name 	TDLS_CMD_ANTENNA_SWITCH,
267*5113495bSYour Name 	TDLS_CMD_SET_OFFCHANNEL,
268*5113495bSYour Name 	TDLS_CMD_SET_OFFCHANMODE,
269*5113495bSYour Name 	TDLS_CMD_SET_SECOFFCHANOFFSET,
270*5113495bSYour Name 	TDLS_DELETE_ALL_PEERS_INDICATION,
271*5113495bSYour Name 	TDLS_CMD_START_BSS,
272*5113495bSYour Name 	TDLS_CMD_SET_LINK_UNFORCE
273*5113495bSYour Name };
274*5113495bSYour Name 
275*5113495bSYour Name /**
276*5113495bSYour Name  * enum tdls_event_type - TDLS event type
277*5113495bSYour Name  * @TDLS_EVENT_VDEV_STATE_CHANGE: umac connect/disconnect event
278*5113495bSYour Name  * @TDLS_EVENT_MGMT_TX_ACK_CNF: tx tdls frame ack event
279*5113495bSYour Name  * @TDLS_EVENT_RX_MGMT: rx discovery response frame
280*5113495bSYour Name  * @TDLS_EVENT_ADD_PEER: add peer or update peer
281*5113495bSYour Name  * @TDLS_EVENT_DEL_PEER: delete peer
282*5113495bSYour Name  * @TDLS_EVENT_DISCOVERY_REQ: discovery request
283*5113495bSYour Name  * @TDLS_EVENT_TEARDOWN_REQ: teardown request
284*5113495bSYour Name  * @TDLS_EVENT_SETUP_REQ: setup request
285*5113495bSYour Name  * @TDLS_EVENT_TEARDOWN_LINKS_DONE: teardown completion event
286*5113495bSYour Name  * @TDLS_EVENT_USER_CMD: tdls user command
287*5113495bSYour Name  * @TDLS_EVENT_ANTENNA_SWITCH: antenna switch event
288*5113495bSYour Name  */
289*5113495bSYour Name enum tdls_event_type {
290*5113495bSYour Name 	TDLS_EVENT_VDEV_STATE_CHANGE = 0,
291*5113495bSYour Name 	TDLS_EVENT_MGMT_TX_ACK_CNF,
292*5113495bSYour Name 	TDLS_EVENT_RX_MGMT,
293*5113495bSYour Name 	TDLS_EVENT_ADD_PEER,
294*5113495bSYour Name 	TDLS_EVENT_DEL_PEER,
295*5113495bSYour Name 	TDLS_EVENT_DISCOVERY_REQ,
296*5113495bSYour Name 	TDLS_EVENT_TEARDOWN_REQ,
297*5113495bSYour Name 	TDLS_EVENT_SETUP_REQ,
298*5113495bSYour Name 	TDLS_EVENT_TEARDOWN_LINKS_DONE,
299*5113495bSYour Name 	TDLS_EVENT_USER_CMD,
300*5113495bSYour Name 	TDLS_EVENT_ANTENNA_SWITCH,
301*5113495bSYour Name };
302*5113495bSYour Name 
303*5113495bSYour Name /**
304*5113495bSYour Name  * enum tdls_state_t - tdls state
305*5113495bSYour Name  * @QCA_WIFI_HAL_TDLS_S_DISABLED: TDLS is not enabled, or is disabled now
306*5113495bSYour Name  * @QCA_WIFI_HAL_TDLS_S_ENABLED: TDLS is enabled, but not yet tried
307*5113495bSYour Name  * @QCA_WIFI_HAL_TDLS_S_ESTABLISHED: Direct link is established
308*5113495bSYour Name  * @QCA_WIFI_HAL_TDLS_S_ESTABLISHED_OFF_CHANNEL: Direct link established using
309*5113495bSYour Name  *                                               MCC
310*5113495bSYour Name  * @QCA_WIFI_HAL_TDLS_S_DROPPED: Direct link was established, but is now dropped
311*5113495bSYour Name  * @QCA_WIFI_HAL_TDLS_S_FAILED: Direct link failed
312*5113495bSYour Name  */
313*5113495bSYour Name enum tdls_state_t {
314*5113495bSYour Name 	QCA_WIFI_HAL_TDLS_S_DISABLED = 1,
315*5113495bSYour Name 	QCA_WIFI_HAL_TDLS_S_ENABLED,
316*5113495bSYour Name 	QCA_WIFI_HAL_TDLS_S_ESTABLISHED,
317*5113495bSYour Name 	QCA_WIFI_HAL_TDLS_S_ESTABLISHED_OFF_CHANNEL,
318*5113495bSYour Name 	QCA_WIFI_HAL_TDLS_S_DROPPED,
319*5113495bSYour Name 	QCA_WIFI_HAL_TDLS_S_FAILED,
320*5113495bSYour Name };
321*5113495bSYour Name 
322*5113495bSYour Name /**
323*5113495bSYour Name  * enum tdls_off_chan_mode - mode for WMI_TDLS_SET_OFFCHAN_MODE_CMDID
324*5113495bSYour Name  * @TDLS_ENABLE_OFFCHANNEL: enable off channel
325*5113495bSYour Name  * @TDLS_DISABLE_OFFCHANNEL: disable off channel
326*5113495bSYour Name  */
327*5113495bSYour Name enum tdls_off_chan_mode {
328*5113495bSYour Name 	TDLS_ENABLE_OFFCHANNEL,
329*5113495bSYour Name 	TDLS_DISABLE_OFFCHANNEL
330*5113495bSYour Name };
331*5113495bSYour Name 
332*5113495bSYour Name /**
333*5113495bSYour Name  * enum tdls_event_msg_type - TDLS event message type
334*5113495bSYour Name  * @TDLS_SHOULD_DISCOVER: should do discover for peer (based on tx bytes per
335*5113495bSYour Name  * second > tx_discover threshold)
336*5113495bSYour Name  * @TDLS_SHOULD_TEARDOWN: recommend teardown the link for peer due to tx bytes
337*5113495bSYour Name  * per second below tx_teardown_threshold
338*5113495bSYour Name  * @TDLS_PEER_DISCONNECTED: tdls peer disconnected
339*5113495bSYour Name  * @TDLS_CONNECTION_TRACKER_NOTIFY: TDLS/BT role change notification for
340*5113495bSYour Name  * connection tracker
341*5113495bSYour Name  */
342*5113495bSYour Name enum tdls_event_msg_type {
343*5113495bSYour Name 	TDLS_SHOULD_DISCOVER = 0,
344*5113495bSYour Name 	TDLS_SHOULD_TEARDOWN,
345*5113495bSYour Name 	TDLS_PEER_DISCONNECTED,
346*5113495bSYour Name 	TDLS_CONNECTION_TRACKER_NOTIFY
347*5113495bSYour Name };
348*5113495bSYour Name 
349*5113495bSYour Name /**
350*5113495bSYour Name  * enum tdls_event_reason - TDLS event reason
351*5113495bSYour Name  * @TDLS_TEARDOWN_TX: tdls teardown recommended due to low transmits
352*5113495bSYour Name  * @TDLS_TEARDOWN_RSSI: tdls link tear down recommended due to poor RSSI
353*5113495bSYour Name  * @TDLS_TEARDOWN_SCAN: tdls link tear down recommended due to offchannel scan
354*5113495bSYour Name  * @TDLS_TEARDOWN_PTR_TIMEOUT: tdls peer disconnected due to PTR timeout
355*5113495bSYour Name  * @TDLS_TEARDOWN_BAD_PTR: tdls peer disconnected due wrong PTR format
356*5113495bSYour Name  * @TDLS_TEARDOWN_NO_RSP: tdls peer not responding
357*5113495bSYour Name  * @TDLS_DISCONNECTED_PEER_DELETE: tdls peer disconnected due to peer deletion
358*5113495bSYour Name  * @TDLS_PEER_ENTER_BUF_STA: tdls entered buffer STA role, TDLS connection
359*5113495bSYour Name  * tracker needs to handle this
360*5113495bSYour Name  * @TDLS_PEER_EXIT_BUF_STA: tdls exited buffer STA role, TDLS connection tracker
361*5113495bSYour Name  * needs to handle this
362*5113495bSYour Name  * @TDLS_ENTER_BT_BUSY: BT entered busy mode, TDLS connection tracker needs to
363*5113495bSYour Name  * handle this
364*5113495bSYour Name  * @TDLS_EXIT_BT_BUSY: BT exited busy mode, TDLS connection tracker needs to
365*5113495bSYour Name  * handle this
366*5113495bSYour Name  * @TDLS_SCAN_STARTED: TDLS module received a scan start event, TDLS connection
367*5113495bSYour Name  * tracker needs to handle this
368*5113495bSYour Name  * @TDLS_SCAN_COMPLETED: TDLS module received a scan complete event, TDLS
369*5113495bSYour Name  * connection tracker needs to handle this
370*5113495bSYour Name  */
371*5113495bSYour Name enum tdls_event_reason {
372*5113495bSYour Name 	TDLS_TEARDOWN_TX,
373*5113495bSYour Name 	TDLS_TEARDOWN_RSSI,
374*5113495bSYour Name 	TDLS_TEARDOWN_SCAN,
375*5113495bSYour Name 	TDLS_TEARDOWN_PTR_TIMEOUT,
376*5113495bSYour Name 	TDLS_TEARDOWN_BAD_PTR,
377*5113495bSYour Name 	TDLS_TEARDOWN_NO_RSP,
378*5113495bSYour Name 	TDLS_DISCONNECTED_PEER_DELETE,
379*5113495bSYour Name 	TDLS_PEER_ENTER_BUF_STA,
380*5113495bSYour Name 	TDLS_PEER_EXIT_BUF_STA,
381*5113495bSYour Name 	TDLS_ENTER_BT_BUSY,
382*5113495bSYour Name 	TDLS_EXIT_BT_BUSY,
383*5113495bSYour Name 	TDLS_SCAN_STARTED,
384*5113495bSYour Name 	TDLS_SCAN_COMPLETED,
385*5113495bSYour Name };
386*5113495bSYour Name 
387*5113495bSYour Name /**
388*5113495bSYour Name  * enum tdls_disable_sources - TDLS disable sources
389*5113495bSYour Name  * @TDLS_SET_MODE_SOURCE_USER: disable from user
390*5113495bSYour Name  * @TDLS_SET_MODE_SOURCE_SCAN: disable during scan
391*5113495bSYour Name  * @TDLS_SET_MODE_SOURCE_OFFCHANNEL: disable during offchannel
392*5113495bSYour Name  * @TDLS_SET_MODE_SOURCE_BTC: disable during bluetooth
393*5113495bSYour Name  * @TDLS_SET_MODE_SOURCE_P2P: disable during p2p
394*5113495bSYour Name  */
395*5113495bSYour Name enum tdls_disable_sources {
396*5113495bSYour Name 	TDLS_SET_MODE_SOURCE_USER = 0,
397*5113495bSYour Name 	TDLS_SET_MODE_SOURCE_SCAN,
398*5113495bSYour Name 	TDLS_SET_MODE_SOURCE_OFFCHANNEL,
399*5113495bSYour Name 	TDLS_SET_MODE_SOURCE_BTC,
400*5113495bSYour Name 	TDLS_SET_MODE_SOURCE_P2P,
401*5113495bSYour Name };
402*5113495bSYour Name 
403*5113495bSYour Name /**
404*5113495bSYour Name  * struct tdls_osif_indication - tdls indication to os if layer
405*5113495bSYour Name  * @vdev: vdev object
406*5113495bSYour Name  * @reason: used with teardown indication
407*5113495bSYour Name  * @peer_mac: MAC address of the TDLS peer
408*5113495bSYour Name  * @status: operation status
409*5113495bSYour Name  */
410*5113495bSYour Name struct tdls_osif_indication {
411*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
412*5113495bSYour Name 	uint16_t reason;
413*5113495bSYour Name 	uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
414*5113495bSYour Name 	QDF_STATUS status;
415*5113495bSYour Name };
416*5113495bSYour Name 
417*5113495bSYour Name /**
418*5113495bSYour Name  * struct tx_frame - tx frame
419*5113495bSYour Name  * @buf: frame buffer
420*5113495bSYour Name  * @buf_len: buffer length
421*5113495bSYour Name  * @tx_timer: tx send timer
422*5113495bSYour Name  */
423*5113495bSYour Name struct tx_frame {
424*5113495bSYour Name 	uint8_t *buf;
425*5113495bSYour Name 	size_t buf_len;
426*5113495bSYour Name 	qdf_timer_t tx_timer;
427*5113495bSYour Name };
428*5113495bSYour Name 
429*5113495bSYour Name enum tdls_configured_external_control {
430*5113495bSYour Name 	TDLS_STRICT_EXTERNAL_CONTROL = 1,
431*5113495bSYour Name 	TDLS_LIBERAL_EXTERNAL_CONTROL = 2,
432*5113495bSYour Name };
433*5113495bSYour Name 
434*5113495bSYour Name /**
435*5113495bSYour Name  * enum tdls_feature_bit
436*5113495bSYour Name  * @TDLS_FEATURE_OFF_CHANNEL: tdls off channel
437*5113495bSYour Name  * @TDLS_FEATURE_WMM: tdls wmm
438*5113495bSYour Name  * @TDLS_FEATURE_BUFFER_STA: tdls buffer sta
439*5113495bSYour Name  * @TDLS_FEATURE_SLEEP_STA: tdls sleep sta feature
440*5113495bSYour Name  * @TDLS_FEATURE_SCAN: tdls scan
441*5113495bSYour Name  * @TDLS_FEATURE_ENABLE: tdls enabled
442*5113495bSYour Name  * @TDLS_FEAUTRE_IMPLICIT_TRIGGER: tdls implicit trigger
443*5113495bSYour Name  * @TDLS_FEATURE_EXTERNAL_CONTROL: enforce strict tdls external control
444*5113495bSYour Name  * @TDLS_FEATURE_LIBERAL_EXTERNAL_CONTROL: liberal external tdls control
445*5113495bSYour Name  */
446*5113495bSYour Name enum tdls_feature_bit {
447*5113495bSYour Name 	TDLS_FEATURE_OFF_CHANNEL,
448*5113495bSYour Name 	TDLS_FEATURE_WMM,
449*5113495bSYour Name 	TDLS_FEATURE_BUFFER_STA,
450*5113495bSYour Name 	TDLS_FEATURE_SLEEP_STA,
451*5113495bSYour Name 	TDLS_FEATURE_SCAN,
452*5113495bSYour Name 	TDLS_FEATURE_ENABLE,
453*5113495bSYour Name 	TDLS_FEAUTRE_IMPLICIT_TRIGGER,
454*5113495bSYour Name 	TDLS_FEATURE_EXTERNAL_CONTROL,
455*5113495bSYour Name 	TDLS_FEATURE_LIBERAL_EXTERNAL_CONTROL,
456*5113495bSYour Name };
457*5113495bSYour Name 
458*5113495bSYour Name #define TDLS_IS_OFF_CHANNEL_ENABLED(flags) \
459*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_OFF_CHANNEL)
460*5113495bSYour Name #define TDLS_IS_WMM_ENABLED(flags) \
461*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_WMM)
462*5113495bSYour Name #define TDLS_IS_BUFFER_STA_ENABLED(flags) \
463*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_BUFFER_STA)
464*5113495bSYour Name #define TDLS_IS_SLEEP_STA_ENABLED(flags) \
465*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_SLEEP_STA)
466*5113495bSYour Name #define TDLS_IS_SCAN_ENABLED(flags) \
467*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_SCAN)
468*5113495bSYour Name #define TDLS_IS_ENABLED(flags) \
469*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_ENABLE)
470*5113495bSYour Name #define TDLS_IS_IMPLICIT_TRIG_ENABLED(flags) \
471*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEAUTRE_IMPLICIT_TRIGGER)
472*5113495bSYour Name #define TDLS_IS_EXTERNAL_CONTROL_ENABLED(flags) \
473*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_EXTERNAL_CONTROL)
474*5113495bSYour Name #define TDLS_IS_LIBERAL_EXTERNAL_CONTROL_ENABLED(flags) \
475*5113495bSYour Name 	CHECK_BIT(flags, TDLS_FEATURE_LIBERAL_EXTERNAL_CONTROL)
476*5113495bSYour Name 
477*5113495bSYour Name /**
478*5113495bSYour Name  * struct tdls_user_config - TDLS user configuration
479*5113495bSYour Name  * @tdls_tx_states_period: tdls tx states period
480*5113495bSYour Name  * @tdls_tx_pkt_threshold: tdls tx packets threshold
481*5113495bSYour Name  * @tdls_rx_pkt_threshold: tdls rx packets threshold
482*5113495bSYour Name  * @tdls_max_discovery_attempt: tdls discovery max times
483*5113495bSYour Name  * @tdls_idle_timeout: tdls idle timeout
484*5113495bSYour Name  * @tdls_idle_pkt_threshold: tdls idle packets threshold
485*5113495bSYour Name  * @tdls_rssi_trigger_threshold: tdls rssi trigger threshold
486*5113495bSYour Name  * @tdls_rssi_teardown_threshold: tdls rssi tear down threshold
487*5113495bSYour Name  * @tdls_rssi_delta: tdls rssi delta
488*5113495bSYour Name  * @tdls_uapsd_mask: tdls uapsd mask
489*5113495bSYour Name  * @tdls_uapsd_inactivity_time: tdls uapsd inactivity time
490*5113495bSYour Name  * @tdls_uapsd_pti_window: tdls peer traffic indication window
491*5113495bSYour Name  * @tdls_uapsd_ptr_timeout: tdls peer response timeout
492*5113495bSYour Name  * @tdls_feature_flags: tdls feature flags
493*5113495bSYour Name  * @tdls_pre_off_chan_num: tdls off channel number
494*5113495bSYour Name  * @tdls_pre_off_chan_freq_6g: tdls pref off channel freq for 6g band
495*5113495bSYour Name  * @tdls_pre_off_chan_bw: tdls off channel bandwidth
496*5113495bSYour Name  * @tdls_peer_kickout_threshold: sta kickout threshold for tdls peer
497*5113495bSYour Name  * @tdls_discovery_wake_timeout: tdls discovery wake timeout
498*5113495bSYour Name  * @delayed_trig_framint: delayed trigger frame interval
499*5113495bSYour Name  * @tdls_vdev_nss_2g: tdls NSS setting for 2G band
500*5113495bSYour Name  * @tdls_vdev_nss_5g: tdls NSS setting for 5G band
501*5113495bSYour Name  * @tdls_buffer_sta_enable: tdls buffer station enable
502*5113495bSYour Name  * @tdls_off_chan_enable: tdls off channel enable
503*5113495bSYour Name  * @tdls_off_chan_enable_orig: original tdls off channel enable
504*5113495bSYour Name  * @tdls_wmm_mode_enable: tdls wmm mode enable
505*5113495bSYour Name  * @tdls_external_control: tdls external control enable
506*5113495bSYour Name  * @tdls_implicit_trigger_enable: tdls implicit trigger enable
507*5113495bSYour Name  * @tdls_scan_enable: tdls scan enable
508*5113495bSYour Name  * @tdls_sleep_sta_enable: tdls sleep sta enable
509*5113495bSYour Name  * @tdls_support_enable: tdls support enable
510*5113495bSYour Name  * @tdls_link_id: mlo link id
511*5113495bSYour Name  */
512*5113495bSYour Name struct tdls_user_config {
513*5113495bSYour Name 	uint32_t tdls_tx_states_period;
514*5113495bSYour Name 	uint32_t tdls_tx_pkt_threshold;
515*5113495bSYour Name 	uint32_t tdls_rx_pkt_threshold;
516*5113495bSYour Name 	uint32_t tdls_max_discovery_attempt;
517*5113495bSYour Name 	uint32_t tdls_idle_timeout;
518*5113495bSYour Name 	uint32_t tdls_idle_pkt_threshold;
519*5113495bSYour Name 	int32_t tdls_rssi_trigger_threshold;
520*5113495bSYour Name 	int32_t tdls_rssi_teardown_threshold;
521*5113495bSYour Name 	uint32_t tdls_rssi_delta;
522*5113495bSYour Name 	uint32_t tdls_uapsd_mask;
523*5113495bSYour Name 	uint32_t tdls_uapsd_inactivity_time;
524*5113495bSYour Name 	uint32_t tdls_uapsd_pti_window;
525*5113495bSYour Name 	uint32_t tdls_uapsd_ptr_timeout;
526*5113495bSYour Name 	uint32_t tdls_feature_flags;
527*5113495bSYour Name 	uint32_t tdls_pre_off_chan_num;
528*5113495bSYour Name 	uint32_t tdls_pre_off_chan_freq_6g;
529*5113495bSYour Name 	uint32_t tdls_pre_off_chan_bw;
530*5113495bSYour Name 	uint32_t tdls_peer_kickout_threshold;
531*5113495bSYour Name 	uint32_t tdls_discovery_wake_timeout;
532*5113495bSYour Name 	uint32_t delayed_trig_framint;
533*5113495bSYour Name 	uint8_t tdls_vdev_nss_2g;
534*5113495bSYour Name 	uint8_t tdls_vdev_nss_5g;
535*5113495bSYour Name 	bool tdls_buffer_sta_enable;
536*5113495bSYour Name 	bool tdls_off_chan_enable;
537*5113495bSYour Name 	bool tdls_off_chan_enable_orig;
538*5113495bSYour Name 	bool tdls_wmm_mode_enable;
539*5113495bSYour Name 	uint8_t tdls_external_control;
540*5113495bSYour Name 	bool tdls_implicit_trigger_enable;
541*5113495bSYour Name 	bool tdls_scan_enable;
542*5113495bSYour Name 	bool tdls_sleep_sta_enable;
543*5113495bSYour Name 	bool tdls_support_enable;
544*5113495bSYour Name 	int tdls_link_id;
545*5113495bSYour Name };
546*5113495bSYour Name 
547*5113495bSYour Name /**
548*5113495bSYour Name  * struct tdls_config_params - tdls configure paramets
549*5113495bSYour Name  * @tdls: tdls support mode
550*5113495bSYour Name  * @tx_period_t: tdls tx stats period
551*5113495bSYour Name  * @tx_packet_n: tdls tx packets number threshold
552*5113495bSYour Name  * @discovery_tries_n: tdls max discovery attempt count
553*5113495bSYour Name  * @idle_timeout_t: tdls idle time timeout
554*5113495bSYour Name  * @idle_packet_n: tdls idle pkt threshold
555*5113495bSYour Name  * @rssi_trigger_threshold: tdls rssi trigger threshold, checked before setup
556*5113495bSYour Name  * @rssi_teardown_threshold: tdls rssi teardown threshold
557*5113495bSYour Name  * @rssi_delta: rssi delta
558*5113495bSYour Name  */
559*5113495bSYour Name struct tdls_config_params {
560*5113495bSYour Name 	uint32_t tdls;
561*5113495bSYour Name 	uint32_t tx_period_t;
562*5113495bSYour Name 	uint32_t tx_packet_n;
563*5113495bSYour Name 	uint32_t discovery_tries_n;
564*5113495bSYour Name 	uint32_t idle_timeout_t;
565*5113495bSYour Name 	uint32_t idle_packet_n;
566*5113495bSYour Name 	int32_t rssi_trigger_threshold;
567*5113495bSYour Name 	int32_t rssi_teardown_threshold;
568*5113495bSYour Name 	int32_t rssi_delta;
569*5113495bSYour Name };
570*5113495bSYour Name 
571*5113495bSYour Name /**
572*5113495bSYour Name  * struct tdls_tx_cnf: tdls tx ack
573*5113495bSYour Name  * @vdev_id: vdev id
574*5113495bSYour Name  * @action_cookie: frame cookie
575*5113495bSYour Name  * @buf: frame buf
576*5113495bSYour Name  * @buf_len: buffer length
577*5113495bSYour Name  * @status: tx send status
578*5113495bSYour Name  */
579*5113495bSYour Name struct tdls_tx_cnf {
580*5113495bSYour Name 	int vdev_id;
581*5113495bSYour Name 	uint64_t action_cookie;
582*5113495bSYour Name 	void *buf;
583*5113495bSYour Name 	size_t buf_len;
584*5113495bSYour Name 	int status;
585*5113495bSYour Name };
586*5113495bSYour Name 
587*5113495bSYour Name /**
588*5113495bSYour Name  * struct tdls_rx_mgmt_frame - rx mgmt frame structure
589*5113495bSYour Name  * @frame_len: frame length
590*5113495bSYour Name  * @rx_freq: rx freq
591*5113495bSYour Name  * @vdev_id: vdev id
592*5113495bSYour Name  * @frm_type: frame type
593*5113495bSYour Name  * @rx_rssi: rx rssi
594*5113495bSYour Name  * @buf: buffer address
595*5113495bSYour Name  */
596*5113495bSYour Name struct tdls_rx_mgmt_frame {
597*5113495bSYour Name 	uint32_t frame_len;
598*5113495bSYour Name 	uint32_t rx_freq;
599*5113495bSYour Name 	uint32_t vdev_id;
600*5113495bSYour Name 	uint32_t frm_type;
601*5113495bSYour Name 	uint32_t rx_rssi;
602*5113495bSYour Name 	QDF_FLEX_ARRAY(uint8_t, buf);
603*5113495bSYour Name };
604*5113495bSYour Name 
605*5113495bSYour Name /**
606*5113495bSYour Name  * typedef tdls_rx_callback() - Callback for rx mgmt frame
607*5113495bSYour Name  * @user_data: user data associated to this rx mgmt frame.
608*5113495bSYour Name  * @rx_frame: RX mgmt frame
609*5113495bSYour Name  *
610*5113495bSYour Name  * This callback will be used to give rx frames to hdd.
611*5113495bSYour Name  *
612*5113495bSYour Name  * Return: None
613*5113495bSYour Name  */
614*5113495bSYour Name typedef void (*tdls_rx_callback)(void *user_data,
615*5113495bSYour Name 	struct tdls_rx_mgmt_frame *rx_frame);
616*5113495bSYour Name 
617*5113495bSYour Name /**
618*5113495bSYour Name  * typedef tdls_wmm_check() - Callback for wmm info
619*5113495bSYour Name  * @vdev_id: ID of the vdev to check
620*5113495bSYour Name  *
621*5113495bSYour Name  * This callback will be used to check wmm information
622*5113495bSYour Name  *
623*5113495bSYour Name  * Return: true or false
624*5113495bSYour Name  */
625*5113495bSYour Name typedef bool (*tdls_wmm_check)(uint8_t vdev_id);
626*5113495bSYour Name 
627*5113495bSYour Name 
628*5113495bSYour Name /* This callback is used to report state change of peer to wpa_supplicant */
629*5113495bSYour Name typedef int (*tdls_state_change_callback)(const uint8_t *mac,
630*5113495bSYour Name 					  uint32_t opclass,
631*5113495bSYour Name 					  uint32_t channel,
632*5113495bSYour Name 					  uint32_t state,
633*5113495bSYour Name 					  int32_t reason, void *ctx);
634*5113495bSYour Name 
635*5113495bSYour Name /* This callback is used to report events to os_if layer */
636*5113495bSYour Name typedef void (*tdls_evt_callback) (void *data,
637*5113495bSYour Name 				   enum tdls_event_type ev_type,
638*5113495bSYour Name 				   struct tdls_osif_indication *event);
639*5113495bSYour Name 
640*5113495bSYour Name /* This callback is used to register TDLS peer with the datapath */
641*5113495bSYour Name typedef QDF_STATUS (*tdls_register_peer_callback)(void *userdata,
642*5113495bSYour Name 						  uint32_t vdev_id,
643*5113495bSYour Name 						  const uint8_t *mac,
644*5113495bSYour Name 						  uint8_t qos);
645*5113495bSYour Name 
646*5113495bSYour Name /* This callback is used to deregister TDLS peer from the datapath */
647*5113495bSYour Name typedef QDF_STATUS
648*5113495bSYour Name (*tdls_deregister_peer_callback)(void *userdata,
649*5113495bSYour Name 				 uint32_t vdev_id,
650*5113495bSYour Name 				 struct qdf_mac_addr *peer_mac);
651*5113495bSYour Name 
652*5113495bSYour Name /* This callback is used to update datapath vdev flags */
653*5113495bSYour Name typedef QDF_STATUS
654*5113495bSYour Name (*tdls_dp_vdev_update_flags_callback)(void *cbk_data,
655*5113495bSYour Name 				      uint8_t vdev_id,
656*5113495bSYour Name 				      uint32_t vdev_param,
657*5113495bSYour Name 				      bool is_link_up);
658*5113495bSYour Name 
659*5113495bSYour Name /* This callback is to release vdev ref for tdls offchan param related msg */
660*5113495bSYour Name typedef void (*tdls_offchan_parms_callback)(struct wlan_objmgr_vdev *vdev);
661*5113495bSYour Name 
662*5113495bSYour Name /**
663*5113495bSYour Name  * typedef tdls_vdev_init_cb() - Callback for initializing the tdls private
664*5113495bSYour Name  *                               structure
665*5113495bSYour Name  * @vdev: vdev object
666*5113495bSYour Name  *
667*5113495bSYour Name  * This callback will be used to create the vdev private object and store
668*5113495bSYour Name  * in os_priv.
669*5113495bSYour Name  *
670*5113495bSYour Name  * Return: QDF_STATUS
671*5113495bSYour Name  */
672*5113495bSYour Name typedef QDF_STATUS (*tdls_vdev_init_cb)(struct wlan_objmgr_vdev *vdev);
673*5113495bSYour Name 
674*5113495bSYour Name /**
675*5113495bSYour Name  * typedef tdls_vdev_deinit_cb() - Callback for deinitializing the tdls
676*5113495bSYour Name  *                                 private structure
677*5113495bSYour Name  * @vdev: vdev object
678*5113495bSYour Name  *
679*5113495bSYour Name  * This callback will be used to destroy the vdev private object.
680*5113495bSYour Name  *
681*5113495bSYour Name  * Return: None
682*5113495bSYour Name  */
683*5113495bSYour Name typedef void (*tdls_vdev_deinit_cb)(struct wlan_objmgr_vdev *vdev);
684*5113495bSYour Name 
685*5113495bSYour Name /**
686*5113495bSYour Name  * struct tdls_osif_cb - Callbacks for updating osif params.
687*5113495bSYour Name  * @tdls_osif_conn_update: Update osif params when TDLS peer is connected
688*5113495bSYour Name  * @tdls_osif_disconn_update: Update osif params when TDLS peer is disconnected
689*5113495bSYour Name  *
690*5113495bSYour Name  * These callbacks will be used for updating osif params.
691*5113495bSYour Name  */
692*5113495bSYour Name struct tdls_osif_cb {
693*5113495bSYour Name 	void (*tdls_osif_conn_update)(struct wlan_objmgr_vdev *vdev);
694*5113495bSYour Name 	void (*tdls_osif_disconn_update)(struct wlan_objmgr_vdev *vdev);
695*5113495bSYour Name };
696*5113495bSYour Name 
697*5113495bSYour Name /**
698*5113495bSYour Name  * struct tdls_start_params - tdls start params
699*5113495bSYour Name  * @config: tdls user config
700*5113495bSYour Name  * @tdls_send_mgmt_req: pass eWNI_SME_TDLS_SEND_MGMT_REQ value
701*5113495bSYour Name  * @tdls_add_sta_req: pass eWNI_SME_TDLS_ADD_STA_REQ value
702*5113495bSYour Name  * @tdls_del_sta_req: pass eWNI_SME_TDLS_DEL_STA_REQ value
703*5113495bSYour Name  * @tdls_update_peer_state: pass WMA_UPDATE_TDLS_PEER_STATE value
704*5113495bSYour Name  * @tdls_del_all_peers: pass eWNI_SME_DEL_ALL_TDLS_PEERS
705*5113495bSYour Name  * @tdls_update_dp_vdev_flags: pass CDP_UPDATE_TDLS_FLAGS
706*5113495bSYour Name  * @tdls_rx_cb: TDLS RX callback
707*5113495bSYour Name  * @tdls_rx_cb_data: TDLS RX callback context
708*5113495bSYour Name  * @tdls_wmm_cb: TDLS WMM check callback
709*5113495bSYour Name  * @tdls_wmm_cb_data: TDLS WMM check callback context
710*5113495bSYour Name  * @tdls_event_cb: tdls event callback
711*5113495bSYour Name  * @tdls_evt_cb_data: tdls event data
712*5113495bSYour Name  * @tdls_peer_context: userdata for register/deregister TDLS peer
713*5113495bSYour Name  * @tdls_reg_peer: register tdls peer with datapath
714*5113495bSYour Name  * @tdls_dp_vdev_update: update vdev flags in datapath
715*5113495bSYour Name  * @tdls_osif_init_cb: callback to initialize the tdls priv
716*5113495bSYour Name  * @tdls_osif_deinit_cb: callback to deinitialize the tdls priv
717*5113495bSYour Name  * @tdls_osif_update_cb: callback to update osif params
718*5113495bSYour Name  */
719*5113495bSYour Name struct tdls_start_params {
720*5113495bSYour Name 	struct tdls_user_config config;
721*5113495bSYour Name 	uint16_t tdls_send_mgmt_req;
722*5113495bSYour Name 	uint16_t tdls_add_sta_req;
723*5113495bSYour Name 	uint16_t tdls_del_sta_req;
724*5113495bSYour Name 	uint16_t tdls_update_peer_state;
725*5113495bSYour Name 	uint16_t tdls_del_all_peers;
726*5113495bSYour Name 	uint32_t tdls_update_dp_vdev_flags;
727*5113495bSYour Name 	tdls_rx_callback tdls_rx_cb;
728*5113495bSYour Name 	void *tdls_rx_cb_data;
729*5113495bSYour Name 	tdls_wmm_check tdls_wmm_cb;
730*5113495bSYour Name 	void *tdls_wmm_cb_data;
731*5113495bSYour Name 	tdls_evt_callback tdls_event_cb;
732*5113495bSYour Name 	void *tdls_evt_cb_data;
733*5113495bSYour Name 	void *tdls_peer_context;
734*5113495bSYour Name 	tdls_register_peer_callback tdls_reg_peer;
735*5113495bSYour Name 	tdls_dp_vdev_update_flags_callback tdls_dp_vdev_update;
736*5113495bSYour Name 	tdls_vdev_init_cb tdls_osif_init_cb;
737*5113495bSYour Name 	tdls_vdev_deinit_cb tdls_osif_deinit_cb;
738*5113495bSYour Name 	struct tdls_osif_cb tdls_osif_update_cb;
739*5113495bSYour Name };
740*5113495bSYour Name 
741*5113495bSYour Name /**
742*5113495bSYour Name  * struct tdls_add_peer_params - add peer request parameter
743*5113495bSYour Name  * @peer_addr: peer mac addr
744*5113495bSYour Name  * @peer_type: peer type
745*5113495bSYour Name  * @vdev_id: vdev id
746*5113495bSYour Name  */
747*5113495bSYour Name struct tdls_add_peer_params {
748*5113495bSYour Name 	uint8_t peer_addr[QDF_MAC_ADDR_SIZE];
749*5113495bSYour Name 	uint32_t peer_type;
750*5113495bSYour Name 	uint32_t vdev_id;
751*5113495bSYour Name };
752*5113495bSYour Name 
753*5113495bSYour Name /**
754*5113495bSYour Name  * struct tdls_add_peer_request - peer add request
755*5113495bSYour Name  * @vdev: vdev
756*5113495bSYour Name  * @add_peer_req: add peer request parameters
757*5113495bSYour Name  */
758*5113495bSYour Name struct tdls_add_peer_request {
759*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
760*5113495bSYour Name 	struct tdls_add_peer_params add_peer_req;
761*5113495bSYour Name };
762*5113495bSYour Name 
763*5113495bSYour Name /**
764*5113495bSYour Name  * struct tdls_del_peer_params - delete peer request parameter
765*5113495bSYour Name  * @peer_addr: peer mac addr
766*5113495bSYour Name  * @peer_type: peer type
767*5113495bSYour Name  * @vdev_id: vdev id
768*5113495bSYour Name  */
769*5113495bSYour Name struct tdls_del_peer_params {
770*5113495bSYour Name 	const uint8_t *peer_addr;
771*5113495bSYour Name 	uint32_t peer_type;
772*5113495bSYour Name 	uint32_t vdev_id;
773*5113495bSYour Name };
774*5113495bSYour Name 
775*5113495bSYour Name /**
776*5113495bSYour Name  * struct tdls_del_peer_request - peer delete request
777*5113495bSYour Name  * @vdev: vdev
778*5113495bSYour Name  * @del_peer_req: delete peer request parameters
779*5113495bSYour Name  */
780*5113495bSYour Name struct tdls_del_peer_request {
781*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
782*5113495bSYour Name 	struct tdls_del_peer_params del_peer_req;
783*5113495bSYour Name };
784*5113495bSYour Name 
785*5113495bSYour Name /**
786*5113495bSYour Name  * struct vhtmcsinfo - VHT MCS information
787*5113495bSYour Name  * @rx_mcs_map: RX MCS map 2 bits for each stream, total 8 streams
788*5113495bSYour Name  * @rx_highest: Indicates highest long GI VHT PPDU data rate
789*5113495bSYour Name  *      STA can receive. Rate expressed in units of 1 Mbps.
790*5113495bSYour Name  *      If this field is 0 this value should not be used to
791*5113495bSYour Name  *      consider the highest RX data rate supported.
792*5113495bSYour Name  * @tx_mcs_map: TX MCS map 2 bits for each stream, total 8 streams
793*5113495bSYour Name  * @tx_highest: Indicates highest long GI VHT PPDU data rate
794*5113495bSYour Name  *      STA can transmit. Rate expressed in units of 1 Mbps.
795*5113495bSYour Name  *      If this field is 0 this value should not be used to
796*5113495bSYour Name  *      consider the highest TX data rate supported.
797*5113495bSYour Name  */
798*5113495bSYour Name struct vhtmcsinfo {
799*5113495bSYour Name 	uint16_t rx_mcs_map;
800*5113495bSYour Name 	uint16_t rx_highest;
801*5113495bSYour Name 	uint16_t tx_mcs_map;
802*5113495bSYour Name 	uint16_t tx_highest;
803*5113495bSYour Name };
804*5113495bSYour Name 
805*5113495bSYour Name /**
806*5113495bSYour Name  * struct vhtcap - VHT capabilities
807*5113495bSYour Name  *
808*5113495bSYour Name  * This structure is the "VHT capabilities element" as
809*5113495bSYour Name  * described in 802.11ac D3.0 8.4.2.160
810*5113495bSYour Name  * @vht_capinfo: VHT capability info
811*5113495bSYour Name  * @supp_mcs: VHT MCS supported rates
812*5113495bSYour Name  */
813*5113495bSYour Name struct vhtcap {
814*5113495bSYour Name 	uint32_t vht_capinfo;
815*5113495bSYour Name 	struct vhtmcsinfo supp_mcs;
816*5113495bSYour Name };
817*5113495bSYour Name 
818*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
819*5113495bSYour Name /**
820*5113495bSYour Name  * struct hecap - HE capabilities
821*5113495bSYour Name  *
822*5113495bSYour Name  * This structure is the "HE capabilities element" as
823*5113495bSYour Name  * described in 802.11ax D4.0 section 9.4.2.232.3
824*5113495bSYour Name  * @mac_cap_info: MAC capability info
825*5113495bSYour Name  * @phycap_info: Phy Capability info
826*5113495bSYour Name  * @he_cap_mcs_info: HE capabilities MCS information
827*5113495bSYour Name  */
828*5113495bSYour Name struct hecap {
829*5113495bSYour Name 	uint8_t mac_cap_info[6];
830*5113495bSYour Name 	uint8_t phycap_info[11];
831*5113495bSYour Name 	struct {
832*5113495bSYour Name 		uint16_t rx_he_mcs_map_lt_80;
833*5113495bSYour Name 		uint16_t tx_he_mcs_map_lt_80;
834*5113495bSYour Name 		uint16_t rx_he_mcs_map_160;
835*5113495bSYour Name 		uint16_t tx_he_mcs_map_160;
836*5113495bSYour Name 		uint16_t rx_he_mcs_map_80_80;
837*5113495bSYour Name 		uint16_t tx_he_mcs_map_80_80;
838*5113495bSYour Name 	} he_cap_mcs_info;
839*5113495bSYour Name } qdf_packed;
840*5113495bSYour Name 
841*5113495bSYour Name struct hecap_6ghz {
842*5113495bSYour Name 	/* Minimum MPDU Start Spacing B0..B2
843*5113495bSYour Name 	 * Maximum A-MPDU Length Exponent B3..B5
844*5113495bSYour Name 	 * Maximum MPDU Length B6..B7 */
845*5113495bSYour Name 	uint8_t a_mpdu_params; /* B0..B7 */
846*5113495bSYour Name 	uint8_t info; /* B8..B15 */
847*5113495bSYour Name };
848*5113495bSYour Name #endif
849*5113495bSYour Name 
850*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
851*5113495bSYour Name /**
852*5113495bSYour Name  * struct ehtcapfixed - EHT capabilities fixed data
853*5113495bSYour Name  * @mac_cap_info: MAC capabilities
854*5113495bSYour Name  * @phy_cap_info: PHY capabilities
855*5113495bSYour Name  */
856*5113495bSYour Name struct ehtcapfixed {
857*5113495bSYour Name 	uint8_t mac_cap_info[2];
858*5113495bSYour Name 	uint8_t phy_cap_info[9];
859*5113495bSYour Name };
860*5113495bSYour Name 
861*5113495bSYour Name /**
862*5113495bSYour Name  * struct ehtcap - EHT capabilities
863*5113495bSYour Name  * @eht_cap_fixed: fixed parts, see &ehtcapfixed
864*5113495bSYour Name  * @optional: optional parts
865*5113495bSYour Name  */
866*5113495bSYour Name struct ehtcap {
867*5113495bSYour Name 	struct ehtcapfixed eht_cap_fixed;
868*5113495bSYour Name 	uint8_t optional[];
869*5113495bSYour Name } qdf_packed;
870*5113495bSYour Name #endif
871*5113495bSYour Name 
872*5113495bSYour Name struct tdls_update_peer_params {
873*5113495bSYour Name 	uint8_t peer_addr[QDF_MAC_ADDR_SIZE];
874*5113495bSYour Name 	uint32_t peer_type;
875*5113495bSYour Name 	uint32_t vdev_id;
876*5113495bSYour Name 	uint16_t capability;
877*5113495bSYour Name 	uint8_t extn_capability[WLAN_MAC_MAX_EXTN_CAP];
878*5113495bSYour Name 	uint8_t supported_rates_len;
879*5113495bSYour Name 	uint8_t supported_rates[WLAN_MAC_MAX_SUPP_RATES];
880*5113495bSYour Name 	uint8_t htcap_present;
881*5113495bSYour Name 	struct htcap_cmn_ie ht_cap;
882*5113495bSYour Name 	uint8_t vhtcap_present;
883*5113495bSYour Name 	struct vhtcap vht_cap;
884*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
885*5113495bSYour Name 	uint8_t he_cap_len;
886*5113495bSYour Name 	struct hecap he_cap;
887*5113495bSYour Name 	struct hecap_6ghz he_6ghz_cap;
888*5113495bSYour Name #endif
889*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
890*5113495bSYour Name 	uint8_t ehtcap_present;
891*5113495bSYour Name 	uint8_t eht_cap_len;
892*5113495bSYour Name 	struct ehtcap eht_cap;
893*5113495bSYour Name #endif
894*5113495bSYour Name 	uint8_t uapsd_queues;
895*5113495bSYour Name 	uint8_t max_sp;
896*5113495bSYour Name 	uint8_t supported_channels_len;
897*5113495bSYour Name 	qdf_freq_t supported_chan_freq[WLAN_MAC_MAX_SUPP_CHANNELS];
898*5113495bSYour Name 	uint8_t supported_oper_classes_len;
899*5113495bSYour Name 	uint8_t supported_oper_classes[WLAN_MAX_SUPP_OPER_CLASSES];
900*5113495bSYour Name 	bool is_qos_wmm_sta;
901*5113495bSYour Name 	bool is_pmf;
902*5113495bSYour Name };
903*5113495bSYour Name 
904*5113495bSYour Name struct tdls_update_peer_request {
905*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
906*5113495bSYour Name 	struct tdls_update_peer_params update_peer_req;
907*5113495bSYour Name };
908*5113495bSYour Name 
909*5113495bSYour Name /**
910*5113495bSYour Name  * struct tdls_oper_request - tdls operation request
911*5113495bSYour Name  * @vdev: vdev object
912*5113495bSYour Name  * @peer_addr: MAC address of the TDLS peer
913*5113495bSYour Name  */
914*5113495bSYour Name struct tdls_oper_request {
915*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
916*5113495bSYour Name 	uint8_t peer_addr[QDF_MAC_ADDR_SIZE];
917*5113495bSYour Name };
918*5113495bSYour Name 
919*5113495bSYour Name /**
920*5113495bSYour Name  * struct tdls_oper_config_force_peer_request - tdls enable force peer request
921*5113495bSYour Name  * @vdev: vdev object
922*5113495bSYour Name  * @peer_addr: MAC address of the TDLS peer
923*5113495bSYour Name  * @chan: channel
924*5113495bSYour Name  * @ch_freq: ch_freq
925*5113495bSYour Name  * @max_latency: maximum latency
926*5113495bSYour Name  * @op_class: operation class
927*5113495bSYour Name  * @min_bandwidth: minimal bandwidth
928*5113495bSYour Name  * @callback: state change callback
929*5113495bSYour Name  */
930*5113495bSYour Name struct tdls_oper_config_force_peer_request {
931*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
932*5113495bSYour Name 	uint8_t peer_addr[QDF_MAC_ADDR_SIZE];
933*5113495bSYour Name 	uint32_t chan;
934*5113495bSYour Name 	qdf_freq_t ch_freq;
935*5113495bSYour Name 	uint32_t max_latency;
936*5113495bSYour Name 	uint32_t op_class;
937*5113495bSYour Name 	uint32_t min_bandwidth;
938*5113495bSYour Name 	tdls_state_change_callback callback;
939*5113495bSYour Name };
940*5113495bSYour Name 
941*5113495bSYour Name /**
942*5113495bSYour Name  * struct tdls_info - tdls info
943*5113495bSYour Name  *
944*5113495bSYour Name  * @vdev_id: vdev id
945*5113495bSYour Name  * @tdls_state: tdls state
946*5113495bSYour Name  * @notification_interval_ms: notification interval in ms
947*5113495bSYour Name  * @tx_discovery_threshold: tx discovery threshold
948*5113495bSYour Name  * @tx_teardown_threshold: tx teardown threshold
949*5113495bSYour Name  * @rssi_teardown_threshold: rx teardown threshold
950*5113495bSYour Name  * @rssi_delta: rssi delta
951*5113495bSYour Name  * @tdls_options: tdls options
952*5113495bSYour Name  * @peer_traffic_ind_window: peer traffic indication window
953*5113495bSYour Name  * @peer_traffic_response_timeout: peer traffic response timeout
954*5113495bSYour Name  * @puapsd_mask: puapsd mask
955*5113495bSYour Name  * @puapsd_inactivity_time: puapsd inactivity time
956*5113495bSYour Name  * @puapsd_rx_frame_threshold: puapsd rx frame threshold
957*5113495bSYour Name  * @teardown_notification_ms: tdls teardown notification interval
958*5113495bSYour Name  * @tdls_peer_kickout_threshold: tdls packets threshold
959*5113495bSYour Name  *    for peer kickout operation
960*5113495bSYour Name  * @tdls_discovery_wake_timeout: tdls discovery wake timeout
961*5113495bSYour Name  */
962*5113495bSYour Name struct tdls_info {
963*5113495bSYour Name 	uint32_t vdev_id;
964*5113495bSYour Name 	uint32_t tdls_state;
965*5113495bSYour Name 	uint32_t notification_interval_ms;
966*5113495bSYour Name 	uint32_t tx_discovery_threshold;
967*5113495bSYour Name 	uint32_t tx_teardown_threshold;
968*5113495bSYour Name 	int32_t rssi_teardown_threshold;
969*5113495bSYour Name 	int32_t rssi_delta;
970*5113495bSYour Name 	uint32_t tdls_options;
971*5113495bSYour Name 	uint32_t peer_traffic_ind_window;
972*5113495bSYour Name 	uint32_t peer_traffic_response_timeout;
973*5113495bSYour Name 	uint32_t puapsd_mask;
974*5113495bSYour Name 	uint32_t puapsd_inactivity_time;
975*5113495bSYour Name 	uint32_t puapsd_rx_frame_threshold;
976*5113495bSYour Name 	uint32_t teardown_notification_ms;
977*5113495bSYour Name 	uint32_t tdls_peer_kickout_threshold;
978*5113495bSYour Name 	uint32_t tdls_discovery_wake_timeout;
979*5113495bSYour Name };
980*5113495bSYour Name 
981*5113495bSYour Name /**
982*5113495bSYour Name  * struct tdls_ch_params - channel parameters
983*5113495bSYour Name  * @ch_freq: Channel frequency
984*5113495bSYour Name  * @pwr: power level
985*5113495bSYour Name  * @dfs_set: is dfs supported or not
986*5113495bSYour Name  * @half_rate: is the channel operating at 10MHz
987*5113495bSYour Name  * @quarter_rate: is the channel operating at 5MHz
988*5113495bSYour Name  */
989*5113495bSYour Name struct tdls_ch_params {
990*5113495bSYour Name 	qdf_freq_t ch_freq;
991*5113495bSYour Name 	uint8_t pwr;
992*5113495bSYour Name 	bool dfs_set;
993*5113495bSYour Name 	bool half_rate;
994*5113495bSYour Name 	bool quarter_rate;
995*5113495bSYour Name };
996*5113495bSYour Name 
997*5113495bSYour Name /**
998*5113495bSYour Name  * struct tdls_peer_params - TDLS peer capabilities parameters
999*5113495bSYour Name  * @is_peer_responder: is peer responder or not
1000*5113495bSYour Name  * @peer_uapsd_queue: peer uapsd queue
1001*5113495bSYour Name  * @peer_max_sp: peer max SP value
1002*5113495bSYour Name  * @peer_buff_sta_support: peer buffer sta supported or not
1003*5113495bSYour Name  * @peer_off_chan_support: peer offchannel support
1004*5113495bSYour Name  * @peer_curr_operclass: peer current operating class
1005*5113495bSYour Name  * @self_curr_operclass: self current operating class
1006*5113495bSYour Name  * @peer_chanlen: peer channel length
1007*5113495bSYour Name  * @peer_chan: peer channel list
1008*5113495bSYour Name  * @peer_oper_classlen: peer operating class length
1009*5113495bSYour Name  * @peer_oper_class: peer operating class
1010*5113495bSYour Name  * @pref_off_channum: preferred offchannel number
1011*5113495bSYour Name  * @pref_off_chan_bandwidth: peer offchannel bandwidth
1012*5113495bSYour Name  * @opclass_for_prefoffchan: operating class for offchannel
1013*5113495bSYour Name  * @pref_offchan_freq: preferred offchannel frequency
1014*5113495bSYour Name  */
1015*5113495bSYour Name struct tdls_peer_params {
1016*5113495bSYour Name 	uint8_t is_peer_responder;
1017*5113495bSYour Name 	uint8_t peer_uapsd_queue;
1018*5113495bSYour Name 	uint8_t peer_max_sp;
1019*5113495bSYour Name 	uint8_t peer_buff_sta_support;
1020*5113495bSYour Name 	uint8_t peer_off_chan_support;
1021*5113495bSYour Name 	uint8_t peer_curr_operclass;
1022*5113495bSYour Name 	uint8_t self_curr_operclass;
1023*5113495bSYour Name 	uint8_t peer_chanlen;
1024*5113495bSYour Name 	struct tdls_ch_params peer_chan[WLAN_MAC_WMI_MAX_SUPP_CHANNELS];
1025*5113495bSYour Name 	uint8_t peer_oper_classlen;
1026*5113495bSYour Name 	uint8_t peer_oper_class[WLAN_MAX_SUPP_OPER_CLASSES];
1027*5113495bSYour Name 	uint8_t pref_off_channum;
1028*5113495bSYour Name 	uint8_t pref_off_chan_bandwidth;
1029*5113495bSYour Name 	uint8_t opclass_for_prefoffchan;
1030*5113495bSYour Name 	uint32_t pref_offchan_freq;
1031*5113495bSYour Name };
1032*5113495bSYour Name 
1033*5113495bSYour Name /**
1034*5113495bSYour Name  * struct tdls_peer_update_state - TDLS peer state parameters
1035*5113495bSYour Name  * @vdev_id: vdev id
1036*5113495bSYour Name  * @peer_macaddr: peer mac address
1037*5113495bSYour Name  * @peer_state: peer state
1038*5113495bSYour Name  * @peer_cap: peer capabality
1039*5113495bSYour Name  * @resp_reqd: response needed
1040*5113495bSYour Name  */
1041*5113495bSYour Name struct tdls_peer_update_state {
1042*5113495bSYour Name 	uint32_t vdev_id;
1043*5113495bSYour Name 	uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE];
1044*5113495bSYour Name 	uint32_t peer_state;
1045*5113495bSYour Name 	struct tdls_peer_params peer_cap;
1046*5113495bSYour Name 	bool resp_reqd;
1047*5113495bSYour Name };
1048*5113495bSYour Name 
1049*5113495bSYour Name /**
1050*5113495bSYour Name  * struct tdls_channel_switch_params - channel switch parameter structure
1051*5113495bSYour Name  * @vdev_id: vdev ID
1052*5113495bSYour Name  * @peer_mac_addr: Peer mac address
1053*5113495bSYour Name  * @tdls_off_ch_bw_offset: Target off-channel bandwidth offset
1054*5113495bSYour Name  * @tdls_off_ch: Target Off Channel
1055*5113495bSYour Name  * @tdls_sw_mode: Switch mode
1056*5113495bSYour Name  * @oper_class: Operating class for target channel
1057*5113495bSYour Name  * @is_responder: Responder or initiator
1058*5113495bSYour Name  * @tdls_off_chan_freq: Target Off Channel frequency
1059*5113495bSYour Name  * @num_off_channels: Number of channels allowed for off channel operation
1060*5113495bSYour Name  * @allowed_off_channels: Channel list allowed for off channels
1061*5113495bSYour Name  */
1062*5113495bSYour Name struct tdls_channel_switch_params {
1063*5113495bSYour Name 	uint32_t    vdev_id;
1064*5113495bSYour Name 	uint8_t     peer_mac_addr[QDF_MAC_ADDR_SIZE];
1065*5113495bSYour Name 	uint8_t    tdls_off_ch_bw_offset;
1066*5113495bSYour Name 	uint8_t     tdls_off_ch;
1067*5113495bSYour Name 	uint8_t     tdls_sw_mode;
1068*5113495bSYour Name 	uint8_t     oper_class;
1069*5113495bSYour Name 	uint8_t     is_responder;
1070*5113495bSYour Name 	uint32_t    tdls_off_chan_freq;
1071*5113495bSYour Name 	uint16_t    num_off_channels;
1072*5113495bSYour Name 	struct tdls_ch_params allowed_off_channels[WLAN_MAC_WMI_MAX_SUPP_CHANNELS];
1073*5113495bSYour Name };
1074*5113495bSYour Name 
1075*5113495bSYour Name /**
1076*5113495bSYour Name  * enum uapsd_access_cat - U-APSD Access Categories
1077*5113495bSYour Name  * @UAPSD_AC_BE: best effort
1078*5113495bSYour Name  * @UAPSD_AC_BK: back ground
1079*5113495bSYour Name  * @UAPSD_AC_VI: video
1080*5113495bSYour Name  * @UAPSD_AC_VO: voice
1081*5113495bSYour Name  */
1082*5113495bSYour Name enum uapsd_access_cat {
1083*5113495bSYour Name 	UAPSD_AC_BE,
1084*5113495bSYour Name 	UAPSD_AC_BK,
1085*5113495bSYour Name 	UAPSD_AC_VI,
1086*5113495bSYour Name 	UAPSD_AC_VO
1087*5113495bSYour Name };
1088*5113495bSYour Name 
1089*5113495bSYour Name /**
1090*5113495bSYour Name  * enum tspec_dir_type - TSPEC Direction type
1091*5113495bSYour Name  * @TX_DIR: uplink
1092*5113495bSYour Name  * @RX_DIR: downlink
1093*5113495bSYour Name  * @BI_DIR: bidirectional
1094*5113495bSYour Name  */
1095*5113495bSYour Name enum tspec_dir_type {
1096*5113495bSYour Name 	TX_DIR = 0,
1097*5113495bSYour Name 	RX_DIR = 1,
1098*5113495bSYour Name 	BI_DIR = 2,
1099*5113495bSYour Name };
1100*5113495bSYour Name 
1101*5113495bSYour Name /**
1102*5113495bSYour Name  * struct tdls_event_info - firmware tdls event
1103*5113495bSYour Name  * @vdev_id: vdev id
1104*5113495bSYour Name  * @peermac: peer mac address
1105*5113495bSYour Name  * @message_type: message type
1106*5113495bSYour Name  * @peer_reason: reason
1107*5113495bSYour Name  */
1108*5113495bSYour Name struct tdls_event_info {
1109*5113495bSYour Name 	uint8_t vdev_id;
1110*5113495bSYour Name 	struct qdf_mac_addr peermac;
1111*5113495bSYour Name 	uint16_t message_type;
1112*5113495bSYour Name 	uint32_t peer_reason;
1113*5113495bSYour Name };
1114*5113495bSYour Name 
1115*5113495bSYour Name /**
1116*5113495bSYour Name  * struct tdls_event_notify - tdls event notify
1117*5113495bSYour Name  * @vdev: vdev object
1118*5113495bSYour Name  * @event: tdls event
1119*5113495bSYour Name  */
1120*5113495bSYour Name struct tdls_event_notify {
1121*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1122*5113495bSYour Name 	struct tdls_event_info event;
1123*5113495bSYour Name };
1124*5113495bSYour Name 
1125*5113495bSYour Name /**
1126*5113495bSYour Name  * struct tdls_send_mgmt - tdls send management frame
1127*5113495bSYour Name  * @peer_mac: peer's mac address
1128*5113495bSYour Name  * @frame_type: Type of TDLS mgmt frame to be sent
1129*5113495bSYour Name  * @dialog: dialog token used in the frame.
1130*5113495bSYour Name  * @status_code: status to be included in the frame
1131*5113495bSYour Name  * @responder: Tdls request type
1132*5113495bSYour Name  * @peer_capability: peer cpabilities
1133*5113495bSYour Name  * @len: length of additional Ies
1134*5113495bSYour Name  * @buf: additional IEs to be included
1135*5113495bSYour Name  */
1136*5113495bSYour Name struct tdls_send_mgmt {
1137*5113495bSYour Name 	struct qdf_mac_addr peer_mac;
1138*5113495bSYour Name 	uint8_t frame_type;
1139*5113495bSYour Name 	uint8_t dialog;
1140*5113495bSYour Name 	uint16_t status_code;
1141*5113495bSYour Name 	uint8_t responder;
1142*5113495bSYour Name 	uint32_t peer_capability;
1143*5113495bSYour Name 	uint8_t len;
1144*5113495bSYour Name 	/* Variable length, do not add anything after this */
1145*5113495bSYour Name 	uint8_t buf[];
1146*5113495bSYour Name };
1147*5113495bSYour Name 
1148*5113495bSYour Name /**
1149*5113495bSYour Name  * struct tdls_validate_action_req - tdls validate mgmt request
1150*5113495bSYour Name  * @action_code: action code
1151*5113495bSYour Name  * @peer_mac: peer mac address
1152*5113495bSYour Name  * @dialog_token: dialog code
1153*5113495bSYour Name  * @status_code: status code to add
1154*5113495bSYour Name  * @len: len of the frame
1155*5113495bSYour Name  * @responder: whether to respond or not
1156*5113495bSYour Name  */
1157*5113495bSYour Name struct tdls_validate_action_req {
1158*5113495bSYour Name 	uint8_t action_code;
1159*5113495bSYour Name 	uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
1160*5113495bSYour Name 	uint8_t dialog_token;
1161*5113495bSYour Name 	uint8_t status_code;
1162*5113495bSYour Name 	size_t len;
1163*5113495bSYour Name 	int responder;
1164*5113495bSYour Name };
1165*5113495bSYour Name 
1166*5113495bSYour Name /**
1167*5113495bSYour Name  * struct tdls_get_all_peers - get all peers from the list
1168*5113495bSYour Name  * @vdev: vdev object
1169*5113495bSYour Name  * @buf: output string buffer to hold the peer info
1170*5113495bSYour Name  * @buf_len: the size of output string buffer
1171*5113495bSYour Name  */
1172*5113495bSYour Name struct tdls_get_all_peers {
1173*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1174*5113495bSYour Name 	char *buf;
1175*5113495bSYour Name 	int buf_len;
1176*5113495bSYour Name };
1177*5113495bSYour Name 
1178*5113495bSYour Name /**
1179*5113495bSYour Name  * struct tdls_action_frame_request - tdls send mgmt request
1180*5113495bSYour Name  * @vdev: vdev object
1181*5113495bSYour Name  * @chk_frame: This struct used to validate mgmt frame
1182*5113495bSYour Name  * @session_id: session id
1183*5113495bSYour Name  * @link_id: link id
1184*5113495bSYour Name  * @vdev_id: vdev id
1185*5113495bSYour Name  * @cmd_buf: cmd buffer
1186*5113495bSYour Name  * @len: length of the frame
1187*5113495bSYour Name  * @use_default_ac: access category
1188*5113495bSYour Name  * @link_active: whether link active command send successfully
1189*5113495bSYour Name  * @tdls_mgmt: tdls management
1190*5113495bSYour Name  */
1191*5113495bSYour Name struct tdls_action_frame_request {
1192*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1193*5113495bSYour Name 	struct tdls_validate_action_req chk_frame;
1194*5113495bSYour Name 	uint8_t session_id;
1195*5113495bSYour Name 	uint8_t link_id;
1196*5113495bSYour Name 	uint8_t vdev_id;
1197*5113495bSYour Name 	const uint8_t *cmd_buf;
1198*5113495bSYour Name 	uint8_t len;
1199*5113495bSYour Name 	bool use_default_ac;
1200*5113495bSYour Name 	bool link_active;
1201*5113495bSYour Name 	/* Variable length, do not add anything after this */
1202*5113495bSYour Name 	struct tdls_send_mgmt tdls_mgmt;
1203*5113495bSYour Name };
1204*5113495bSYour Name 
1205*5113495bSYour Name /**
1206*5113495bSYour Name  * struct tdls_set_responder_req - tdls set responder in peer
1207*5113495bSYour Name  * @vdev: vdev object
1208*5113495bSYour Name  * @peer_mac: peer mac address
1209*5113495bSYour Name  * @responder: whether to respond or not
1210*5113495bSYour Name  */
1211*5113495bSYour Name struct tdls_set_responder_req {
1212*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1213*5113495bSYour Name 	uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
1214*5113495bSYour Name 	uint8_t responder;
1215*5113495bSYour Name };
1216*5113495bSYour Name 
1217*5113495bSYour Name /**
1218*5113495bSYour Name  * struct tdls_sta_notify_params - STA connection notify info
1219*5113495bSYour Name  * @vdev: vdev object
1220*5113495bSYour Name  * @tdls_prohibited: peer mac addr
1221*5113495bSYour Name  * @tdls_chan_swit_prohibited: peer type
1222*5113495bSYour Name  * @lfr_roam: is trigger due to lfr
1223*5113495bSYour Name  * @user_disconnect: should userspace be notified of disconnect
1224*5113495bSYour Name  * @session_id: session id
1225*5113495bSYour Name  */
1226*5113495bSYour Name struct tdls_sta_notify_params {
1227*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1228*5113495bSYour Name 	bool tdls_prohibited;
1229*5113495bSYour Name 	bool tdls_chan_swit_prohibited;
1230*5113495bSYour Name 	bool lfr_roam;
1231*5113495bSYour Name 	bool user_disconnect;
1232*5113495bSYour Name 	uint8_t session_id;
1233*5113495bSYour Name };
1234*5113495bSYour Name 
1235*5113495bSYour Name /**
1236*5113495bSYour Name  * struct tdls_delete_all_peers_params - TDLS set mode params
1237*5113495bSYour Name  * @vdev: vdev object
1238*5113495bSYour Name  */
1239*5113495bSYour Name struct tdls_delete_all_peers_params {
1240*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1241*5113495bSYour Name };
1242*5113495bSYour Name 
1243*5113495bSYour Name /**
1244*5113495bSYour Name  * struct tdls_set_mode_params - TDLS set mode params
1245*5113495bSYour Name  * @vdev: vdev object
1246*5113495bSYour Name  * @tdls_mode: tdls mode to set
1247*5113495bSYour Name  * @update_last: inform to update last tdls mode
1248*5113495bSYour Name  * @source: mode change requester
1249*5113495bSYour Name  */
1250*5113495bSYour Name struct tdls_set_mode_params {
1251*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1252*5113495bSYour Name 	enum tdls_feature_mode tdls_mode;
1253*5113495bSYour Name 	bool update_last;
1254*5113495bSYour Name 	enum tdls_disable_sources source;
1255*5113495bSYour Name };
1256*5113495bSYour Name 
1257*5113495bSYour Name /**
1258*5113495bSYour Name  * struct tdls_del_all_tdls_peers - delete all tdls peers
1259*5113495bSYour Name  * @msg_type: type of message
1260*5113495bSYour Name  * @msg_len: length of message
1261*5113495bSYour Name  * @bssid: bssid of peer device
1262*5113495bSYour Name  */
1263*5113495bSYour Name struct tdls_del_all_tdls_peers {
1264*5113495bSYour Name 	uint16_t msg_type;
1265*5113495bSYour Name 	uint16_t msg_len;
1266*5113495bSYour Name 	struct qdf_mac_addr bssid;
1267*5113495bSYour Name };
1268*5113495bSYour Name 
1269*5113495bSYour Name /**
1270*5113495bSYour Name  * struct tdls_antenna_switch_request - TDLS antenna switch request
1271*5113495bSYour Name  * @vdev: vdev object
1272*5113495bSYour Name  * @mode: antenna mode, 1x1 or 2x2
1273*5113495bSYour Name  */
1274*5113495bSYour Name struct tdls_antenna_switch_request {
1275*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1276*5113495bSYour Name 	uint32_t mode;
1277*5113495bSYour Name };
1278*5113495bSYour Name 
1279*5113495bSYour Name /**
1280*5113495bSYour Name  * struct tdls_set_offchannel - TDLS set offchannel
1281*5113495bSYour Name  * @vdev: vdev object
1282*5113495bSYour Name  * @offchannel: Updated tdls offchannel value.
1283*5113495bSYour Name  * @callback: callback to release vdev ref.
1284*5113495bSYour Name  */
1285*5113495bSYour Name struct tdls_set_offchannel {
1286*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1287*5113495bSYour Name 	uint16_t offchannel;
1288*5113495bSYour Name 	tdls_offchan_parms_callback callback;
1289*5113495bSYour Name };
1290*5113495bSYour Name 
1291*5113495bSYour Name /**
1292*5113495bSYour Name  * struct tdls_set_offchanmode - TDLS set offchannel mode
1293*5113495bSYour Name  * @vdev: vdev object
1294*5113495bSYour Name  * @offchan_mode: Updated tdls offchannel mode value.
1295*5113495bSYour Name  * @callback: callback to release vdev ref.
1296*5113495bSYour Name  */
1297*5113495bSYour Name struct tdls_set_offchanmode {
1298*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1299*5113495bSYour Name 	uint8_t offchan_mode;
1300*5113495bSYour Name 	tdls_offchan_parms_callback callback;
1301*5113495bSYour Name };
1302*5113495bSYour Name 
1303*5113495bSYour Name /**
1304*5113495bSYour Name  * struct tdls_set_secoffchanneloffset - TDLS set secondary offchannel offset
1305*5113495bSYour Name  * @vdev: vdev object
1306*5113495bSYour Name  * @offchan_offset: Offchan offset value.
1307*5113495bSYour Name  * @callback: callback to release vdev ref.
1308*5113495bSYour Name  */
1309*5113495bSYour Name struct tdls_set_secoffchanneloffset {
1310*5113495bSYour Name 	struct wlan_objmgr_vdev *vdev;
1311*5113495bSYour Name 	int offchan_offset;
1312*5113495bSYour Name 	tdls_offchan_parms_callback callback;
1313*5113495bSYour Name };
1314*5113495bSYour Name 
1315*5113495bSYour Name /**
1316*5113495bSYour Name  * enum legacy_result_code - defined to comply with tSirResultCodes, need refine
1317*5113495bSYour Name  *                           when mlme converged.
1318*5113495bSYour Name  * @legacy_result_success: success
1319*5113495bSYour Name  * @legacy_result_max: max result value
1320*5113495bSYour Name  */
1321*5113495bSYour Name enum legacy_result_code {
1322*5113495bSYour Name 	legacy_result_success,
1323*5113495bSYour Name 	legacy_result_max = 0x7FFFFFFF
1324*5113495bSYour Name };
1325*5113495bSYour Name 
1326*5113495bSYour Name /**
1327*5113495bSYour Name  * struct tdls_send_mgmt_rsp - TDLS Response struct PE --> TDLS module
1328*5113495bSYour Name  * @vdev_id: vdev id
1329*5113495bSYour Name  * @status_code: status code as tSirResultCodes
1330*5113495bSYour Name  * @psoc: soc object
1331*5113495bSYour Name  */
1332*5113495bSYour Name struct tdls_send_mgmt_rsp {
1333*5113495bSYour Name 	uint8_t vdev_id;
1334*5113495bSYour Name 	enum legacy_result_code status_code;
1335*5113495bSYour Name 	struct wlan_objmgr_psoc *psoc;
1336*5113495bSYour Name };
1337*5113495bSYour Name 
1338*5113495bSYour Name /**
1339*5113495bSYour Name  * struct tdls_mgmt_tx_completion_ind - TDLS TX completion PE --> TDLS module
1340*5113495bSYour Name  * @vdev_id: vdev_id
1341*5113495bSYour Name  * @tx_complete_status: tx complete status
1342*5113495bSYour Name  * @psoc: soc object
1343*5113495bSYour Name  */
1344*5113495bSYour Name struct tdls_mgmt_tx_completion_ind {
1345*5113495bSYour Name 	uint8_t vdev_id;
1346*5113495bSYour Name 	uint32_t tx_complete_status;
1347*5113495bSYour Name 	struct wlan_objmgr_psoc *psoc;
1348*5113495bSYour Name };
1349*5113495bSYour Name 
1350*5113495bSYour Name /**
1351*5113495bSYour Name  * struct tdls_add_sta_rsp - TDLS Response struct PE --> TDLS module
1352*5113495bSYour Name  * @status_code: status code as tSirResultCodes
1353*5113495bSYour Name  * @peermac: MAC address of the TDLS peer
1354*5113495bSYour Name  * @session_id: session id
1355*5113495bSYour Name  * @sta_type: sta type
1356*5113495bSYour Name  * @tdls_oper: add peer type
1357*5113495bSYour Name  * @psoc: soc object
1358*5113495bSYour Name  */
1359*5113495bSYour Name struct tdls_add_sta_rsp {
1360*5113495bSYour Name 	QDF_STATUS status_code;
1361*5113495bSYour Name 	struct qdf_mac_addr peermac;
1362*5113495bSYour Name 	uint8_t session_id;
1363*5113495bSYour Name 	uint16_t sta_type;
1364*5113495bSYour Name 	enum tdls_add_oper tdls_oper;
1365*5113495bSYour Name 	struct wlan_objmgr_psoc *psoc;
1366*5113495bSYour Name };
1367*5113495bSYour Name 
1368*5113495bSYour Name /**
1369*5113495bSYour Name  * struct tdls_del_sta_rsp - TDLS Response struct PE --> TDLS module
1370*5113495bSYour Name  * @session_id: session id
1371*5113495bSYour Name  * @status_code: status code as tSirResultCodes
1372*5113495bSYour Name  * @peermac: MAC address of the TDLS peer
1373*5113495bSYour Name  * @psoc: soc object
1374*5113495bSYour Name  */
1375*5113495bSYour Name struct tdls_del_sta_rsp {
1376*5113495bSYour Name 	uint8_t session_id;
1377*5113495bSYour Name 	QDF_STATUS status_code;
1378*5113495bSYour Name 	struct qdf_mac_addr peermac;
1379*5113495bSYour Name 	struct wlan_objmgr_psoc *psoc;
1380*5113495bSYour Name };
1381*5113495bSYour Name 
1382*5113495bSYour Name /**
1383*5113495bSYour Name  * struct tdls_send_mgmt_request - tdls management request
1384*5113495bSYour Name  * @message_type: type of pe message
1385*5113495bSYour Name  * @length: length of the frame.
1386*5113495bSYour Name  * @session_id: session id
1387*5113495bSYour Name  * @req_type: type of action frame
1388*5113495bSYour Name  * @dialog: dialog token used in the frame.
1389*5113495bSYour Name  * @status_code: status to be included in the frame.
1390*5113495bSYour Name  * @responder: tdls request type
1391*5113495bSYour Name  * @peer_capability: peer capability information
1392*5113495bSYour Name  * @bssid: bssid
1393*5113495bSYour Name  * @peer_mac: mac address of the peer
1394*5113495bSYour Name  * @ac: Access Category to use
1395*5113495bSYour Name  * @add_ie: additional ie's to be included
1396*5113495bSYour Name  */
1397*5113495bSYour Name struct tdls_send_mgmt_request {
1398*5113495bSYour Name 	uint16_t message_type;
1399*5113495bSYour Name 	uint16_t length;
1400*5113495bSYour Name 	uint8_t session_id;
1401*5113495bSYour Name 	uint8_t req_type;
1402*5113495bSYour Name 	uint8_t dialog;
1403*5113495bSYour Name 	uint16_t status_code;
1404*5113495bSYour Name 	uint8_t responder;
1405*5113495bSYour Name 	uint32_t peer_capability;
1406*5113495bSYour Name 	struct qdf_mac_addr bssid;
1407*5113495bSYour Name 	struct qdf_mac_addr peer_mac;
1408*5113495bSYour Name 	enum wifi_traffic_ac ac;
1409*5113495bSYour Name 	/* Variable length. Dont add any field after this. */
1410*5113495bSYour Name 	QDF_FLEX_ARRAY(uint8_t, add_ie);
1411*5113495bSYour Name };
1412*5113495bSYour Name 
1413*5113495bSYour Name /**
1414*5113495bSYour Name  * struct tdls_add_sta_req - TDLS request struct TDLS module --> PE
1415*5113495bSYour Name  * @message_type: eWNI_SME_TDLS_ADD_STA_REQ
1416*5113495bSYour Name  * @length: message length
1417*5113495bSYour Name  * @session_id: session id
1418*5113495bSYour Name  * @transaction_id: transaction id for cmd
1419*5113495bSYour Name  * @bssid: bssid
1420*5113495bSYour Name  * @tdls_oper: add peer type
1421*5113495bSYour Name  * @peermac: MAC address for TDLS peer
1422*5113495bSYour Name  * @capability: mac capability as sSirMacCapabilityInfo
1423*5113495bSYour Name  * @extn_capability: extent capability
1424*5113495bSYour Name  * @supported_rates_length: rates length
1425*5113495bSYour Name  * @supported_rates: supported rates
1426*5113495bSYour Name  * @htcap_present: ht capability present
1427*5113495bSYour Name  * @ht_cap: ht capability
1428*5113495bSYour Name  * @vhtcap_present: vht capability present
1429*5113495bSYour Name  * @vht_cap: vht capability
1430*5113495bSYour Name  * @he_cap_len: he capability length
1431*5113495bSYour Name  * @he_cap: he capability
1432*5113495bSYour Name  * @he_6ghz_cap: HE 6 GHz capability
1433*5113495bSYour Name  * @ehtcap_present: eht capability present
1434*5113495bSYour Name  * @eht_cap_len: eht capability length
1435*5113495bSYour Name  * @eht_cap: eht capability
1436*5113495bSYour Name  * @uapsd_queues: uapsd queue as sSirMacQosInfoStation
1437*5113495bSYour Name  * @max_sp: maximum service period
1438*5113495bSYour Name  * @is_pmf: is PMF active
1439*5113495bSYour Name  */
1440*5113495bSYour Name struct tdls_add_sta_req {
1441*5113495bSYour Name 	uint16_t message_type;
1442*5113495bSYour Name 	uint16_t length;
1443*5113495bSYour Name 	uint8_t session_id;
1444*5113495bSYour Name 	uint16_t transaction_id;
1445*5113495bSYour Name 	struct qdf_mac_addr bssid;
1446*5113495bSYour Name 	enum tdls_add_oper tdls_oper;
1447*5113495bSYour Name 	struct qdf_mac_addr peermac;
1448*5113495bSYour Name 	uint16_t capability;
1449*5113495bSYour Name 	uint8_t extn_capability[WLAN_MAC_MAX_EXTN_CAP];
1450*5113495bSYour Name 	uint8_t supported_rates_length;
1451*5113495bSYour Name 	uint8_t supported_rates[WLAN_MAC_MAX_SUPP_RATES];
1452*5113495bSYour Name 	uint8_t htcap_present;
1453*5113495bSYour Name 	struct htcap_cmn_ie ht_cap;
1454*5113495bSYour Name 	uint8_t vhtcap_present;
1455*5113495bSYour Name 	struct vhtcap vht_cap;
1456*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
1457*5113495bSYour Name 	uint8_t he_cap_len;
1458*5113495bSYour Name 	struct hecap he_cap;
1459*5113495bSYour Name 	struct hecap_6ghz he_6ghz_cap;
1460*5113495bSYour Name #endif
1461*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
1462*5113495bSYour Name 	uint8_t ehtcap_present;
1463*5113495bSYour Name 	uint8_t eht_cap_len;
1464*5113495bSYour Name 	struct ehtcap eht_cap;
1465*5113495bSYour Name #endif
1466*5113495bSYour Name 	uint8_t uapsd_queues;
1467*5113495bSYour Name 	uint8_t max_sp;
1468*5113495bSYour Name 	bool is_pmf;
1469*5113495bSYour Name };
1470*5113495bSYour Name 
1471*5113495bSYour Name /**
1472*5113495bSYour Name  * struct tdls_del_sta_req - TDLS Request struct TDLS module --> PE
1473*5113495bSYour Name  * @message_type: message type eWNI_SME_TDLS_DEL_STA_REQ
1474*5113495bSYour Name  * @length: message length
1475*5113495bSYour Name  * @session_id: session id
1476*5113495bSYour Name  * @transaction_id: transaction id for cmd
1477*5113495bSYour Name  * @bssid: bssid
1478*5113495bSYour Name  * @peermac: MAC address of the TDLS peer
1479*5113495bSYour Name  */
1480*5113495bSYour Name struct tdls_del_sta_req {
1481*5113495bSYour Name 	uint16_t message_type;
1482*5113495bSYour Name 	uint16_t length;
1483*5113495bSYour Name 	uint8_t session_id;
1484*5113495bSYour Name 	uint16_t transaction_id;
1485*5113495bSYour Name 	struct qdf_mac_addr bssid;
1486*5113495bSYour Name 	struct qdf_mac_addr peermac;
1487*5113495bSYour Name };
1488*5113495bSYour Name 
1489*5113495bSYour Name /**
1490*5113495bSYour Name  * struct tdls_link_teardown - TDLS link teardown struct
1491*5113495bSYour Name  * @psoc: soc object
1492*5113495bSYour Name  */
1493*5113495bSYour Name struct tdls_link_teardown {
1494*5113495bSYour Name 	struct wlan_objmgr_psoc *psoc;
1495*5113495bSYour Name };
1496*5113495bSYour Name 
1497*5113495bSYour Name #ifdef FEATURE_SET
1498*5113495bSYour Name /**
1499*5113495bSYour Name  * struct wlan_tdls_features - TDLS feature set struct
1500*5113495bSYour Name  * @enable_tdls: enable/disable tdls
1501*5113495bSYour Name  * @enable_tdls_offchannel: enable/disable tdls offchannel
1502*5113495bSYour Name  * @max_tdls_peers: Max tdls Peers
1503*5113495bSYour Name  * @enable_tdls_capability_enhance: enable tdls capability enhance
1504*5113495bSYour Name  */
1505*5113495bSYour Name struct wlan_tdls_features {
1506*5113495bSYour Name 	bool enable_tdls;
1507*5113495bSYour Name 	bool enable_tdls_offchannel;
1508*5113495bSYour Name 	uint8_t max_tdls_peers;
1509*5113495bSYour Name 	bool enable_tdls_capability_enhance;
1510*5113495bSYour Name };
1511*5113495bSYour Name #endif
1512*5113495bSYour Name #endif
1513