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