1 /* 2 * Copyright (c) 2018, 2020-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: target_if_cp_stats.h 22 * 23 * This header file provide declarations required for Rx and Tx events from 24 * firmware 25 */ 26 27 #ifndef __TARGET_IF_CP_STATS_H__ 28 #define __TARGET_IF_CP_STATS_H__ 29 30 #include <target_if.h> 31 #include <wlan_lmac_if_def.h> 32 #include <wlan_cp_stats_utils_api.h> 33 34 #ifdef QCA_SUPPORT_CP_STATS 35 36 /** 37 * target_if_cp_stats_get_rx_ops() - get rx ops 38 * @psoc: pointer to psoc object 39 * 40 * Return: pointer to rx ops 41 */ 42 static inline struct wlan_lmac_if_cp_stats_rx_ops * 43 target_if_cp_stats_get_rx_ops(struct wlan_objmgr_psoc *psoc) 44 { 45 struct wlan_lmac_if_rx_ops *rx_ops; 46 47 rx_ops = wlan_psoc_get_lmac_if_rxops(psoc); 48 if (!rx_ops) { 49 cp_stats_err("rx_ops is NULL"); 50 return NULL; 51 } 52 53 return &rx_ops->cp_stats_rx_ops; 54 } 55 56 /** 57 * target_if_cp_stats_get_tx_ops() - get tx ops 58 * @psoc: pointer to psoc object 59 * 60 * Return: pointer to tx ops 61 */ 62 static inline struct wlan_lmac_if_cp_stats_tx_ops * 63 target_if_cp_stats_get_tx_ops(struct wlan_objmgr_psoc *psoc) 64 { 65 struct wlan_lmac_if_tx_ops *tx_ops; 66 67 tx_ops = wlan_psoc_get_lmac_if_txops(psoc); 68 if (!tx_ops) { 69 cp_stats_err("tx_ops is NULL"); 70 return NULL; 71 } 72 73 return &tx_ops->cp_stats_tx_ops; 74 } 75 76 /** 77 * target_if_cp_stats_register_tx_ops() - define cp_stats lmac tx ops functions 78 * @tx_ops: pointer to lmac tx ops 79 * 80 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error 81 */ 82 QDF_STATUS 83 target_if_cp_stats_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops); 84 85 #ifdef WLAN_SUPPORT_LEGACY_CP_STATS_HANDLERS 86 /** 87 * target_if_cp_stats_register_legacy_event_handler() - Register handler 88 * specific to legacy components 89 * @psoc: pointer to psoc object 90 * 91 * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on 92 * failure 93 */ 94 QDF_STATUS 95 target_if_cp_stats_register_legacy_event_handler(struct wlan_objmgr_psoc *psoc); 96 97 /** 98 * target_if_cp_stats_unregister_legacy_event_handler() - Unregister handler 99 * specific to legacy components 100 * @psoc: pointer to psoc object 101 * 102 * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on 103 * failure 104 */ 105 QDF_STATUS 106 target_if_cp_stats_unregister_legacy_event_handler( 107 struct wlan_objmgr_psoc *psoc); 108 #else 109 110 static inline QDF_STATUS 111 target_if_cp_stats_register_legacy_event_handler(struct wlan_objmgr_psoc *psoc) 112 { 113 return QDF_STATUS_SUCCESS; 114 } 115 116 static inline QDF_STATUS 117 target_if_cp_stats_unregister_legacy_event_handler( 118 struct wlan_objmgr_psoc *psoc) 119 { 120 return QDF_STATUS_SUCCESS; 121 } 122 #endif /* WLAN_SUPPORT_LEGACY_CP_STATS_HANDLERS */ 123 124 #ifdef WLAN_CHIPSET_STATS 125 126 /** 127 * target_if_cp_stats_is_service_cstats_enabled() - Interface to check and 128 * return whether FW support Chipset Stats logging or not 129 * @psoc: pointer to psoc object 130 * @is_fw_support_cstats: True if feature is supported by FW else False 131 * 132 * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on 133 * failure 134 */ 135 QDF_STATUS 136 target_if_cp_stats_is_service_cstats_enabled(struct wlan_objmgr_psoc *psoc, 137 bool *is_fw_support_cstats); 138 #else 139 static inline QDF_STATUS 140 target_if_cp_stats_is_service_cstats_enabled(struct wlan_objmgr_psoc *psoc, 141 bool *is_fw_support_cstats) 142 { 143 return QDF_STATUS_E_NOSUPPORT; 144 } 145 #endif 146 147 #else 148 static inline QDF_STATUS 149 target_if_cp_stats_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops) 150 { 151 return QDF_STATUS_SUCCESS; 152 } 153 #endif /* QCA_SUPPORT_CP_STATS */ 154 155 #endif /* __TARGET_IF_CP_STATS_H__ */ 156