1 /*
2  * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17 /**
18  * DOC: Implement API's specific to cp stats component.
19  */
20 
21 #include "wmi_unified_priv.h"
22 #include "wmi_unified_param.h"
23 #include "wmi_unified_mc_cp_stats_api.h"
24 
25 QDF_STATUS
wmi_extract_per_chain_rssi_stats(wmi_unified_t wmi_handle,void * evt_buf,uint32_t index,struct wmi_host_per_chain_rssi_stats * rssi_stats)26 wmi_extract_per_chain_rssi_stats(wmi_unified_t wmi_handle, void *evt_buf,
27 			       uint32_t index,
28 			       struct wmi_host_per_chain_rssi_stats *rssi_stats)
29 {
30 	if (wmi_handle->ops->extract_per_chain_rssi_stats)
31 		return wmi_handle->ops->extract_per_chain_rssi_stats(wmi_handle,
32 			evt_buf, index, rssi_stats);
33 
34 	return QDF_STATUS_E_FAILURE;
35 }
36 
37 QDF_STATUS
wmi_extract_peer_adv_stats(wmi_unified_t wmi_handle,void * evt_buf,struct wmi_host_peer_adv_stats * peer_adv_stats)38 wmi_extract_peer_adv_stats(wmi_unified_t wmi_handle, void *evt_buf,
39 			   struct wmi_host_peer_adv_stats *peer_adv_stats)
40 {
41 	if (wmi_handle->ops->extract_peer_adv_stats)
42 		return wmi_handle->ops->extract_peer_adv_stats(wmi_handle,
43 			evt_buf, peer_adv_stats);
44 
45 	return QDF_STATUS_E_FAILURE;
46 }
47 
48 #ifdef WLAN_FEATURE_MIB_STATS
wmi_extract_mib_stats(wmi_unified_t wmi_handle,void * evt_buf,struct mib_stats_metrics * mib_stats)49 QDF_STATUS wmi_extract_mib_stats(wmi_unified_t wmi_handle, void *evt_buf,
50 				 struct mib_stats_metrics *mib_stats)
51 {
52 	if (wmi_handle->ops->extract_mib_stats)
53 		return wmi_handle->ops->extract_mib_stats(wmi_handle,
54 							  evt_buf,
55 							  mib_stats);
56 
57 	return QDF_STATUS_E_FAILURE;
58 }
59 #endif
60 
61 QDF_STATUS
wmi_unified_peer_stats_request_send(wmi_unified_t wmi_handle,struct peer_stats_request_params * param)62 wmi_unified_peer_stats_request_send(wmi_unified_t wmi_handle,
63 				    struct peer_stats_request_params *param)
64 {
65 	if (wmi_handle->ops->send_request_peer_stats_info_cmd)
66 		return wmi_handle->ops->send_request_peer_stats_info_cmd(
67 							     wmi_handle, param);
68 
69 	return QDF_STATUS_E_FAILURE;
70 }
71 
72 QDF_STATUS
wmi_extract_peer_stats_param(wmi_unified_t wmi_handle,void * evt_buf,wmi_host_stats_event * stats_param)73 wmi_extract_peer_stats_param(wmi_unified_t wmi_handle, void *evt_buf,
74 			     wmi_host_stats_event *stats_param)
75 {
76 	if (wmi_handle->ops->extract_peer_stats_count)
77 		return wmi_handle->ops->extract_peer_stats_count(wmi_handle,
78 			evt_buf, stats_param);
79 
80 	return QDF_STATUS_E_FAILURE;
81 }
82 
83 QDF_STATUS
wmi_extract_peer_tx_pkt_per_mcs(wmi_unified_t wmi_handle,void * evt_buf,uint32_t index,wmi_host_peer_stats_info * peer_stats_info)84 wmi_extract_peer_tx_pkt_per_mcs(wmi_unified_t wmi_handle, void *evt_buf,
85 				uint32_t index,
86 				wmi_host_peer_stats_info *peer_stats_info)
87 {
88 	if (wmi_handle->ops->extract_peer_tx_pkt_per_mcs)
89 		return wmi_handle->ops->extract_peer_tx_pkt_per_mcs(wmi_handle,
90 				evt_buf, index, peer_stats_info);
91 
92 	return QDF_STATUS_E_FAILURE;
93 }
94 
95 QDF_STATUS
wmi_extract_peer_rx_pkt_per_mcs(wmi_unified_t wmi_handle,void * evt_buf,uint32_t index,wmi_host_peer_stats_info * peer_stats_info)96 wmi_extract_peer_rx_pkt_per_mcs(wmi_unified_t wmi_handle, void *evt_buf,
97 				uint32_t index,
98 				wmi_host_peer_stats_info *peer_stats_info)
99 {
100 	if (wmi_handle->ops->extract_peer_rx_pkt_per_mcs)
101 		return wmi_handle->ops->extract_peer_rx_pkt_per_mcs(wmi_handle,
102 				evt_buf, index, peer_stats_info);
103 
104 	return QDF_STATUS_E_FAILURE;
105 }
106 
107 QDF_STATUS
wmi_extract_peer_stats_info(wmi_unified_t wmi_handle,void * evt_buf,uint32_t index,wmi_host_peer_stats_info * peer_stats_info)108 wmi_extract_peer_stats_info(wmi_unified_t wmi_handle, void *evt_buf,
109 			    uint32_t index,
110 			    wmi_host_peer_stats_info *peer_stats_info)
111 {
112 	if (wmi_handle->ops->extract_peer_stats_info)
113 		return wmi_handle->ops->extract_peer_stats_info(wmi_handle,
114 				evt_buf, index, peer_stats_info);
115 
116 	return QDF_STATUS_E_FAILURE;
117 }
118 
119 #ifdef WLAN_FEATURE_BIG_DATA_STATS
120 QDF_STATUS
wmi_extract_big_data_stats_param(wmi_unified_t wmi_handle,void * evt_buf,struct big_data_stats_event * stats_param)121 wmi_extract_big_data_stats_param(wmi_unified_t wmi_handle, void *evt_buf,
122 				 struct big_data_stats_event *stats_param)
123 {
124 	if (wmi_handle->ops->extract_big_data_stats)
125 		return wmi_handle->ops->extract_big_data_stats(wmi_handle,
126 				evt_buf, stats_param);
127 
128 	return QDF_STATUS_E_FAILURE;
129 }
130 #endif
131