blob: 125bd829dea5a08d127e8db11ff859ceb81f9e13 [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 */
63int target_if_vdev_mgr_delete_response_handler(
64 ol_scn_t scn,
65 uint8_t *data,
66 uint32_t datalen);
67
68/**
69 * target_if_vdev_mgr_offload_bcn_tx_status_handler() - API to handle beacon
70 * tx status 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 */
77int target_if_vdev_mgr_offload_bcn_tx_status_handler(ol_scn_t scn,
78 uint8_t *data,
79 uint32_t datalen);
80
81/**
82 * target_if_vdev_mgr_tbttoffset_update_handler() - API to handle tbtt offset
83 * 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 */
90int target_if_vdev_mgr_tbttoffset_update_handler(ol_scn_t scn,
91 uint8_t *data,
92 uint32_t datalen);
93
94/**
95 * target_if_vdev_mgr_ext_tbttoffset_update_handler() - API to handle ext tbtt
96 * offset update event
97 * @scn: pointer to scan object
98 * @data: pointer to data
99 * @datalen: length of data
100 *
101 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
102 */
103int target_if_vdev_mgr_ext_tbttoffset_update_handler(ol_scn_t scn,
104 uint8_t *data,
105 uint32_t datalen);
106
107/**
Naga7dd88342019-02-05 22:34:24 +0530108 * target_if_vdev_mgr_is_panic_on_bug: API to get panic on bug
109 *
110 * Return: TRUE or FALSE
111 */
112static inline bool target_if_vdev_mgr_is_panic_on_bug(void)
113{
114#ifdef PANIC_ON_BUG
115 return true;
116#else
117 return false;
118#endif
119}
120
121/**
Nagaf3a70ce2019-01-18 13:14:49 +0530122 * target_if_vdev_mgr_get_rx_ops() - get rx ops
123 * @psoc: pointer to psoc object
124 *
125 * Return: pointer to rx ops
126 */
127static inline struct wlan_lmac_if_mlme_rx_ops *
128target_if_vdev_mgr_get_rx_ops(struct wlan_objmgr_psoc *psoc)
129{
130 return &psoc->soc_cb.rx_ops.mops;
131}
132
133/**
134 * target_if_vdev_mgr_rsp_timer_mgmt_cb() - function to handle response timer
135 * @arg: pointer to argument
136 *
137 * Callback timer triggered when response timer expires which pass
138 * vdev as argument
139 *
140 * Return: status of operation.
141 */
142void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg);
143
144/**
145 * target_if_vdev_mgr_wmi_event_register() - function to handle register
146 * events from WMI
147 * @psoc: pointer to psoc object
148 *
149 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
150 */
151QDF_STATUS target_if_vdev_mgr_wmi_event_register(
152 struct wlan_objmgr_psoc *psoc);
153
154/**
155 * target_if_vdev_mgr_wmi_event_unregister() - function to handle unregister
156 * events from WMI
157 * @psoc: pointer to psoc object
158 *
159 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
160 */
161QDF_STATUS target_if_vdev_mgr_wmi_event_unregister(
162 struct wlan_objmgr_psoc *psoc);
163
164#endif /* __TARGET_IF_VDEV_MGR_RX_OPS_H__ */