xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/include/wlan_vdev_mlme.h (revision 0626a4da6c07f30da06dd6747e8cc290a60371d8)
1 /*
2  * Copyright (c) 2018 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: Define VDEV MLME structure and APIs
21  */
22 #ifndef _WLAN_VDEV_MLME_H_
23 #define _WLAN_VDEV_MLME_H_
24 
25 struct vdev_mlme_obj;
26 
27 /**
28  * struct vdev_mlme_proto - VDEV protocol strucutre
29  */
30 struct vdev_mlme_proto {
31 };
32 
33 /**
34  * enum beacon_update_op - Beacon update op type
35  * @BEACON_INIT:      Initialize beacon
36  * @BEACON_REINIT:    Re-initialize beacon
37  * @BEACON_UPDATE:    Update dynamic fields of beacon
38  * @BEACON_CSA:       Enable CSA IE
39  * @BEACON_FREE:      Beacon buffer free
40  */
41 enum beacon_update_op {
42 	BEACON_INIT,
43 	BEACON_REINIT,
44 	BEACON_UPDATE,
45 	BEACON_CSA,
46 	BEACON_FREE,
47 };
48 
49 /**
50  * enum vdev_cmd_type - Command type
51  * @START_REQ:      Start request
52  * @RESTART_REQ:    Restart request
53  */
54 enum vdev_cmd_type {
55 	START_REQ,
56 	RESTART_REQ,
57 };
58 
59 /**
60  * struct vdev_mlme_ops - VDEV MLME operation callbacks strucutre
61  * @mlme_vdev_validate_basic_params:    callback to validate VDEV basic params
62  * @mlme_vdev_reset_proto_params:       callback to Reset protocol params
63  * @mlme_vdev_start_send:               callback to initiate actions of VDEV
64  *                                      MLME start operation
65  * @mlme_vdev_restart_send:             callback to initiate actions of VDEV
66  *                                      MLME restart operation
67  * @mlme_vdev_stop_start_send:          callback to block start/restart VDEV
68  *                                      request command
69  * @mlme_vdev_start_continue:           callback to initiate operations on
70  *                                      LMAC/FW start response
71  * @mlme_vdev_up_send:                  callback to initiate actions of VDEV
72  *                                      MLME up operation
73  * @mlme_vdev_notify_up_complete:       callback to notify VDEV MLME on moving
74  *                                      to UP state
75  * @mlme_vdev_update_beacon:            callback to initiate beacon update
76  * @mlme_vdev_disconnect_peers:         callback to initiate disconnection of
77  *                                      peers
78  * @mlme_vdev_dfs_cac_timer_stop:       callback to stop the DFS CAC timer
79  * @mlme_vdev_stop_send:                callback to initiate actions of VDEV
80  *                                      MLME stop operation
81  * @mlme_vdev_stop_continue:            callback to initiate operations on
82  *                                      LMAC/FW stop response
83  * @mlme_vdev_bss_peer_delete_continue: callback to initiate operations on BSS
84  *                                      peer delete completion
85  * @mlme_vdev_down_send:                callback to initiate actions of VDEV
86  *                                      MLME down operation
87  * @mlme_vdev_legacy_hdl_create:        callback to invoke creation of legacy
88  *                                      vdev object
89  * @mlme_vdev_legacy_hdl_post_create:   callback to invoke post creation actions
90  *                                      of legacy vdev object
91  * @mlme_vdev_legacy_hdl_destroy:       callback to invoke destroy of legacy
92  *                                      vdev object
93  */
94 struct vdev_mlme_ops {
95 	QDF_STATUS (*mlme_vdev_validate_basic_params)(
96 				struct vdev_mlme_obj *vdev_mlme,
97 				uint16_t event_data_len, void *event_data);
98 	QDF_STATUS (*mlme_vdev_reset_proto_params)(
99 				struct vdev_mlme_obj *vdev_mlme,
100 				uint16_t event_data_len, void *event_data);
101 	QDF_STATUS (*mlme_vdev_start_send)(
102 				struct vdev_mlme_obj *vdev_mlme,
103 				uint16_t event_data_len, void *event_data);
104 	QDF_STATUS (*mlme_vdev_restart_send)(
105 				struct vdev_mlme_obj *vdev_mlme,
106 				uint16_t event_data_len, void *event_data);
107 	QDF_STATUS (*mlme_vdev_stop_start_send)(
108 				struct vdev_mlme_obj *vdev_mlme,
109 				enum vdev_cmd_type type,
110 				uint16_t event_data_len, void *event_data);
111 	QDF_STATUS (*mlme_vdev_start_continue)(
112 				struct vdev_mlme_obj *vdev_mlme,
113 				uint16_t event_data_len, void *event_data);
114 	QDF_STATUS (*mlme_vdev_sta_conn_start)(
115 				struct vdev_mlme_obj *vdev_mlme,
116 				uint16_t event_data_len, void *event_data);
117 	QDF_STATUS (*mlme_vdev_start_req_failed)(
118 				struct vdev_mlme_obj *vdev_mlme,
119 				uint16_t event_data_len, void *event_data);
120 	QDF_STATUS (*mlme_vdev_up_send)(
121 				struct vdev_mlme_obj *vdev_mlme,
122 				uint16_t event_data_len, void *event_data);
123 	QDF_STATUS (*mlme_vdev_notify_up_complete)(
124 				struct vdev_mlme_obj *vdev_mlme,
125 				uint16_t event_data_len, void *event_data);
126 	QDF_STATUS (*mlme_vdev_update_beacon)(
127 				struct vdev_mlme_obj *vdev_mlme,
128 				enum beacon_update_op op,
129 				uint16_t event_data_len, void *event_data);
130 	QDF_STATUS (*mlme_vdev_disconnect_peers)(
131 				struct vdev_mlme_obj *vdev_mlme,
132 				uint16_t event_data_len, void *event_data);
133 	QDF_STATUS (*mlme_vdev_dfs_cac_timer_stop)(
134 				struct vdev_mlme_obj *vdev_mlme,
135 				uint16_t event_data_len, void *event_data);
136 	QDF_STATUS (*mlme_vdev_stop_send)(
137 				struct vdev_mlme_obj *vdev_mlme,
138 				uint16_t event_data_len, void *event_data);
139 	QDF_STATUS (*mlme_vdev_stop_continue)(
140 				struct vdev_mlme_obj *vdev_mlme,
141 				uint16_t event_data_len, void *event_data);
142 	QDF_STATUS (*mlme_vdev_down_send)(
143 				struct vdev_mlme_obj *vdev_mlme,
144 				uint16_t event_data_len, void *event_data);
145 	QDF_STATUS (*mlme_vdev_notify_down_complete)(
146 				struct vdev_mlme_obj *vdev_mlme,
147 				uint16_t event_data_len, void *event_data);
148 	QDF_STATUS (*mlme_vdev_legacy_hdl_create)(
149 				struct vdev_mlme_obj *vdev_mlme);
150 	QDF_STATUS (*mlme_vdev_legacy_hdl_post_create)(
151 				struct vdev_mlme_obj *vdev_mlme);
152 	QDF_STATUS (*mlme_vdev_legacy_hdl_destroy)(
153 				struct vdev_mlme_obj *vdev_mlme);
154 
155 };
156 
157 /**
158  * struct vdev_mlme_obj - VDEV MLME component object
159  * @vdev_proto:           VDEV MLME proto substructure
160  * @sm_lock:              VDEV SM lock
161  * @sm_hdl:               VDEV SM handle
162  * @ops:                  VDEV MLME callback table
163  * @legacy_vdev_ptr:      VDEV MLME legacy pointer
164  */
165 struct vdev_mlme_obj {
166 	struct vdev_mlme_proto vdev_proto;
167 #ifdef VDEV_SM_LOCK_SUPPORT
168 	qdf_spinlock_t sm_lock;
169 #endif
170 	struct wlan_sm *sm_hdl;
171 	struct wlan_objmgr_vdev *vdev;
172 	struct vdev_mlme_ops *ops;
173 	void *legacy_vdev_ptr;
174 };
175 
176 /**
177  * mlme_vdev_validate_basic_params - Validate basic params
178  * @vdev_mlme_obj:  VDEV MLME comp object
179  * @event_data_len: data size
180  * @event_data: event data
181  *
182  * API validate MLME VDEV basic parameters
183  *
184  * Return: SUCCESS on successful validation
185  *         FAILURE, if any parameter is not initialized
186  */
187 static inline QDF_STATUS mlme_vdev_validate_basic_params(
188 				struct vdev_mlme_obj *vdev_mlme,
189 				uint16_t event_data_len, void *event_data)
190 {
191 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
192 
193 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_validate_basic_params)
194 		ret = vdev_mlme->ops->mlme_vdev_validate_basic_params(
195 					vdev_mlme, event_data_len, event_data);
196 
197 	return ret;
198 }
199 
200 /**
201  * mlme_vdev_reset_proto_params - Reset VDEV protocol params
202  * @vdev_mlme_obj:  VDEV MLME comp object
203  * @event_data_len: data size
204  * @event_data: event data
205  *
206  * API resets the protocol params fo vdev
207  *
208  * Return: SUCCESS on successful reset
209  *         FAILURE, if it fails due to any
210  */
211 static inline QDF_STATUS mlme_vdev_reset_proto_params(
212 				struct vdev_mlme_obj *vdev_mlme,
213 				uint16_t event_data_len, void *event_data)
214 {
215 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
216 
217 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_reset_proto_params)
218 		ret = vdev_mlme->ops->mlme_vdev_reset_proto_params(
219 					vdev_mlme, event_data_len, event_data);
220 
221 	return ret;
222 }
223 
224 /**
225  * mlme_vdev_start_send - Invokes VDEV start operation
226  * @vdev_mlme_obj:  VDEV MLME comp object
227  * @event_data_len: data size
228  * @event_data: event data
229  *
230  * API invokes VDEV start operation
231  *
232  * Return: SUCCESS on successful completion of start operation
233  *         FAILURE, if it fails due to any
234  */
235 static inline QDF_STATUS mlme_vdev_start_send(
236 				struct vdev_mlme_obj *vdev_mlme,
237 				uint16_t event_data_len, void *event_data)
238 {
239 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
240 
241 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_start_send)
242 		ret = vdev_mlme->ops->mlme_vdev_start_send(
243 					vdev_mlme, event_data_len, event_data);
244 
245 	return ret;
246 }
247 
248 /**
249  * mlme_vdev_restart_send - Invokes VDEV restart operation
250  * @vdev_mlme_obj:  VDEV MLME comp object
251  * @event_data_len: data size
252  * @event_data: event data
253  *
254  * API invokes VDEV restart operation
255  *
256  * Return: SUCCESS on successful completion of restart operation
257  *         FAILURE, if it fails due to any
258  */
259 static inline QDF_STATUS mlme_vdev_restart_send(
260 				struct vdev_mlme_obj *vdev_mlme,
261 				uint16_t event_data_len, void *event_data)
262 {
263 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
264 
265 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_restart_send)
266 		ret = vdev_mlme->ops->mlme_vdev_restart_send(
267 					vdev_mlme, event_data_len, event_data);
268 
269 	return ret;
270 }
271 
272 /**
273  * mlme_vdev_stop_start_send - Invoke block VDEV restart operation
274  * @vdev_mlme_obj:  VDEV MLME comp object
275  * @restart: restart req/start req
276  * @event_data_len: data size
277  * @event_data: event data
278  *
279  * API invokes stops pending VDEV restart operation
280  *
281  * Return: SUCCESS alsways
282  */
283 static inline QDF_STATUS mlme_vdev_stop_start_send(
284 				struct vdev_mlme_obj *vdev_mlme,
285 				uint8_t restart,
286 				uint16_t event_data_len, void *event_data)
287 {
288 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
289 
290 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_stop_start_send)
291 		ret = vdev_mlme->ops->mlme_vdev_stop_start_send(
292 				vdev_mlme, restart, event_data_len, event_data);
293 
294 	return ret;
295 }
296 
297 /**
298  * mlme_vdev_start_continue - VDEV start response handling
299  * @vdev_mlme_obj:  VDEV MLME comp object
300  * @event_data_len: data size
301  * @event_data: event data
302  *
303  * API invokes VDEV start response actions
304  *
305  * Return: SUCCESS on successful completion of start response operation
306  *         FAILURE, if it fails due to any
307  */
308 static inline QDF_STATUS mlme_vdev_start_continue(
309 				struct vdev_mlme_obj *vdev_mlme,
310 				uint16_t event_data_len, void *event_data)
311 {
312 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
313 
314 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_start_continue)
315 		ret = vdev_mlme->ops->mlme_vdev_start_continue(
316 					vdev_mlme, event_data_len, event_data);
317 
318 	return ret;
319 }
320 
321 /**
322  * mlme_vdev_start_req_failed - Invoke Station VDEV connection, if it pause
323  * @vdev_mlme_obj:  VDEV MLME comp object
324  * @event_data_len: data size
325  * @event_data: event data
326  *
327  * API invokes on START fail response
328  *
329  * Return: SUCCESS on successful invocation of callback
330  *         FAILURE, if it fails due to any
331  */
332 static inline QDF_STATUS mlme_vdev_start_req_failed(
333 				struct vdev_mlme_obj *vdev_mlme,
334 				uint16_t event_data_len, void *event_data)
335 {
336 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
337 
338 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_start_req_failed)
339 		ret = vdev_mlme->ops->mlme_vdev_start_req_failed(
340 					vdev_mlme, event_data_len, event_data);
341 
342 	return ret;
343 }
344 
345 /**
346  * mlme_vdev_sta_conn_start - Invoke Station VDEV connection, if it pause
347  * @vdev_mlme_obj:  VDEV MLME comp object
348  * @event_data_len: data size
349  * @event_data: event data
350  *
351  * API invokes connection SM to start station connection
352  *
353  * Return: SUCCESS on successful invocation of connection sm
354  *         FAILURE, if it fails due to any
355  */
356 static inline QDF_STATUS mlme_vdev_sta_conn_start(
357 				struct vdev_mlme_obj *vdev_mlme,
358 				uint16_t event_data_len, void *event_data)
359 {
360 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
361 
362 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_sta_conn_start)
363 		ret = vdev_mlme->ops->mlme_vdev_sta_conn_start(
364 					vdev_mlme, event_data_len, event_data);
365 
366 	return ret;
367 }
368 
369 /**
370  * mlme_vdev_up_send - VDEV up operation
371  * @vdev_mlme_obj:  VDEV MLME comp object
372  * @event_data_len: data size
373  * @event_data: event data
374  *
375  * API invokes VDEV up operations
376  *
377  * Return: SUCCESS on successful completion of up operation
378  *         FAILURE, if it fails due to any
379  */
380 static inline QDF_STATUS mlme_vdev_up_send(
381 				struct vdev_mlme_obj *vdev_mlme,
382 				uint16_t event_data_len, void *event_data)
383 {
384 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
385 
386 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_up_send)
387 		ret = vdev_mlme->ops->mlme_vdev_up_send(
388 					vdev_mlme, event_data_len, event_data);
389 
390 	return ret;
391 }
392 
393 /**
394  * mlme_vdev_notify_up_complete - VDEV up state transition notification
395  * @vdev_mlme_obj:  VDEV MLME comp object
396  * @event_data_len: data size
397  * @event_data: event data
398  *
399  * API notifies MLME on moving to UP state
400  *
401  * Return: SUCCESS on successful completion of up notification
402  *         FAILURE, if it fails due to any
403  */
404 static inline QDF_STATUS mlme_vdev_notify_up_complete(
405 				struct vdev_mlme_obj *vdev_mlme,
406 				uint16_t event_data_len, void *event_data)
407 {
408 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
409 
410 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_notify_up_complete)
411 		ret = vdev_mlme->ops->mlme_vdev_notify_up_complete(
412 					vdev_mlme, event_data_len, event_data);
413 
414 	return ret;
415 }
416 
417 /**
418  * mlme_vdev_update_beacon - Updates beacon
419  * @vdev_mlme_obj:  VDEV MLME comp object
420  * @op: beacon update type
421  * @event_data_len: data size
422  * @event_data: event data
423  *
424  * API updates/allocates/frees the beacon
425  *
426  * Return: SUCCESS on successful update of beacon
427  *         FAILURE, if it fails due to any
428  */
429 static inline QDF_STATUS mlme_vdev_update_beacon(
430 				struct vdev_mlme_obj *vdev_mlme,
431 				enum beacon_update_op op,
432 				uint16_t event_data_len, void *event_data)
433 {
434 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
435 
436 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_update_beacon)
437 		ret = vdev_mlme->ops->mlme_vdev_update_beacon(vdev_mlme, op,
438 						event_data_len, event_data);
439 
440 	return ret;
441 }
442 
443 /**
444  * mlme_vdev_disconnect_peers - Disconnect peers
445  * @vdev_mlme_obj:  VDEV MLME comp object
446  * @event_data_len: data size
447  * @event_data: event data
448  *
449  * API trigger stations disconnection with AP VDEV or AP disconnection with STA
450  * VDEV
451  *
452  * Return: SUCCESS on successful invocation of station disconnection
453  *         FAILURE, if it fails due to any
454  */
455 static inline QDF_STATUS mlme_vdev_disconnect_peers(
456 				struct vdev_mlme_obj *vdev_mlme,
457 				uint16_t event_data_len, void *event_data)
458 {
459 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
460 
461 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_disconnect_peers)
462 		ret = vdev_mlme->ops->mlme_vdev_disconnect_peers(
463 					vdev_mlme, event_data_len, event_data);
464 
465 	return ret;
466 }
467 
468 /**
469  * mlme_vdev_dfs_cac_timer_stop - Stop CAC timer
470  * @vdev_mlme_obj:  VDEV MLME comp object
471  * @event_data_len: data size
472  * @event_data: event data
473  *
474  * API stops the CAC timer through DFS API
475  *
476  * Return: SUCCESS on successful CAC timer stop
477  *         FAILURE, if it fails due to any
478  */
479 static inline QDF_STATUS mlme_vdev_dfs_cac_timer_stop(
480 				struct vdev_mlme_obj *vdev_mlme,
481 				uint16_t event_data_len, void *event_data)
482 {
483 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
484 
485 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_dfs_cac_timer_stop)
486 		ret = vdev_mlme->ops->mlme_vdev_dfs_cac_timer_stop(
487 					vdev_mlme, event_data_len, event_data);
488 
489 	return ret;
490 }
491 
492 /**
493  * mlme_vdev_stop_send - Invokes VDEV stop operation
494  * @vdev_mlme_obj:  VDEV MLME comp object
495  * @event_data_len: data size
496  * @event_data: event data
497  *
498  * API invokes VDEV stop operation
499  *
500  * Return: SUCCESS on successful completion of stop operation
501  *         FAILURE, if it fails due to any
502  */
503 static inline QDF_STATUS mlme_vdev_stop_send(
504 				struct vdev_mlme_obj *vdev_mlme,
505 				uint16_t event_data_len, void *event_data)
506 {
507 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
508 
509 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_stop_send)
510 		ret = vdev_mlme->ops->mlme_vdev_stop_send(
511 					vdev_mlme, event_data_len, event_data);
512 
513 	return ret;
514 }
515 
516 /**
517  * mlme_vdev_stop_continue - VDEV stop response handling
518  * @vdev_mlme_obj:  VDEV MLME comp object
519  * @event_data_len: data size
520  * @event_data: event data
521  *
522  * API invokes VDEV stop response actions
523  *
524  * Return: SUCCESS on successful completion of stop response operation
525  *         FAILURE, if it fails due to any
526  */
527 static inline QDF_STATUS mlme_vdev_stop_continue(
528 				struct vdev_mlme_obj *vdev_mlme,
529 				uint16_t event_data_len, void *event_data)
530 {
531 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
532 
533 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_stop_continue)
534 		ret = vdev_mlme->ops->mlme_vdev_stop_continue(vdev_mlme,
535 							      event_data_len,
536 							      event_data);
537 
538 	return ret;
539 }
540 
541 /**
542  * mlme_vdev_down_send - VDEV down operation
543  * @vdev_mlme_obj:  VDEV MLME comp object
544  * @event_data_len: data size
545  * @event_data: event data
546  *
547  * API invokes VDEV down operation
548  *
549  * Return: SUCCESS on successful completion of VDEV down operation
550  *         FAILURE, if it fails due to any
551  */
552 static inline QDF_STATUS mlme_vdev_down_send(
553 				struct vdev_mlme_obj *vdev_mlme,
554 				uint16_t event_data_len, void *event_data)
555 {
556 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
557 
558 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_down_send)
559 		ret = vdev_mlme->ops->mlme_vdev_down_send(
560 					vdev_mlme, event_data_len, event_data);
561 
562 	return ret;
563 }
564 
565 /**
566  * mlme_vdev_notify_down_complete - VDEV init state transition notification
567  * @vdev_mlme_obj:  VDEV MLME comp object
568  * @event_data_len: data size
569  * @event_data: event data
570  *
571  * API notifies MLME on moving to INIT state
572  *
573  * Return: SUCCESS on successful completion of down notification
574  *         FAILURE, if it fails due to any
575  */
576 static inline QDF_STATUS mlme_vdev_notify_down_complete(
577 				struct vdev_mlme_obj *vdev_mlme,
578 				uint16_t event_data_len, void *event_data)
579 {
580 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
581 
582 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_notify_down_complete)
583 		ret = vdev_mlme->ops->mlme_vdev_notify_down_complete(
584 					vdev_mlme, event_data_len, event_data);
585 
586 	return ret;
587 }
588 
589 /**
590  * mlme_vdev_legacy_hdl_create - VDEV legacy pointer allocation
591  * @vdev_mlme_obj:  VDEV MLME comp object
592  *
593  * API invokes legacy pointer allocation and initialization
594  *
595  * Return: SUCCESS on successful creation of legacy handle
596  *         FAILURE, if it fails due to any
597  */
598 static inline QDF_STATUS mlme_vdev_legacy_hdl_create(
599 			      struct vdev_mlme_obj *vdev_mlme)
600 {
601 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
602 
603 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_legacy_hdl_create)
604 		ret = vdev_mlme->ops->mlme_vdev_legacy_hdl_create(vdev_mlme);
605 
606 	return ret;
607 }
608 
609 /**
610  * mlme_vdev_legacy_hdl_post_create - VDEV post legacy pointer allocation
611  * @vdev_mlme_obj:  VDEV MLME comp object
612  *
613  * API invokes post legacy pointer allocation operation
614  *
615  * Return: SUCCESS on successful creation of legacy handle
616  *         FAILURE, if it fails due to any
617  */
618 static inline QDF_STATUS mlme_vdev_legacy_hdl_post_create(
619 				struct vdev_mlme_obj *vdev_mlme)
620 {
621 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
622 
623 	if ((vdev_mlme->ops) &&
624 	    vdev_mlme->ops->mlme_vdev_legacy_hdl_post_create)
625 		ret = vdev_mlme->ops->mlme_vdev_legacy_hdl_post_create(
626 								vdev_mlme);
627 
628 	return ret;
629 }
630 
631 /**
632  * mlme_vdev_legacy_hdl_destroy - VDEV legacy pointer free
633  * @vdev_mlme_obj:  VDEV MLME comp object
634  *
635  * API invokes legacy pointer free
636  *
637  * Return: SUCCESS on successful free of legacy handle
638  *         FAILURE, if it fails due to any
639  */
640 static inline QDF_STATUS mlme_vdev_legacy_hdl_destroy(
641 			      struct vdev_mlme_obj *vdev_mlme)
642 {
643 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
644 
645 	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_legacy_hdl_destroy)
646 		ret = vdev_mlme->ops->mlme_vdev_legacy_hdl_destroy(vdev_mlme);
647 
648 	return ret;
649 }
650 
651 #endif
652