xref: /wlan-dirver/qca-wifi-host-cmn/target_if/mlme/vdev_mgr/inc/target_if_vdev_mgr_rx_ops.h (revision 6d768494e5ce14eb1603a695c86739d12ecc6ec2)
1 /*
2  * Copyright (c) 2019-2020 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 /**
56  * target_if_vdev_mgr_offload_bcn_tx_status_handler() - API to handle beacon
57  * tx status event
58  * @scn: pointer to scan object
59  * @data: pointer to data
60  * @datalen: length of data
61  *
62  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
63  */
64 int target_if_vdev_mgr_offload_bcn_tx_status_handler(ol_scn_t scn,
65 						     uint8_t *data,
66 						     uint32_t datalen);
67 
68 /**
69  * target_if_vdev_mgr_tbttoffset_update_handler() - API to handle tbtt offset
70  * update event
71  * @scn: pointer to scan object
72  * @data: pointer to data
73  * @datalen: length of data
74  *
75  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
76  */
77 int target_if_vdev_mgr_tbttoffset_update_handler(ol_scn_t scn,
78 						 uint8_t *data,
79 						 uint32_t datalen);
80 
81 /**
82  * target_if_vdev_mgr_ext_tbttoffset_update_handler() - API to handle ext tbtt
83  * offset update event
84  * @scn: pointer to scan object
85  * @data: pointer to data
86  * @datalen: length of data
87  *
88  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
89  */
90 int target_if_vdev_mgr_ext_tbttoffset_update_handler(ol_scn_t scn,
91 						     uint8_t *data,
92 						     uint32_t datalen);
93 
94 /**
95  * target_if_vdev_mgr_is_panic_on_bug: API to get panic on bug
96  *
97  * Return: TRUE or FALSE
98  */
99 static inline bool target_if_vdev_mgr_is_panic_on_bug(void)
100 {
101 #ifdef PANIC_ON_BUG
102 	return true;
103 #else
104 	return false;
105 #endif
106 }
107 
108 /**
109  * target_if_vdev_mgr_get_rx_ops() - get rx ops
110  * @psoc: pointer to psoc object
111  *
112  * Return: pointer to rx ops
113  */
114 static inline struct wlan_lmac_if_mlme_rx_ops *
115 target_if_vdev_mgr_get_rx_ops(struct wlan_objmgr_psoc *psoc)
116 {
117 	struct wlan_lmac_if_rx_ops *rx_ops;
118 
119 	rx_ops = wlan_psoc_get_lmac_if_rxops(psoc);
120 	if (!rx_ops) {
121 		qdf_err("rx_ops is NULL");
122 		return NULL;
123 	}
124 
125 	return &rx_ops->mops;
126 }
127 
128 /**
129  * target_if_vdev_mgr_rsp_timer_mgmt_cb() - function to handle response timer
130  * @arg: pointer to argument
131  *
132  * Callback timer triggered when response timer expires which pass
133  * vdev as argument
134  *
135  * Return: status of operation.
136  */
137 void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg);
138 
139 /**
140  * target_if_vdev_mgr_wmi_event_register() - function to handle register
141  * events from WMI
142  * @psoc: pointer to psoc object
143  *
144  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
145  */
146 QDF_STATUS target_if_vdev_mgr_wmi_event_register(
147 					struct wlan_objmgr_psoc *psoc);
148 
149 /**
150  * target_if_vdev_mgr_wmi_event_unregister() - function to handle unregister
151  * events from WMI
152  * @psoc: pointer to psoc object
153  *
154  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
155  */
156 QDF_STATUS target_if_vdev_mgr_wmi_event_unregister(
157 					struct wlan_objmgr_psoc *psoc);
158 
159 /**
160  * target_if_vdev_mgr_rsp_timer_cb() - function to handle vdev related timeouts
161  * @vdev_rsp: pointer to vdev response timer
162  *
163  * Return: none
164  */
165 void target_if_vdev_mgr_rsp_timer_cb(struct vdev_response_timer *vdev_rsp);
166 
167 #endif /* __TARGET_IF_VDEV_MGR_RX_OPS_H__ */
168