xref: /wlan-dirver/qca-wifi-host-cmn/umac/cfr/dispatcher/inc/wlan_cfr_tgt_api.h (revision 70a19e16789e308182f63b15c75decec7bf0b342)
1 /*
2  * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 #ifndef _WLAN_CFR_TGT_API_H_
21 #define _WLAN_CFR_TGT_API_H_
22 
23 #include <wlan_objmgr_peer_obj.h>
24 #include <wlan_objmgr_pdev_obj.h>
25 #include <wlan_objmgr_cmn.h>
26 #include <qdf_types.h>
27 
28 /* tgt layer has APIs in application, to access functions in target
29  * through tx_ops.
30  */
31 
32 /**
33  * tgt_cfr_init_pdev() - API that registers CFR to handlers.
34  * @pdev: pointer to pdev_object
35  *
36  * Return: success/failure of init
37  */
38 QDF_STATUS tgt_cfr_init_pdev(struct wlan_objmgr_pdev *pdev);
39 
40 /**
41  * tgt_cfr_deinit_pdev() - API that de-registers CFR to handlers.
42  * @pdev: pointer to pdev_object
43  *
44  * Return: success/failure of de-init
45  */
46 QDF_STATUS tgt_cfr_deinit_pdev(struct wlan_objmgr_pdev *pdev);
47 
48 /**
49  * tgt_cfr_get_target_type() - API to determine target type.
50  * @psoc: pointer to psoc_object
51  *
52  * Return: enum value of target type
53  */
54 int tgt_cfr_get_target_type(struct wlan_objmgr_psoc *psoc);
55 
56 /**
57  * tgt_cfr_start_capture() - API to start cfr capture on a peer.
58  * @pdev: pointer to pdev_object
59  * @peer: pointer to peer_object
60  * @cfr_params: pointer to config cfr_params
61  *
62  * Return: success/failure of start capture
63  */
64 int tgt_cfr_start_capture(struct wlan_objmgr_pdev *pdev,
65 			  struct wlan_objmgr_peer *peer,
66 			  struct cfr_capture_params *cfr_params);
67 
68 /**
69  * tgt_cfr_stop_capture() - API to stop cfr capture on a peer.
70  * @pdev: pointer to pdev_object
71  * @peer: pointer to peer_object
72  *
73  * Return: success/failure of stop capture
74  */
75 int tgt_cfr_stop_capture(struct wlan_objmgr_pdev *pdev,
76 			 struct wlan_objmgr_peer *peer);
77 
78 /**
79  * tgt_cfr_validate_period() - API to validate cfr period configured by user
80  * @psoc: pointer to the psoc object
81  * @period: period value to validate
82  *
83  * Return: success/failure of periodicity validation
84  */
85 int tgt_cfr_validate_period(struct wlan_objmgr_psoc *psoc, u_int32_t period);
86 
87 /**
88  * tgt_cfr_enable_cfr_timer() - API to enable cfr timer
89  * @pdev: pointer to pdev_object
90  * @cfr_timer: Amount of time this timer has to run. If 0, it disables timer.
91  *
92  * Return: success/failure of timer enable
93  */
94 int
95 tgt_cfr_enable_cfr_timer(struct wlan_objmgr_pdev *pdev, uint32_t cfr_timer);
96 
97 /**
98  * tgt_cfr_support_set() - API to set cfr support
99  * @psoc: pointer to psoc_object
100  * @value: value to be set
101  */
102 void tgt_cfr_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value);
103 
104 /**
105  * tgt_cfr_capture_count_support_set() - API to set capture_count support
106  * @psoc: pointer to psoc_object
107  * @value: value to be set
108  *
109  * Return: success/failure
110  */
111 QDF_STATUS
112 tgt_cfr_capture_count_support_set(struct wlan_objmgr_psoc *psoc,
113 				  uint32_t value);
114 
115 /**
116  * tgt_cfr_mo_marking_support_set() - API to set MO marking support
117  * @psoc: pointer to psoc_object
118  * @value: value to be set
119  *
120  * Return: success/failure
121  */
122 QDF_STATUS
123 tgt_cfr_mo_marking_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value);
124 
125 /**
126  * tgt_cfr_aoa_for_rcc_support_set() - API to set AoA for RCC support
127  * @psoc: pointer to psoc_object
128  * @value: value to be set
129  *
130  * Return: success/failure
131  */
132 QDF_STATUS
133 tgt_cfr_aoa_for_rcc_support_set(struct wlan_objmgr_psoc *psoc, uint32_t value);
134 
135 /**
136  * tgt_cfr_info_send() - API to send cfr info
137  * @pdev: pointer to pdev_object
138  * @head: pointer to cfr info head
139  * @hlen: head len
140  * @data: pointer to cfr info data
141  * @dlen: data len
142  * @tail: pointer to cfr info tail
143  * @tlen: tail len
144  *
145  * Return: success/failure of cfr info send
146  */
147 uint32_t tgt_cfr_info_send(struct wlan_objmgr_pdev *pdev, void *head,
148 			   size_t hlen, void *data, size_t dlen, void *tail,
149 			   size_t tlen);
150 
151 #ifdef WLAN_ENH_CFR_ENABLE
152 /**
153  * tgt_cfr_config_rcc() - API to set RCC
154  * @pdev: pointer to pdev_object
155  * @rcc_param: rcc configurations
156  *
157  * Return: success / failure
158  */
159 QDF_STATUS tgt_cfr_config_rcc(struct wlan_objmgr_pdev *pdev,
160 			      struct cfr_rcc_param *rcc_param);
161 
162 /**
163  * tgt_cfr_start_lut_age_timer() - API to start timer to flush aged out LUT
164  * entries
165  * @pdev: pointer to pdev_object
166  *
167  * Return: None
168  */
169 void tgt_cfr_start_lut_age_timer(struct wlan_objmgr_pdev *pdev);
170 
171 /**
172  * tgt_cfr_stop_lut_age_timer() - API to stop timer to flush aged out LUT
173  * entries
174  * @pdev: pointer to pdev_object
175  *
176  * Return: None
177  */
178 void tgt_cfr_stop_lut_age_timer(struct wlan_objmgr_pdev *pdev);
179 
180 /**
181  * tgt_cfr_default_ta_ra_cfg() - API to configure default values in TA_RA mode
182  * entries
183  * @pdev: pointer to pdev_object
184  * @rcc_param:
185  * @allvalid:
186  * @reset_cfg:
187  *
188  * Return: none
189  */
190 void tgt_cfr_default_ta_ra_cfg(struct wlan_objmgr_pdev *pdev,
191 			       struct cfr_rcc_param *rcc_param,
192 			       bool allvalid, uint16_t reset_cfg);
193 
194 /**
195  * tgt_cfr_dump_lut_enh() - Print all LUT entries
196  * @pdev: pointer to pdev_object
197  */
198 void tgt_cfr_dump_lut_enh(struct wlan_objmgr_pdev *pdev);
199 
200 /**
201  * tgt_cfr_rx_tlv_process() - Process PPDU status TLVs
202  * @pdev: pointer to pdev_object
203  * @nbuf: pointer to cdp_rx_indication_ppdu
204  */
205 void tgt_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf);
206 
207 /**
208  * tgt_cfr_update_global_cfg() - Update global config after successful commit
209  * @pdev: pointer to pdev_object
210  */
211 void tgt_cfr_update_global_cfg(struct wlan_objmgr_pdev *pdev);
212 
213 /**
214  * tgt_cfr_subscribe_ppdu_desc() - Target interface to
215  * subscribe/unsubscribe WDI PPDU desc event
216  * @pdev: pointer to pdev_object
217  * @is_subscribe: subscribe or unsubscribei
218  *
219  * return QDF status
220  */
221 QDF_STATUS tgt_cfr_subscribe_ppdu_desc(struct wlan_objmgr_pdev *pdev,
222 				       bool is_subscribe);
223 #endif
224 #endif
225