xref: /wlan-dirver/qca-wifi-host-cmn/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h (revision 11f5a63a6cbdda84849a730de22f0a71e635d58c)
1 /*
2  * Copyright (c) 2016-2019 The Linux Foundation. All rights reserved.
3  *
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 /**
21  * DOC: This file has the DFS dispatcher API which is exposed to outside of DFS
22  * component.
23  */
24 
25 #ifndef _WLAN_DFS_TGT_API_H_
26 #define _WLAN_DFS_TGT_API_H_
27 
28 #include <wlan_dfs_public_struct.h>
29 
30 #define WLAN_DFS_RESET_TIME_S 7
31 #define WLAN_DFS_WAIT (60 + WLAN_DFS_RESET_TIME_S) /* 60 seconds */
32 #define WLAN_DFS_WAIT_MS ((WLAN_DFS_WAIT) * 1000)  /*in MS*/
33 
34 /* Command id to send test radar to firmware */
35 #define DFS_PHYERR_OFFLOAD_TEST_SET_RADAR 0
36 
37 /* Segment ID corresponding to primary segment */
38 #define SEG_ID_PRIMARY 0
39 
40 /* Segment ID corresponding to secondary segment */
41 #define SEG_ID_SECONDARY 1
42 
43 /* dfs_radar_args_for_unit_test: Radar parameters to be sent in unit test cmd.
44  * @IDX_CMD_ID:          Index id pointing to command id value
45  * @IDX_PDEV_ID:         Index id pointing to pdev id value
46  * @IDX_RADAR_PARAM1_ID: Index pointing to packed arguments value that includes
47  *                         1). Segment ID,
48  *                         2). Chirp information (is chirp or non chirp),
49  *                         3). Frequency offset.
50  *
51  * The packed argument structure is:
52  *
53  * ------------------------------32 bits arg-------------------------
54  *
55  * ------------21 bits-------------|-------8 bits------|1 bit|2 bits|
56  * __________________________________________________________________
57  *|                                | | | | | | | | | | |     |   |   |
58  *|---------21 Unused bits---------|x|x|x| |x|x|x|x| |x|  x  | x | x |
59  *|________________________________|_|_|_|_|_|_|_|_|_|_|_____|___|___|
60  *
61  *                                 |___________________|_____|_______|
62  *                                   freq.offset        Chirp  segID
63  *
64  * @DFS_UNIT_TEST_NUM_ARGS:     Number of arguments for bangradar unit test
65  *                              command.
66  * @DFS_MAX_NUM_UNIT_TEST_ARGS: Maximum number of arguments for unit test
67  *                              command in radar simulation.
68  */
69 enum {
70 	IDX_CMD_ID = 0,
71 	IDX_PDEV_ID,
72 	IDX_RADAR_PARAM1_ID,
73 	DFS_UNIT_TEST_NUM_ARGS,
74 	DFS_MAX_NUM_UNIT_TEST_ARGS = DFS_UNIT_TEST_NUM_ARGS
75 };
76 
77 #define SEG_ID_SIZE 2
78 #define IS_CHIRP_SIZE 1
79 #define MASK 0xFF
80 
81 /**
82  * struct dfs_emulate_bang_radar_test_cmd - Unit test command structure to send
83  *                                          WMI command to firmware from host
84  *                                          and simulate bangradar event.
85  * @vdev_id: vdev id
86  * @num_args: number of arguments
87  * @args: arguments
88  */
89 struct dfs_emulate_bang_radar_test_cmd {
90 	uint32_t vdev_id;
91 	uint32_t num_args;
92 	uint32_t args[DFS_MAX_NUM_UNIT_TEST_ARGS];
93 };
94 
95 /**
96  * struct vdev_adfs_complete_status - OCAC complete status event param
97  * @vdev_id: Physical device identifier
98  * @chan_freq: Channel number
99  * @chan_width: Channel Width
100  * @center_freq: Center channel number
101  * @ocac_status: off channel cac status
102  */
103 struct vdev_adfs_complete_status {
104 	uint32_t vdev_id;
105 	uint32_t chan_freq;
106 	uint32_t chan_width;
107 	uint32_t center_freq;
108 	uint32_t ocac_status;
109 };
110 
111 extern struct dfs_to_mlme global_dfs_to_mlme;
112 
113 /**
114  * tgt_dfs_set_current_channel() - Fill dfs channel structure from
115  *                                 dfs_channel structure.
116  * @pdev: Pointer to DFS pdev object.
117  * @dfs_ch_freq: Frequency in Mhz.
118  * @dfs_ch_flags: Channel flags.
119  * @dfs_ch_flagext: Extended channel flags.
120  * @dfs_ch_ieee: IEEE channel number.
121  * @dfs_ch_vhtop_ch_freq_seg1: Channel Center frequency1.
122  * @dfs_ch_vhtop_ch_freq_seg2: Channel Center frequency2.
123  */
124 #ifdef DFS_COMPONENT_ENABLE
125 #ifdef CONFIG_CHAN_NUM_API
126 QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev,
127 		uint16_t dfs_ch_freq,
128 		uint64_t dfs_ch_flags,
129 		uint16_t dfs_ch_flagext,
130 		uint8_t dfs_ch_ieee,
131 		uint8_t dfs_ch_vhtop_ch_freq_seg1,
132 		uint8_t dfs_ch_vhtop_ch_freq_seg2);
133 #endif
134 
135 /**
136  * tgt_dfs_set_current_channel_for_freq() - Fill dfs channel structure from
137  *                                          dfs_channel structure.
138  * @pdev: Pointer to DFS pdev object.
139  * @dfs_ch_freq: Frequency in Mhz.
140  * @dfs_ch_flags: Channel flags.
141  * @dfs_ch_flagext: Extended channel flags.
142  * @dfs_ch_ieee: IEEE channel number.
143  * @dfs_ch_vhtop_ch_freq_seg1: Channel Center frequency1.
144  * @dfs_ch_vhtop_ch_freq_seg2: Channel Center frequency2.
145  * @dfs_ch_mhz_freq_seg1:  Channel center frequency of primary segment in MHZ.
146  * @dfs_ch_mhz_freq_seg2:  Channel center frequency of secondary segment in MHZ
147  *                         applicable only for 80+80MHZ mode of operation.
148  */
149 #ifdef CONFIG_CHAN_FREQ_API
150 QDF_STATUS
151 tgt_dfs_set_current_channel_for_freq(struct wlan_objmgr_pdev *pdev,
152 				     uint16_t dfs_ch_freq,
153 				     uint64_t dfs_ch_flags,
154 				     uint16_t dfs_ch_flagext,
155 				     uint8_t dfs_ch_ieee,
156 				     uint8_t dfs_ch_vhtop_ch_freq_seg1,
157 				     uint8_t dfs_ch_vhtop_ch_freq_seg2,
158 				     uint16_t dfs_ch_mhz_freq_seg1,
159 				     uint16_t dfs_ch_mhz_freq_seg2);
160 #endif
161 
162 /**
163  * tgt_dfs_radar_enable() - Enables the radar.
164  * @pdev: Pointer to DFS pdev object.
165  * @no_cac: If no_cac is 0, it cancels the CAC.
166  *
167  * This is called each time a channel change occurs, to (potentially) enable
168  * the radar code.
169  */
170 QDF_STATUS tgt_dfs_radar_enable(struct wlan_objmgr_pdev *pdev,
171 	int no_cac, uint32_t opmode);
172 
173 /**
174  * tgt_dfs_control()- Used to process ioctls related to DFS.
175  * @pdev: Pointer to DFS pdev object.
176  * @id: Command type.
177  * @indata: Input buffer.
178  * @insize: size of the input buffer.
179  * @outdata: A buffer for the results.
180  * @outsize: Size of the output buffer.
181  */
182 QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev,
183 	u_int id,
184 	void *indata,
185 	uint32_t insize,
186 	void *outdata,
187 	uint32_t *outsize,
188 	int *error);
189 
190 /**
191  * tgt_dfs_get_radars() - Based on the chipset, calls init radar table functions
192  * @pdev: Pointer to DFS pdev object.
193  *
194  * Wrapper function for dfs_get_radars(). This function called from
195  * outside of DFS component.
196  */
197 QDF_STATUS tgt_dfs_get_radars(struct wlan_objmgr_pdev *pdev);
198 
199 /**
200  * tgt_dfs_process_radar_ind() - Process radar found indication.
201  * @pdev: Pointer to DFS pdev object.
202  * @radar_found: radar found info.
203  *
204  * Process radar found indication.
205  *
206  * Return QDF_STATUS.
207  */
208 QDF_STATUS tgt_dfs_process_radar_ind(struct wlan_objmgr_pdev *pdev,
209 		struct radar_found_info *radar_found);
210 #else
211 static inline QDF_STATUS tgt_dfs_set_current_channel(
212 		struct wlan_objmgr_pdev *pdev,
213 		uint16_t dfs_ch_freq,
214 		uint64_t dfs_ch_flags,
215 		uint16_t dfs_ch_flagext,
216 		uint8_t dfs_ch_ieee,
217 		uint8_t dfs_ch_vhtop_ch_freq_seg1,
218 		uint8_t dfs_ch_vhtop_ch_freq_seg2)
219 {
220 	return QDF_STATUS_SUCCESS;
221 }
222 
223 static inline QDF_STATUS tgt_dfs_radar_enable(struct wlan_objmgr_pdev *pdev,
224 	int no_cac, uint32_t opmode)
225 {
226 	return QDF_STATUS_SUCCESS;
227 }
228 
229 static inline QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev,
230 	u_int id,
231 	void *indata,
232 	uint32_t insize,
233 	void *outdata,
234 	uint32_t *outsize,
235 	int *error)
236 {
237 	return QDF_STATUS_SUCCESS;
238 }
239 
240 static inline QDF_STATUS tgt_dfs_get_radars(struct wlan_objmgr_pdev *pdev)
241 {
242 	return QDF_STATUS_SUCCESS;
243 }
244 
245 static inline QDF_STATUS tgt_dfs_process_radar_ind(
246 		struct wlan_objmgr_pdev *pdev,
247 		struct radar_found_info *radar_found)
248 {
249 	return QDF_STATUS_SUCCESS;
250 }
251 #endif
252 
253 /**
254  * tgt_dfs_process_phyerr() - Process phyerr.
255  * @pdev: Pointer to DFS pdev object.
256  * @buf: Phyerr buffer.
257  * @datalen: phyerr buffer length.
258  * @r_rssi: RSSI.
259  * @r_ext_rssi: Extension channel RSSI.
260  * @r_rs_tstamp: Timestamp.
261  * @r_fulltsf: TSF64.
262  *
263  * Wrapper function for dfs_process_phyerr(). This function called from
264  * outside of DFS component.
265  */
266 QDF_STATUS tgt_dfs_process_phyerr(struct wlan_objmgr_pdev *pdev,
267 	void *buf,
268 	uint16_t datalen,
269 	uint8_t r_rssi,
270 	uint8_t r_ext_rssi,
271 	uint32_t r_rs_tstamp,
272 	uint64_t r_fulltsf);
273 
274 /**
275  * tgt_dfs_process_phyerr_filter_offload() - Process radar event.
276  * Wrapper function for dfs_process_phyerr_filter_offload(). This function
277  * called from outside of DFS component.
278  * @pdev: Pointer to DFS pdev object.
279  * @wlan_radar_event: pointer to radar_event_info.
280  *
281  * Return: QDF_STATUS
282  */
283 QDF_STATUS tgt_dfs_process_phyerr_filter_offload(struct wlan_objmgr_pdev *pdev,
284 	struct radar_event_info *wlan_radar_event);
285 
286 /**
287  * tgt_dfs_is_phyerr_filter_offload() - Is phyerr filter offload.
288  * @psoc: Pointer to psoc object.
289  * @is_phyerr_filter_offload: Pointer to is_phyerr_filter_offload.
290  *
291  * Return: QDF_STATUS
292  */
293 QDF_STATUS tgt_dfs_is_phyerr_filter_offload(struct wlan_objmgr_psoc *psoc,
294 					    bool *is_phyerr_filter_offload);
295 
296 /**
297  * tgt_dfs_destroy_object() - Destroys the DFS object.
298  * @pdev: Pointer to DFS pdev object.
299  *
300  * Wrapper function for  dfs_destroy_object(). This function called from
301  * outside of DFS component.
302  */
303 QDF_STATUS tgt_dfs_destroy_object(struct wlan_objmgr_pdev *pdev);
304 
305 #ifdef QCA_MCL_DFS_SUPPORT
306 /**
307  * tgt_dfs_set_tx_leakage_threshold() - set tx_leakage_threshold.
308  * @pdev: Pointer to DFS pdev object.
309  *
310  * Return QDF_STATUS.
311  */
312 QDF_STATUS tgt_dfs_set_tx_leakage_threshold(struct wlan_objmgr_pdev *pdev);
313 #else
314 static inline QDF_STATUS tgt_dfs_set_tx_leakage_threshold
315 		(struct wlan_objmgr_pdev *pdev)
316 {
317 	return QDF_STATUS_SUCCESS;
318 }
319 #endif
320 
321 /**
322  * tgt_dfs_is_precac_timer_running() - Check whether precac timer is running.
323  * @pdev: Pointer to DFS pdev object.
324  * @is_precac_timer_running: Pointer to save precac timer value.
325  *
326  * Wrapper function for dfs_is_precac_timer_running(). This function called from
327  * outside of DFS component.
328  */
329 QDF_STATUS tgt_dfs_is_precac_timer_running(struct wlan_objmgr_pdev *pdev,
330 	bool *is_precac_timer_running);
331 
332 /**
333  * tgt_dfs_set_agile_precac_state() - set state for Agile Precac.
334  *
335  * @pdev: Pointer to DFS pdev object.
336  * @agile_precac_state: Agile Precac state
337  *
338  * wrapper function for  dfs_set_agile_precac_state.
339  * This function called from outside of dfs component.
340  */
341 QDF_STATUS tgt_dfs_set_agile_precac_state(struct wlan_objmgr_pdev *pdev,
342 					  int agile_precac_state);
343 
344 /**
345  * tgt_dfs_agile_precac_start() - Start agile precac
346  *
347  * @pdev: Pointer to DFS pdev object.
348  *
349  * wrapper function for  dfs_set_agile_precac_state.
350  * This function called from outside of dfs component.
351  */
352 QDF_STATUS tgt_dfs_agile_precac_start(struct wlan_objmgr_pdev *pdev);
353 
354 /**
355  * tgt_dfs_ocac_complete() - Process off channel cac complete indication.
356  * @pdev: Pointer to DFS pdev object.
357  * @vdev_adfs_complete_status: Off channel CAC complete status.
358  *
359  * wrapper function for  dfs_set_agile_precac_state.
360  * This function called from outside of dfs component.
361  */
362 QDF_STATUS tgt_dfs_ocac_complete(struct wlan_objmgr_pdev *pdev,
363 				 struct vdev_adfs_complete_status *ocac_status);
364 
365 /**
366  * utils_dfs_find_vht80_chan_for_precac() - Find VHT80 channel for precac.
367  * @pdev: Pointer to DFS pdev object.
368  * @chan_mode: Channel mode.
369  * @ch_freq_seg1: Segment1 channel freq.
370  * @cfreq1: cfreq1.
371  * @cfreq2: cfreq2.
372  * @phy_mode: Precac phymode.
373  * @dfs_set_cfreq2: Precac cfreq2
374  * @set_agile: Agile mode flag.
375  *
376  * wrapper function for  dfs_find_vht80_chan_for_precacdfs_cancel_cac_timer().
377  * This function called from outside of dfs component.
378  */
379 #ifdef CONFIG_CHAN_NUM_API
380 QDF_STATUS tgt_dfs_find_vht80_chan_for_precac(struct wlan_objmgr_pdev *pdev,
381 		uint32_t chan_mode,
382 		uint8_t ch_freq_seg1,
383 		uint32_t *cfreq1,
384 		uint32_t *cfreq2,
385 		uint32_t *phy_mode,
386 		bool *dfs_set_cfreq2,
387 		bool *set_agile);
388 #endif
389 
390 /**
391  * tgt_dfs_find_vht80_precac_chan_freq() - Find VHT80 channel for precac
392  * @pdev: Pointer to DFS pdev object.
393  * @chan_mode: Channel mode.
394  * @ch_freq_seg1_mhz: Segment1 channel freq in MHZ.
395  * @cfreq1: cfreq1.
396  * @cfreq2: cfreq2.
397  * @phy_mode: Precac phymode.
398  * @dfs_set_cfreq2: Precac cfreq2
399  * @set_agile: Agile mode flag.
400  *
401  * wrapper function for  dfs_find_vht80_chan_for_precac_for_freq().
402  */
403 #ifdef CONFIG_CHAN_FREQ_API
404 QDF_STATUS
405 tgt_dfs_find_vht80_precac_chan_freq(struct wlan_objmgr_pdev *pdev,
406 				    uint32_t chan_mode,
407 				    uint16_t ch_freq_mhz_seg1,
408 				    uint32_t *cfreq1,
409 				    uint32_t *cfreq2,
410 				    uint32_t *phy_mode,
411 				    bool *dfs_set_cfreq2,
412 				    bool *set_agile);
413 #endif
414 
415 /**
416  * tgt_dfs_cac_complete() - Process cac complete indication.
417  * @pdev: Pointer to DFS pdev object.
418  * @vdev_id: vdev id.
419  *
420  * Process cac complete indication from firmware.
421  *
422  * Return QDF_STATUS.
423  */
424 QDF_STATUS tgt_dfs_cac_complete(struct wlan_objmgr_pdev *pdev,
425 		uint32_t vdev_id);
426 
427 /**
428  * tgt_dfs_reg_ev_handler() - Register dfs events.
429  * @psoc: Pointer to psoc.
430  *
431  * Register dfs events.
432  *
433  * Return: QDF_STATUS.
434  */
435 QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc);
436 
437 /**
438  * tgt_dfs_stop() - Clear dfs timers.
439  * @dfs: Pointer to wlan_dfs structure.
440  */
441 QDF_STATUS tgt_dfs_stop(struct wlan_objmgr_pdev *pdev);
442 
443 /**
444 * tgt_dfs_process_emulate_bang_radar_cmd() - Process to emulate dfs bangradar
445 *                                            command.
446 * @pdev: Pointer to DFS pdev object.
447 *
448 * Process  to emulate dfs bangradar command.
449 *
450 * Return: QDF_STATUS.
451 */
452 QDF_STATUS tgt_dfs_process_emulate_bang_radar_cmd(struct wlan_objmgr_pdev *pdev,
453 		struct dfs_emulate_bang_radar_test_cmd *dfs_unit_test);
454 
455 #ifdef QCA_MCL_DFS_SUPPORT
456 /**
457  * tgt_dfs_set_phyerr_filter_offload() - config phyerr filter offload
458  * @pdev: Pointer to DFS pdev object.
459  *
460  * Return: QDF_STATUS
461  */
462 QDF_STATUS tgt_dfs_set_phyerr_filter_offload(struct wlan_objmgr_pdev *pdev);
463 #else
464 static inline QDF_STATUS tgt_dfs_set_phyerr_filter_offload
465 	(struct wlan_objmgr_pdev *pdev)
466 {
467 	return QDF_STATUS_SUCCESS;
468 }
469 #endif
470 
471 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
472 /**
473  * tgt_dfs_send_avg_params_to_fw() - send average radar parameters to fw.
474  * @pdev: Pointer to DFS pdev object.
475  * @params: Pointer to dfs radar average parameters.
476  *
477  * Return: QDF_STATUS
478  */
479 QDF_STATUS
480 tgt_dfs_send_avg_params_to_fw(struct wlan_objmgr_pdev *pdev,
481 			      struct dfs_radar_found_params *params);
482 #endif
483 
484 /**
485  * tgt_dfs_action_on_status_from_fw() - trigger the action to be taken based on
486  * host dfs status received from fw.
487  * @pdev: Pointer to pdev object.
488  * @status: Pointer to the host dfs status received from fw.
489  *
490  * Return: QDF_STATUS
491  */
492 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
493 QDF_STATUS tgt_dfs_action_on_status_from_fw(struct wlan_objmgr_pdev *pdev,
494 					    uint32_t *status);
495 #else
496 static inline
497 QDF_STATUS tgt_dfs_action_on_status_from_fw(struct wlan_objmgr_pdev *pdev,
498 					    uint32_t *status)
499 {
500 	return QDF_STATUS_SUCCESS;
501 }
502 #endif
503 
504 /**
505  * tgt_dfs_is_radar_enabled() - checks if radar detection is enabled.
506  * @pdev: Pointer to pdev object.
507  * @ignore_dfs: Pointer to check the value. If 1, radar detection is disabled.
508  */
509 void tgt_dfs_is_radar_enabled(struct wlan_objmgr_pdev *pdev, int *ignore_dfs);
510 
511 /**
512  * tgt_dfs_reset_spoof_test() - reset the dfs spoof check variables
513  * @pdev: Pointer to pdev object.
514  *
515  * Return: QDF_STATUS
516  */
517 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
518 QDF_STATUS tgt_dfs_reset_spoof_test(struct wlan_objmgr_pdev *pdev);
519 #else
520 static inline
521 QDF_STATUS tgt_dfs_reset_spoof_test(struct wlan_objmgr_pdev *pdev)
522 {
523 	return QDF_STATUS_SUCCESS;
524 }
525 #endif
526 
527 /**
528  * tgt_dfs_enable_stadfs() - Enable/Disable STADFS capability.
529  * @pdev: Pointer to DFS pdev object.
530  * @val: input value.
531  */
532 void tgt_dfs_enable_stadfs(struct wlan_objmgr_pdev *pdev, bool val);
533 
534 /**
535  * tgt_dfs_is_stadfs_enabled() - Get STADFS capability
536  * @pdev: Pointer to DFS pdev object.
537  *
538  * Return: true if STADFS is enabled, else false.
539  */
540 bool tgt_dfs_is_stadfs_enabled(struct wlan_objmgr_pdev *pdev);
541 
542 /**
543  * tgt_dfs_is_pdev_5ghz() - Check if the input pdev is 5GHZ.
544  * @pdev: Pointer to DFS pdev object.
545  *
546  * Return: true if the pdev supports 5GHz, else false.
547  */
548 bool tgt_dfs_is_pdev_5ghz(struct wlan_objmgr_pdev *pdev);
549 
550 #if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD)
551 /**
552  * tgt_dfs_send_usenol_pdev_param() - Send usenol pdev param to FW.
553  * @pdev: Pointer to pdev object.
554  * @usenol: Value of usenol
555  *
556  * Return: QDF_STATUS
557  */
558 QDF_STATUS tgt_dfs_send_usenol_pdev_param(struct wlan_objmgr_pdev *pdev,
559 					  bool usenol);
560 
561 /**
562  * tgt_dfs_send_subchan_marking() - Send subchannel marking pdev param to FW.
563  * @pdev: Pointer to pdev object.
564  * @subchanmark: Value of subchannel_marking.
565  *
566  * Return: QDF_STATUS
567  */
568 QDF_STATUS tgt_dfs_send_subchan_marking(struct wlan_objmgr_pdev *pdev,
569 					bool subchanmark);
570 #else
571 static inline
572 QDF_STATUS tgt_dfs_send_usenol_pdev_param(struct wlan_objmgr_pdev *pdev,
573 					  bool usenol)
574 {
575 	return QDF_STATUS_SUCCESS;
576 }
577 
578 static inline QDF_STATUS
579 tgt_dfs_send_subchan_marking(struct wlan_objmgr_pdev *pdev, bool subchanmark)
580 {
581 	return QDF_STATUS_SUCCESS;
582 }
583 #endif
584 #ifdef QCA_SUPPORT_AGILE_DFS
585 /**
586  * tgt_dfs_set_fw_adfs_support() - Set FW aDFS support in dfs object.
587  * @pdev: Pointer to pdev object.
588  * @fw_adfs_support_160: aDFS enabled when pdev is on 160/80P80MHz.
589  * @fw_adfs_support_non_160: aDFS enabled when pdev is on 20/40/80MHz.
590  *
591  * Return: void.
592  */
593 void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
594 				 bool fw_adfs_support_160,
595 				 bool fw_adfs_support_non_160);
596 #else
597 static inline
598 void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
599 				 bool fw_adfs_support_160,
600 				 bool fw_adfs_support_non_160)
601 {
602 }
603 #endif
604 #endif /* _WLAN_DFS_TGT_API_H_ */
605