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