blob: 3f7c96fdd2e942280ee5834ba3a2aacb326f2e8b [file] [log] [blame]
Nagaf3a70ce2019-01-18 13:14:49 +05301/*
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>
Naga004bb252019-07-30 10:32:23 +053031#include <qdf_platform.h>
Nagaf3a70ce2019-01-18 13:14:49 +053032
33/**
Naga004bb252019-07-30 10:32:23 +053034 * target_if_vdev_mgr_is_panic_allowed: API to get if panic is allowed on
35 * timeout
Naga7dd88342019-02-05 22:34:24 +053036 *
Naga004bb252019-07-30 10:32:23 +053037 * Return: TRUE or FALSE when VDEV_ASSERT_MANAGEMENT is disabled else FALSE
Naga7dd88342019-02-05 22:34:24 +053038 */
Naga004bb252019-07-30 10:32:23 +053039#ifdef VDEV_ASSERT_MANAGEMENT
40static inline bool target_if_vdev_mgr_is_panic_allowed(void)
Naga7dd88342019-02-05 22:34:24 +053041{
42 return false;
43}
Naga004bb252019-07-30 10:32:23 +053044#else
45static 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
Naga7dd88342019-02-05 22:34:24 +053053
54/**
Abhishek Ambure21ff0a52019-05-06 17:44:05 +053055 * target_if_vdev_mgr_delete_response_handler() - API to handle vdev delete
56 * response
57 * @scn: pointer to scan object
58 * @data: pointer to data
59 * @datalen: length of data
60 *
61 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
62 */
Abhishek Amburec367e062019-08-08 19:44:28 +053063int target_if_vdev_mgr_delete_response_handler(ol_scn_t scn,
64 uint8_t *data,
65 uint32_t datalen);
66
67/**
68 * target_if_vdev_mgr_stop_response_handler() - API to handle vdev stop
69 * response
70 * @scn: pointer to scan object
71 * @data: pointer to data
72 * @datalen: length of data
73 *
74 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
75 */
76int target_if_vdev_mgr_stop_response_handler(ol_scn_t scn,
77 uint8_t *data,
78 uint32_t datalen);
Abhishek Ambure21ff0a52019-05-06 17:44:05 +053079
80/**
Jianmin Zhueb1cc952019-08-22 17:13:48 +080081 * target_if_vdev_mgr_start_response_handler() - API to handle vdev stop
82 * response
83 * @scn: pointer to scan object
84 * @data: pointer to data
85 * @datalen: length of data
86 *
87 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
88 */
89int target_if_vdev_mgr_start_response_handler(ol_scn_t scn,
90 uint8_t *data,
91 uint32_t datalen);
92
93/**
Abhishek Ambure21ff0a52019-05-06 17:44:05 +053094 * target_if_vdev_mgr_offload_bcn_tx_status_handler() - API to handle beacon
95 * tx status event
96 * @scn: pointer to scan object
97 * @data: pointer to data
98 * @datalen: length of data
99 *
100 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
101 */
102int target_if_vdev_mgr_offload_bcn_tx_status_handler(ol_scn_t scn,
103 uint8_t *data,
104 uint32_t datalen);
105
106/**
107 * target_if_vdev_mgr_tbttoffset_update_handler() - API to handle tbtt offset
108 * update event
109 * @scn: pointer to scan object
110 * @data: pointer to data
111 * @datalen: length of data
112 *
113 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
114 */
115int target_if_vdev_mgr_tbttoffset_update_handler(ol_scn_t scn,
116 uint8_t *data,
117 uint32_t datalen);
118
119/**
120 * target_if_vdev_mgr_ext_tbttoffset_update_handler() - API to handle ext tbtt
121 * offset update event
122 * @scn: pointer to scan object
123 * @data: pointer to data
124 * @datalen: length of data
125 *
126 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
127 */
128int target_if_vdev_mgr_ext_tbttoffset_update_handler(ol_scn_t scn,
129 uint8_t *data,
130 uint32_t datalen);
131
132/**
Naga7dd88342019-02-05 22:34:24 +0530133 * target_if_vdev_mgr_is_panic_on_bug: API to get panic on bug
134 *
135 * Return: TRUE or FALSE
136 */
137static inline bool target_if_vdev_mgr_is_panic_on_bug(void)
138{
139#ifdef PANIC_ON_BUG
140 return true;
141#else
142 return false;
143#endif
144}
145
146/**
Nagaf3a70ce2019-01-18 13:14:49 +0530147 * target_if_vdev_mgr_get_rx_ops() - get rx ops
148 * @psoc: pointer to psoc object
149 *
150 * Return: pointer to rx ops
151 */
152static inline struct wlan_lmac_if_mlme_rx_ops *
153target_if_vdev_mgr_get_rx_ops(struct wlan_objmgr_psoc *psoc)
154{
155 return &psoc->soc_cb.rx_ops.mops;
156}
157
158/**
159 * target_if_vdev_mgr_rsp_timer_mgmt_cb() - function to handle response timer
160 * @arg: pointer to argument
161 *
162 * Callback timer triggered when response timer expires which pass
163 * vdev as argument
164 *
165 * Return: status of operation.
166 */
167void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg);
168
169/**
170 * target_if_vdev_mgr_wmi_event_register() - function to handle register
171 * events from WMI
172 * @psoc: pointer to psoc object
173 *
174 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
175 */
176QDF_STATUS target_if_vdev_mgr_wmi_event_register(
177 struct wlan_objmgr_psoc *psoc);
178
179/**
180 * target_if_vdev_mgr_wmi_event_unregister() - function to handle unregister
181 * events from WMI
182 * @psoc: pointer to psoc object
183 *
184 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
185 */
186QDF_STATUS target_if_vdev_mgr_wmi_event_unregister(
187 struct wlan_objmgr_psoc *psoc);
188
189#endif /* __TARGET_IF_VDEV_MGR_RX_OPS_H__ */