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