1 /*
2  * Copyright (c) 2017-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: target_if_dfs_full_offload.h
22  * This file contains dfs target interface for full-offload.
23  */
24 
25 #ifndef _TARGET_IF_DFS_FULL_OFFLOAD_H_
26 #define _TARGET_IF_DFS_FULL_OFFLOAD_H_
27 
28 /**
29  * target_if_dfs_reg_offload_events() - registers dfs events for full offload.
30  * @psoc: Pointer to psoc object.
31  *
32  * Return: QDF_STATUS
33  */
34 #if defined(WLAN_DFS_FULL_OFFLOAD)
35 QDF_STATUS target_if_dfs_reg_offload_events(struct wlan_objmgr_psoc *psoc);
36 #else
37 static QDF_STATUS
target_if_dfs_reg_offload_events(struct wlan_objmgr_psoc * psoc)38 target_if_dfs_reg_offload_events(struct wlan_objmgr_psoc *psoc)
39 {
40 	return QDF_STATUS_SUCCESS;
41 }
42 #endif
43 
44 /**
45  * target_process_bang_radar_cmd() - fill unit test args and send bangradar
46  * command to firmware.
47  * @pdev: Pointer to DFS pdev object.
48  * @dfs_unit_test: Pointer to dfs_unit_test structure.
49  *
50  * Return: QDF_STATUS
51  */
52 #if defined(WLAN_DFS_FULL_OFFLOAD)
53 QDF_STATUS target_process_bang_radar_cmd(struct wlan_objmgr_pdev *pdev,
54 		struct dfs_emulate_bang_radar_test_cmd *dfs_unit_test);
55 #else
target_process_bang_radar_cmd(struct wlan_objmgr_pdev * pdev,struct dfs_emulate_bang_radar_test_cmd * dfs_unit_test)56 static QDF_STATUS target_process_bang_radar_cmd(struct wlan_objmgr_pdev *pdev,
57 		struct dfs_emulate_bang_radar_test_cmd *dfs_unit_test)
58 {
59 	return QDF_STATUS_SUCCESS;
60 }
61 #endif
62 
63 #if defined(QCA_SUPPORT_AGILE_DFS)
64 /**
65  * target_send_ocac_abort_cmd() - Send off channel CAC abort to target for
66  * to cancel current offchannel CAC
67  * @pdev: Pointer to DFS pdev object.
68  *
69  * Return: QDF_STATUS
70  */
71 QDF_STATUS target_send_ocac_abort_cmd(struct wlan_objmgr_pdev *pdev);
72 /**
73  * target_send_agile_ch_cfg_cmd() - Send agile channel parameters to target for
74  * off channel precac.
75  * @pdev: Pointer to DFS pdev object.
76  * @adfs_param: Agile-DFS CAC parameters.
77  *
78  * Return: QDF_STATUS
79  */
80 QDF_STATUS
81 target_send_agile_ch_cfg_cmd(struct wlan_objmgr_pdev *pdev,
82 			     struct dfs_agile_cac_params *adfs_param);
83 #else
84 static inline QDF_STATUS
target_send_ocac_abort_cmd(struct wlan_objmgr_pdev * pdev)85 target_send_ocac_abort_cmd(struct wlan_objmgr_pdev *pdev)
86 {
87 	return QDF_STATUS_SUCCESS;
88 }
89 
90 static inline QDF_STATUS
target_send_agile_ch_cfg_cmd(struct wlan_objmgr_pdev * pdev,struct dfs_agile_cac_params * adfs_param)91 target_send_agile_ch_cfg_cmd(struct wlan_objmgr_pdev *pdev,
92 			     struct dfs_agile_cac_params *adfs_param)
93 {
94 	return QDF_STATUS_SUCCESS;
95 }
96 #endif
97 
98 #if defined(WLAN_DFS_FULL_OFFLOAD) && defined(QCA_DFS_NOL_OFFLOAD)
99 /**
100  * target_send_usenol_pdev_param - send usenol pdev param to FW.
101  * @pdev: Pointer to pdev object.
102  * @usenol: Value of user configured usenol.
103  *
104  * Return: QDF_STATUS
105  */
106 QDF_STATUS target_send_usenol_pdev_param(struct wlan_objmgr_pdev *pdev,
107 					 bool usenol);
108 
109 /**
110  * target_send_subchan_marking_pdev_param - Send subchannel marking
111  * pdev param to FW.
112  * @pdev: Pointer to pdev object.
113  * @subchanmark: Value of user configured subchannel_marking.
114  *
115  * Return: QDF_STATUS
116  */
117 QDF_STATUS
118 target_send_subchan_marking_pdev_param(struct wlan_objmgr_pdev *pdev,
119 				       bool subchanmark);
120 
121 #else
122 static inline QDF_STATUS
target_send_usenol_pdev_param(struct wlan_objmgr_pdev * pdev,bool usenol)123 target_send_usenol_pdev_param(struct wlan_objmgr_pdev *pdev,
124 			      bool usenol)
125 {
126 	return QDF_STATUS_SUCCESS;
127 }
128 
129 static inline QDF_STATUS
target_send_subchan_marking_pdev_param(struct wlan_objmgr_pdev * pdev,bool subchanmark)130 target_send_subchan_marking_pdev_param(struct wlan_objmgr_pdev *pdev,
131 				       bool subchanmark)
132 {
133 	return QDF_STATUS_SUCCESS;
134 }
135 #endif
136 #endif /* _TARGET_IF_DFS_FULL_OFFLOAD_H_ */
137 
138