blob: 753ed9d7b9591d010d1d5b776205be9b59f1d5fb [file] [log] [blame]
Srinivas Pitla39a92222018-10-05 10:52:48 +05301/*
2 * Copyright (c) 2019 The Linux Foundation. All rights reserved.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17/**
18 * DOC: Define Common MLME structure and APIs
19 */
20#ifndef _WLAN_MLME_CMN_H_
21#define _WLAN_MLME_CMN_H_
22
Arun Kumar Khandavallid76b54a2019-08-27 16:39:18 +053023#include <include/wlan_psoc_mlme.h>
Srinivas Pitla39a92222018-10-05 10:52:48 +053024#include <include/wlan_pdev_mlme.h>
25#include <include/wlan_vdev_mlme.h>
26
27/**
28 * struct vdev_mlme_ext_ops - VDEV MLME legacy callbacks structure
Arun Kumar Khandavallid76b54a2019-08-27 16:39:18 +053029 * @mlme_psoc_ext_hdl_create: callback to invoke creation of legacy
30 * psoc object
31 * @mlme_psoc_ext_hdl_destroy: callback to invoke destroy of legacy
32 * psoc object
Srinivas Pitla39a92222018-10-05 10:52:48 +053033 * @mlme_pdev_ext_hdl_create: callback to invoke creation of legacy
34 * pdev object
35 * @mlme_pdev_ext_hdl_destroy: callback to invoke destroy of legacy
36 * pdev object
37 * @mlme_vdev_ext_hdl_create: callback to invoke creation of legacy
38 * vdev object
39 * @mlme_vdev_ext_hdl_post_create: callback to invoke post creation actions
40 * of legacy vdev object
41 * @mlme_vdev_ext_hdl_destroy: callback to invoke destroy of legacy
42 * vdev object
43 * @mlme_vdev_start_fw_send: callback to invoke vdev start command
44 * @mlme_vdev_stop_fw_send: callback to invoke vdev stop command
45 * @mlme_vdev_down_fw_send: callback to invoke vdev down command
46 * @mlme_multivdev_restart_fw_send: callback to invoke multivdev restart
47 * command
48 * @mlme_vdev_enqueue_exp_cmd: callback to enqueue exception command
49 * required by serialization
50 */
51struct mlme_ext_ops {
Arun Kumar Khandavallid76b54a2019-08-27 16:39:18 +053052 QDF_STATUS (*mlme_psoc_ext_hdl_create)(
53 struct psoc_mlme_obj *psoc_mlme);
54 QDF_STATUS (*mlme_psoc_ext_hdl_destroy)(
55 struct psoc_mlme_obj *pdev_mlme);
Srinivas Pitla39a92222018-10-05 10:52:48 +053056 QDF_STATUS (*mlme_pdev_ext_hdl_create)(
57 struct pdev_mlme_obj *pdev_mlme);
58 QDF_STATUS (*mlme_pdev_ext_hdl_destroy)(
59 struct pdev_mlme_obj *pdev_mlme);
60 QDF_STATUS (*mlme_vdev_ext_hdl_create)(
61 struct vdev_mlme_obj *vdev_mlme);
62 QDF_STATUS (*mlme_vdev_ext_hdl_post_create)(
63 struct vdev_mlme_obj *vdev_mlme);
64 QDF_STATUS (*mlme_vdev_ext_hdl_destroy)(
65 struct vdev_mlme_obj *vdev_mlme);
66 QDF_STATUS (*mlme_vdev_start_fw_send)(
67 struct wlan_objmgr_vdev *vdev, uint8_t restart);
68 QDF_STATUS (*mlme_vdev_stop_fw_send)(struct wlan_objmgr_vdev *vdev);
69 QDF_STATUS (*mlme_vdev_down_fw_send)(struct wlan_objmgr_vdev *vdev);
70 QDF_STATUS (*mlme_multivdev_restart_fw_send)(
71 struct wlan_objmgr_pdev *pdev);
72 QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)(
73 struct vdev_mlme_obj *vdev_mlme,
74 uint8_t cmd_type);
75};
76
77/**
Arun Kumar Khandavallid76b54a2019-08-27 16:39:18 +053078 * mlme_psoc_ops_ext_hdl_create() - Alloc PSOC mlme ext handle
79 * @psoc_mlme: PSOC MLME comp object
80 *
81 * API to allocate PSOC MLME ext handle
82 *
83 * Return: SUCCESS on successful allocation
84 * Else FAILURE
85 */
86QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme);
87
88/**
89 * mlme_psoc_ops_ext_hdl_destroy() - Destroy PSOC mlme ext handle
90 * @psoc_mlme: PSOC MLME comp object
91 *
92 * API to free psoc MLME ext handle
93 *
94 * Return: SUCCESS on successful free
95 * Else FAILURE
96 */
97QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme);
98
99/**
Srinivas Pitla39a92222018-10-05 10:52:48 +0530100 * mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle
101 * @pdev_mlme_obj: PDEV MLME comp object
102 *
103 * API to allocate PDEV MLME ext handle
104 *
105 * Return: SUCCESS on successful allocation
106 * Else FAILURE
107 */
108QDF_STATUS mlme_pdev_ops_ext_hdl_create(struct pdev_mlme_obj *pdev_mlme);
109
110/**
111 * mlme_pdev_ops_ext_hdl_destroy - Destroy PDEV mlme ext handle
112 * @pdev_mlme_obj: PDEV MLME comp object
113 *
114 * API to free pdev MLME ext handle
115 *
116 * Return: SUCCESS on successful free
117 * Else FAILURE
118 */
119QDF_STATUS mlme_pdev_ops_ext_hdl_destroy(struct pdev_mlme_obj *pdev_mlme);
120
121/**
122 * mlme_vdev_ops_ext_hdl_create - Alloc VDEV mlme ext handle
123 * @vdev_mlme_obj: VDEV MLME comp object
124 *
125 * API to allocate VDEV MLME ext handle
126 *
127 * Return: SUCCESS on successful allocation
128 * Else FAILURE
129 */
130QDF_STATUS mlme_vdev_ops_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme);
131
132/**
133 * mlme_vdev_ops_ext_hdl_post_create - Perform post VDEV mlme ext handle alloc
134 * operations
135 * @vdev_mlme_obj: VDEV MLME comp object
136 *
137 * API to perform post vdev MLME ext handle allocation operations
138 *
139 * Return: SUCCESS on initialization successful
140 * Else FAILURE
141 */
142QDF_STATUS mlme_vdev_ops_ext_hdl_post_create(struct vdev_mlme_obj *vdev_mlme);
143
144/**
145 * mlme_vdev_ops_ext_hdl_destroy - Destroy VDEV mlme ext handle
146 * @vdev_mlme_obj: VDEV MLME comp object
147 *
148 * API to free vdev MLME ext handle
149 *
150 * Return: SUCCESS on successful free
151 * Else FAILURE
152 */
153QDF_STATUS mlme_vdev_ops_ext_hdl_destroy(struct vdev_mlme_obj *vdev_mlme);
154
155/**
156 * mlme_vdev_enqueue_exp_ser_cmd - Enqueue exception serialization cmd
157 * @vdev_mlme_obj: VDEV MLME comp object
158 * @cmd_type: Serialization command type
159 *
160 * API to enqueue the exception serialization command, used by
161 * mlme-serialization wrapper layer
162 *
163 * Return: SUCCESS on successful enqueuing the command
164 * Else FAILURE
165 */
166QDF_STATUS mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme,
167 uint8_t cmd_type);
168
169/**
170 * mlme_vdev_ops_start_fw_send - Send WMI START/RESTART commmand to FW
171 * @vdev: VDEV object
172 *
173 * API to send WMI start/restart command to FW
174 *
175 * Return: SUCCESS on successful sending the command
176 * Else FAILURE
177 */
178QDF_STATUS mlme_vdev_ops_start_fw_send(struct wlan_objmgr_vdev *vdev,
179 uint8_t restart);
180
181/**
182 * mlme_vdev_ops_multivdev_restart_fw_cmd_send - Send WMI Multivdev restart
183 * commmand to FW
184 * @pdev: PDEV object
185 *
186 * API to send WMI multivdev restart command to FW
187 *
188 * Return: SUCCESS on successful sending the command
189 * Else FAILURE
190 */
191QDF_STATUS mlme_vdev_ops_multivdev_restart_fw_cmd_send(
192 struct wlan_objmgr_pdev *pdev);
193
194/**
195 * mlme_vdev_ops_stop_fw_send - Send WMI STOP commmand to FW
196 * @vdev: VDEV object
197 *
198 * API to send WMI stop command to FW
199 *
200 * Return: SUCCESS on successful sending the command
201 * Else FAILURE
202 */
203QDF_STATUS mlme_vdev_ops_stop_fw_send(struct wlan_objmgr_vdev *vdev);
204
205/**
206 * mlme_vdev_ops_down_fw_send - Send WMI Down commmand to FW
207 * @vdev: VDEV object
208 *
209 * API to send WMI down command to FW
210 *
211 * Return: SUCCESS on successful sending the command
212 * Else FAILURE
213 */
214QDF_STATUS mlme_vdev_ops_down_fw_send(struct wlan_objmgr_vdev *vdev);
215
216/**
217 * mlme_set_ops_register_cb - Sets ops registration callback
218 * @ops_cb: Function pointer
219 *
220 * API to set ops registration call back
221 *
222 * Return: void
223 */
224typedef struct mlme_ext_ops *(*mlme_get_global_ops_cb)(void);
225void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb);
226
227/**
228 * wlan_cmn_mlme_init - Initializes MLME component
229 *
230 * Registers callbacks with object manager for create/destroy
231 *
232 * Return: SUCCESS on successful registration
233 * FAILURE, if registration fails
234 */
235QDF_STATUS wlan_cmn_mlme_init(void);
236
237/**
238 * wlan_cmn_mlme_deinit - Uninitializes MLME component
239 *
240 * Unregisters callbacks with object manager for create/destroy
241 *
242 * Return: SUCCESS on successful registration
243 * FAILURE, if registration fails
244 */
245QDF_STATUS wlan_cmn_mlme_deinit(void);
Srinivas Pitla39a92222018-10-05 10:52:48 +0530246#endif