xref: /wlan-driver/qcacld-3.0/components/spatial_reuse/dispatcher/inc/spatial_reuse_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 any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name 
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name /**
18*5113495bSYour Name  * DOC: contains interface prototypes for OS_IF layer
19*5113495bSYour Name  */
20*5113495bSYour Name #ifndef _SPATIAL_REUSE_UCFG_API_H_
21*5113495bSYour Name #define _SPATIAL_REUSE_UCFG_API_H_
22*5113495bSYour Name 
23*5113495bSYour Name #include <qdf_trace.h>
24*5113495bSYour Name #include <wlan_objmgr_vdev_obj.h>
25*5113495bSYour Name #include <spatial_reuse_api.h>
26*5113495bSYour Name 
27*5113495bSYour Name #ifdef WLAN_FEATURE_SR
28*5113495bSYour Name /**
29*5113495bSYour Name  * ucfg_spatial_reuse_register_cb() - Registers CB for SR
30*5113495bSYour Name  * @psoc: pointer to psoc
31*5113495bSYour Name  * @cb: SR osif event callback
32*5113495bSYour Name  *
33*5113495bSYour Name  * Return: void
34*5113495bSYour Name  */
35*5113495bSYour Name void ucfg_spatial_reuse_register_cb(struct wlan_objmgr_psoc *psoc,
36*5113495bSYour Name 				    sr_osif_event_cb cb);
37*5113495bSYour Name 
38*5113495bSYour Name /**
39*5113495bSYour Name  * ucfg_spatial_reuse_get_sr_config() - Spatial reuse config get
40*5113495bSYour Name  *
41*5113495bSYour Name  * @vdev: object manager vdev
42*5113495bSYour Name  * @sr_ctrl: spatial reuse sr control
43*5113495bSYour Name  * @non_srg_max_pd_offset: non-srg max pd offset
44*5113495bSYour Name  * @he_spr_enabled: spatial reuse enabled
45*5113495bSYour Name  *
46*5113495bSYour Name  * Return: void
47*5113495bSYour Name  */
48*5113495bSYour Name void ucfg_spatial_reuse_get_sr_config(struct wlan_objmgr_vdev *vdev,
49*5113495bSYour Name 				      uint8_t *sr_ctrl,
50*5113495bSYour Name 				      uint8_t *non_srg_max_pd_offset,
51*5113495bSYour Name 				      bool *he_spr_enabled);
52*5113495bSYour Name /**
53*5113495bSYour Name  * ucfg_spatial_reuse_set_sr_config() - Spatial reuse config set
54*5113495bSYour Name  *
55*5113495bSYour Name  * @vdev: object manager vdev
56*5113495bSYour Name  * @sr_ctrl: spatial reuse sr control
57*5113495bSYour Name  * @non_srg_max_pd_offset: non-srg max pd offset
58*5113495bSYour Name  *
59*5113495bSYour Name  * Return: void
60*5113495bSYour Name  */
61*5113495bSYour Name void ucfg_spatial_reuse_set_sr_config(struct wlan_objmgr_vdev *vdev,
62*5113495bSYour Name 				      uint8_t sr_ctrl,
63*5113495bSYour Name 				      uint8_t non_srg_max_pd_offset);
64*5113495bSYour Name 
65*5113495bSYour Name /**
66*5113495bSYour Name  * ucfg_spatial_reuse_is_sr_disabled_due_conc() - Spatial reuse get concurrency
67*5113495bSYour Name  *						  status
68*5113495bSYour Name  *
69*5113495bSYour Name  * @vdev: object manager vdev
70*5113495bSYour Name  *
71*5113495bSYour Name  * Return: True when SR is disabled due to concurrency or else False
72*5113495bSYour Name  */
73*5113495bSYour Name bool ucfg_spatial_reuse_is_sr_disabled_due_conc(struct wlan_objmgr_vdev *vdev);
74*5113495bSYour Name 
75*5113495bSYour Name /**
76*5113495bSYour Name  * ucfg_spatial_reuse_set_sr_conc_stat() - Spatial reuse disable config set
77*5113495bSYour Name  *
78*5113495bSYour Name  * @vdev: object manager vdev
79*5113495bSYour Name  * @sr_conc_disabled: spatial reuse disabled due to concurrency
80*5113495bSYour Name  *
81*5113495bSYour Name  * Return: void
82*5113495bSYour Name  */
83*5113495bSYour Name void ucfg_spatial_reuse_set_sr_conc_stat(struct wlan_objmgr_vdev *vdev,
84*5113495bSYour Name 					 bool sr_conc_disabled);
85*5113495bSYour Name 
86*5113495bSYour Name /**
87*5113495bSYour Name  * ucfg_spatial_reuse_send_sr_config() - Send spatial reuse config to fw
88*5113495bSYour Name  *
89*5113495bSYour Name  * @vdev: object manager vdev
90*5113495bSYour Name  * @enable: spatial reuse config to be enabled or not
91*5113495bSYour Name  *
92*5113495bSYour Name  * Return: void
93*5113495bSYour Name  */
94*5113495bSYour Name void ucfg_spatial_reuse_send_sr_config(struct wlan_objmgr_vdev *vdev,
95*5113495bSYour Name 				       bool enable);
96*5113495bSYour Name 
97*5113495bSYour Name /**
98*5113495bSYour Name  * ucfg_spatial_reuse_set_sr_enable() - set enable/disable Spatial reuse
99*5113495bSYour Name  *
100*5113495bSYour Name  * @vdev: object manager vdev
101*5113495bSYour Name  * @enable: spatial reuse to be enabled or not
102*5113495bSYour Name  *
103*5113495bSYour Name  * Return: void
104*5113495bSYour Name  */
105*5113495bSYour Name void ucfg_spatial_reuse_set_sr_enable(struct wlan_objmgr_vdev *vdev,
106*5113495bSYour Name 				      bool enable);
107*5113495bSYour Name 
108*5113495bSYour Name /**
109*5113495bSYour Name  * ucfg_spatial_reuse_send_sr_prohibit() - Send spatial reuse config to enable
110*5113495bSYour Name  *					   or disable he_siga_val15_allowed
111*5113495bSYour Name  *
112*5113495bSYour Name  * @vdev: object manager vdev
113*5113495bSYour Name  * @enable_he_siga_val15_prohibit: enable/disable he_siga_val15_allowed
114*5113495bSYour Name  *
115*5113495bSYour Name  * Return: success/failure
116*5113495bSYour Name  */
117*5113495bSYour Name QDF_STATUS
118*5113495bSYour Name ucfg_spatial_reuse_send_sr_prohibit(struct wlan_objmgr_vdev *vdev,
119*5113495bSYour Name 				    bool enable_he_siga_val15_prohibit);
120*5113495bSYour Name 
121*5113495bSYour Name /**
122*5113495bSYour Name  * ucfg_spatial_reuse_setup_req() - To enable/disable SR (Spatial Reuse)
123*5113495bSYour Name  * @vdev: object manager vdev
124*5113495bSYour Name  * @pdev: object manager pdev
125*5113495bSYour Name  * @is_sr_enable: SR enable/disable
126*5113495bSYour Name  * @srg_pd_threshold: SRG pd threshold
127*5113495bSYour Name  * @non_srg_pd_threshold: NON SRG pd threshold
128*5113495bSYour Name  *
129*5113495bSYour Name  * Return: Success/Failure
130*5113495bSYour Name  */
131*5113495bSYour Name QDF_STATUS
132*5113495bSYour Name ucfg_spatial_reuse_setup_req(struct wlan_objmgr_vdev *vdev,
133*5113495bSYour Name 			     struct wlan_objmgr_pdev *pdev,
134*5113495bSYour Name 			     bool is_sr_enable, int32_t srg_pd_threshold,
135*5113495bSYour Name 			     int32_t non_srg_pd_threshold);
136*5113495bSYour Name 
137*5113495bSYour Name /**
138*5113495bSYour Name  * ucfg_spatial_reuse_operation_allowed() - Checks whether SR is allowed or not
139*5113495bSYour Name  * @psoc: Object manager psoc
140*5113495bSYour Name  * @vdev: object manager vdev
141*5113495bSYour Name  *
142*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS when SR is allowed else Failure
143*5113495bSYour Name  */
144*5113495bSYour Name QDF_STATUS
145*5113495bSYour Name ucfg_spatial_reuse_operation_allowed(struct wlan_objmgr_psoc *psoc,
146*5113495bSYour Name 				     struct wlan_objmgr_vdev *vdev);
147*5113495bSYour Name #else
148*5113495bSYour Name static inline
ucfg_spatial_reuse_register_cb(struct wlan_objmgr_psoc * psoc,sr_osif_event_cb cb)149*5113495bSYour Name void ucfg_spatial_reuse_register_cb(struct wlan_objmgr_psoc *psoc,
150*5113495bSYour Name 				    sr_osif_event_cb cb)
151*5113495bSYour Name {
152*5113495bSYour Name }
153*5113495bSYour Name #endif
154*5113495bSYour Name #endif
155