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
target_if_mgmt_txrx_unregister_event_handler(struct wlan_objmgr_psoc * psoc)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
target_if_mgmt_txrx_register_event_handler(struct wlan_objmgr_psoc * psoc)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
target_if_mgmt_txrx_tx_ops_register(struct wlan_lmac_if_tx_ops * tx_ops)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