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