blob: a11510879df446c3e2484fdab6ba4f6809be8ef8 [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/**
81 * target_if_vdev_mgr_offload_bcn_tx_status_handler() - API to handle beacon
82 * tx status event
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_offload_bcn_tx_status_handler(ol_scn_t scn,
90 uint8_t *data,
91 uint32_t datalen);
92
93/**
94 * target_if_vdev_mgr_tbttoffset_update_handler() - API to handle tbtt offset
95 * update 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_tbttoffset_update_handler(ol_scn_t scn,
103 uint8_t *data,
104 uint32_t datalen);
105
106/**
107 * target_if_vdev_mgr_ext_tbttoffset_update_handler() - API to handle ext tbtt
108 * offset 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_ext_tbttoffset_update_handler(ol_scn_t scn,
116 uint8_t *data,
117 uint32_t datalen);
118
119/**
Naga7dd88342019-02-05 22:34:24 +0530120 * target_if_vdev_mgr_is_panic_on_bug: API to get panic on bug
121 *
122 * Return: TRUE or FALSE
123 */
124static inline bool target_if_vdev_mgr_is_panic_on_bug(void)
125{
126#ifdef PANIC_ON_BUG
127 return true;
128#else
129 return false;
130#endif
131}
132
133/**
Nagaf3a70ce2019-01-18 13:14:49 +0530134 * target_if_vdev_mgr_get_rx_ops() - get rx ops
135 * @psoc: pointer to psoc object
136 *
137 * Return: pointer to rx ops
138 */
139static inline struct wlan_lmac_if_mlme_rx_ops *
140target_if_vdev_mgr_get_rx_ops(struct wlan_objmgr_psoc *psoc)
141{
142 return &psoc->soc_cb.rx_ops.mops;
143}
144
145/**
146 * target_if_vdev_mgr_rsp_timer_mgmt_cb() - function to handle response timer
147 * @arg: pointer to argument
148 *
149 * Callback timer triggered when response timer expires which pass
150 * vdev as argument
151 *
152 * Return: status of operation.
153 */
154void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg);
155
156/**
157 * target_if_vdev_mgr_wmi_event_register() - function to handle register
158 * events from WMI
159 * @psoc: pointer to psoc object
160 *
161 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
162 */
163QDF_STATUS target_if_vdev_mgr_wmi_event_register(
164 struct wlan_objmgr_psoc *psoc);
165
166/**
167 * target_if_vdev_mgr_wmi_event_unregister() - function to handle unregister
168 * events from WMI
169 * @psoc: pointer to psoc object
170 *
171 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
172 */
173QDF_STATUS target_if_vdev_mgr_wmi_event_unregister(
174 struct wlan_objmgr_psoc *psoc);
175
176#endif /* __TARGET_IF_VDEV_MGR_RX_OPS_H__ */