xref: /wlan-dirver/qca-wifi-host-cmn/target_if/mgmt_txrx/src/target_if_mgmt_txrx.c (revision 2f4b444fb7e689b83a4ab0e7b3b38f0bf4def8e0)
1 /*
2  * Copyright (c) 2021, 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: target_if_mgmt_txrx.c
19  *  This file contains mgmt txrx module's target related function definitions
20  */
21 
22 #include <target_if_mgmt_txrx.h>
23 #include <target_if_mgmt_txrx_rx_reo.h>
24 
25 /**
26  * target_if_mgmt_txrx_unregister_event_handler() - Unregister event handlers
27  * for mgmt txrx module
28  * @psoc: pointer to psoc
29  *
30  * Unregister event handlers for management rx-reorder module
31  *
32  * return: QDF_STATUS
33  */
34 static QDF_STATUS
35 target_if_mgmt_txrx_unregister_event_handler(struct wlan_objmgr_psoc *psoc)
36 {
37 	QDF_STATUS status;
38 
39 	if (!psoc) {
40 		mgmt_txrx_err("psoc is null");
41 		return QDF_STATUS_E_FAILURE;
42 	}
43 
44 	status = target_if_mgmt_rx_reo_unregister_event_handlers(psoc);
45 	if (QDF_IS_STATUS_ERROR(status)) {
46 		mgmt_txrx_err("Failed to unregister mgmt rx reo events");
47 		return QDF_STATUS_E_FAILURE;
48 	}
49 
50 	return QDF_STATUS_SUCCESS;
51 }
52 
53 /**
54  * target_if_mgmt_txrx_register_event_handler() - Register event handlers for
55  * mgmt txrx module
56  * @psoc: pointer to psoc
57  *
58  * Register event handlers for management rx-reorder module
59  *
60  * return: QDF_STATUS
61  */
62 static QDF_STATUS
63 target_if_mgmt_txrx_register_event_handler(struct wlan_objmgr_psoc *psoc)
64 {
65 	QDF_STATUS status;
66 
67 	status = target_if_mgmt_rx_reo_register_event_handlers(psoc);
68 	if (QDF_IS_STATUS_ERROR(status)) {
69 		mgmt_txrx_err("Failed to register mgmt rx reo events");
70 		return QDF_STATUS_E_FAILURE;
71 	}
72 
73 	return QDF_STATUS_SUCCESS;
74 }
75 
76 QDF_STATUS
77 target_if_mgmt_txrx_tx_ops_register(struct wlan_lmac_if_tx_ops *tx_ops)
78 {
79 	struct wlan_lmac_if_mgmt_txrx_tx_ops *mgmt_txrx_tx_ops;
80 	QDF_STATUS status;
81 
82 	if (!tx_ops) {
83 		mgmt_txrx_err("txops is NULL");
84 		return QDF_STATUS_E_FAILURE;
85 	}
86 
87 	mgmt_txrx_tx_ops = &tx_ops->mgmt_txrx_tx_ops;
88 	mgmt_txrx_tx_ops->reg_ev_handler =
89 		target_if_mgmt_txrx_register_event_handler;
90 	mgmt_txrx_tx_ops->unreg_ev_handler =
91 		target_if_mgmt_txrx_unregister_event_handler;
92 
93 	status = target_if_mgmt_rx_reo_tx_ops_register(mgmt_txrx_tx_ops);
94 	if (QDF_IS_STATUS_ERROR(status)) {
95 		mgmt_txrx_err("Failed to register mgmt Rx REO tx ops");
96 		return QDF_STATUS_E_FAILURE;
97 	}
98 
99 	return QDF_STATUS_SUCCESS;
100 }
101