xref: /wlan-driver/qca-wifi-host-cmn/umac/twt/dispatcher/inc/wlan_twt_public_structs.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
5*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
6*5113495bSYour Name  * above copyright notice and this permission notice appear in all
7*5113495bSYour Name  * copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
17*5113495bSYour Name  */
18*5113495bSYour Name 
19*5113495bSYour Name /**
20*5113495bSYour Name  * DOC: This file contains various structures, macros used by the TWT
21*5113495bSYour Name  * component and other components interfacing with TWT component.
22*5113495bSYour Name  */
23*5113495bSYour Name 
24*5113495bSYour Name #ifndef _WLAN_TWT_PUBLIC_STRUCTS_H_
25*5113495bSYour Name #define _WLAN_TWT_PUBLIC_STRUCTS_H_
26*5113495bSYour Name 
27*5113495bSYour Name #include <qdf_types.h>
28*5113495bSYour Name 
29*5113495bSYour Name #define WLAN_MAX_TWT_SESSIONS_PER_PEER 1
30*5113495bSYour Name #define TWT_ALL_SESSIONS_DIALOG_ID 255
31*5113495bSYour Name 
32*5113495bSYour Name /**
33*5113495bSYour Name  * enum wlan_twt_commands  - TWT commands
34*5113495bSYour Name  * @WLAN_TWT_NONE: Indicates none of the TWT commands are active.
35*5113495bSYour Name  * @WLAN_TWT_SETUP: TWT setup
36*5113495bSYour Name  * @WLAN_TWT_TERMINATE: TWT terminate
37*5113495bSYour Name  * @WLAN_TWT_SUSPEND: TWT suspend
38*5113495bSYour Name  * @WLAN_TWT_RESUME: TWT resume
39*5113495bSYour Name  * @WLAN_TWT_NUDGE: TWT nudge
40*5113495bSYour Name  * @WLAN_TWT_STATISTICS: TWT statistics
41*5113495bSYour Name  * @WLAN_TWT_CLEAR_STATISTICS: TWT clear statistics
42*5113495bSYour Name  * @WLAN_TWT_ANY: Indicates one of the commands is in progress.
43*5113495bSYour Name  */
44*5113495bSYour Name enum wlan_twt_commands {
45*5113495bSYour Name 	WLAN_TWT_NONE             = 0,
46*5113495bSYour Name 	WLAN_TWT_SETUP            = BIT(0),
47*5113495bSYour Name 	WLAN_TWT_TERMINATE        = BIT(1),
48*5113495bSYour Name 	WLAN_TWT_SUSPEND          = BIT(2),
49*5113495bSYour Name 	WLAN_TWT_RESUME           = BIT(3),
50*5113495bSYour Name 	WLAN_TWT_NUDGE            = BIT(4),
51*5113495bSYour Name 	WLAN_TWT_STATISTICS       = BIT(5),
52*5113495bSYour Name 	WLAN_TWT_CLEAR_STATISTICS = BIT(6),
53*5113495bSYour Name 	WLAN_TWT_ANY              = 0xFF,
54*5113495bSYour Name };
55*5113495bSYour Name 
56*5113495bSYour Name /**
57*5113495bSYour Name  * enum wlan_twt_capabilities  - Represents the Bitmap of TWT capabilities
58*5113495bSYour Name  * supported by device and peer.
59*5113495bSYour Name  * @WLAN_TWT_CAPA_REQUESTOR: TWT requestor support is advertised by TWT
60*5113495bSYour Name  * non-scheduling STA.
61*5113495bSYour Name  * @WLAN_TWT_CAPA_RESPONDER: TWT responder support is advertised by TWT
62*5113495bSYour Name  * AP.
63*5113495bSYour Name  * @WLAN_TWT_CAPA_BROADCAST: This indicates support for the role of broadcast
64*5113495bSYour Name  * TWT scheduling/receiving functionality.
65*5113495bSYour Name  * @WLAN_TWT_CAPA_FLEXIBLE: Device supports flexible TWT schedule.
66*5113495bSYour Name  * @WLAN_TWT_CAPA_REQUIRED: The TWT Required is advertised by AP to indicate
67*5113495bSYour Name  * that it mandates the associated HE STAs to support TWT.
68*5113495bSYour Name  */
69*5113495bSYour Name enum wlan_twt_capabilities {
70*5113495bSYour Name 	WLAN_TWT_CAPA_REQUESTOR = BIT(0),
71*5113495bSYour Name 	WLAN_TWT_CAPA_RESPONDER = BIT(1),
72*5113495bSYour Name 	WLAN_TWT_CAPA_BROADCAST = BIT(2),
73*5113495bSYour Name 	WLAN_TWT_CAPA_FLEXIBLE =  BIT(3),
74*5113495bSYour Name 	WLAN_TWT_CAPA_REQUIRED =  BIT(4),
75*5113495bSYour Name };
76*5113495bSYour Name 
77*5113495bSYour Name /**
78*5113495bSYour Name  * enum wlan_twt_session_state  - TWT session state for a dialog id
79*5113495bSYour Name  * @WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED: Session doesn't exist
80*5113495bSYour Name  * @WLAN_TWT_SETUP_STATE_ACTIVE: TWT session is active
81*5113495bSYour Name  * @WLAN_TWT_SETUP_STATE_SUSPEND: TWT session is suspended
82*5113495bSYour Name  */
83*5113495bSYour Name enum wlan_twt_session_state {
84*5113495bSYour Name 	WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED = 0,
85*5113495bSYour Name 	WLAN_TWT_SETUP_STATE_ACTIVE          = 1,
86*5113495bSYour Name 	WLAN_TWT_SETUP_STATE_SUSPEND         = 2,
87*5113495bSYour Name };
88*5113495bSYour Name 
89*5113495bSYour Name /**
90*5113495bSYour Name  * enum TWT_ROLE - role specified in ext conf in wmi_twt_enable/disable_cmd
91*5113495bSYour Name  * @TWT_ROLE_REQUESTOR: TWT role is requestor
92*5113495bSYour Name  * @TWT_ROLE_RESPONDER: TWT role is responder
93*5113495bSYour Name  */
94*5113495bSYour Name enum TWT_ROLE {
95*5113495bSYour Name 	TWT_ROLE_REQUESTOR,
96*5113495bSYour Name 	TWT_ROLE_RESPONDER,
97*5113495bSYour Name };
98*5113495bSYour Name 
99*5113495bSYour Name /**
100*5113495bSYour Name  * enum TWT_OPERATION - specified in ext conf in wmi_twt_enable/disable_cmd
101*5113495bSYour Name  * @TWT_OPERATION_INDIVIDUAL: Individual TWT operation
102*5113495bSYour Name  * @TWT_OPERATION_BROADCAST: Broadcast TWT operation
103*5113495bSYour Name  */
104*5113495bSYour Name enum TWT_OPERATION {
105*5113495bSYour Name 	TWT_OPERATION_INDIVIDUAL,
106*5113495bSYour Name 	TWT_OPERATION_BROADCAST,
107*5113495bSYour Name };
108*5113495bSYour Name 
109*5113495bSYour Name /**
110*5113495bSYour Name  * struct twt_enable_param:
111*5113495bSYour Name  * @pdev_id: pdev_id for identifying the MAC.
112*5113495bSYour Name  * @sta_cong_timer_ms: STA TWT congestion timer TO value in terms of ms
113*5113495bSYour Name  * @mbss_support: Flag indicating if AP TWT feature supported in
114*5113495bSYour Name  *                MBSS mode or not.
115*5113495bSYour Name  * @default_slot_size: This is the default value for the TWT slot setup
116*5113495bSYour Name  *                by AP (units = microseconds)
117*5113495bSYour Name  * @congestion_thresh_setup: Minimum congestion required to start setting
118*5113495bSYour Name  *                up TWT sessions
119*5113495bSYour Name  * @congestion_thresh_teardown: Minimum congestion below which TWT will be
120*5113495bSYour Name  *                torn down (in percent of occupied airtime)
121*5113495bSYour Name  * @congestion_thresh_critical: Threshold above which TWT will not be active
122*5113495bSYour Name  *                (in percent of occupied airtime)
123*5113495bSYour Name  * @interference_thresh_teardown: Minimum interference above that TWT
124*5113495bSYour Name  *                 will not be active. The interference parameters use an
125*5113495bSYour Name  *                 abstract method of evaluating interference.
126*5113495bSYour Name  *                 The parameters are in percent, ranging from 0 for no
127*5113495bSYour Name  *                 interference, to 100 for interference extreme enough
128*5113495bSYour Name  *                 to completely block the signal of interest.
129*5113495bSYour Name  * @interference_thresh_setup: Minimum interference below that TWT session
130*5113495bSYour Name  *                 can be setup. The interference parameters use an
131*5113495bSYour Name  *                 abstract method of evaluating interference.
132*5113495bSYour Name  *                 The parameters are in percent, ranging from 0 for no
133*5113495bSYour Name  *                 interference, to 100 for interference extreme enough
134*5113495bSYour Name  *                 to completely block the signal of interest.
135*5113495bSYour Name  * @min_no_sta_setup: Minimum no of STA required to start TWT setup
136*5113495bSYour Name  * @min_no_sta_teardown: Minimum no of STA below which TWT will be torn down
137*5113495bSYour Name  * @no_of_bcast_mcast_slots: Number of default slot sizes reserved for
138*5113495bSYour Name  *                 BCAST/MCAST delivery
139*5113495bSYour Name  * @min_no_twt_slots: Minimum no of available slots for TWT to be operational
140*5113495bSYour Name  * @max_no_sta_twt: Max no of STA with which TWT is possible
141*5113495bSYour Name  *                 (must be <= the wmi_resource_config's twt_ap_sta_count value)
142*5113495bSYour Name  *      * The below interval parameters have units of milliseconds.
143*5113495bSYour Name  * @mode_check_interval: Interval between two successive check to decide the
144*5113495bSYour Name  *                 mode of TWT. (units = milliseconds)
145*5113495bSYour Name  * @add_sta_slot_interval: Interval between decisions making to create
146*5113495bSYour Name  *                 TWT slots for STAs. (units = milliseconds)
147*5113495bSYour Name  * @remove_sta_slot_interval: Inrerval between decisions making to remove TWT
148*5113495bSYour Name  *                 slot of STAs. (units = milliseconds)
149*5113495bSYour Name  * @twt_role: values from enum TWT_ROLE.
150*5113495bSYour Name  * @twt_oper: values from enum TWT_OPERATION.
151*5113495bSYour Name  * @ext_conf_present: If requestor/responder extend config is present.
152*5113495bSYour Name  * @b_twt_enable: Enable or disable broadcast TWT.
153*5113495bSYour Name  * @b_twt_legacy_mbss_enable: Enable or disable legacy MBSSID TWT.
154*5113495bSYour Name  * @b_twt_ax_mbss_enable: Enable or disable 11AX MBSSID TWT.
155*5113495bSYour Name  * @r_twt_enable: Restricted TWT enable or disable.
156*5113495bSYour Name  */
157*5113495bSYour Name struct twt_enable_param {
158*5113495bSYour Name 	uint32_t pdev_id;
159*5113495bSYour Name 	uint32_t sta_cong_timer_ms;
160*5113495bSYour Name 	uint32_t mbss_support;
161*5113495bSYour Name 	uint32_t default_slot_size;
162*5113495bSYour Name 	uint32_t congestion_thresh_setup;
163*5113495bSYour Name 	uint32_t congestion_thresh_teardown;
164*5113495bSYour Name 	uint32_t congestion_thresh_critical;
165*5113495bSYour Name 	uint32_t interference_thresh_teardown;
166*5113495bSYour Name 	uint32_t interference_thresh_setup;
167*5113495bSYour Name 	uint32_t min_no_sta_setup;
168*5113495bSYour Name 	uint32_t min_no_sta_teardown;
169*5113495bSYour Name 	uint32_t no_of_bcast_mcast_slots;
170*5113495bSYour Name 	uint32_t min_no_twt_slots;
171*5113495bSYour Name 	uint32_t max_no_sta_twt;
172*5113495bSYour Name 	uint32_t mode_check_interval;
173*5113495bSYour Name 	uint32_t add_sta_slot_interval;
174*5113495bSYour Name 	uint32_t remove_sta_slot_interval;
175*5113495bSYour Name 	enum TWT_ROLE twt_role;
176*5113495bSYour Name 	enum TWT_OPERATION twt_oper;
177*5113495bSYour Name 	bool ext_conf_present;
178*5113495bSYour Name 	uint32_t b_twt_enable:1,
179*5113495bSYour Name 		 b_twt_legacy_mbss_enable:1,
180*5113495bSYour Name 		 b_twt_ax_mbss_enable:1;
181*5113495bSYour Name 	bool r_twt_enable;
182*5113495bSYour Name };
183*5113495bSYour Name 
184*5113495bSYour Name /**
185*5113495bSYour Name  * enum HOST_TWT_DISABLE_REASON - reason code of disable TWT
186*5113495bSYour Name  * @HOST_TWT_DISABLE_REASON_NONE: Host sends TWT disable command to firmware
187*5113495bSYour Name  *                              in normal case.
188*5113495bSYour Name  * @HOST_TWT_DISABLE_REASON_CONCURRENCY_SCC: Host sends TWT disable command
189*5113495bSYour Name  *                              to firmware when SCC concurrency exist.
190*5113495bSYour Name  * @HOST_TWT_DISABLE_REASON_CONCURRENCY_MCC: Host sends TWT disable command
191*5113495bSYour Name  *                              to firmware when MCC concurrency exist.
192*5113495bSYour Name  * @HOST_TWT_DISABLE_REASON_CHANGE_CONGESTION_TIMEOUT: Host sends TWT disable
193*5113495bSYour Name  *                              command to firmware to change congestion timeout
194*5113495bSYour Name  * @HOST_TWT_DISABLE_REASON_P2P_GO_NOA: Host sends TWT disable command to
195*5113495bSYour Name  *                              firmware when P2P GO NOA exist.
196*5113495bSYour Name  */
197*5113495bSYour Name enum HOST_TWT_DISABLE_REASON {
198*5113495bSYour Name 	HOST_TWT_DISABLE_REASON_NONE,
199*5113495bSYour Name 	HOST_TWT_DISABLE_REASON_CONCURRENCY_SCC,
200*5113495bSYour Name 	HOST_TWT_DISABLE_REASON_CONCURRENCY_MCC,
201*5113495bSYour Name 	HOST_TWT_DISABLE_REASON_CHANGE_CONGESTION_TIMEOUT,
202*5113495bSYour Name 	HOST_TWT_DISABLE_REASON_P2P_GO_NOA,
203*5113495bSYour Name };
204*5113495bSYour Name 
205*5113495bSYour Name /**
206*5113495bSYour Name  * struct twt_disable_param:
207*5113495bSYour Name  * @pdev_id: pdev_id for identifying the MAC.
208*5113495bSYour Name  * @ext_conf_present: If requestor/responder extend config is present.
209*5113495bSYour Name  * @twt_role: values from enum TWT_ROLE.
210*5113495bSYour Name  * @twt_oper: values from enum TWT_OPERATION.
211*5113495bSYour Name  * @dis_reason_code: values from disable reason code.
212*5113495bSYour Name  */
213*5113495bSYour Name struct twt_disable_param {
214*5113495bSYour Name 	uint32_t pdev_id;
215*5113495bSYour Name 	bool ext_conf_present;
216*5113495bSYour Name 	enum TWT_ROLE twt_role;
217*5113495bSYour Name 	enum TWT_OPERATION twt_oper;
218*5113495bSYour Name 	enum HOST_TWT_DISABLE_REASON dis_reason_code;
219*5113495bSYour Name };
220*5113495bSYour Name 
221*5113495bSYour Name /**
222*5113495bSYour Name  * enum HOST_TWT_ENABLE_STATUS - status code of enabling TWT
223*5113495bSYour Name  * @HOST_TWT_ENABLE_STATUS_OK: enabling TWT successfully completed
224*5113495bSYour Name  * @HOST_TWT_ENABLE_STATUS_ALREADY_ENABLED: TWT already enabled
225*5113495bSYour Name  * @HOST_TWT_ENABLE_STATUS_NOT_READY: FW not ready for enabling TWT
226*5113495bSYour Name  * @HOST_TWT_ENABLE_INVALID_PARAM: invalid parameters
227*5113495bSYour Name  * @HOST_TWT_ENABLE_STATUS_UNKNOWN_ERROR: enabling TWT failed with an
228*5113495bSYour Name  *                                      unknown reason
229*5113495bSYour Name  */
230*5113495bSYour Name enum HOST_TWT_ENABLE_STATUS {
231*5113495bSYour Name 	HOST_TWT_ENABLE_STATUS_OK,
232*5113495bSYour Name 	HOST_TWT_ENABLE_STATUS_ALREADY_ENABLED,
233*5113495bSYour Name 	HOST_TWT_ENABLE_STATUS_NOT_READY,
234*5113495bSYour Name 	HOST_TWT_ENABLE_INVALID_PARAM,
235*5113495bSYour Name 	HOST_TWT_ENABLE_STATUS_UNKNOWN_ERROR,
236*5113495bSYour Name };
237*5113495bSYour Name 
238*5113495bSYour Name /**
239*5113495bSYour Name  * enum HOST_ADD_TWT_STATUS - status code of adding TWT dialog
240*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_OK: adding TWT dialog successfully completed
241*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_TWT_NOT_ENABLED: TWT not enabled
242*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_USED_DIALOG_ID: TWT dialog ID is already used
243*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_INVALID_PARAM: invalid parameters
244*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_NOT_READY: FW not ready
245*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_NO_RESOURCE: FW resource exhausted
246*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_NO_ACK: peer AP/STA did not ACK the
247*5113495bSYour Name  * request/response frame
248*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_NO_RESPONSE: peer AP did not send the response frame
249*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_DENIED: AP did not accept the request
250*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_UNKNOWN_ERROR: adding TWT dialog failed with
251*5113495bSYour Name  * an unknown reason
252*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_AP_PARAMS_NOT_IN_RANGE: peer AP wake interval,
253*5113495bSYour Name  * duration not in range
254*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_AP_IE_VALIDATION_FAILED: peer AP IE Validation
255*5113495bSYour Name  * Failed
256*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_ROAM_IN_PROGRESS: Roaming in progress
257*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress
258*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_SCAN_IN_PROGRESS: Scan is in progress
259*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_LINK_SWITCH_IN_PROGRESS: Link switch is in progress
260*5113495bSYour Name  * @HOST_ADD_TWT_STATUS_UNSUPPORTED_MODE_MLMR: MLMR mode is not supported
261*5113495bSYour Name  */
262*5113495bSYour Name enum HOST_ADD_TWT_STATUS {
263*5113495bSYour Name 	HOST_ADD_TWT_STATUS_OK,
264*5113495bSYour Name 	HOST_ADD_TWT_STATUS_TWT_NOT_ENABLED,
265*5113495bSYour Name 	HOST_ADD_TWT_STATUS_USED_DIALOG_ID,
266*5113495bSYour Name 	HOST_ADD_TWT_STATUS_INVALID_PARAM,
267*5113495bSYour Name 	HOST_ADD_TWT_STATUS_NOT_READY,
268*5113495bSYour Name 	HOST_ADD_TWT_STATUS_NO_RESOURCE,
269*5113495bSYour Name 	HOST_ADD_TWT_STATUS_NO_ACK,
270*5113495bSYour Name 	HOST_ADD_TWT_STATUS_NO_RESPONSE,
271*5113495bSYour Name 	HOST_ADD_TWT_STATUS_DENIED,
272*5113495bSYour Name 	HOST_ADD_TWT_STATUS_UNKNOWN_ERROR,
273*5113495bSYour Name 	HOST_ADD_TWT_STATUS_AP_PARAMS_NOT_IN_RANGE,
274*5113495bSYour Name 	HOST_ADD_TWT_STATUS_AP_IE_VALIDATION_FAILED,
275*5113495bSYour Name 	HOST_ADD_TWT_STATUS_ROAM_IN_PROGRESS,
276*5113495bSYour Name 	HOST_ADD_TWT_STATUS_CHAN_SW_IN_PROGRESS,
277*5113495bSYour Name 	HOST_ADD_TWT_STATUS_SCAN_IN_PROGRESS,
278*5113495bSYour Name 	HOST_ADD_TWT_STATUS_LINK_SWITCH_IN_PROGRESS,
279*5113495bSYour Name 	HOST_ADD_TWT_STATUS_UNSUPPORTED_MODE_MLMR,
280*5113495bSYour Name };
281*5113495bSYour Name 
282*5113495bSYour Name /**
283*5113495bSYour Name  * struct twt_enable_complete_event_param:
284*5113495bSYour Name  * @pdev_id: pdev_id for identifying the MAC.
285*5113495bSYour Name  * @status: From enum TWT_ENABLE_STATUS
286*5113495bSYour Name  */
287*5113495bSYour Name struct twt_enable_complete_event_param {
288*5113495bSYour Name 	uint32_t pdev_id;
289*5113495bSYour Name 	uint32_t status;
290*5113495bSYour Name };
291*5113495bSYour Name 
292*5113495bSYour Name /**
293*5113495bSYour Name  * enum HOST_TWT_DISABLE_STATUS  - status code of disable TWT
294*5113495bSYour Name  * @HOST_TWT_DISABLE_STATUS_OK: TWT disable is successfully completed
295*5113495bSYour Name  * @HOST_TWT_DISABLE_STATUS_ROAM_IN_PROGRESS: roaming in progress
296*5113495bSYour Name  * @HOST_TWT_DISABLE_STATUS_CHAN_SW_IN_PROGRESS: channel switch in progress
297*5113495bSYour Name  * @HOST_TWT_DISABLE_STATUS_SCAN_IN_PROGRESS: scan in progress
298*5113495bSYour Name  * @HOST_TWT_DISABLE_STATUS_UNKNOWN_ERROR: unknown error
299*5113495bSYour Name  */
300*5113495bSYour Name enum HOST_TWT_DISABLE_STATUS {
301*5113495bSYour Name 	HOST_TWT_DISABLE_STATUS_OK,
302*5113495bSYour Name 	HOST_TWT_DISABLE_STATUS_ROAM_IN_PROGRESS,
303*5113495bSYour Name 	HOST_TWT_DISABLE_STATUS_CHAN_SW_IN_PROGRESS,
304*5113495bSYour Name 	HOST_TWT_DISABLE_STATUS_SCAN_IN_PROGRESS,
305*5113495bSYour Name 	HOST_TWT_DISABLE_STATUS_UNKNOWN_ERROR,
306*5113495bSYour Name };
307*5113495bSYour Name 
308*5113495bSYour Name /**
309*5113495bSYour Name  * struct twt_disable_complete_event_param:
310*5113495bSYour Name  * @pdev_id: pdev_id for identifying the MAC.
311*5113495bSYour Name  * @status: From enum HOST_TWT_DISABLE_STATUS
312*5113495bSYour Name  */
313*5113495bSYour Name struct twt_disable_complete_event_param {
314*5113495bSYour Name 	uint32_t pdev_id;
315*5113495bSYour Name 	uint32_t status;
316*5113495bSYour Name };
317*5113495bSYour Name 
318*5113495bSYour Name /**
319*5113495bSYour Name  * struct twt_ack_context: twt ack private context
320*5113495bSYour Name  * @vdev_id: vdev id
321*5113495bSYour Name  * @peer_macaddr: peer mac address
322*5113495bSYour Name  * @dialog_id: dialog id
323*5113495bSYour Name  * @twt_cmd_ack: twt ack command
324*5113495bSYour Name  * @status: twt command status
325*5113495bSYour Name  */
326*5113495bSYour Name struct twt_ack_context {
327*5113495bSYour Name 	uint32_t vdev_id;
328*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
329*5113495bSYour Name 	uint32_t dialog_id;
330*5113495bSYour Name 	uint32_t twt_cmd_ack;
331*5113495bSYour Name 	uint32_t status;
332*5113495bSYour Name };
333*5113495bSYour Name 
334*5113495bSYour Name /**
335*5113495bSYour Name  * struct twt_en_dis_context:  twt enable/disable private context
336*5113495bSYour Name  * @twt_role: twt role. When the upper layer is invoking requestor/responder
337*5113495bSYour Name  * enable/disable command via the TWT component API, Firmware WMI event
338*5113495bSYour Name  * doesn't have the info in the event params to distinguish if this enable or
339*5113495bSYour Name  * disable is for requestor or responder, hence TWT component stores this role
340*5113495bSYour Name  * before the request is sent to the firmware.
341*5113495bSYour Name  * @context: cookie. This is the cookie information passed back to the upper
342*5113495bSYour Name  * layer to help identify the request structure
343*5113495bSYour Name  */
344*5113495bSYour Name struct twt_en_dis_context {
345*5113495bSYour Name 	enum TWT_ROLE twt_role;
346*5113495bSYour Name 	void *context;
347*5113495bSYour Name };
348*5113495bSYour Name 
349*5113495bSYour Name /**
350*5113495bSYour Name  * struct twt_ack_complete_event_param:
351*5113495bSYour Name  * @vdev_id: vdev id
352*5113495bSYour Name  * @peer_macaddr: peer mac address
353*5113495bSYour Name  * @dialog_id: dialog id
354*5113495bSYour Name  * @twt_cmd_ack: ack event to the corresponding twt command
355*5113495bSYour Name  * @status: twt command status
356*5113495bSYour Name  */
357*5113495bSYour Name struct twt_ack_complete_event_param {
358*5113495bSYour Name 	uint32_t vdev_id;
359*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
360*5113495bSYour Name 	uint32_t dialog_id;
361*5113495bSYour Name 	uint32_t twt_cmd_ack;
362*5113495bSYour Name 	uint32_t status;
363*5113495bSYour Name };
364*5113495bSYour Name 
365*5113495bSYour Name /**
366*5113495bSYour Name  * struct twt_session_stats_info:
367*5113495bSYour Name  * @vdev_id: id of VDEV for twt session
368*5113495bSYour Name  * @peer_mac: MAC address of node
369*5113495bSYour Name  * @event_type: Indicates TWT session type (SETUP/TEARDOWN/UPDATE)
370*5113495bSYour Name  * @flow_id: TWT flow identifier established with TWT peer
371*5113495bSYour Name  * @bcast:  If this is a broadcast TWT session
372*5113495bSYour Name  * @trig: If the TWT session is trigger enabled
373*5113495bSYour Name  * @announ: If the flow type is announced/unannounced
374*5113495bSYour Name  * @protection: If the TWT protection field is set
375*5113495bSYour Name  * @info_frame_disabled: If the TWT Information frame is disabled
376*5113495bSYour Name  * @pm_responder_bit_valid: is pm_responder_bit valid
377*5113495bSYour Name  * @pm_responder_bit: set pm_responder_bit
378*5113495bSYour Name  * @dialog_id: Dialog_id of current session
379*5113495bSYour Name  * @wake_dura_us: wake duration in us
380*5113495bSYour Name  * @wake_intvl_us: wake time interval in us
381*5113495bSYour Name  * @sp_offset_us: Time until initial TWT SP occurs
382*5113495bSYour Name  * @sp_tsf_us_lo: TWT wake time TSF in usecs lower bits - 31:0
383*5113495bSYour Name  * @sp_tsf_us_hi: TWT wake time TSF in usecs higher bits - 63:32
384*5113495bSYour Name  */
385*5113495bSYour Name struct twt_session_stats_info {
386*5113495bSYour Name 	uint32_t vdev_id;
387*5113495bSYour Name 	struct qdf_mac_addr peer_mac;
388*5113495bSYour Name 	uint32_t event_type;
389*5113495bSYour Name 	uint32_t flow_id:16,
390*5113495bSYour Name 		 bcast:1,
391*5113495bSYour Name 		 trig:1,
392*5113495bSYour Name 		 announ:1,
393*5113495bSYour Name 		 protection:1,
394*5113495bSYour Name 		 info_frame_disabled:1,
395*5113495bSYour Name 		 pm_responder_bit_valid:1,
396*5113495bSYour Name 		 pm_responder_bit:1;
397*5113495bSYour Name 	uint32_t dialog_id;
398*5113495bSYour Name 	uint32_t wake_dura_us;
399*5113495bSYour Name 	uint32_t wake_intvl_us;
400*5113495bSYour Name 	uint32_t sp_offset_us;
401*5113495bSYour Name 	uint32_t sp_tsf_us_lo;
402*5113495bSYour Name 	uint32_t sp_tsf_us_hi;
403*5113495bSYour Name };
404*5113495bSYour Name 
405*5113495bSYour Name /**
406*5113495bSYour Name  * struct twt_session_stats_event_param:
407*5113495bSYour Name  * @pdev_id: pdev_id for identifying the MAC.
408*5113495bSYour Name  * @num_sessions: number of TWT sessions
409*5113495bSYour Name  * @twt_sessions: received TWT sessions
410*5113495bSYour Name  */
411*5113495bSYour Name struct twt_session_stats_event_param {
412*5113495bSYour Name 	uint32_t pdev_id;
413*5113495bSYour Name 	uint32_t num_sessions;
414*5113495bSYour Name };
415*5113495bSYour Name 
416*5113495bSYour Name /* from IEEE 802.11ah section 9.4.2.200 */
417*5113495bSYour Name enum HOST_TWT_COMMAND {
418*5113495bSYour Name 	HOST_TWT_COMMAND_REQUEST_TWT    = 0,
419*5113495bSYour Name 	HOST_TWT_COMMAND_SUGGEST_TWT    = 1,
420*5113495bSYour Name 	HOST_TWT_COMMAND_DEMAND_TWT     = 2,
421*5113495bSYour Name 	HOST_TWT_COMMAND_TWT_GROUPING   = 3,
422*5113495bSYour Name 	HOST_TWT_COMMAND_ACCEPT_TWT     = 4,
423*5113495bSYour Name 	HOST_TWT_COMMAND_ALTERNATE_TWT  = 5,
424*5113495bSYour Name 	HOST_TWT_COMMAND_DICTATE_TWT    = 6,
425*5113495bSYour Name 	HOST_TWT_COMMAND_REJECT_TWT     = 7,
426*5113495bSYour Name };
427*5113495bSYour Name 
428*5113495bSYour Name /**
429*5113495bSYour Name  * struct twt_add_dialog_param -
430*5113495bSYour Name  * @vdev_id: VDEV identifier
431*5113495bSYour Name  * @peer_macaddr: peer MAC address when vdev is AP VDEV
432*5113495bSYour Name  * @dialog_id: diaglog_id (TWT dialog ID)
433*5113495bSYour Name  *             This dialog ID must be unique within its vdev.
434*5113495bSYour Name  * @wake_intvl_us: TWT Wake Interval in units of us
435*5113495bSYour Name  * @wake_intvl_mantis: TWT Wake Interval Mantissa
436*5113495bSYour Name  *                 - wake_intvl_mantis must be <= 0xFFFF
437*5113495bSYour Name  *                 - wake_intvl_us must be divided evenly by wake_intvl_mantis,
438*5113495bSYour Name  *                   i.e., wake_intvl_us % wake_intvl_mantis == 0
439*5113495bSYour Name  *                 - the quotient of wake_intvl_us/wake_intvl_mantis must be
440*5113495bSYour Name  *                   2 to N-th(0<=N<=31) power,
441*5113495bSYour Name  *                   i.e., wake_intvl_us/wake_intvl_mantis == 2^N, 0<=N<=31
442*5113495bSYour Name  * @min_wake_intvl_us: Min tolerance limit of TWT wake interval
443*5113495bSYour Name  * @max_wake_intvl_us: Max tolerance limit of TWT wake interval
444*5113495bSYour Name  * @wake_dura_us: TWT Wake Duration in units of us, must be <= 0xFFFF
445*5113495bSYour Name  *                wake_dura_us must be divided evenly by 256,
446*5113495bSYour Name  *                i.e., wake_dura_us % 256 == 0
447*5113495bSYour Name  * @min_wake_dura_us: Min tolerance limit of TWT wake duration.
448*5113495bSYour Name  * @max_wake_dura_us: Max tolerance limit of TWT wake duration.
449*5113495bSYour Name  * @sp_offset_us: this long time after TWT setup the 1st SP will start.
450*5113495bSYour Name  * @twt_cmd: cmd from enum HOST_TWT_COMMAND
451*5113495bSYour Name  * @flag_bcast: 0 means Individual TWT,
452*5113495bSYour Name  *              1 means Broadcast TWT
453*5113495bSYour Name  * @flag_trigger: 0 means non-Trigger-enabled TWT,
454*5113495bSYour Name  *                1 means  means Trigger-enabled TWT
455*5113495bSYour Name  * @flag_flow_type:  0 means announced TWT,
456*5113495bSYour Name  *                   1 means un-announced TWT
457*5113495bSYour Name  * @flag_protection: 0 means TWT protection is required,
458*5113495bSYour Name  *                   1 means TWT protection is not required
459*5113495bSYour Name  * @b_twt_id0: 0 means BTWT recommendation will not be used
460*5113495bSYour Name  *             1 means BTWT recommendation will be used
461*5113495bSYour Name  * @flag_reserved: unused bits
462*5113495bSYour Name  * @b_twt_recommendation: defines types of frames tx during bTWT SP
463*5113495bSYour Name  * @b_twt_persistence: Countdown VAL frames to param update/teardown
464*5113495bSYour Name  * @wake_time_tsf: Absolute TSF value to start first TWT service period
465*5113495bSYour Name  * @announce_timeout_us: Timeout value before sending QoS NULL frame.
466*5113495bSYour Name  * @link_id_bitmap: MLD links to which R-TWT element applies
467*5113495bSYour Name  * @r_twt_dl_tid_bitmap: DL TIDs for R-TWT scheduling
468*5113495bSYour Name  * @r_twt_ul_tid_bitmap: UL TIDs for R-TWT scheduling
469*5113495bSYour Name  */
470*5113495bSYour Name struct twt_add_dialog_param {
471*5113495bSYour Name 	uint32_t vdev_id;
472*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
473*5113495bSYour Name 	uint32_t dialog_id;
474*5113495bSYour Name 	uint32_t wake_intvl_us;
475*5113495bSYour Name 	uint32_t wake_intvl_mantis;
476*5113495bSYour Name 	uint32_t min_wake_intvl_us;
477*5113495bSYour Name 	uint32_t max_wake_intvl_us;
478*5113495bSYour Name 	uint32_t wake_dura_us;
479*5113495bSYour Name 	uint32_t min_wake_dura_us;
480*5113495bSYour Name 	uint32_t max_wake_dura_us;
481*5113495bSYour Name 	uint32_t sp_offset_us;
482*5113495bSYour Name 	enum HOST_TWT_COMMAND twt_cmd;
483*5113495bSYour Name 	uint32_t
484*5113495bSYour Name 		flag_bcast:1,
485*5113495bSYour Name 		flag_trigger:1,
486*5113495bSYour Name 		flag_flow_type:1,
487*5113495bSYour Name 		flag_protection:1,
488*5113495bSYour Name 		flag_b_twt_id0:1,
489*5113495bSYour Name 		flag_reserved:11,
490*5113495bSYour Name 		b_twt_persistence:8,
491*5113495bSYour Name 		b_twt_recommendation:3;
492*5113495bSYour Name 	uint64_t wake_time_tsf;
493*5113495bSYour Name 	uint32_t announce_timeout_us;
494*5113495bSYour Name 	uint32_t link_id_bitmap;
495*5113495bSYour Name 	uint32_t r_twt_dl_tid_bitmap;
496*5113495bSYour Name 	uint32_t r_twt_ul_tid_bitmap;
497*5113495bSYour Name };
498*5113495bSYour Name 
499*5113495bSYour Name /**
500*5113495bSYour Name  * enum HOST_TWT_GET_STATS_STATUS - status code of TWT Get stats dialog id
501*5113495bSYour Name  * @HOST_TWT_GET_STATS_STATUS_OK: Get status TWT dialog successfully completed
502*5113495bSYour Name  * @HOST_TWT_GET_STATS_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID does not exist
503*5113495bSYour Name  * @HOST_TWT_GET_STATS_STATUS_INVALID_PARAM: Invalid parameters
504*5113495bSYour Name  * @HOST_TWT_GET_STATS_STATUS_UNKNOWN_ERROR: Unknown error
505*5113495bSYour Name  */
506*5113495bSYour Name enum HOST_TWT_GET_STATS_STATUS {
507*5113495bSYour Name 	HOST_TWT_GET_STATS_STATUS_OK,
508*5113495bSYour Name 	HOST_TWT_GET_STATS_STATUS_DIALOG_ID_NOT_EXIST,
509*5113495bSYour Name 	HOST_TWT_GET_STATS_STATUS_INVALID_PARAM,
510*5113495bSYour Name 	HOST_TWT_GET_STATS_STATUS_UNKNOWN_ERROR,
511*5113495bSYour Name };
512*5113495bSYour Name 
513*5113495bSYour Name /**
514*5113495bSYour Name  * enum HOST_TWT_ADD_STATUS - status code of TWT add dialog
515*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_OK: add TWT dialog successfully completed
516*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_TWT_NOT_ENABLED: TWT not enabled
517*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_USED_DIALOG_ID: TWT dialog ID is already used
518*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_INVALID_PARAM: invalid parameters
519*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_NOT_READY: FW not ready
520*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_NO_RESOURCE: FW resource exhausted
521*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_NO_ACK: peer AP/STA did not ACK the
522*5113495bSYour Name  * request/response frame
523*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_NO_RESPONSE: peer AP did not send the response frame
524*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_DENIED: AP did not accept the request
525*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_UNKNOWN_ERROR: adding TWT dialog failed with
526*5113495bSYour Name  * an unknown reason
527*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_AP_PARAMS_NOT_IN_RANGE: peer AP wake interval,
528*5113495bSYour Name  * duration not in range
529*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_AP_IE_VALIDATION_FAILED: peer AP IE Validation
530*5113495bSYour Name  * Failed
531*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_ROAM_IN_PROGRESS: Roaming in progress
532*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress
533*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_SCAN_IN_PROGRESS: Scan is in progress
534*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_LINK_SWITCH_IN_PROGRESS: link switch is in progress
535*5113495bSYour Name  * @HOST_TWT_ADD_STATUS_UNSUPPORTED_MODE_MLMR: MLMR not supported
536*5113495bSYour Name  */
537*5113495bSYour Name enum HOST_TWT_ADD_STATUS {
538*5113495bSYour Name 	HOST_TWT_ADD_STATUS_OK,
539*5113495bSYour Name 	HOST_TWT_ADD_STATUS_TWT_NOT_ENABLED,
540*5113495bSYour Name 	HOST_TWT_ADD_STATUS_USED_DIALOG_ID,
541*5113495bSYour Name 	HOST_TWT_ADD_STATUS_INVALID_PARAM,
542*5113495bSYour Name 	HOST_TWT_ADD_STATUS_NOT_READY,
543*5113495bSYour Name 	HOST_TWT_ADD_STATUS_NO_RESOURCE,
544*5113495bSYour Name 	HOST_TWT_ADD_STATUS_NO_ACK,
545*5113495bSYour Name 	HOST_TWT_ADD_STATUS_NO_RESPONSE,
546*5113495bSYour Name 	HOST_TWT_ADD_STATUS_DENIED,
547*5113495bSYour Name 	HOST_TWT_ADD_STATUS_UNKNOWN_ERROR,
548*5113495bSYour Name 	HOST_TWT_ADD_STATUS_AP_PARAMS_NOT_IN_RANGE,
549*5113495bSYour Name 	HOST_TWT_ADD_STATUS_AP_IE_VALIDATION_FAILED,
550*5113495bSYour Name 	HOST_TWT_ADD_STATUS_ROAM_IN_PROGRESS,
551*5113495bSYour Name 	HOST_TWT_ADD_STATUS_CHAN_SW_IN_PROGRESS,
552*5113495bSYour Name 	HOST_TWT_ADD_STATUS_SCAN_IN_PROGRESS,
553*5113495bSYour Name 	HOST_TWT_ADD_STATUS_LINK_SWITCH_IN_PROGRESS,
554*5113495bSYour Name 	HOST_TWT_ADD_STATUS_UNSUPPORTED_MODE_MLMR,
555*5113495bSYour Name };
556*5113495bSYour Name 
557*5113495bSYour Name /**
558*5113495bSYour Name  * struct twt_add_dialog_additional_params -
559*5113495bSYour Name  * @twt_cmd: TWT command
560*5113495bSYour Name  * @bcast: 0 means Individual TWT
561*5113495bSYour Name  *         1 means Broadcast TWT
562*5113495bSYour Name  * @trig_en: 0 means non-Trigger-enabled TWT
563*5113495bSYour Name  *           1 means Trigger-enabled TWT
564*5113495bSYour Name  * @announce: 0 means announced TWT
565*5113495bSYour Name  *            1 means un-announced TWT
566*5113495bSYour Name  * @protection: 0 means TWT protection is required
567*5113495bSYour Name  *              1 means TWT protection is not required
568*5113495bSYour Name  * @b_twt_id0: 0 means non-0 B-TWT ID or I-TWT
569*5113495bSYour Name  *             1 means B-TWT ID 0
570*5113495bSYour Name  * @info_frame_disabled: 0 means TWT Information frame is enabled
571*5113495bSYour Name  *                       1 means TWT Information frame is disabled
572*5113495bSYour Name  * @pm_responder_bit_valid: 1 means responder pm mode field is valid
573*5113495bSYour Name  *                          0 means responder pm mode field is not valid
574*5113495bSYour Name  * @pm_responder_bit: 1 means that responder set responder pm mode to 1
575*5113495bSYour Name  *                    0 means that responder set responder pm mode to 0
576*5113495bSYour Name  * @wake_dur_us: wake duration in us
577*5113495bSYour Name  * @wake_intvl_us: wake time interval in us
578*5113495bSYour Name  * @sp_offset_us: Time until initial TWT SP occurs
579*5113495bSYour Name  * @sp_tsf_us_lo: TWT service period tsf in usecs lower bits - 31:0
580*5113495bSYour Name  * @sp_tsf_us_hi: TWT service period tsf in usecs higher bits - 63:32
581*5113495bSYour Name  */
582*5113495bSYour Name struct twt_add_dialog_additional_params {
583*5113495bSYour Name 	uint32_t twt_cmd:8,
584*5113495bSYour Name 		 bcast:1,
585*5113495bSYour Name 		 trig_en:1,
586*5113495bSYour Name 		 announce:1,
587*5113495bSYour Name 		 protection:1,
588*5113495bSYour Name 		 b_twt_id0:1,
589*5113495bSYour Name 		 info_frame_disabled:1,
590*5113495bSYour Name 		 pm_responder_bit_valid:1,
591*5113495bSYour Name 		 pm_responder_bit:1;
592*5113495bSYour Name 	uint32_t wake_dur_us;
593*5113495bSYour Name 	uint32_t wake_intvl_us;
594*5113495bSYour Name 	uint32_t sp_offset_us;
595*5113495bSYour Name 	uint32_t sp_tsf_us_lo;
596*5113495bSYour Name 	uint32_t sp_tsf_us_hi;
597*5113495bSYour Name };
598*5113495bSYour Name 
599*5113495bSYour Name /**
600*5113495bSYour Name  * struct twt_add_dialog_complete_event_param:
601*5113495bSYour Name  * @vdev_id: VDEV identifier
602*5113495bSYour Name  * @peer_macaddr: Peer mac address
603*5113495bSYour Name  * @dialog_id: TWT dialog ID
604*5113495bSYour Name  * @status: refer to HOST_TWT_ADD_STATUS enum
605*5113495bSYour Name  * @num_additional_twt_params: no of additional_twt_params available
606*5113495bSYour Name  */
607*5113495bSYour Name struct twt_add_dialog_complete_event_param {
608*5113495bSYour Name 	uint32_t vdev_id;
609*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
610*5113495bSYour Name 	uint32_t dialog_id;
611*5113495bSYour Name 	uint32_t status;
612*5113495bSYour Name 	uint32_t num_additional_twt_params;
613*5113495bSYour Name };
614*5113495bSYour Name 
615*5113495bSYour Name /**
616*5113495bSYour Name  * struct twt_add_dialog_complete_event - TWT add dialog complete event
617*5113495bSYour Name  * @params: Fixed parameters for TWT add dialog complete event
618*5113495bSYour Name  * @additional_params: additional parameters for TWT add dialog complete event
619*5113495bSYour Name  *
620*5113495bSYour Name  * Holds the fixed and additional parameters from add dialog
621*5113495bSYour Name  * complete event
622*5113495bSYour Name  */
623*5113495bSYour Name struct twt_add_dialog_complete_event {
624*5113495bSYour Name 	struct twt_add_dialog_complete_event_param params;
625*5113495bSYour Name 	struct twt_add_dialog_additional_params additional_params;
626*5113495bSYour Name };
627*5113495bSYour Name 
628*5113495bSYour Name /**
629*5113495bSYour Name  * struct twt_del_dialog_param -
630*5113495bSYour Name  * @vdev_id: VDEV identifier
631*5113495bSYour Name  * @peer_macaddr: Peer mac address
632*5113495bSYour Name  * @dialog_id: TWT dialog ID
633*5113495bSYour Name  * @b_twt_persistence: persistence val for b-twt
634*5113495bSYour Name  */
635*5113495bSYour Name struct twt_del_dialog_param {
636*5113495bSYour Name 	uint32_t vdev_id;
637*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
638*5113495bSYour Name 	uint32_t dialog_id;
639*5113495bSYour Name #ifdef WLAN_SUPPORT_BCAST_TWT
640*5113495bSYour Name 	uint32_t b_twt_persistence;
641*5113495bSYour Name #endif
642*5113495bSYour Name };
643*5113495bSYour Name 
644*5113495bSYour Name /**
645*5113495bSYour Name  * enum HOST_TWT_DEL_STATUS - status code of delete TWT dialog
646*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_OK: deleting TWT dialog successfully completed
647*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists
648*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_INVALID_PARAM: invalid parameters
649*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_DIALOG_ID_BUSY: FW is in the process of handling
650*5113495bSYour Name  * this dialog
651*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_NO_RESOURCE: FW resource exhausted
652*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_NO_ACK: peer AP/STA did not ACK the request/response
653*5113495bSYour Name  * frame
654*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_UNKNOWN_ERROR: deleting TWT dialog failed with an
655*5113495bSYour Name  * unknown reason
656*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_PEER_INIT_TEARDOWN: Peer initiated TWT teardown
657*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_ROAMING: TWT teardown due to roaming.
658*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_CONCURRENCY: TWT session teardown due to
659*5113495bSYour Name  * concurrent session coming up.
660*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress
661*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_SCAN_IN_PROGRESS: Scan is in progress
662*5113495bSYour Name  * @HOST_TWT_DEL_STATUS_PS_DISABLE_TEARDOWN: PS disable TWT teardown
663*5113495bSYour Name  */
664*5113495bSYour Name enum HOST_TWT_DEL_STATUS {
665*5113495bSYour Name 	HOST_TWT_DEL_STATUS_OK,
666*5113495bSYour Name 	HOST_TWT_DEL_STATUS_DIALOG_ID_NOT_EXIST,
667*5113495bSYour Name 	HOST_TWT_DEL_STATUS_INVALID_PARAM,
668*5113495bSYour Name 	HOST_TWT_DEL_STATUS_DIALOG_ID_BUSY,
669*5113495bSYour Name 	HOST_TWT_DEL_STATUS_NO_RESOURCE,
670*5113495bSYour Name 	HOST_TWT_DEL_STATUS_NO_ACK,
671*5113495bSYour Name 	HOST_TWT_DEL_STATUS_UNKNOWN_ERROR,
672*5113495bSYour Name 	HOST_TWT_DEL_STATUS_PEER_INIT_TEARDOWN,
673*5113495bSYour Name 	HOST_TWT_DEL_STATUS_ROAMING,
674*5113495bSYour Name 	HOST_TWT_DEL_STATUS_CONCURRENCY,
675*5113495bSYour Name 	HOST_TWT_DEL_STATUS_CHAN_SW_IN_PROGRESS,
676*5113495bSYour Name 	HOST_TWT_DEL_STATUS_SCAN_IN_PROGRESS,
677*5113495bSYour Name 	HOST_TWT_DEL_STATUS_PS_DISABLE_TEARDOWN,
678*5113495bSYour Name };
679*5113495bSYour Name 
680*5113495bSYour Name /**
681*5113495bSYour Name  * struct twt_del_dialog_complete_event_param -
682*5113495bSYour Name  * @vdev_id: VDEV identifier
683*5113495bSYour Name  * @peer_macaddr: Peer mac address
684*5113495bSYour Name  * @dialog_id: TWT dialog ID
685*5113495bSYour Name  * @b_twt_persistence: persistence val for b-twt
686*5113495bSYour Name  * @status: refer to HOST_TWT_DEL_STATUS enum
687*5113495bSYour Name  */
688*5113495bSYour Name struct twt_del_dialog_complete_event_param {
689*5113495bSYour Name 	uint32_t vdev_id;
690*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
691*5113495bSYour Name 	uint32_t dialog_id;
692*5113495bSYour Name #ifdef WLAN_SUPPORT_BCAST_TWT
693*5113495bSYour Name 	uint32_t b_twt_persistence;
694*5113495bSYour Name #endif
695*5113495bSYour Name 	uint32_t status;
696*5113495bSYour Name };
697*5113495bSYour Name 
698*5113495bSYour Name /**
699*5113495bSYour Name  * struct twt_pause_dialog_cmd_param -
700*5113495bSYour Name  * @vdev_id: VDEV identifier
701*5113495bSYour Name  * @peer_macaddr: Peer mac address
702*5113495bSYour Name  * @dialog_id: TWT dialog ID
703*5113495bSYour Name  */
704*5113495bSYour Name struct twt_pause_dialog_cmd_param {
705*5113495bSYour Name 	uint32_t vdev_id;
706*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
707*5113495bSYour Name 	uint32_t dialog_id;
708*5113495bSYour Name };
709*5113495bSYour Name 
710*5113495bSYour Name /**
711*5113495bSYour Name  * struct twt_nudge_dialog_cmd_param -
712*5113495bSYour Name  * @vdev_id: VDEV identifier
713*5113495bSYour Name  * @peer_macaddr: Peer mac address
714*5113495bSYour Name  * @dialog_id: TWT dialog ID
715*5113495bSYour Name  * @suspend_duration: TWT suspend duration in microseconds
716*5113495bSYour Name  * @next_twt_size: next TWT size
717*5113495bSYour Name  * @sp_start_offset: value to offset the start of service period
718*5113495bSYour Name  */
719*5113495bSYour Name struct twt_nudge_dialog_cmd_param {
720*5113495bSYour Name 	uint32_t vdev_id;
721*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
722*5113495bSYour Name 	uint32_t dialog_id;
723*5113495bSYour Name 	uint32_t suspend_duration;
724*5113495bSYour Name 	uint32_t next_twt_size;
725*5113495bSYour Name 	int32_t sp_start_offset;
726*5113495bSYour Name };
727*5113495bSYour Name 
728*5113495bSYour Name /**
729*5113495bSYour Name  * enum HOST_TWT_PAUSE_STATUS - status code of pause TWT dialog
730*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_OK: pausing TWT dialog successfully completed
731*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists
732*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_INVALID_PARAM: invalid parameters
733*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_DIALOG_ID_BUSY: FW is in the process of handling
734*5113495bSYour Name  * this dialog
735*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_NO_RESOURCE: FW resource exhausted
736*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_NO_ACK: peer AP/STA did not ACK the
737*5113495bSYour Name  * request/response frame
738*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_UNKNOWN_ERROR: pausing TWT dialog failed with an
739*5113495bSYour Name  * unknown reason
740*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_ALREADY_PAUSED: TWT dialog already in paused state
741*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress
742*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_ROAM_IN_PROGRESS: Roaming is in progress
743*5113495bSYour Name  * @HOST_TWT_PAUSE_STATUS_SCAN_IN_PROGRESS: Scan is in progress
744*5113495bSYour Name  */
745*5113495bSYour Name enum HOST_TWT_PAUSE_STATUS {
746*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_OK,
747*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_DIALOG_ID_NOT_EXIST,
748*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_INVALID_PARAM,
749*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_DIALOG_ID_BUSY,
750*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_NO_RESOURCE,
751*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_NO_ACK,
752*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_UNKNOWN_ERROR,
753*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_ALREADY_PAUSED,
754*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_CHAN_SW_IN_PROGRESS,
755*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_ROAM_IN_PROGRESS,
756*5113495bSYour Name 	HOST_TWT_PAUSE_STATUS_SCAN_IN_PROGRESS,
757*5113495bSYour Name };
758*5113495bSYour Name 
759*5113495bSYour Name /**
760*5113495bSYour Name  * struct twt_pause_dialog_complete_event_param -
761*5113495bSYour Name  * @vdev_id: VDEV identifier
762*5113495bSYour Name  * @peer_macaddr: Peer mac address
763*5113495bSYour Name  * @dialog_id: TWT dialog ID
764*5113495bSYour Name  * @status: refer to HOST_TWT_PAUSE_STATUS
765*5113495bSYour Name  */
766*5113495bSYour Name struct twt_pause_dialog_complete_event_param {
767*5113495bSYour Name 	uint32_t vdev_id;
768*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
769*5113495bSYour Name 	uint32_t dialog_id;
770*5113495bSYour Name 	enum HOST_TWT_PAUSE_STATUS status;
771*5113495bSYour Name };
772*5113495bSYour Name 
773*5113495bSYour Name /**
774*5113495bSYour Name  * enum HOST_TWT_NUDGE_STATUS - status code of nudge TWT dialog
775*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_OK: nudge TWT dialog successfully completed
776*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists
777*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_INVALID_PARAM: invalid parameters
778*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_DIALOG_ID_BUSY: FW is in the process of handling
779*5113495bSYour Name  * this dialog
780*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_NO_RESOURCE: FW resource exhausted
781*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_NO_ACK: peer AP/STA did not ACK the
782*5113495bSYour Name  * request/response frame
783*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_UNKNOWN_ERROR: nudge TWT dialog failed with an
784*5113495bSYour Name  * unknown reason
785*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_ALREADY_PAUSED: TWT dialog already in paused state
786*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress
787*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_ROAM_IN_PROGRESS: Roaming in progress
788*5113495bSYour Name  * @HOST_TWT_NUDGE_STATUS_SCAN_IN_PROGRESS: Scan is in progress
789*5113495bSYour Name  */
790*5113495bSYour Name enum HOST_TWT_NUDGE_STATUS {
791*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_OK,
792*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_DIALOG_ID_NOT_EXIST,
793*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_INVALID_PARAM,
794*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_DIALOG_ID_BUSY,
795*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_NO_RESOURCE,
796*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_NO_ACK,
797*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_UNKNOWN_ERROR,
798*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_ALREADY_PAUSED,
799*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_CHAN_SW_IN_PROGRESS,
800*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_ROAM_IN_PROGRESS,
801*5113495bSYour Name 	HOST_TWT_NUDGE_STATUS_SCAN_IN_PROGRESS,
802*5113495bSYour Name };
803*5113495bSYour Name 
804*5113495bSYour Name /**
805*5113495bSYour Name  * struct twt_nudge_dialog_complete_event_param -
806*5113495bSYour Name  * @vdev_id: VDEV identifier
807*5113495bSYour Name  * @peer_macaddr: Peer mac address
808*5113495bSYour Name  * @dialog_id: TWT dialog ID
809*5113495bSYour Name  * @status: refer to HOST_TWT_PAUSE_STATUS
810*5113495bSYour Name  * @next_twt_tsf_us_lo: TSF lower bits (31:0) of next wake time
811*5113495bSYour Name  * @next_twt_tsf_us_hi: TSF higher bits (32:63) of next wake time
812*5113495bSYour Name  */
813*5113495bSYour Name struct twt_nudge_dialog_complete_event_param {
814*5113495bSYour Name 	uint32_t vdev_id;
815*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
816*5113495bSYour Name 	uint32_t dialog_id;
817*5113495bSYour Name 	enum     HOST_TWT_NUDGE_STATUS status;
818*5113495bSYour Name 	uint32_t next_twt_tsf_us_lo;
819*5113495bSYour Name 	uint32_t next_twt_tsf_us_hi;
820*5113495bSYour Name };
821*5113495bSYour Name 
822*5113495bSYour Name /**
823*5113495bSYour Name  * struct twt_resume_dialog_cmd_param -
824*5113495bSYour Name  * @vdev_id: VDEV identifier
825*5113495bSYour Name  * @peer_macaddr: Peer mac address
826*5113495bSYour Name  * @dialog_id: TWT dialog ID
827*5113495bSYour Name  * @sp_offset_us: this long time after TWT resumed the 1st SP will start
828*5113495bSYour Name  * @next_twt_size: Next TWT subfield Size.
829*5113495bSYour Name  *                 Refer IEEE 802.11ax section "9.4.1.60 TWT Information field"
830*5113495bSYour Name  */
831*5113495bSYour Name struct twt_resume_dialog_cmd_param {
832*5113495bSYour Name 	uint32_t vdev_id;
833*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
834*5113495bSYour Name 	uint32_t dialog_id;
835*5113495bSYour Name 	uint32_t sp_offset_us;
836*5113495bSYour Name 	uint32_t next_twt_size;
837*5113495bSYour Name };
838*5113495bSYour Name 
839*5113495bSYour Name /**
840*5113495bSYour Name  * enum HOST_TWT_RESUME_STATUS - status code of resume TWT dialog
841*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_OK: resuming TWT dialog successfully completed
842*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_DIALOG_ID_NOT_EXIST: TWT dialog ID not exists
843*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_INVALID_PARAM: invalid parameters
844*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_DIALOG_ID_BUSY: FW is in the process of handling
845*5113495bSYour Name  * this dialog
846*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_NOT_PAUSED: dialog not paused currently
847*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_NO_RESOURCE: FW resource exhausted
848*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_NO_ACK: peer AP/STA did not ACK the
849*5113495bSYour Name  * request/response frame
850*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_UNKNOWN_ERROR: resuming TWT dialog failed with an
851*5113495bSYour Name  * unknown reason
852*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_CHAN_SW_IN_PROGRESS: Channel switch in progress
853*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_ROAM_IN_PROGRESS: Roaming in progress
854*5113495bSYour Name  * @HOST_TWT_RESUME_STATUS_SCAN_IN_PROGRESS: Scan is in progress
855*5113495bSYour Name  */
856*5113495bSYour Name enum HOST_TWT_RESUME_STATUS {
857*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_OK,
858*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_DIALOG_ID_NOT_EXIST,
859*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_INVALID_PARAM,
860*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_DIALOG_ID_BUSY,
861*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_NOT_PAUSED,
862*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_NO_RESOURCE,
863*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_NO_ACK,
864*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_UNKNOWN_ERROR,
865*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_CHAN_SW_IN_PROGRESS,
866*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_ROAM_IN_PROGRESS,
867*5113495bSYour Name 	HOST_TWT_RESUME_STATUS_SCAN_IN_PROGRESS,
868*5113495bSYour Name };
869*5113495bSYour Name 
870*5113495bSYour Name /**
871*5113495bSYour Name  * struct twt_resume_dialog_complete_event_param -
872*5113495bSYour Name  * @vdev_id: VDEV identifier
873*5113495bSYour Name  * @peer_macaddr: Peer mac address
874*5113495bSYour Name  * @dialog_id: TWT dialog ID
875*5113495bSYour Name  * @status: refer to HOST_TWT_RESUME_STATUS
876*5113495bSYour Name  */
877*5113495bSYour Name struct twt_resume_dialog_complete_event_param {
878*5113495bSYour Name 	uint32_t vdev_id;
879*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
880*5113495bSYour Name 	uint32_t dialog_id;
881*5113495bSYour Name 	uint32_t status;
882*5113495bSYour Name };
883*5113495bSYour Name 
884*5113495bSYour Name /**
885*5113495bSYour Name  * enum HOST_TWT_NOTIFY_STATUS - status code of notify TWT event
886*5113495bSYour Name  * @HOST_TWT_NOTIFY_EVENT_READY: FW is ready to process the TWT setup request.
887*5113495bSYour Name  * @HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_SET: AP set the TWT required bit
888*5113495bSYour Name  * @HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_CLEAR: AP cleared the TWT required bit
889*5113495bSYour Name  */
890*5113495bSYour Name enum HOST_TWT_NOTIFY_STATUS {
891*5113495bSYour Name 	HOST_TWT_NOTIFY_EVENT_READY,
892*5113495bSYour Name 	HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_SET,
893*5113495bSYour Name 	HOST_TWT_NOTIFY_EVENT_AP_TWT_REQ_BIT_CLEAR,
894*5113495bSYour Name };
895*5113495bSYour Name 
896*5113495bSYour Name /**
897*5113495bSYour Name  * struct twt_notify_event_param -
898*5113495bSYour Name  * @vdev_id: VDEV identifier
899*5113495bSYour Name  * @status: refer to HOST_TWT_NOTIFY_STATUS
900*5113495bSYour Name  */
901*5113495bSYour Name struct twt_notify_event_param {
902*5113495bSYour Name 	uint32_t vdev_id;
903*5113495bSYour Name 	enum HOST_TWT_NOTIFY_STATUS status;
904*5113495bSYour Name };
905*5113495bSYour Name 
906*5113495bSYour Name /**
907*5113495bSYour Name  * enum HOST_TWT_NEXT_WORK_ACTION - next action of TWT worker thread
908*5113495bSYour Name  * @HOST_TWT_SEND_DELETE_CMD: Send TWT delete command request
909*5113495bSYour Name  */
910*5113495bSYour Name enum HOST_TWT_NEXT_WORK_ACTION {
911*5113495bSYour Name 	HOST_TWT_SEND_DELETE_CMD = 1,
912*5113495bSYour Name };
913*5113495bSYour Name 
914*5113495bSYour Name /**
915*5113495bSYour Name  * struct twt_work_params
916*5113495bSYour Name  * @peer_macaddr: peer mac address
917*5113495bSYour Name  * @dialog_id: Dialog ID
918*5113495bSYour Name  * @is_ps_disabled: Whether power save is disabled or not.
919*5113495bSYour Name  */
920*5113495bSYour Name struct twt_work_params {
921*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
922*5113495bSYour Name 	uint32_t dialog_id;
923*5113495bSYour Name 	bool is_ps_disabled;
924*5113495bSYour Name };
925*5113495bSYour Name #ifdef WLAN_SUPPORT_BCAST_TWT
926*5113495bSYour Name /**
927*5113495bSYour Name  * struct twt_btwt_invite_sta_cmd_param -
928*5113495bSYour Name  * @vdev_id: VDEV identifier
929*5113495bSYour Name  * @peer_macaddr: Peer mac address
930*5113495bSYour Name  * @dialog_id: TWT dialog ID
931*5113495bSYour Name  * @r_twt_dl_tid_bitmap: rTWT DL tids bitmap
932*5113495bSYour Name  * @r_twt_ul_tid_bitmap: rTWT UL tids bitmap
933*5113495bSYour Name  */
934*5113495bSYour Name struct twt_btwt_invite_sta_cmd_param {
935*5113495bSYour Name 	uint32_t vdev_id;
936*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
937*5113495bSYour Name 	uint32_t dialog_id;
938*5113495bSYour Name 	uint32_t r_twt_dl_tid_bitmap;
939*5113495bSYour Name 	uint32_t r_twt_ul_tid_bitmap;
940*5113495bSYour Name };
941*5113495bSYour Name 
942*5113495bSYour Name /**
943*5113495bSYour Name  * enum HOST_TWT_INVITATION_BTWT_STATUS - status code of TWT Invitation
944*5113495bSYour Name  *                              dialog
945*5113495bSYour Name  * @HOST_TWT_INVITATION_BTWT_STATUS_OK: BTWT invitation successfully
946*5113495bSYour Name  *                              completed
947*5113495bSYour Name  * @HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_NOT_EXIST: BTWT dialog ID not
948*5113495bSYour Name  *                              exists
949*5113495bSYour Name  * @HOST_TWT_INVITATION_BTWT_STATUS_INVALID_PARAM: invalid parameters
950*5113495bSYour Name  * @HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_BUSY: FW is in the process of
951*5113495bSYour Name  *                              handling this dialog
952*5113495bSYour Name  * @HOST_TWT_INVITATION_BTWT_STATUS_NO_RESOURCE: FW resource exhausted
953*5113495bSYour Name  * @HOST_TWT_INVITATION_BTWT_STATUS_NO_ACK: peer AP/STA did not ACK the
954*5113495bSYour Name  *                              request/response frame
955*5113495bSYour Name  * @HOST_TWT_INVITATION_BTWT_STATUS_UNKNOWN_ERROR: BTWT invitation failed
956*5113495bSYour Name  *                              with an unknown reason
957*5113495bSYour Name  */
958*5113495bSYour Name enum HOST_TWT_INVITATION_BTWT_STATUS {
959*5113495bSYour Name 	HOST_TWT_INVITATION_BTWT_STATUS_OK,
960*5113495bSYour Name 	HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_NOT_EXIST,
961*5113495bSYour Name 	HOST_TWT_INVITATION_BTWT_STATUS_INVALID_PARAM,
962*5113495bSYour Name 	HOST_TWT_INVITATION_BTWT_STATUS_DIALOG_ID_BUSY,
963*5113495bSYour Name 	HOST_TWT_INVITATION_BTWT_STATUS_NO_RESOURCE,
964*5113495bSYour Name 	HOST_TWT_INVITATION_BTWT_STATUS_NO_ACK,
965*5113495bSYour Name 	HOST_TWT_INVITATION_BTWT_STATUS_UNKNOWN_ERROR,
966*5113495bSYour Name };
967*5113495bSYour Name 
968*5113495bSYour Name /**
969*5113495bSYour Name  * struct twt_btwt_invite_sta_complete_event_param -
970*5113495bSYour Name  * @vdev_id: VDEV identifier
971*5113495bSYour Name  * @peer_macaddr: Peer mac address
972*5113495bSYour Name  * @dialog_id: BTWT dialog ID
973*5113495bSYour Name  * @status: refer to HOST_TWT_INVITATION_BTWT_STATUS
974*5113495bSYour Name  */
975*5113495bSYour Name struct twt_btwt_invite_sta_complete_event_param {
976*5113495bSYour Name 	uint32_t vdev_id;
977*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
978*5113495bSYour Name 	uint32_t dialog_id;
979*5113495bSYour Name 	uint32_t status;
980*5113495bSYour Name };
981*5113495bSYour Name 
982*5113495bSYour Name /**
983*5113495bSYour Name  * struct twt_btwt_remove_sta_cmd_param -
984*5113495bSYour Name  * @vdev_id: VDEV identifier
985*5113495bSYour Name  * @peer_macaddr: Peer mac address
986*5113495bSYour Name  * @dialog_id: BTWT dialog ID
987*5113495bSYour Name  * @r_twt_dl_tid_bitmap: rTWT DL tids bitmap
988*5113495bSYour Name  * @r_twt_ul_tid_bitmap: rTWT UL tids bitmap
989*5113495bSYour Name  */
990*5113495bSYour Name struct twt_btwt_remove_sta_cmd_param {
991*5113495bSYour Name 	uint32_t vdev_id;
992*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
993*5113495bSYour Name 	uint32_t dialog_id;
994*5113495bSYour Name 	uint32_t r_twt_dl_tid_bitmap;
995*5113495bSYour Name 	uint32_t r_twt_ul_tid_bitmap;
996*5113495bSYour Name };
997*5113495bSYour Name 
998*5113495bSYour Name /**
999*5113495bSYour Name  * enum HOST_TWT_KICKOFF_BTWT_STATUS - status code of kickoff BTWT dialog
1000*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_OK: TWT kickoff successfully completed
1001*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_NOT_EXIST: BTWT dialog ID not
1002*5113495bSYour Name  *                              exists
1003*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_INVALID_PARAM: invalid parameters
1004*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_BUSY: FW is in the process of
1005*5113495bSYour Name  *                              handling this dialog
1006*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_NOT_PAUSED: Dialog not currently paused
1007*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_NO_RESOURCE: FW resource exhausted
1008*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_NO_ACK: peer AP/STA did not ACK the
1009*5113495bSYour Name  *                              request/response frame
1010*5113495bSYour Name  * @HOST_TWT_KICKOFF_BTWT_STATUS_UNKNOWN_ERROR: BTWT kickoff failed with an
1011*5113495bSYour Name  *                              unknown reason
1012*5113495bSYour Name  */
1013*5113495bSYour Name enum HOST_TWT_KICKOFF_BTWT_STATUS {
1014*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_OK,
1015*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_NOT_EXIST,
1016*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_INVALID_PARAM,
1017*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_DIALOG_ID_BUSY,
1018*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_NOT_PAUSED,
1019*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_NO_RESOURCE,
1020*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_NO_ACK,
1021*5113495bSYour Name 	HOST_TWT_KICKOFF_BTWT_STATUS_UNKNOWN_ERROR,
1022*5113495bSYour Name };
1023*5113495bSYour Name 
1024*5113495bSYour Name /**
1025*5113495bSYour Name  * struct twt_btwt_remove_sta_complete_event_param -
1026*5113495bSYour Name  * @vdev_id: VDEV identifier
1027*5113495bSYour Name  * @peer_macaddr: Peer mac address
1028*5113495bSYour Name  * @dialog_id: BTWT dialog ID
1029*5113495bSYour Name  * @status: refer to HOST_TWT_KICKOFF_BTWT_STATUS
1030*5113495bSYour Name  */
1031*5113495bSYour Name struct twt_btwt_remove_sta_complete_event_param {
1032*5113495bSYour Name 	uint32_t vdev_id;
1033*5113495bSYour Name 	struct qdf_mac_addr peer_macaddr;
1034*5113495bSYour Name 	uint32_t dialog_id;
1035*5113495bSYour Name 	uint32_t status;
1036*5113495bSYour Name };
1037*5113495bSYour Name #endif
1038*5113495bSYour Name 
1039*5113495bSYour Name /**
1040*5113495bSYour Name  * enum HOST_TWT_CMD_FOR_ACK_EVENT - Ack event for different TWT command
1041*5113495bSYour Name  * @HOST_TWT_ADD_DIALOG_CMDID: Ack event for add dialog command
1042*5113495bSYour Name  * @HOST_TWT_DEL_DIALOG_CMDID: Ack event for delete dialog command
1043*5113495bSYour Name  * @HOST_TWT_PAUSE_DIALOG_CMDID: Ack event for pause command
1044*5113495bSYour Name  * @HOST_TWT_RESUME_DIALOG_CMDID: Ack event for resume command
1045*5113495bSYour Name  * @HOST_TWT_NUDGE_DIALOG_CMDID: Ack event for nudge command
1046*5113495bSYour Name  * @HOST_TWT_UNKNOWN_CMDID: Ack event for unknown TWT command
1047*5113495bSYour Name  */
1048*5113495bSYour Name enum HOST_TWT_CMD_FOR_ACK_EVENT {
1049*5113495bSYour Name 	HOST_TWT_ADD_DIALOG_CMDID = 0,
1050*5113495bSYour Name 	HOST_TWT_DEL_DIALOG_CMDID,
1051*5113495bSYour Name 	HOST_TWT_PAUSE_DIALOG_CMDID,
1052*5113495bSYour Name 	HOST_TWT_RESUME_DIALOG_CMDID,
1053*5113495bSYour Name 	HOST_TWT_NUDGE_DIALOG_CMDID,
1054*5113495bSYour Name 	HOST_TWT_UNKNOWN_CMDID,
1055*5113495bSYour Name };
1056*5113495bSYour Name 
1057*5113495bSYour Name /* access categories */
1058*5113495bSYour Name enum twt_traffic_ac {
1059*5113495bSYour Name 	TWT_AC_VO  = 0,
1060*5113495bSYour Name 	TWT_AC_VI  = 1,
1061*5113495bSYour Name 	TWT_AC_BE  = 2,
1062*5113495bSYour Name 	TWT_AC_BK  = 3,
1063*5113495bSYour Name 	TWT_AC_MAX = 4,
1064*5113495bSYour Name };
1065*5113495bSYour Name 
1066*5113495bSYour Name /**
1067*5113495bSYour Name  * enum twt_disable_reason - twt disable/enable reason
1068*5113495bSYour Name  * @REASON_PMO_SUSPEND: reason is suspended
1069*5113495bSYour Name  */
1070*5113495bSYour Name enum twt_disable_reason {
1071*5113495bSYour Name 	REASON_PMO_SUSPEND  = 0x1,
1072*5113495bSYour Name };
1073*5113495bSYour Name 
1074*5113495bSYour Name #endif /* _WLAN_TWT_PUBLIC_STRUCTS_H_ */
1075*5113495bSYour Name 
1076