xref: /wlan-dirver/qca-wifi-host-cmn/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h (revision 503663c6daafffe652fa360bde17243568cd6d2a)
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  * @enable: disable/enable radar
167  *
168  * This is called each time a channel change occurs, to (potentially) enable
169  * the radar code.
170  */
171 QDF_STATUS tgt_dfs_radar_enable(
172 	struct wlan_objmgr_pdev *pdev,
173 	int no_cac, uint32_t opmode, bool enable);
174 
175 /**
176  * tgt_dfs_control()- Used to process ioctls related to DFS.
177  * @pdev: Pointer to DFS pdev object.
178  * @id: Command type.
179  * @indata: Input buffer.
180  * @insize: size of the input buffer.
181  * @outdata: A buffer for the results.
182  * @outsize: Size of the output buffer.
183  */
184 QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev,
185 	u_int id,
186 	void *indata,
187 	uint32_t insize,
188 	void *outdata,
189 	uint32_t *outsize,
190 	int *error);
191 
192 /**
193  * tgt_dfs_get_radars() - Based on the chipset, calls init radar table functions
194  * @pdev: Pointer to DFS pdev object.
195  *
196  * Wrapper function for dfs_get_radars(). This function called from
197  * outside of DFS component.
198  */
199 QDF_STATUS tgt_dfs_get_radars(struct wlan_objmgr_pdev *pdev);
200 
201 /**
202  * tgt_dfs_process_radar_ind() - Process radar found indication.
203  * @pdev: Pointer to DFS pdev object.
204  * @radar_found: radar found info.
205  *
206  * Process radar found indication.
207  *
208  * Return QDF_STATUS.
209  */
210 QDF_STATUS tgt_dfs_process_radar_ind(struct wlan_objmgr_pdev *pdev,
211 		struct radar_found_info *radar_found);
212 #else
213 static inline QDF_STATUS tgt_dfs_set_current_channel(
214 		struct wlan_objmgr_pdev *pdev,
215 		uint16_t dfs_ch_freq,
216 		uint64_t dfs_ch_flags,
217 		uint16_t dfs_ch_flagext,
218 		uint8_t dfs_ch_ieee,
219 		uint8_t dfs_ch_vhtop_ch_freq_seg1,
220 		uint8_t dfs_ch_vhtop_ch_freq_seg2)
221 {
222 	return QDF_STATUS_SUCCESS;
223 }
224 
225 static inline QDF_STATUS tgt_dfs_radar_enable(
226 	struct wlan_objmgr_pdev *pdev,
227 	int no_cac, uint32_t opmode, bool enable)
228 {
229 	return QDF_STATUS_SUCCESS;
230 }
231 
232 static inline QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev,
233 	u_int id,
234 	void *indata,
235 	uint32_t insize,
236 	void *outdata,
237 	uint32_t *outsize,
238 	int *error)
239 {
240 	return QDF_STATUS_SUCCESS;
241 }
242 
243 static inline QDF_STATUS tgt_dfs_get_radars(struct wlan_objmgr_pdev *pdev)
244 {
245 	return QDF_STATUS_SUCCESS;
246 }
247 
248 static inline QDF_STATUS tgt_dfs_process_radar_ind(
249 		struct wlan_objmgr_pdev *pdev,
250 		struct radar_found_info *radar_found)
251 {
252 	return QDF_STATUS_SUCCESS;
253 }
254 #endif
255 
256 /**
257  * tgt_dfs_process_phyerr() - Process phyerr.
258  * @pdev: Pointer to DFS pdev object.
259  * @buf: Phyerr buffer.
260  * @datalen: phyerr buffer length.
261  * @r_rssi: RSSI.
262  * @r_ext_rssi: Extension channel RSSI.
263  * @r_rs_tstamp: Timestamp.
264  * @r_fulltsf: TSF64.
265  *
266  * Wrapper function for dfs_process_phyerr(). This function called from
267  * outside of DFS component.
268  */
269 QDF_STATUS tgt_dfs_process_phyerr(struct wlan_objmgr_pdev *pdev,
270 	void *buf,
271 	uint16_t datalen,
272 	uint8_t r_rssi,
273 	uint8_t r_ext_rssi,
274 	uint32_t r_rs_tstamp,
275 	uint64_t r_fulltsf);
276 
277 /**
278  * tgt_dfs_process_phyerr_filter_offload() - Process radar event.
279  * Wrapper function for dfs_process_phyerr_filter_offload(). This function
280  * called from outside of DFS component.
281  * @pdev: Pointer to DFS pdev object.
282  * @wlan_radar_event: pointer to radar_event_info.
283  *
284  * Return: QDF_STATUS
285  */
286 QDF_STATUS tgt_dfs_process_phyerr_filter_offload(struct wlan_objmgr_pdev *pdev,
287 	struct radar_event_info *wlan_radar_event);
288 
289 /**
290  * tgt_dfs_is_phyerr_filter_offload() - Is phyerr filter offload.
291  * @psoc: Pointer to psoc object.
292  * @is_phyerr_filter_offload: Pointer to is_phyerr_filter_offload.
293  *
294  * Return: QDF_STATUS
295  */
296 QDF_STATUS tgt_dfs_is_phyerr_filter_offload(struct wlan_objmgr_psoc *psoc,
297 					    bool *is_phyerr_filter_offload);
298 
299 /**
300  * tgt_dfs_destroy_object() - Destroys the DFS object.
301  * @pdev: Pointer to DFS pdev object.
302  *
303  * Wrapper function for  dfs_destroy_object(). This function called from
304  * outside of DFS component.
305  */
306 QDF_STATUS tgt_dfs_destroy_object(struct wlan_objmgr_pdev *pdev);
307 
308 #ifdef QCA_MCL_DFS_SUPPORT
309 /**
310  * tgt_dfs_set_tx_leakage_threshold() - set tx_leakage_threshold.
311  * @pdev: Pointer to DFS pdev object.
312  *
313  * Return QDF_STATUS.
314  */
315 QDF_STATUS tgt_dfs_set_tx_leakage_threshold(struct wlan_objmgr_pdev *pdev);
316 #else
317 static inline QDF_STATUS tgt_dfs_set_tx_leakage_threshold
318 		(struct wlan_objmgr_pdev *pdev)
319 {
320 	return QDF_STATUS_SUCCESS;
321 }
322 #endif
323 
324 /**
325  * tgt_dfs_is_precac_timer_running() - Check whether precac timer is running.
326  * @pdev: Pointer to DFS pdev object.
327  * @is_precac_timer_running: Pointer to save precac timer value.
328  *
329  * Wrapper function for dfs_is_precac_timer_running(). This function called from
330  * outside of DFS component.
331  */
332 QDF_STATUS tgt_dfs_is_precac_timer_running(struct wlan_objmgr_pdev *pdev,
333 	bool *is_precac_timer_running);
334 
335 /**
336  * tgt_dfs_set_agile_precac_state() - set state for Agile Precac.
337  *
338  * @pdev: Pointer to DFS pdev object.
339  * @agile_precac_state: Agile Precac state
340  *
341  * wrapper function for  dfs_set_agile_precac_state.
342  * This function called from outside of dfs component.
343  */
344 QDF_STATUS tgt_dfs_set_agile_precac_state(struct wlan_objmgr_pdev *pdev,
345 					  int agile_precac_state);
346 
347 /**
348  * tgt_dfs_agile_precac_start() - Start agile precac
349  *
350  * @pdev: Pointer to DFS pdev object.
351  *
352  * wrapper function for  dfs_set_agile_precac_state.
353  * This function called from outside of dfs component.
354  */
355 QDF_STATUS tgt_dfs_agile_precac_start(struct wlan_objmgr_pdev *pdev);
356 
357 /**
358  * tgt_dfs_ocac_complete() - Process off channel cac complete indication.
359  * @pdev: Pointer to DFS pdev object.
360  * @vdev_adfs_complete_status: Off channel CAC complete status.
361  *
362  * wrapper function for  dfs_set_agile_precac_state.
363  * This function called from outside of dfs component.
364  */
365 QDF_STATUS tgt_dfs_ocac_complete(struct wlan_objmgr_pdev *pdev,
366 				 struct vdev_adfs_complete_status *ocac_status);
367 
368 /**
369  * utils_dfs_find_vht80_chan_for_precac() - Find VHT80 channel for precac.
370  * @pdev: Pointer to DFS pdev object.
371  * @chan_mode: Channel mode.
372  * @ch_freq_seg1: Segment1 channel freq.
373  * @cfreq1: cfreq1.
374  * @cfreq2: cfreq2.
375  * @phy_mode: Precac phymode.
376  * @dfs_set_cfreq2: Precac cfreq2
377  * @set_agile: Agile mode flag.
378  *
379  * wrapper function for  dfs_find_vht80_chan_for_precacdfs_cancel_cac_timer().
380  * This function called from outside of dfs component.
381  */
382 #ifdef CONFIG_CHAN_NUM_API
383 QDF_STATUS tgt_dfs_find_vht80_chan_for_precac(struct wlan_objmgr_pdev *pdev,
384 		uint32_t chan_mode,
385 		uint8_t ch_freq_seg1,
386 		uint32_t *cfreq1,
387 		uint32_t *cfreq2,
388 		uint32_t *phy_mode,
389 		bool *dfs_set_cfreq2,
390 		bool *set_agile);
391 #endif
392 
393 /**
394  * tgt_dfs_find_vht80_precac_chan_freq() - Find VHT80 channel for precac
395  * @pdev: Pointer to DFS pdev object.
396  * @chan_mode: Channel mode.
397  * @ch_freq_seg1_mhz: Segment1 channel freq in MHZ.
398  * @cfreq1: cfreq1.
399  * @cfreq2: cfreq2.
400  * @phy_mode: Precac phymode.
401  * @dfs_set_cfreq2: Precac cfreq2
402  * @set_agile: Agile mode flag.
403  *
404  * wrapper function for  dfs_find_vht80_chan_for_precac_for_freq().
405  */
406 #ifdef CONFIG_CHAN_FREQ_API
407 QDF_STATUS
408 tgt_dfs_find_vht80_precac_chan_freq(struct wlan_objmgr_pdev *pdev,
409 				    uint32_t chan_mode,
410 				    uint16_t ch_freq_mhz_seg1,
411 				    uint32_t *cfreq1,
412 				    uint32_t *cfreq2,
413 				    uint32_t *phy_mode,
414 				    bool *dfs_set_cfreq2,
415 				    bool *set_agile);
416 #endif
417 
418 /**
419  * tgt_dfs_cac_complete() - Process cac complete indication.
420  * @pdev: Pointer to DFS pdev object.
421  * @vdev_id: vdev id.
422  *
423  * Process cac complete indication from firmware.
424  *
425  * Return QDF_STATUS.
426  */
427 QDF_STATUS tgt_dfs_cac_complete(struct wlan_objmgr_pdev *pdev,
428 		uint32_t vdev_id);
429 
430 /**
431  * tgt_dfs_reg_ev_handler() - Register dfs events.
432  * @psoc: Pointer to psoc.
433  *
434  * Register dfs events.
435  *
436  * Return: QDF_STATUS.
437  */
438 QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc);
439 
440 /**
441  * tgt_dfs_stop() - Clear dfs timers.
442  * @dfs: Pointer to wlan_dfs structure.
443  */
444 QDF_STATUS tgt_dfs_stop(struct wlan_objmgr_pdev *pdev);
445 
446 /**
447 * tgt_dfs_process_emulate_bang_radar_cmd() - Process to emulate dfs bangradar
448 *                                            command.
449 * @pdev: Pointer to DFS pdev object.
450 *
451 * Process  to emulate dfs bangradar command.
452 *
453 * Return: QDF_STATUS.
454 */
455 QDF_STATUS tgt_dfs_process_emulate_bang_radar_cmd(struct wlan_objmgr_pdev *pdev,
456 		struct dfs_emulate_bang_radar_test_cmd *dfs_unit_test);
457 
458 #ifdef QCA_MCL_DFS_SUPPORT
459 /**
460  * tgt_dfs_set_phyerr_filter_offload() - config phyerr filter offload
461  * @pdev: Pointer to DFS pdev object.
462  *
463  * Return: QDF_STATUS
464  */
465 QDF_STATUS tgt_dfs_set_phyerr_filter_offload(struct wlan_objmgr_pdev *pdev);
466 #else
467 static inline QDF_STATUS tgt_dfs_set_phyerr_filter_offload
468 	(struct wlan_objmgr_pdev *pdev)
469 {
470 	return QDF_STATUS_SUCCESS;
471 }
472 #endif
473 
474 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
475 /**
476  * tgt_dfs_send_avg_params_to_fw() - send average radar parameters to fw.
477  * @pdev: Pointer to DFS pdev object.
478  * @params: Pointer to dfs radar average parameters.
479  *
480  * Return: QDF_STATUS
481  */
482 QDF_STATUS
483 tgt_dfs_send_avg_params_to_fw(struct wlan_objmgr_pdev *pdev,
484 			      struct dfs_radar_found_params *params);
485 #endif
486 
487 /**
488  * tgt_dfs_action_on_status_from_fw() - trigger the action to be taken based on
489  * host dfs status received from fw.
490  * @pdev: Pointer to pdev object.
491  * @status: Pointer to the host dfs status received from fw.
492  *
493  * Return: QDF_STATUS
494  */
495 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
496 QDF_STATUS tgt_dfs_action_on_status_from_fw(struct wlan_objmgr_pdev *pdev,
497 					    uint32_t *status);
498 #else
499 static inline
500 QDF_STATUS tgt_dfs_action_on_status_from_fw(struct wlan_objmgr_pdev *pdev,
501 					    uint32_t *status)
502 {
503 	return QDF_STATUS_SUCCESS;
504 }
505 #endif
506 
507 /**
508  * tgt_dfs_is_radar_enabled() - checks if radar detection is enabled.
509  * @pdev: Pointer to pdev object.
510  * @ignore_dfs: Pointer to check the value. If 1, radar detection is disabled.
511  */
512 void tgt_dfs_is_radar_enabled(struct wlan_objmgr_pdev *pdev, int *ignore_dfs);
513 
514 /**
515  * tgt_dfs_reset_spoof_test() - reset the dfs spoof check variables
516  * @pdev: Pointer to pdev object.
517  *
518  * Return: QDF_STATUS
519  */
520 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
521 QDF_STATUS tgt_dfs_reset_spoof_test(struct wlan_objmgr_pdev *pdev);
522 #else
523 static inline
524 QDF_STATUS tgt_dfs_reset_spoof_test(struct wlan_objmgr_pdev *pdev)
525 {
526 	return QDF_STATUS_SUCCESS;
527 }
528 #endif
529 
530 /**
531  * tgt_dfs_enable_stadfs() - Enable/Disable STADFS capability.
532  * @pdev: Pointer to DFS pdev object.
533  * @val: input value.
534  */
535 void tgt_dfs_enable_stadfs(struct wlan_objmgr_pdev *pdev, bool val);
536 
537 /**
538  * tgt_dfs_is_stadfs_enabled() - Get STADFS capability
539  * @pdev: Pointer to DFS pdev object.
540  *
541  * Return: true if STADFS is enabled, else false.
542  */
543 bool tgt_dfs_is_stadfs_enabled(struct wlan_objmgr_pdev *pdev);
544 
545 /**
546  * tgt_dfs_is_pdev_5ghz() - Check if the input pdev is 5GHZ.
547  * @pdev: Pointer to DFS pdev object.
548  *
549  * Return: true if the pdev supports 5GHz, else false.
550  */
551 bool tgt_dfs_is_pdev_5ghz(struct wlan_objmgr_pdev *pdev);
552 
553 #if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD)
554 /**
555  * tgt_dfs_send_usenol_pdev_param() - Send usenol pdev param to FW.
556  * @pdev: Pointer to pdev object.
557  * @usenol: Value of usenol
558  *
559  * Return: QDF_STATUS
560  */
561 QDF_STATUS tgt_dfs_send_usenol_pdev_param(struct wlan_objmgr_pdev *pdev,
562 					  bool usenol);
563 
564 /**
565  * tgt_dfs_send_subchan_marking() - Send subchannel marking pdev param to FW.
566  * @pdev: Pointer to pdev object.
567  * @subchanmark: Value of subchannel_marking.
568  *
569  * Return: QDF_STATUS
570  */
571 QDF_STATUS tgt_dfs_send_subchan_marking(struct wlan_objmgr_pdev *pdev,
572 					bool subchanmark);
573 #else
574 static inline
575 QDF_STATUS tgt_dfs_send_usenol_pdev_param(struct wlan_objmgr_pdev *pdev,
576 					  bool usenol)
577 {
578 	return QDF_STATUS_SUCCESS;
579 }
580 
581 static inline QDF_STATUS
582 tgt_dfs_send_subchan_marking(struct wlan_objmgr_pdev *pdev, bool subchanmark)
583 {
584 	return QDF_STATUS_SUCCESS;
585 }
586 #endif
587 #ifdef QCA_SUPPORT_AGILE_DFS
588 /**
589  * tgt_dfs_set_fw_adfs_support() - Set FW aDFS support in dfs object.
590  * @pdev: Pointer to pdev object.
591  * @fw_adfs_support_160: aDFS enabled when pdev is on 160/80P80MHz.
592  * @fw_adfs_support_non_160: aDFS enabled when pdev is on 20/40/80MHz.
593  *
594  * Return: void.
595  */
596 void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
597 				 bool fw_adfs_support_160,
598 				 bool fw_adfs_support_non_160);
599 #else
600 static inline
601 void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
602 				 bool fw_adfs_support_160,
603 				 bool fw_adfs_support_non_160)
604 {
605 }
606 #endif
607 #endif /* _WLAN_DFS_TGT_API_H_ */
608