xref: /wlan-dirver/qca-wifi-host-cmn/target_if/mlme/vdev_mgr/inc/target_if_vdev_mgr_rx_ops.h (revision 11f5a63a6cbdda84849a730de22f0a71e635d58c)
1 /*
2  * Copyright (c) 2019 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 /**
20  * DOC: target_if_vdev_mgr_rx_ops.h
21  *
22  * This file provides declarations for APIs registered for wmi events
23  */
24 
25 #ifndef __TARGET_IF_VDEV_MGR_RX_OPS_H__
26 #define __TARGET_IF_VDEV_MGR_RX_OPS_H__
27 
28 #include <wmi_unified_param.h>
29 #include <wlan_objmgr_psoc_obj.h>
30 #include <wlan_lmac_if_def.h>
31 #include <qdf_platform.h>
32 
33 /**
34  * target_if_vdev_mgr_is_panic_allowed: API to get if panic is allowed on
35  * timeout
36  *
37  * Return: TRUE or FALSE when VDEV_ASSERT_MANAGEMENT is disabled else FALSE
38  */
39 #ifdef VDEV_ASSERT_MANAGEMENT
40 static inline bool target_if_vdev_mgr_is_panic_allowed(void)
41 {
42 	return false;
43 }
44 #else
45 static inline bool target_if_vdev_mgr_is_panic_allowed(void)
46 {
47 	if (qdf_is_recovering() || qdf_is_fw_down())
48 		return false;
49 
50 	return true;
51 }
52 #endif
53 
54 /**
55  * target_if_timer_flush_handler() - API to handle target_if timer flush
56  * request
57  * @pdev: pointer to pdev object
58  * @object: pointer to vdev object
59  * @arg: pointer to arguments passed
60  *
61  * This is a target_if timer flush handler used to flush target_if response
62  * timer. This API used while wlan driver shut down.
63  *
64  * Return: none
65  */
66 void target_if_timer_flush_handler(struct wlan_objmgr_pdev *pdev,
67 				   void *object,
68 				   void *arg);
69 
70 /**
71  * target_if_flush_vdev_timers() - API to flush target_if response timers
72  * for vdev
73  * @pdev: pointer to pdev object
74  *
75  * This API is used to flush target_if response timer. This API used while
76  * wlan driver shut down.
77  *
78  * Return: none
79  */
80 void target_if_flush_vdev_timers(struct wlan_objmgr_pdev *pdev);
81 
82 /**
83  * target_if_vdev_mgr_delete_response_handler() - API to handle vdev delete
84  * response
85  * @scn: pointer to scan object
86  * @data: pointer to data
87  * @datalen: length of data
88  *
89  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
90  */
91 int target_if_vdev_mgr_delete_response_handler(ol_scn_t scn,
92 					       uint8_t *data,
93 					       uint32_t datalen);
94 
95 /**
96  * target_if_vdev_mgr_stop_response_handler() - API to handle vdev stop
97  * response
98  * @scn: pointer to scan object
99  * @data: pointer to data
100  * @datalen: length of data
101  *
102  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
103  */
104 int target_if_vdev_mgr_stop_response_handler(ol_scn_t scn,
105 					     uint8_t *data,
106 					     uint32_t datalen);
107 
108 /**
109  * target_if_vdev_mgr_start_response_handler() - API to handle vdev stop
110  * response
111  * @scn: pointer to scan object
112  * @data: pointer to data
113  * @datalen: length of data
114  *
115  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
116  */
117 int target_if_vdev_mgr_start_response_handler(ol_scn_t scn,
118 					      uint8_t *data,
119 					      uint32_t datalen);
120 
121 /**
122  * target_if_vdev_mgr_offload_bcn_tx_status_handler() - API to handle beacon
123  * tx status event
124  * @scn: pointer to scan object
125  * @data: pointer to data
126  * @datalen: length of data
127  *
128  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
129  */
130 int target_if_vdev_mgr_offload_bcn_tx_status_handler(ol_scn_t scn,
131 						     uint8_t *data,
132 						     uint32_t datalen);
133 
134 /**
135  * target_if_vdev_mgr_tbttoffset_update_handler() - API to handle tbtt offset
136  * update event
137  * @scn: pointer to scan object
138  * @data: pointer to data
139  * @datalen: length of data
140  *
141  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
142  */
143 int target_if_vdev_mgr_tbttoffset_update_handler(ol_scn_t scn,
144 						 uint8_t *data,
145 						 uint32_t datalen);
146 
147 /**
148  * target_if_vdev_mgr_ext_tbttoffset_update_handler() - API to handle ext tbtt
149  * offset update event
150  * @scn: pointer to scan object
151  * @data: pointer to data
152  * @datalen: length of data
153  *
154  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
155  */
156 int target_if_vdev_mgr_ext_tbttoffset_update_handler(ol_scn_t scn,
157 						     uint8_t *data,
158 						     uint32_t datalen);
159 
160 /**
161  * target_if_vdev_mgr_is_panic_on_bug: API to get panic on bug
162  *
163  * Return: TRUE or FALSE
164  */
165 static inline bool target_if_vdev_mgr_is_panic_on_bug(void)
166 {
167 #ifdef PANIC_ON_BUG
168 	return true;
169 #else
170 	return false;
171 #endif
172 }
173 
174 /**
175  * target_if_vdev_mgr_get_rx_ops() - get rx ops
176  * @psoc: pointer to psoc object
177  *
178  * Return: pointer to rx ops
179  */
180 static inline struct wlan_lmac_if_mlme_rx_ops *
181 target_if_vdev_mgr_get_rx_ops(struct wlan_objmgr_psoc *psoc)
182 {
183 	return &psoc->soc_cb.rx_ops.mops;
184 }
185 
186 /**
187  * target_if_vdev_mgr_rsp_timer_mgmt_cb() - function to handle response timer
188  * @arg: pointer to argument
189  *
190  * Callback timer triggered when response timer expires which pass
191  * vdev as argument
192  *
193  * Return: status of operation.
194  */
195 void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg);
196 
197 /**
198  * target_if_vdev_mgr_wmi_event_register() - function to handle register
199  * events from WMI
200  * @psoc: pointer to psoc object
201  *
202  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
203  */
204 QDF_STATUS target_if_vdev_mgr_wmi_event_register(
205 					struct wlan_objmgr_psoc *psoc);
206 
207 /**
208  * target_if_vdev_mgr_wmi_event_unregister() - function to handle unregister
209  * events from WMI
210  * @psoc: pointer to psoc object
211  *
212  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
213  */
214 QDF_STATUS target_if_vdev_mgr_wmi_event_unregister(
215 					struct wlan_objmgr_psoc *psoc);
216 
217 #endif /* __TARGET_IF_VDEV_MGR_RX_OPS_H__ */
218