blob: 43aff83f740ee017ab3c16f85013b52e14fa63d5 [file] [log] [blame]
Dhanashri Atrefe5662c2016-03-25 12:57:53 -07001/*
Amir Patel1ea85d42019-01-09 15:19:10 +05302 * Copyright (c) 2016-2019 The Linux Foundation. All rights reserved.
Dhanashri Atrefe5662c2016-03-25 12:57:53 -07003 *
Dhanashri Atrefe5662c2016-03-25 12:57:53 -07004 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18
Yun Park7b648742017-04-02 14:17:59 -070019/**
Dhanashri Atrefe5662c2016-03-25 12:57:53 -070020 * @file cdp_txrx_host_stats.h
21 * @brief Define the host data path stats API functions
22 * called by the host control SW and the OS interface module
23 */
24#ifndef _CDP_TXRX_HOST_STATS_H_
25#define _CDP_TXRX_HOST_STATS_H_
Venkata Sharath Chandra Manchalaf2a125a2016-11-28 18:10:11 -080026#include "cdp_txrx_handle.h"
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053027#include <wmi_unified_api.h>
Ishank Jainbc2d91f2017-01-03 18:14:54 +053028/**
29 * cdp_host_stats_get: cdp call to get host stats
30 * @soc: SOC handle
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053031 * @vdev_id: vdev id of vdev
Ishank Jainbc2d91f2017-01-03 18:14:54 +053032 * @req: Requirement type
Ishank Jainbc2d91f2017-01-03 18:14:54 +053033 *
34 * return: 0 for Success, Failure returns error message
35 */
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +053036static inline int cdp_host_stats_get(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053037 uint8_t vdev_id,
Ishank Jain6290a3c2017-03-21 10:49:39 +053038 struct ol_txrx_stats_req *req)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +053039{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -070040 if (!soc || !soc->ops) {
41 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
42 "%s: Invalid Instance", __func__);
43 QDF_BUG(0);
44 return 0;
45 }
46
47 if (!soc->ops->host_stats_ops ||
48 !soc->ops->host_stats_ops->txrx_host_stats_get)
49 return 0;
50
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053051 return soc->ops->host_stats_ops->txrx_host_stats_get(soc, vdev_id, req);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +053052}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -070053
Ishank Jain6290a3c2017-03-21 10:49:39 +053054/**
Surya Prakash Raajen3a01bdd2019-02-19 13:19:36 +053055 * cdp_host_stats_get_ratekbps: cdp call to get rate in kbps
56 * @soc: SOC handle
57 * @preamb: Preamble
58 * @mcs: Modulation and Coding scheme index
59 * @htflag: Flag to identify HT or VHT
60 * @gintval: Gaurd Interval value
61 *
62 * return: 0 for Failure, Returns rate on Success
63 */
64static inline int cdp_host_stats_get_ratekbps(ol_txrx_soc_handle soc,
65 int preamb, int mcs,
66 int htflag, int gintval)
67{
68 if (!soc || !soc->ops) {
69 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
70 "%s: Invalid Instance", __func__);
71 QDF_BUG(0);
72 return 0;
73 }
74
75 if (!soc->ops->host_stats_ops ||
76 !soc->ops->host_stats_ops->txrx_get_ratekbps)
77 return 0;
78
79 return soc->ops->host_stats_ops->txrx_get_ratekbps(preamb,
80 mcs, htflag,
81 gintval);
82}
83
84/**
Ishank Jain6290a3c2017-03-21 10:49:39 +053085 * cdp_host_stats_clr: cdp call to clear host stats
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053086 * @soc: soc handle
87 * @vdev_id: vdev handle id
Ishank Jain6290a3c2017-03-21 10:49:39 +053088 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053089 * return: QDF_STATUS
Ishank Jain6290a3c2017-03-21 10:49:39 +053090 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053091static inline QDF_STATUS
92cdp_host_stats_clr(ol_txrx_soc_handle soc, uint8_t vdev_id)
Ishank Jain6290a3c2017-03-21 10:49:39 +053093{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -070094 if (!soc || !soc->ops) {
95 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
96 "%s: Invalid Instance", __func__);
97 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +053098 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -070099 }
100
101 if (!soc->ops->host_stats_ops ||
102 !soc->ops->host_stats_ops->txrx_host_stats_clr)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530103 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700104
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530105 return soc->ops->host_stats_ops->txrx_host_stats_clr(soc, vdev_id);
Ishank Jain6290a3c2017-03-21 10:49:39 +0530106}
107
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530108static inline QDF_STATUS
109cdp_host_ce_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530110{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700111 if (!soc || !soc->ops) {
112 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
113 "%s: Invalid Instance", __func__);
114 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530115 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700116 }
117
118 if (!soc->ops->host_stats_ops ||
119 !soc->ops->host_stats_ops->txrx_host_ce_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530120 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700121
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530122 return soc->ops->host_stats_ops->txrx_host_ce_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530123}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700124
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530125static inline int cdp_stats_publish
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530126 (ol_txrx_soc_handle soc, uint8_t pdev_id,
Pranita Solanke71371bc2018-11-26 16:57:22 +0530127 struct cdp_stats_extd *buf)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530128{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700129 if (!soc || !soc->ops) {
130 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
131 "%s: Invalid Instance", __func__);
132 QDF_BUG(0);
133 return 0;
134 }
135
136 if (!soc->ops->host_stats_ops ||
137 !soc->ops->host_stats_ops->txrx_stats_publish)
138 return 0;
139
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530140 return soc->ops->host_stats_ops->txrx_stats_publish(soc, pdev_id, buf);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530141}
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700142
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700143/**
144 * @brief Enable enhanced stats functionality.
145 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530146 * @param soc - the soc object
147 * @param pdev_id - id of the physical device object
148 * @return - QDF_STATUS
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700149 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530150static inline QDF_STATUS
151cdp_enable_enhanced_stats(ol_txrx_soc_handle soc, uint8_t pdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530152{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700153 if (!soc || !soc->ops) {
154 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
155 "%s: Invalid Instance", __func__);
156 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530157 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700158 }
159
160 if (!soc->ops->host_stats_ops ||
161 !soc->ops->host_stats_ops->txrx_enable_enhanced_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530162 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700163
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530164 return soc->ops->host_stats_ops->txrx_enable_enhanced_stats
165 (soc, pdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530166}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700167
168/**
169 * @brief Disable enhanced stats functionality.
170 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530171 * @param soc - the soc object
172 * @param pdev_id - id of the physical device object
173 * @return - QDF_STATUS
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700174 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530175static inline QDF_STATUS
176cdp_disable_enhanced_stats(ol_txrx_soc_handle soc, uint8_t pdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530177{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700178 if (!soc || !soc->ops) {
179 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
180 "%s: Invalid Instance", __func__);
181 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530182 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700183 }
184
185 if (!soc->ops->host_stats_ops ||
186 !soc->ops->host_stats_ops->txrx_disable_enhanced_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530187 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700188
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530189 return soc->ops->host_stats_ops->txrx_disable_enhanced_stats
190 (soc, pdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530191}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700192
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530193static inline QDF_STATUS
194cdp_tx_print_tso_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530195{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700196 if (!soc || !soc->ops) {
197 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
198 "%s: Invalid Instance", __func__);
199 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530200 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700201 }
202
203 if (!soc->ops->host_stats_ops ||
204 !soc->ops->host_stats_ops->tx_print_tso_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530205 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700206
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530207 return soc->ops->host_stats_ops->tx_print_tso_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530208}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700209
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530210static inline QDF_STATUS
211cdp_tx_rst_tso_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530212{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700213 if (!soc || !soc->ops) {
214 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
215 "%s: Invalid Instance", __func__);
216 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530217 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700218 }
219
220 if (!soc->ops->host_stats_ops ||
221 !soc->ops->host_stats_ops->tx_rst_tso_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530222 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700223
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530224 return soc->ops->host_stats_ops->tx_rst_tso_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530225}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700226
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530227static inline QDF_STATUS
228cdp_tx_print_sg_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530229{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700230 if (!soc || !soc->ops) {
231 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
232 "%s: Invalid Instance", __func__);
233 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530234 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700235 }
236
237 if (!soc->ops->host_stats_ops ||
238 !soc->ops->host_stats_ops->tx_print_sg_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530239 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700240
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530241 return soc->ops->host_stats_ops->tx_print_sg_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530242}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700243
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530244static inline QDF_STATUS
245cdp_tx_rst_sg_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530246{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700247 if (!soc || !soc->ops) {
248 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
249 "%s: Invalid Instance", __func__);
250 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530251 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700252 }
253
254 if (!soc->ops->host_stats_ops ||
255 !soc->ops->host_stats_ops->tx_rst_sg_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530256 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700257
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530258 return soc->ops->host_stats_ops->tx_rst_sg_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530259}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700260
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530261static inline QDF_STATUS
262cdp_print_rx_cksum_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530263{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700264 if (!soc || !soc->ops) {
265 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
266 "%s: Invalid Instance", __func__);
267 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530268 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700269 }
270
271 if (!soc->ops->host_stats_ops ||
272 !soc->ops->host_stats_ops->print_rx_cksum_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530273 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700274
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530275 return soc->ops->host_stats_ops->print_rx_cksum_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530276}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700277
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530278static inline QDF_STATUS
279cdp_rst_rx_cksum_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530280{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700281 if (!soc || !soc->ops) {
282 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
283 "%s: Invalid Instance", __func__);
284 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530285 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700286 }
287
288 if (!soc->ops->host_stats_ops ||
289 !soc->ops->host_stats_ops->rst_rx_cksum_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530290 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700291
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530292 return soc->ops->host_stats_ops->rst_rx_cksum_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530293}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700294
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530295static inline QDF_STATUS
296cdp_host_me_stats(ol_txrx_soc_handle soc, uint8_t vdev_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530297{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700298 if (!soc || !soc->ops) {
299 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
300 "%s: Invalid Instance", __func__);
301 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530302 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700303 }
304
305 if (!soc->ops->host_stats_ops ||
306 !soc->ops->host_stats_ops->txrx_host_me_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530307 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700308
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530309 return soc->ops->host_stats_ops->txrx_host_me_stats(soc, vdev_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530310}
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700311
Venkata Sharath Chandra Manchala0cb31982018-03-30 15:55:26 -0700312/**
313 * cdp_per_peer_stats(): function to print per peer REO Queue stats
314 * @soc: soc handle
315 * @pdev: physical device
316 * @addr: peer address
317 *
318 * return: status
319 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530320static inline QDF_STATUS cdp_per_peer_stats(ol_txrx_soc_handle soc,
321 uint8_t *addr)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530322{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700323 if (!soc || !soc->ops) {
324 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
Venkata Sharath Chandra Manchala0cb31982018-03-30 15:55:26 -0700325 "%s: Invalid Instance", __func__);
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700326 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530327 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700328 }
329
330 if (!soc->ops->host_stats_ops ||
331 !soc->ops->host_stats_ops->txrx_per_peer_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530332 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700333
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530334 return soc->ops->host_stats_ops->txrx_per_peer_stats(soc, addr);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530335}
336
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530337static inline int cdp_host_msdu_ttl_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530338 uint8_t vdev_id,
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530339 struct ol_txrx_stats_req *req)
340{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700341 if (!soc || !soc->ops) {
342 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
343 "%s: Invalid Instance", __func__);
344 QDF_BUG(0);
345 return 0;
346 }
347
348 if (!soc->ops->host_stats_ops ||
349 !soc->ops->host_stats_ops->txrx_host_msdu_ttl_stats)
350 return 0;
351
352 return soc->ops->host_stats_ops->txrx_host_msdu_ttl_stats
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530353 (soc, vdev_id, req);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530354}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700355
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530356static inline QDF_STATUS cdp_update_peer_stats(ol_txrx_soc_handle soc,
357 uint8_t vdev_id, uint8_t *mac,
358 void *stats,
359 uint32_t last_tx_rate_mcs,
360 uint32_t stats_id)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530361{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700362 if (!soc || !soc->ops) {
363 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
364 "%s: Invalid Instance", __func__);
365 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530366 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700367 }
368
369 if (!soc->ops->host_stats_ops ||
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530370 !soc->ops->host_stats_ops->txrx_update_peer_stats)
371 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700372
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530373 return soc->ops->host_stats_ops->txrx_update_peer_stats
374 (soc, vdev_id, mac, stats, last_tx_rate_mcs, stats_id);
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530375}
Dhanashri Atrefe5662c2016-03-25 12:57:53 -0700376
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530377static inline QDF_STATUS cdp_get_dp_fw_peer_stats(ol_txrx_soc_handle soc,
378 uint8_t pdev_id,
379 uint8_t *mac, uint32_t caps,
380 uint32_t copy_stats)
Nandha Kishore Easwarane5444bc2016-10-20 13:23:23 +0530381{
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700382 if (!soc || !soc->ops) {
383 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
384 "%s: Invalid Instance", __func__);
385 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530386 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700387 }
388
389 if (!soc->ops->host_stats_ops ||
390 !soc->ops->host_stats_ops->get_fw_peer_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530391 return QDF_STATUS_E_FAILURE;
Venkata Sharath Chandra Manchalac4a6b842017-10-25 12:18:08 -0700392
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530393 return soc->ops->host_stats_ops->get_fw_peer_stats
394 (soc, pdev_id, mac, caps, copy_stats);
Ishank Jain6290a3c2017-03-21 10:49:39 +0530395}
396
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530397static inline QDF_STATUS cdp_get_dp_htt_stats(ol_txrx_soc_handle soc,
398 uint8_t pdev_id,
399 void *data, uint32_t data_len)
Chaithanya Garrepalli30927c52017-11-22 14:31:47 +0530400{
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530401 if (!soc || !soc->ops) {
402 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
403 "%s: Invalid Instance", __func__);
404 QDF_BUG(0);
405 return QDF_STATUS_E_FAILURE;
406 }
407
408 if (!soc->ops->host_stats_ops ||
409 !soc->ops->host_stats_ops->get_htt_stats)
410 return QDF_STATUS_E_FAILURE;
411
412 return soc->ops->host_stats_ops->get_htt_stats(soc, pdev_id, data,
413 data_len);
Chaithanya Garrepalli30927c52017-11-22 14:31:47 +0530414}
415
Nandha Kishore Easwaran4b8148b2016-09-02 11:47:00 +0530416/**
Amir Patel253053f2018-07-17 00:20:57 +0530417 * @brief Update pdev host stats received from firmware
418 * (wmi_host_pdev_stats and wmi_host_pdev_ext_stats) into dp
419 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530420 * @param soc - soc handle
421 * @param pdev_id - id of the physical device object
Amir Patel253053f2018-07-17 00:20:57 +0530422 * @param data - pdev stats
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530423 * @return - QDF_STATUS
Amir Patel253053f2018-07-17 00:20:57 +0530424 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530425static inline QDF_STATUS
Amir Patel253053f2018-07-17 00:20:57 +0530426cdp_update_pdev_host_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530427 uint8_t pdev_id,
Amir Patel253053f2018-07-17 00:20:57 +0530428 void *data,
429 uint16_t stats_id)
430{
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530431 if (!soc || !soc->ops) {
432 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
433 "%s: Invalid Instance", __func__);
434 QDF_BUG(0);
435 return QDF_STATUS_E_FAILURE;
436 }
437
438 if (!soc->ops->host_stats_ops ||
439 !soc->ops->host_stats_ops->txrx_update_pdev_stats)
440 return QDF_STATUS_E_FAILURE;
441
442 return soc->ops->host_stats_ops->txrx_update_pdev_stats(soc, pdev_id,
443 data,
444 stats_id);
Amir Patel253053f2018-07-17 00:20:57 +0530445}
446
447/**
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530448 * @brief Update vdev host stats
449 *
450 * @param soc - soc handle
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530451 * @param vdev_id - id of the virtual device object
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530452 * @param data - pdev stats
453 * @param stats_id - type of stats
454 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530455 * @return - QDF_STATUS
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530456 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530457static inline QDF_STATUS
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530458cdp_update_vdev_host_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530459 uint8_t vdev_id,
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530460 void *data,
461 uint16_t stats_id)
462{
463 if (!soc || !soc->ops) {
464 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
465 "%s: Invalid Instance", __func__);
466 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530467 return QDF_STATUS_E_FAILURE;
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530468 }
469
470 if (!soc->ops->host_stats_ops ||
471 !soc->ops->host_stats_ops->txrx_update_vdev_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530472 return QDF_STATUS_E_FAILURE;
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530473
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530474 return soc->ops->host_stats_ops->txrx_update_vdev_stats(soc, vdev_id,
475 data,
Aditya Sathish8482a0c2019-05-09 11:03:42 +0530476 stats_id);
477}
478
479/**
Amir Patel253053f2018-07-17 00:20:57 +0530480 * @brief Call to get peer stats
481 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530482 * @param soc - soc handle
483 * @param vdev_id - vdev_id of vdev object
484 * @param peer_mac - mac address of the peer
Amir Patel253053f2018-07-17 00:20:57 +0530485 * @return - struct cdp_peer_stats
486 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530487static inline QDF_STATUS
488cdp_host_get_peer_stats(ol_txrx_soc_handle soc, uint8_t vdev_id,
489 uint8_t *peer_mac,
490 struct cdp_peer_stats *peer_stats)
Amir Patel253053f2018-07-17 00:20:57 +0530491{
492 if (!soc || !soc->ops) {
493 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
494 "%s: Invalid Instance", __func__);
495 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530496 return QDF_STATUS_E_FAILURE;
Amir Patel253053f2018-07-17 00:20:57 +0530497 }
498
499 if (!soc->ops->host_stats_ops ||
500 !soc->ops->host_stats_ops->txrx_get_peer_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530501 return QDF_STATUS_E_FAILURE;
Amir Patel253053f2018-07-17 00:20:57 +0530502
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530503 return soc->ops->host_stats_ops->txrx_get_peer_stats(soc, vdev_id,
504 peer_mac,
505 peer_stats);
Amir Patel253053f2018-07-17 00:20:57 +0530506}
507
508/**
509 * @brief Call to reset ald stats
510 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530511 * @param soc - soc handle
512 * @param vdev_id - vdev_id of vdev object
513 * @param peer_mac - mac address of the peer
Amir Patel253053f2018-07-17 00:20:57 +0530514 * @return - void
515 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530516static inline QDF_STATUS
517cdp_host_reset_peer_ald_stats(ol_txrx_soc_handle soc, uint8_t vdev_id,
518 uint8_t *peer_mac)
Amir Patel253053f2018-07-17 00:20:57 +0530519{
520 if (!soc || !soc->ops) {
521 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
522 "%s: Invalid Instance", __func__);
523 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530524 return QDF_STATUS_E_FAILURE;
Amir Patel253053f2018-07-17 00:20:57 +0530525 }
526
527 if (!soc->ops->host_stats_ops ||
528 !soc->ops->host_stats_ops->txrx_reset_peer_ald_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530529 return QDF_STATUS_E_FAILURE;
Amir Patel253053f2018-07-17 00:20:57 +0530530
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530531 return soc->ops->host_stats_ops->txrx_reset_peer_ald_stats(soc,
532 vdev_id,
533 peer_mac);
Amir Patel253053f2018-07-17 00:20:57 +0530534}
535
536/**
537 * @brief Call to reset peer stats
538 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530539 * @param soc - soc handle
540 * @param vdev_id - vdev_id of vdev object
541 * @param peer_mac - mac address of the peer
542 * @return - QDF_STATUS
Amir Patel253053f2018-07-17 00:20:57 +0530543 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530544static inline QDF_STATUS
Amir Patel253053f2018-07-17 00:20:57 +0530545cdp_host_reset_peer_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530546 uint8_t vdev_id, uint8_t *peer_mac)
Amir Patel253053f2018-07-17 00:20:57 +0530547{
548 if (!soc || !soc->ops) {
549 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
550 "%s: Invalid Instance", __func__);
551 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530552 return QDF_STATUS_E_FAILURE;
Amir Patel253053f2018-07-17 00:20:57 +0530553 }
554
555 if (!soc->ops->host_stats_ops ||
556 !soc->ops->host_stats_ops->txrx_reset_peer_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530557 return QDF_STATUS_E_FAILURE;
Amir Patel253053f2018-07-17 00:20:57 +0530558
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530559 return soc->ops->host_stats_ops->txrx_reset_peer_stats(soc,
560 vdev_id,
561 peer_mac);
Amir Patel253053f2018-07-17 00:20:57 +0530562}
563
564/**
565 * @brief Call to get vdev stats
566 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530567 * @param soc - dp soc object
568 * @param vdev_id - id of dp vdev object
Amir Patel253053f2018-07-17 00:20:57 +0530569 * @param buf - buffer
570 * @return - int
571 */
572static inline int
573cdp_host_get_vdev_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530574 uint8_t vdev_id,
Amir Patel253053f2018-07-17 00:20:57 +0530575 struct cdp_vdev_stats *buf,
576 bool is_aggregate)
577{
578 if (!soc || !soc->ops) {
579 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
580 "%s: Invalid Instance", __func__);
581 QDF_BUG(0);
582 return 0;
583 }
584
585 if (!soc->ops->host_stats_ops ||
586 !soc->ops->host_stats_ops->txrx_get_vdev_stats)
587 return 0;
588
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530589 return soc->ops->host_stats_ops->txrx_get_vdev_stats(soc, vdev_id,
Amir Patel253053f2018-07-17 00:20:57 +0530590 buf,
591 is_aggregate);
592}
593
594/**
595 * @brief Call to update vdev stats received from firmware
596 * (wmi_host_vdev_stats and wmi_host_vdev_extd_stats) into dp
597 *
598 * @param data - stats data to be updated
599 * @param size - size of stats data
600 * @param stats_id - stats id
601 * @return - int
602 */
603static inline int
604cdp_update_host_vdev_stats(ol_txrx_soc_handle soc,
605 void *data,
606 uint32_t size,
607 uint32_t stats_id)
608{
609 if (!soc || !soc->ops) {
610 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
611 "%s: Invalid Instance", __func__);
612 QDF_BUG(0);
613 return 0;
614 }
615
616 if (!soc->ops->host_stats_ops ||
617 !soc->ops->host_stats_ops->txrx_process_wmi_host_vdev_stats)
618 return 0;
619
620 return soc->ops->host_stats_ops->txrx_process_wmi_host_vdev_stats
621 (soc,
622 data,
623 size,
624 stats_id);
625}
626
627/**
628 * @brief Call to get vdev extd stats
629 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530630 * @param soc - soc handle
631 * @param vdev_id - id of dp vdev object
Amir Patel253053f2018-07-17 00:20:57 +0530632 * @param buf - buffer
633 * @return - int
634 */
635static inline int
636cdp_get_vdev_extd_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530637 uint8_t vdev_id,
638 wmi_host_vdev_extd_stats *buf)
Amir Patel253053f2018-07-17 00:20:57 +0530639{
640 if (!soc || !soc->ops) {
641 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
642 "%s: Invalid Instance", __func__);
643 QDF_BUG(0);
644 return 0;
645 }
646
647 if (!soc->ops->host_stats_ops ||
648 !soc->ops->host_stats_ops->txrx_get_vdev_extd_stats)
649 return 0;
650
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530651 return soc->ops->host_stats_ops->txrx_get_vdev_extd_stats(soc, vdev_id,
652 buf);
Amir Patel253053f2018-07-17 00:20:57 +0530653}
654
655/**
Amir Patel756d05e2018-10-10 12:35:30 +0530656 * @brief Call to get cdp_pdev_stats
657 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530658 * @param soc - soc handle
659 * @param pdev_id - id of dp pdev object
660 * @param buf - buffer to hold cdp_pdev_stats
661 * @return - success/failure
Amir Patel756d05e2018-10-10 12:35:30 +0530662 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530663static inline int
Amir Patel756d05e2018-10-10 12:35:30 +0530664cdp_host_get_pdev_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530665 uint8_t pdev_id, struct cdp_pdev_stats *buf)
Amir Patel756d05e2018-10-10 12:35:30 +0530666{
667 if (!soc || !soc->ops) {
668 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
669 "%s: Invalid Instance", __func__);
670 QDF_BUG(0);
671 return 0;
672 }
673
674 if (!soc->ops->host_stats_ops ||
675 !soc->ops->host_stats_ops->txrx_get_pdev_stats)
676 return 0;
677
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530678 return soc->ops->host_stats_ops->txrx_get_pdev_stats(soc, pdev_id, buf);
Amir Patel756d05e2018-10-10 12:35:30 +0530679}
680
681/**
682 * @brief Call to get radio stats
683 *
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530684 * @param soc - soc handle
685 * @param pdev_id - id of dp pdev object
Amir Patel756d05e2018-10-10 12:35:30 +0530686 * @param scn_stats_user - stats buffer
687 * @return - int
688 */
689static inline int
690cdp_host_get_radio_stats(ol_txrx_soc_handle soc,
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530691 uint8_t pdev_id,
Amir Patel756d05e2018-10-10 12:35:30 +0530692 void *buf)
693{
694 if (!soc || !soc->ops) {
695 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
696 "%s: Invalid Instance", __func__);
697 QDF_BUG(0);
698 return 0;
699 }
700
701 if (!soc->ops->host_stats_ops ||
702 !soc->ops->host_stats_ops->txrx_get_radio_stats)
703 return 0;
704
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530705 return soc->ops->host_stats_ops->txrx_get_radio_stats(soc, pdev_id,
Amir Patel756d05e2018-10-10 12:35:30 +0530706 buf);
707}
708
709/**
Amir Patel256dcbe2019-02-26 21:49:24 +0530710 * @brief confgure rate stats at soc
711 *
712 * @param soc - opaque soc handle
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530713 * @param val - capabilities
714 * @return - QDF_STATUS
Amir Patel256dcbe2019-02-26 21:49:24 +0530715 */
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530716static inline QDF_STATUS
Amir Patel256dcbe2019-02-26 21:49:24 +0530717cdp_soc_configure_rate_stats(ol_txrx_soc_handle soc, uint8_t val)
718{
719 if (!soc || !soc->ops) {
720 QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
721 "%s: Invalid Instance", __func__);
722 QDF_BUG(0);
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530723 return QDF_STATUS_E_FAILURE;
Amir Patel256dcbe2019-02-26 21:49:24 +0530724 }
725
726 if (!soc->ops->host_stats_ops ||
727 !soc->ops->host_stats_ops->configure_rate_stats)
Pavankumar Nandeshware54c5842019-09-29 16:01:09 +0530728 return QDF_STATUS_E_FAILURE;
Amir Patel256dcbe2019-02-26 21:49:24 +0530729
730 return soc->ops->host_stats_ops->configure_rate_stats(soc, val);
731}
732
Nandha Kishore Easwaran4b8148b2016-09-02 11:47:00 +0530733#endif /* _CDP_TXRX_HOST_STATS_H_ */