xref: /wlan-driver/qca-wifi-host-cmn/umac/twt/dispatcher/inc/wlan_twt_ucfg_api.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: wlan_twt_ucfg_api.h
21*5113495bSYour Name  * This file provides TWT ucfg apis.
22*5113495bSYour Name  */
23*5113495bSYour Name #ifndef _WLAN_TWT_UCFG_API_H_
24*5113495bSYour Name #define _WLAN_TWT_UCFG_API_H_
25*5113495bSYour Name 
26*5113495bSYour Name #include <wlan_objmgr_psoc_obj.h>
27*5113495bSYour Name #include <wlan_twt_public_structs.h>
28*5113495bSYour Name 
29*5113495bSYour Name /**
30*5113495bSYour Name  * ucfg_twt_get_responder() - twt get responder
31*5113495bSYour Name  * @psoc: psoc handle
32*5113495bSYour Name  * @val: pointer to the output variable
33*5113495bSYour Name  *
34*5113495bSYour Name  * return: QDF_STATUS
35*5113495bSYour Name  */
36*5113495bSYour Name QDF_STATUS
37*5113495bSYour Name ucfg_twt_get_responder(struct wlan_objmgr_psoc *psoc, bool *val);
38*5113495bSYour Name 
39*5113495bSYour Name /**
40*5113495bSYour Name  * ucfg_twt_get_twt_nudge_enabled() - get twt nudge enabled
41*5113495bSYour Name  * @psoc: psoc handle
42*5113495bSYour Name  * @val: pointer to the output variable
43*5113495bSYour Name  *
44*5113495bSYour Name  * return: QDF_STATUS
45*5113495bSYour Name  */
46*5113495bSYour Name QDF_STATUS
47*5113495bSYour Name ucfg_twt_get_twt_nudge_enabled(struct wlan_objmgr_psoc *psoc,
48*5113495bSYour Name 			       bool *val);
49*5113495bSYour Name 
50*5113495bSYour Name /**
51*5113495bSYour Name  * ucfg_twt_get_all_twt_enabled() - get all twt enabled
52*5113495bSYour Name  * @psoc: psoc handle
53*5113495bSYour Name  * @val: pointer to the output variable
54*5113495bSYour Name  *
55*5113495bSYour Name  * return: QDF_STATUS
56*5113495bSYour Name  */
57*5113495bSYour Name QDF_STATUS
58*5113495bSYour Name ucfg_twt_get_all_twt_enabled(struct wlan_objmgr_psoc *psoc,
59*5113495bSYour Name 			     bool *val);
60*5113495bSYour Name 
61*5113495bSYour Name /**
62*5113495bSYour Name  * ucfg_twt_check_all_twt_support() - Check if all TWT sessions capability is
63*5113495bSYour Name  * supported or not
64*5113495bSYour Name  * @psoc: Pointer to psoc object
65*5113495bSYour Name  * @dialog_id: dialod id
66*5113495bSYour Name  *
67*5113495bSYour Name  * Return: QDF Status
68*5113495bSYour Name  */
69*5113495bSYour Name QDF_STATUS
70*5113495bSYour Name ucfg_twt_check_all_twt_support(struct wlan_objmgr_psoc *psoc,
71*5113495bSYour Name 			       uint32_t dialog_id);
72*5113495bSYour Name 
73*5113495bSYour Name /**
74*5113495bSYour Name  * ucfg_twt_get_twt_stats_enabled() - get twt stats enabled
75*5113495bSYour Name  * @psoc: psoc handle
76*5113495bSYour Name  * @val: pointer to the output variable
77*5113495bSYour Name  *
78*5113495bSYour Name  * return: QDF_STATUS
79*5113495bSYour Name  */
80*5113495bSYour Name QDF_STATUS
81*5113495bSYour Name ucfg_twt_get_twt_stats_enabled(struct wlan_objmgr_psoc *psoc,
82*5113495bSYour Name 			       bool *val);
83*5113495bSYour Name 
84*5113495bSYour Name /**
85*5113495bSYour Name  * ucfg_twt_get_twt_ack_supported() - get twt ack supported
86*5113495bSYour Name  * @psoc: psoc handle
87*5113495bSYour Name  * @val: pointer to the output variable
88*5113495bSYour Name  *
89*5113495bSYour Name  * return: QDF_STATUS
90*5113495bSYour Name  */
91*5113495bSYour Name QDF_STATUS
92*5113495bSYour Name ucfg_twt_get_twt_ack_supported(struct wlan_objmgr_psoc *psoc,
93*5113495bSYour Name 			       bool *val);
94*5113495bSYour Name 
95*5113495bSYour Name /**
96*5113495bSYour Name  * ucfg_twt_requestor_disable() - twt requestor disable
97*5113495bSYour Name  * @psoc: psoc handle
98*5113495bSYour Name  * @req: twt disable request structure
99*5113495bSYour Name  * @context: context
100*5113495bSYour Name  *
101*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
102*5113495bSYour Name  * filled by the user space/upper layer. if any field is not applicable
103*5113495bSYour Name  * then set it to 0.
104*5113495bSYour Name  *      pdev_id;
105*5113495bSYour Name  *      mbss_support;
106*5113495bSYour Name  *      default_slot_size;
107*5113495bSYour Name  *      congestion_thresh_setup;
108*5113495bSYour Name  *      congestion_thresh_teardown;
109*5113495bSYour Name  *      congestion_thresh_critical;
110*5113495bSYour Name  *      interference_thresh_teardown;
111*5113495bSYour Name  *      interference_thresh_setup;
112*5113495bSYour Name  *      min_no_sta_setup;
113*5113495bSYour Name  *      min_no_sta_teardown;
114*5113495bSYour Name  *      no_of_bcast_mcast_slots;
115*5113495bSYour Name  *      min_no_twt_slots;
116*5113495bSYour Name  *      max_no_sta_twt;
117*5113495bSYour Name  *      mode_check_interval;
118*5113495bSYour Name  *      add_sta_slot_interval;
119*5113495bSYour Name  *      remove_sta_slot_interval;
120*5113495bSYour Name  *      ext_conf_present;
121*5113495bSYour Name  *      b_twt_legacy_mbss_enable:1,
122*5113495bSYour Name  *      b_twt_ax_mbss_enable:1;
123*5113495bSYour Name  *
124*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
125*5113495bSYour Name  * filled by the UMAC TWT Component itself
126*5113495bSYour Name  *      sta_cong_timer_ms;
127*5113495bSYour Name  *      twt_role;
128*5113495bSYour Name  *      twt_oper;
129*5113495bSYour Name  *      b_twt_enable;
130*5113495bSYour Name  *
131*5113495bSYour Name  * return: QDF_STATUS
132*5113495bSYour Name  */
133*5113495bSYour Name QDF_STATUS
134*5113495bSYour Name ucfg_twt_requestor_disable(struct wlan_objmgr_psoc *psoc,
135*5113495bSYour Name 			   struct twt_disable_param *req,
136*5113495bSYour Name 			   void *context);
137*5113495bSYour Name 
138*5113495bSYour Name /**
139*5113495bSYour Name  * ucfg_twt_responder_disable() - twt responder disable
140*5113495bSYour Name  * @psoc: psoc handle
141*5113495bSYour Name  * @req: twt disable request structure
142*5113495bSYour Name  * @context: context
143*5113495bSYour Name  *
144*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
145*5113495bSYour Name  * filled by the user space/upper layer. if any field is not applicable
146*5113495bSYour Name  * then set it to 0.
147*5113495bSYour Name  *      pdev_id;
148*5113495bSYour Name  *      mbss_support;
149*5113495bSYour Name  *      default_slot_size;
150*5113495bSYour Name  *      congestion_thresh_setup;
151*5113495bSYour Name  *      congestion_thresh_teardown;
152*5113495bSYour Name  *      congestion_thresh_critical;
153*5113495bSYour Name  *      interference_thresh_teardown;
154*5113495bSYour Name  *      interference_thresh_setup;
155*5113495bSYour Name  *      min_no_sta_setup;
156*5113495bSYour Name  *      min_no_sta_teardown;
157*5113495bSYour Name  *      no_of_bcast_mcast_slots;
158*5113495bSYour Name  *      min_no_twt_slots;
159*5113495bSYour Name  *      max_no_sta_twt;
160*5113495bSYour Name  *      mode_check_interval;
161*5113495bSYour Name  *      add_sta_slot_interval;
162*5113495bSYour Name  *      remove_sta_slot_interval;
163*5113495bSYour Name  *      ext_conf_present;
164*5113495bSYour Name  *      b_twt_legacy_mbss_enable:1,
165*5113495bSYour Name  *      b_twt_ax_mbss_enable:1;
166*5113495bSYour Name  *
167*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
168*5113495bSYour Name  * filled by the UMAC TWT Component itself
169*5113495bSYour Name  *      sta_cong_timer_ms;
170*5113495bSYour Name  *      twt_role;
171*5113495bSYour Name  *      twt_oper;
172*5113495bSYour Name  *      b_twt_enable;
173*5113495bSYour Name  *
174*5113495bSYour Name  * return: QDF_STATUS
175*5113495bSYour Name  */
176*5113495bSYour Name QDF_STATUS
177*5113495bSYour Name ucfg_twt_responder_disable(struct wlan_objmgr_psoc *psoc,
178*5113495bSYour Name 			   struct twt_disable_param *req,
179*5113495bSYour Name 			   void *context);
180*5113495bSYour Name 
181*5113495bSYour Name /**
182*5113495bSYour Name  * ucfg_twt_requestor_enable() - twt requestor enable
183*5113495bSYour Name  * @psoc: psoc handle
184*5113495bSYour Name  * @req: twt enable request structure
185*5113495bSYour Name  * @context: context
186*5113495bSYour Name  *
187*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
188*5113495bSYour Name  * filled by the user space/upper layer. if any field is not applicable
189*5113495bSYour Name  * then set it to 0.
190*5113495bSYour Name  *      pdev_id;
191*5113495bSYour Name  *      mbss_support;
192*5113495bSYour Name  *      default_slot_size;
193*5113495bSYour Name  *      congestion_thresh_setup;
194*5113495bSYour Name  *      congestion_thresh_teardown;
195*5113495bSYour Name  *      congestion_thresh_critical;
196*5113495bSYour Name  *      interference_thresh_teardown;
197*5113495bSYour Name  *      interference_thresh_setup;
198*5113495bSYour Name  *      min_no_sta_setup;
199*5113495bSYour Name  *      min_no_sta_teardown;
200*5113495bSYour Name  *      no_of_bcast_mcast_slots;
201*5113495bSYour Name  *      min_no_twt_slots;
202*5113495bSYour Name  *      max_no_sta_twt;
203*5113495bSYour Name  *      mode_check_interval;
204*5113495bSYour Name  *      add_sta_slot_interval;
205*5113495bSYour Name  *      remove_sta_slot_interval;
206*5113495bSYour Name  *      ext_conf_present;
207*5113495bSYour Name  *      b_twt_legacy_mbss_enable:1,
208*5113495bSYour Name  *      b_twt_ax_mbss_enable:1;
209*5113495bSYour Name  *
210*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
211*5113495bSYour Name  * filled by the UMAC TWT Component itself
212*5113495bSYour Name  *      sta_cong_timer_ms;
213*5113495bSYour Name  *      twt_role;
214*5113495bSYour Name  *      twt_oper;
215*5113495bSYour Name  *      b_twt_enable;
216*5113495bSYour Name  *
217*5113495bSYour Name  * return: QDF_STATUS
218*5113495bSYour Name  */
219*5113495bSYour Name QDF_STATUS
220*5113495bSYour Name ucfg_twt_requestor_enable(struct wlan_objmgr_psoc *psoc,
221*5113495bSYour Name 			  struct twt_enable_param *req,
222*5113495bSYour Name 			  void *context);
223*5113495bSYour Name 
224*5113495bSYour Name /**
225*5113495bSYour Name  * ucfg_twt_responder_enable() - twt responder enable
226*5113495bSYour Name  * @psoc: psoc handle
227*5113495bSYour Name  * @req: twt enable request structure
228*5113495bSYour Name  * @context: context
229*5113495bSYour Name  *
230*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
231*5113495bSYour Name  * filled by the user space/upper layer. if any field is not applicable
232*5113495bSYour Name  * then set it to 0.
233*5113495bSYour Name  *      pdev_id;
234*5113495bSYour Name  *      mbss_support;
235*5113495bSYour Name  *      default_slot_size;
236*5113495bSYour Name  *      congestion_thresh_setup;
237*5113495bSYour Name  *      congestion_thresh_teardown;
238*5113495bSYour Name  *      congestion_thresh_critical;
239*5113495bSYour Name  *      interference_thresh_teardown;
240*5113495bSYour Name  *      interference_thresh_setup;
241*5113495bSYour Name  *      min_no_sta_setup;
242*5113495bSYour Name  *      min_no_sta_teardown;
243*5113495bSYour Name  *      no_of_bcast_mcast_slots;
244*5113495bSYour Name  *      min_no_twt_slots;
245*5113495bSYour Name  *      max_no_sta_twt;
246*5113495bSYour Name  *      mode_check_interval;
247*5113495bSYour Name  *      add_sta_slot_interval;
248*5113495bSYour Name  *      remove_sta_slot_interval;
249*5113495bSYour Name  *      ext_conf_present;
250*5113495bSYour Name  *      b_twt_legacy_mbss_enable:1,
251*5113495bSYour Name  *      b_twt_ax_mbss_enable:1;
252*5113495bSYour Name  *
253*5113495bSYour Name  * Following fields in request structure @twt_enable_param shall be
254*5113495bSYour Name  * filled by the UMAC TWT Component itself
255*5113495bSYour Name  *      sta_cong_timer_ms;
256*5113495bSYour Name  *      twt_role;
257*5113495bSYour Name  *      twt_oper;
258*5113495bSYour Name  *      b_twt_enable;
259*5113495bSYour Name  *
260*5113495bSYour Name  * return: QDF_STATUS
261*5113495bSYour Name  */
262*5113495bSYour Name QDF_STATUS
263*5113495bSYour Name ucfg_twt_responder_enable(struct wlan_objmgr_psoc *psoc,
264*5113495bSYour Name 			  struct twt_enable_param *req,
265*5113495bSYour Name 			  void *context);
266*5113495bSYour Name 
267*5113495bSYour Name /**
268*5113495bSYour Name  * ucfg_twt_set_peer_capabilities() - set twt peer capabilities
269*5113495bSYour Name  * @psoc: psoc handle
270*5113495bSYour Name  * @peer_mac: peer mac address
271*5113495bSYour Name  * @peer_cap: TWT peer capability bitmap. Refer enum
272*5113495bSYour Name  * wlan_twt_capabilities for representation.
273*5113495bSYour Name  *
274*5113495bSYour Name  * return: QDF_STATUS
275*5113495bSYour Name  */
276*5113495bSYour Name QDF_STATUS
277*5113495bSYour Name ucfg_twt_set_peer_capabilities(struct wlan_objmgr_psoc *psoc,
278*5113495bSYour Name 			       struct qdf_mac_addr *peer_mac,
279*5113495bSYour Name 			       uint8_t peer_cap);
280*5113495bSYour Name 
281*5113495bSYour Name /**
282*5113495bSYour Name  * ucfg_twt_get_peer_capabilities() - get twt peer capabilities
283*5113495bSYour Name  * @psoc: psoc handle
284*5113495bSYour Name  * @peer_mac: peer mac address
285*5113495bSYour Name  * @peer_cap: Pointer to output variable to hold TWT peer capability bitmap.
286*5113495bSYour Name  * Refer enum wlan_twt_capabilities for representation.
287*5113495bSYour Name  *
288*5113495bSYour Name  * return: QDF_STATUS
289*5113495bSYour Name  */
290*5113495bSYour Name QDF_STATUS
291*5113495bSYour Name ucfg_twt_get_peer_capabilities(struct wlan_objmgr_psoc *psoc,
292*5113495bSYour Name 			       struct qdf_mac_addr *peer_mac,
293*5113495bSYour Name 			       uint8_t *peer_cap);
294*5113495bSYour Name 
295*5113495bSYour Name /**
296*5113495bSYour Name  * ucfg_twt_get_restricted_twt_supported() - Get tgt restricted-twt
297*5113495bSYour Name  *                                              support caps
298*5113495bSYour Name  * @psoc: psoc handle
299*5113495bSYour Name  * @val: pointer to get caps enabled/disabled
300*5113495bSYour Name  *
301*5113495bSYour Name  * return: QDF_STATUS
302*5113495bSYour Name  */
303*5113495bSYour Name QDF_STATUS ucfg_twt_get_restricted_twt_supported(struct wlan_objmgr_psoc *psoc,
304*5113495bSYour Name 						 bool *val);
305*5113495bSYour Name #endif /* _WLAN_TWT_UCFG_API_H_ */
306