xref: /wlan-driver/qca-wifi-host-cmn/dp/inc/cdp_txrx_mon.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name /**
21*5113495bSYour Name  * DOC: cdp_txrx_mon.h
22*5113495bSYour Name  * Define the monitor mode API functions
23*5113495bSYour Name  * called by the host control SW and the OS interface module
24*5113495bSYour Name  */
25*5113495bSYour Name 
26*5113495bSYour Name #ifndef _CDP_TXRX_MON_H_
27*5113495bSYour Name #define _CDP_TXRX_MON_H_
28*5113495bSYour Name #include "cdp_txrx_handle.h"
29*5113495bSYour Name #include <cdp_txrx_cmn.h>
30*5113495bSYour Name 
cdp_reset_monitor_mode(ol_txrx_soc_handle soc,uint8_t pdev_id,u_int8_t smart_monitor)31*5113495bSYour Name static inline QDF_STATUS cdp_reset_monitor_mode(ol_txrx_soc_handle soc,
32*5113495bSYour Name 						uint8_t pdev_id,
33*5113495bSYour Name 						u_int8_t smart_monitor)
34*5113495bSYour Name {
35*5113495bSYour Name 	if (!soc || !soc->ops) {
36*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
37*5113495bSYour Name 		QDF_BUG(0);
38*5113495bSYour Name 		return 0;
39*5113495bSYour Name 	}
40*5113495bSYour Name 
41*5113495bSYour Name 	if (!soc->ops->mon_ops ||
42*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_reset_monitor_mode)
43*5113495bSYour Name 		return 0;
44*5113495bSYour Name 
45*5113495bSYour Name 	return soc->ops->mon_ops->txrx_reset_monitor_mode(soc, pdev_id,
46*5113495bSYour Name 							  smart_monitor);
47*5113495bSYour Name }
48*5113495bSYour Name 
49*5113495bSYour Name /**
50*5113495bSYour Name  * cdp_deliver_tx_mgmt() - Deliver mgmt frame for tx capture
51*5113495bSYour Name  * @soc: Datapath SOC handle
52*5113495bSYour Name  * @pdev_id: id of datapath PDEV handle
53*5113495bSYour Name  * @nbuf: Management frame buffer
54*5113495bSYour Name  */
55*5113495bSYour Name static inline QDF_STATUS
cdp_deliver_tx_mgmt(ol_txrx_soc_handle soc,uint8_t pdev_id,qdf_nbuf_t nbuf)56*5113495bSYour Name cdp_deliver_tx_mgmt(ol_txrx_soc_handle soc, uint8_t pdev_id,
57*5113495bSYour Name 		    qdf_nbuf_t nbuf)
58*5113495bSYour Name {
59*5113495bSYour Name 	if (!soc || !soc->ops) {
60*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
61*5113495bSYour Name 		QDF_BUG(0);
62*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
63*5113495bSYour Name 	}
64*5113495bSYour Name 
65*5113495bSYour Name 	if (!soc->ops->mon_ops ||
66*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_deliver_tx_mgmt)
67*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
68*5113495bSYour Name 
69*5113495bSYour Name 	return soc->ops->mon_ops->txrx_deliver_tx_mgmt(soc, pdev_id, nbuf);
70*5113495bSYour Name }
71*5113495bSYour Name 
72*5113495bSYour Name #ifdef QCA_SUPPORT_LITE_MONITOR
73*5113495bSYour Name /**
74*5113495bSYour Name  * cdp_set_lite_mon_config() - Set lite monitor config/filter
75*5113495bSYour Name  *
76*5113495bSYour Name  * @soc: dp soc handle
77*5113495bSYour Name  * @config: lite monitor config
78*5113495bSYour Name  * @pdev_id: pdev id
79*5113495bSYour Name  *
80*5113495bSYour Name  * This API is used to enable/disable lite monitor feature
81*5113495bSYour Name  *
82*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if value set successfully
83*5113495bSYour Name  *         QDF_STATUS_E_INVAL false if error
84*5113495bSYour Name  */
85*5113495bSYour Name static inline QDF_STATUS
cdp_set_lite_mon_config(ol_txrx_soc_handle soc,struct cdp_lite_mon_filter_config * config,uint8_t pdev_id)86*5113495bSYour Name cdp_set_lite_mon_config(ol_txrx_soc_handle soc,
87*5113495bSYour Name 			struct cdp_lite_mon_filter_config *config,
88*5113495bSYour Name 			uint8_t pdev_id)
89*5113495bSYour Name {
90*5113495bSYour Name 	if (!soc || !soc->ops) {
91*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
92*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
93*5113495bSYour Name 	}
94*5113495bSYour Name 
95*5113495bSYour Name 	if (!soc->ops->mon_ops ||
96*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_set_lite_mon_config)
97*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
98*5113495bSYour Name 
99*5113495bSYour Name 	return soc->ops->mon_ops->txrx_set_lite_mon_config(soc, config,
100*5113495bSYour Name 							   pdev_id);
101*5113495bSYour Name }
102*5113495bSYour Name 
103*5113495bSYour Name /**
104*5113495bSYour Name  * cdp_get_lite_mon_config() - Get lite monitor config
105*5113495bSYour Name  *
106*5113495bSYour Name  * @soc: dp soc handle
107*5113495bSYour Name  * @config: lite monitor config
108*5113495bSYour Name  * @pdev_id: pdev id
109*5113495bSYour Name  *
110*5113495bSYour Name  * This API is used to get lite monitor feature config
111*5113495bSYour Name  *
112*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if get is successfully
113*5113495bSYour Name  *         QDF_STATUS_E_INVAL false if error
114*5113495bSYour Name  */
115*5113495bSYour Name static inline QDF_STATUS
cdp_get_lite_mon_config(ol_txrx_soc_handle soc,struct cdp_lite_mon_filter_config * config,uint8_t pdev_id)116*5113495bSYour Name cdp_get_lite_mon_config(ol_txrx_soc_handle soc,
117*5113495bSYour Name 			struct cdp_lite_mon_filter_config *config,
118*5113495bSYour Name 			uint8_t pdev_id)
119*5113495bSYour Name {
120*5113495bSYour Name 	if (!soc || !soc->ops) {
121*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
122*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
123*5113495bSYour Name 	}
124*5113495bSYour Name 
125*5113495bSYour Name 	if (!soc->ops->mon_ops ||
126*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_get_lite_mon_config)
127*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
128*5113495bSYour Name 
129*5113495bSYour Name 	return soc->ops->mon_ops->txrx_get_lite_mon_config(soc, config,
130*5113495bSYour Name 							   pdev_id);
131*5113495bSYour Name }
132*5113495bSYour Name 
133*5113495bSYour Name /**
134*5113495bSYour Name  * cdp_set_lite_mon_peer_config() - Set lite monitor peer config
135*5113495bSYour Name  *
136*5113495bSYour Name  * @soc: dp soc handle
137*5113495bSYour Name  * @config: lite monitor peer config
138*5113495bSYour Name  * @pdev_id: pdev id
139*5113495bSYour Name  *
140*5113495bSYour Name  * This API is used to add/del lite monitor peers
141*5113495bSYour Name  *
142*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if value set successfully
143*5113495bSYour Name  *         QDF_STATUS_E_INVAL false if error
144*5113495bSYour Name  */
145*5113495bSYour Name static inline QDF_STATUS
cdp_set_lite_mon_peer_config(ol_txrx_soc_handle soc,struct cdp_lite_mon_peer_config * config,uint8_t pdev_id)146*5113495bSYour Name cdp_set_lite_mon_peer_config(ol_txrx_soc_handle soc,
147*5113495bSYour Name 			     struct cdp_lite_mon_peer_config *config,
148*5113495bSYour Name 			     uint8_t pdev_id)
149*5113495bSYour Name {
150*5113495bSYour Name 	if (!soc || !soc->ops) {
151*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
152*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
153*5113495bSYour Name 	}
154*5113495bSYour Name 
155*5113495bSYour Name 	if (!soc->ops->mon_ops ||
156*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_set_lite_mon_peer_config)
157*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
158*5113495bSYour Name 
159*5113495bSYour Name 	return soc->ops->mon_ops->txrx_set_lite_mon_peer_config(soc, config,
160*5113495bSYour Name 								pdev_id);
161*5113495bSYour Name }
162*5113495bSYour Name 
163*5113495bSYour Name /**
164*5113495bSYour Name  * cdp_get_lite_mon_peer_config() - Get lite monitor peer list
165*5113495bSYour Name  *
166*5113495bSYour Name  * @soc: dp soc handle
167*5113495bSYour Name  * @info: lite monitor peer info
168*5113495bSYour Name  * @pdev_id: pdev id
169*5113495bSYour Name  *
170*5113495bSYour Name  * This API is used to get lite monitor peers
171*5113495bSYour Name  *
172*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if value set successfully
173*5113495bSYour Name  *         QDF_STATUS_E_INVAL false if error
174*5113495bSYour Name  */
175*5113495bSYour Name static inline QDF_STATUS
cdp_get_lite_mon_peer_config(ol_txrx_soc_handle soc,struct cdp_lite_mon_peer_info * info,uint8_t pdev_id)176*5113495bSYour Name cdp_get_lite_mon_peer_config(ol_txrx_soc_handle soc,
177*5113495bSYour Name 			     struct cdp_lite_mon_peer_info *info,
178*5113495bSYour Name 			     uint8_t pdev_id)
179*5113495bSYour Name {
180*5113495bSYour Name 	if (!soc || !soc->ops) {
181*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
182*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
183*5113495bSYour Name 	}
184*5113495bSYour Name 
185*5113495bSYour Name 	if (!soc->ops->mon_ops ||
186*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_get_lite_mon_peer_config)
187*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
188*5113495bSYour Name 
189*5113495bSYour Name 	return soc->ops->mon_ops->txrx_get_lite_mon_peer_config(soc, info,
190*5113495bSYour Name 								pdev_id);
191*5113495bSYour Name }
192*5113495bSYour Name 
193*5113495bSYour Name /**
194*5113495bSYour Name  * cdp_is_lite_mon_enabled() - Get lite monitor enable status
195*5113495bSYour Name  *
196*5113495bSYour Name  * @soc: dp soc handle
197*5113495bSYour Name  * @pdev_id: pdev id
198*5113495bSYour Name  * @dir: direction tx/rx
199*5113495bSYour Name  *
200*5113495bSYour Name  * This API is used to get lite monitor enable status
201*5113495bSYour Name  *
202*5113495bSYour Name  * Return: 0 if disabled
203*5113495bSYour Name  *         1 if enabled
204*5113495bSYour Name  */
205*5113495bSYour Name static inline int
cdp_is_lite_mon_enabled(ol_txrx_soc_handle soc,uint8_t pdev_id,uint8_t dir)206*5113495bSYour Name cdp_is_lite_mon_enabled(ol_txrx_soc_handle soc,
207*5113495bSYour Name 			uint8_t pdev_id, uint8_t dir)
208*5113495bSYour Name {
209*5113495bSYour Name 	if (!soc || !soc->ops) {
210*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
211*5113495bSYour Name 		return 0;
212*5113495bSYour Name 	}
213*5113495bSYour Name 
214*5113495bSYour Name 	if (!soc->ops->mon_ops ||
215*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_is_lite_mon_enabled)
216*5113495bSYour Name 		return 0;
217*5113495bSYour Name 
218*5113495bSYour Name 	return soc->ops->mon_ops->txrx_is_lite_mon_enabled(soc, pdev_id, dir);
219*5113495bSYour Name }
220*5113495bSYour Name 
221*5113495bSYour Name /*
222*5113495bSYour Name  * cdp_get_lite_mon_legacy_feature_enabled() - Get the legacy feature enabled
223*5113495bSYour Name  *
224*5113495bSYour Name  * @soc: dp soc handle
225*5113495bSYour Name  * @pdev_id: pdev id
226*5113495bSYour Name  * @dir: direction tx/rx
227*5113495bSYour Name  *
228*5113495bSYour Name  *  This API is used to get the legacy feature enabled using lite_mon
229*5113495bSYour Name  *
230*5113495bSYour Name  * Return: legacy feature enabled
231*5113495bSYour Name  */
232*5113495bSYour Name static inline int
cdp_get_lite_mon_legacy_feature_enabled(ol_txrx_soc_handle soc,uint8_t pdev_id,uint8_t dir)233*5113495bSYour Name cdp_get_lite_mon_legacy_feature_enabled(ol_txrx_soc_handle soc,
234*5113495bSYour Name 					uint8_t pdev_id, uint8_t dir)
235*5113495bSYour Name {
236*5113495bSYour Name 	if (!soc || !soc->ops) {
237*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
238*5113495bSYour Name 		return 0;
239*5113495bSYour Name 	}
240*5113495bSYour Name 
241*5113495bSYour Name 	if (!soc->ops->mon_ops ||
242*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_get_lite_mon_legacy_feature_enabled)
243*5113495bSYour Name 		return 0;
244*5113495bSYour Name 
245*5113495bSYour Name 	return soc->ops->mon_ops->txrx_get_lite_mon_legacy_feature_enabled(soc,
246*5113495bSYour Name 									   pdev_id,
247*5113495bSYour Name 									   dir);
248*5113495bSYour Name }
249*5113495bSYour Name #endif
250*5113495bSYour Name 
251*5113495bSYour Name #ifdef QCA_RSSI_DB2DBM
252*5113495bSYour Name /**
253*5113495bSYour Name  * cdp_set_params_rssi_dbm_conversion - Set the rssi dbm conversion params
254*5113495bSYour Name  *					into dp_pdev structure
255*5113495bSYour Name  * @soc: soc txrx handler
256*5113495bSYour Name  * @params: cdp_rssi_db2dbm_param_dp pointer
257*5113495bSYour Name  *
258*5113495bSYour Name  */
259*5113495bSYour Name static inline QDF_STATUS
cdp_set_params_rssi_dbm_conversion(ol_txrx_soc_handle soc,struct cdp_rssi_db2dbm_param_dp * params)260*5113495bSYour Name cdp_set_params_rssi_dbm_conversion(ol_txrx_soc_handle soc,
261*5113495bSYour Name 				   struct cdp_rssi_db2dbm_param_dp *params)
262*5113495bSYour Name {
263*5113495bSYour Name 	if (!soc || !soc->ops) {
264*5113495bSYour Name 		dp_cdp_debug("Invalid Instance:");
265*5113495bSYour Name 		QDF_BUG(0);
266*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
267*5113495bSYour Name 	}
268*5113495bSYour Name 
269*5113495bSYour Name 	if (!soc->ops->mon_ops ||
270*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_set_mon_pdev_params_rssi_dbm_conv)
271*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
272*5113495bSYour Name 
273*5113495bSYour Name 	return soc->ops->mon_ops->txrx_set_mon_pdev_params_rssi_dbm_conv
274*5113495bSYour Name 							    (soc, params);
275*5113495bSYour Name }
276*5113495bSYour Name #endif
277*5113495bSYour Name 
278*5113495bSYour Name #ifdef WLAN_CONFIG_TELEMETRY_AGENT
279*5113495bSYour Name /*
280*5113495bSYour Name  * cdp_update_pdev_mon_telemetry_airtime_stats() - update telemetry airtime
281*5113495bSYour Name  * stats in monitor pdev
282*5113495bSYour Name  *
283*5113495bSYour Name  *@soc: dp soc handle
284*5113495bSYour Name  *@pdev_id: pdev id
285*5113495bSYour Name  *
286*5113495bSYour Name  * This API is used to update telemetry airtime stats in monitor pdev
287*5113495bSYour Name  *
288*5113495bSYour Name  * Return: Success if stats are updated, else failure
289*5113495bSYour Name  */
290*5113495bSYour Name static inline QDF_STATUS
cdp_update_pdev_mon_telemetry_airtime_stats(ol_txrx_soc_handle soc,uint8_t pdev_id)291*5113495bSYour Name cdp_update_pdev_mon_telemetry_airtime_stats(ol_txrx_soc_handle soc,
292*5113495bSYour Name 					    uint8_t pdev_id)
293*5113495bSYour Name {
294*5113495bSYour Name 	if (!soc || !soc->ops) {
295*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
296*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
297*5113495bSYour Name 	}
298*5113495bSYour Name 
299*5113495bSYour Name 	if (!soc->ops->mon_ops ||
300*5113495bSYour Name 	    !soc->ops->mon_ops->txrx_update_pdev_mon_telemetry_airtime_stats)
301*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
302*5113495bSYour Name 
303*5113495bSYour Name 	return soc->ops->mon_ops->txrx_update_pdev_mon_telemetry_airtime_stats(
304*5113495bSYour Name 						soc, pdev_id);
305*5113495bSYour Name }
306*5113495bSYour Name #endif
307*5113495bSYour Name 
308*5113495bSYour Name #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
309*5113495bSYour Name /**
310*5113495bSYour Name  * cdp_start_local_pkt_capture() - start local pkt capture
311*5113495bSYour Name  * @soc: opaque soc handle
312*5113495bSYour Name  * @pdev_id: pdev id
313*5113495bSYour Name  * @filter: monitor filter config
314*5113495bSYour Name  *
315*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if success
316*5113495bSYour Name  *         QDF_STATUS_E_FAILURE if error
317*5113495bSYour Name  */
318*5113495bSYour Name static inline
cdp_start_local_pkt_capture(ol_txrx_soc_handle soc,uint8_t pdev_id,struct cdp_monitor_filter * filter)319*5113495bSYour Name QDF_STATUS cdp_start_local_pkt_capture(ol_txrx_soc_handle soc,
320*5113495bSYour Name 				       uint8_t pdev_id,
321*5113495bSYour Name 				       struct cdp_monitor_filter *filter)
322*5113495bSYour Name {
323*5113495bSYour Name 	if (!soc || !soc->ops) {
324*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
325*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
326*5113495bSYour Name 	}
327*5113495bSYour Name 
328*5113495bSYour Name 	if (!soc->ops->mon_ops ||
329*5113495bSYour Name 	    !soc->ops->mon_ops->start_local_pkt_capture)
330*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
331*5113495bSYour Name 
332*5113495bSYour Name 	return soc->ops->mon_ops->start_local_pkt_capture(soc, pdev_id, filter);
333*5113495bSYour Name }
334*5113495bSYour Name 
335*5113495bSYour Name /**
336*5113495bSYour Name  * cdp_stop_local_pkt_capture() - stop local pkt capture
337*5113495bSYour Name  * @soc: opaque soc handle
338*5113495bSYour Name  * @pdev_id: pdev_id
339*5113495bSYour Name  *
340*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if success
341*5113495bSYour Name  *         QDF_STATUS_E_FAILURE if error
342*5113495bSYour Name  */
343*5113495bSYour Name static inline
cdp_stop_local_pkt_capture(ol_txrx_soc_handle soc,uint8_t pdev_id)344*5113495bSYour Name QDF_STATUS cdp_stop_local_pkt_capture(ol_txrx_soc_handle soc, uint8_t pdev_id)
345*5113495bSYour Name {
346*5113495bSYour Name 	if (!soc || !soc->ops) {
347*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
348*5113495bSYour Name 		QDF_BUG(0);
349*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
350*5113495bSYour Name 	}
351*5113495bSYour Name 
352*5113495bSYour Name 	if (!soc->ops->mon_ops ||
353*5113495bSYour Name 	    !soc->ops->mon_ops->stop_local_pkt_capture)
354*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
355*5113495bSYour Name 
356*5113495bSYour Name 	return soc->ops->mon_ops->stop_local_pkt_capture(soc, pdev_id);
357*5113495bSYour Name }
358*5113495bSYour Name 
359*5113495bSYour Name /**
360*5113495bSYour Name  * cdp_is_local_pkt_capture_running() - get is local packet capture running
361*5113495bSYour Name  * @soc: opaque soc handle
362*5113495bSYour Name  * @pdev_id: pdev id
363*5113495bSYour Name  *
364*5113495bSYour Name  * Return: true if running
365*5113495bSYour Name  *         false if not running
366*5113495bSYour Name  */
367*5113495bSYour Name static inline
cdp_is_local_pkt_capture_running(ol_txrx_soc_handle soc,uint8_t pdev_id)368*5113495bSYour Name bool cdp_is_local_pkt_capture_running(ol_txrx_soc_handle soc, uint8_t pdev_id)
369*5113495bSYour Name {
370*5113495bSYour Name 	if (!soc || !soc->ops) {
371*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
372*5113495bSYour Name 		QDF_BUG(0);
373*5113495bSYour Name 		return false;
374*5113495bSYour Name 	}
375*5113495bSYour Name 
376*5113495bSYour Name 	if (!soc->ops->mon_ops ||
377*5113495bSYour Name 	    !soc->ops->mon_ops->is_local_pkt_capture_running)
378*5113495bSYour Name 		return false;
379*5113495bSYour Name 
380*5113495bSYour Name 	return soc->ops->mon_ops->is_local_pkt_capture_running(soc, pdev_id);
381*5113495bSYour Name }
382*5113495bSYour Name #else
383*5113495bSYour Name static inline
cdp_start_local_pkt_capture(ol_txrx_soc_handle soc,uint8_t pdev_id,struct cdp_monitor_filter * filter)384*5113495bSYour Name QDF_STATUS cdp_start_local_pkt_capture(ol_txrx_soc_handle soc,
385*5113495bSYour Name 				       uint8_t pdev_id,
386*5113495bSYour Name 				       struct cdp_monitor_filter *filter)
387*5113495bSYour Name {
388*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
389*5113495bSYour Name }
390*5113495bSYour Name 
391*5113495bSYour Name static inline
cdp_stop_local_pkt_capture(ol_txrx_soc_handle soc,uint8_t pdev_id)392*5113495bSYour Name QDF_STATUS cdp_stop_local_pkt_capture(ol_txrx_soc_handle soc, uint8_t pdev_id)
393*5113495bSYour Name {
394*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
395*5113495bSYour Name }
396*5113495bSYour Name 
397*5113495bSYour Name static inline
cdp_is_local_pkt_capture_running(ol_txrx_soc_handle soc,uint8_t pdev_id)398*5113495bSYour Name bool cdp_is_local_pkt_capture_running(ol_txrx_soc_handle soc, uint8_t pdev_id)
399*5113495bSYour Name {
400*5113495bSYour Name 	return false;
401*5113495bSYour Name }
402*5113495bSYour Name #endif /* WLAN_FEATURE_LOCAL_PKT_CAPTURE */
403*5113495bSYour Name 
404*5113495bSYour Name #endif
405