xref: /wlan-dirver/qca-wifi-host-cmn/dp/wifi3.0/monitor/dp_mon_filter.h (revision 8cfe6b10058a04cafb17eed051f2ddf11bee8931)
1 /*
2  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2023 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 #ifndef _DP_MON_FILTER_H_
21 #define _DP_MON_FILTER_H_
22 
23 /*
24  * Accessor Macros to access the software
25  * defined HTT filter htt_rx_ring_tlv_filter.
26  */
27 #define DP_MON_FILTER_TLV_OFFSET                      0x00000000
28 #define DP_MON_FILTER_TLV_MASK                        0xffffffff
29 #define DP_MON_FILTER_TLV_LSB                         0
30 
31 #define DP_MON_FILTER_FP_MGMT_OFFSET                  0x00000004
32 #define DP_MON_FILTER_FP_MGMT_MASK                    0x0000ffff
33 #define DP_MON_FILTER_FP_MGMT_LSB                     0
34 
35 #define DP_MON_FILTER_MO_MGMT_OFFSET                  0x00000004
36 #define DP_MON_FILTER_MO_MGMT_MASK                    0xffff0000
37 #define DP_MON_FILTER_MO_MGMT_LSB                     16
38 
39 #define DP_MON_FILTER_FP_CTRL_OFFSET                  0x00000008
40 #define DP_MON_FILTER_FP_CTRL_MASK                    0x0000ffff
41 #define DP_MON_FILTER_FP_CTRL_LSB                     0
42 
43 #define DP_MON_FILTER_MO_CTRL_OFFSET                  0x00000008
44 #define DP_MON_FILTER_MO_CTRL_MASK                    0xffff0000
45 #define DP_MON_FILTER_MO_CTRL_LSB                     16
46 
47 #define DP_MON_FILTER_FP_DATA_OFFSET                  0x0000000c
48 #define DP_MON_FILTER_FP_DATA_MASK                    0x0000ffff
49 #define DP_MON_FILTER_FP_DATA_LSB                     0
50 
51 #define DP_MON_FILTER_MO_DATA_OFFSET                  0x0000000c
52 #define DP_MON_FILTER_MO_DATA_MASK                    0xffff0000
53 #define DP_MON_FILTER_MO_DATA_LSB                     16
54 
55 #define DP_MON_FILTER_MD_DATA_OFFSET                  0x00000010
56 #define DP_MON_FILTER_MD_DATA_MASK                    0x0000ffff
57 #define DP_MON_FILTER_MD_DATA_LSB                     0
58 
59 #define DP_MON_FILTER_MD_MGMT_OFFSET                  0x00000010
60 #define DP_MON_FILTER_MD_MGMT_MASK                    0xffff0000
61 #define DP_MON_FILTER_MD_MGMT_LSB                     16
62 
63 #define DP_MON_FILTER_MD_CTRL_OFFSET                  0x00000014
64 #define DP_MON_FILTER_MD_CTRL_MASK                    0x0000ffff
65 #define DP_MON_FILTER_MD_CTRL_LSB                     0
66 
67 #define DP_MON_FILTER_GET(src, field) \
68 	((*((uint32_t *)((uint8_t *)(src) + DP_MON_ ## field ## _OFFSET)) & \
69 	(DP_MON_ ## field ## _MASK)) >> DP_MON_ ## field ## _LSB) \
70 
71 #define DP_MON_FILTER_SET(dst, field, value) \
72 do { \
73 	uint32_t *val = \
74 	((uint32_t *)((uint8_t *)(dst) + DP_MON_ ## field ## _OFFSET)); \
75 	*val &= ~(DP_MON_ ## field ## _MASK); \
76 	*val |= ((value) << DP_MON_ ## field ## _LSB); \
77 } while (0)
78 
79 #define DP_MON_FILTER_PRINT(fmt, args ...) \
80 	QDF_TRACE(QDF_MODULE_ID_MON_FILTER, QDF_TRACE_LEVEL_DEBUG, \
81 		  fmt, ## args)
82 
83 #define dp_mon_filter_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_MON_FILTER, params)
84 #define dp_mon_filter_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_MON_FILTER, params)
85 #define dp_mon_filter_info(params...) \
86 	__QDF_TRACE_FL(QDF_TRACE_LEVEL_INFO_HIGH, QDF_MODULE_ID_MON_FILTER, ## params)
87 #define dp_mon_filter_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_MON_FILTER, params)
88 
89 /**
90  * struct dp_mon_filter - Monitor TLV filter
91  * @valid: enable/disable TLV filter
92  * @tlv_filter: Rx ring TLV filter
93  */
94 struct dp_mon_filter {
95 	bool valid;
96 	struct htt_rx_ring_tlv_filter tlv_filter;
97 };
98 
99 /*
100  * NB: intentionally not using kernel-doc comment because the kernel-doc
101  *     script does not handle the complex conditional compilation
102  * enum dp_mon_filter_mode - Different modes for SRNG filters
103  * @DP_MON_FILTER_ENHACHED_STATS_MODE: PPDU enhanced stats mode
104  * @DP_MON_FILTER_SMART_MONITOR_MODE: Smart monitor mode
105  * @DP_MON_FILTER_MCOPY_MODE: AM copy mode
106  * @DP_MON_FILTER_MONITOR_MODE: Monitor mode
107  * @DP_MON_FILTER_RX_CAPTURE_MODE: Rx Capture mode
108  * @DP_MON_FILTER_PKT_LOG_FULL_MODE: Packet log full mode
109  * @DP_MON_FILTER_PKT_LOG_LITE_MODE: Packet log lite mode
110  * @DP_MON_FILTER_PKT_LOG_CBF_MODE: Packet log cbf mode
111  * @DP_MON_FILTER_PKT_LOG_HYBRID_MODE: Packet log hybrid mode
112  * @DP_MON_FILTER_UNDECODED_METADATA_CAPTURE_MODE: Undecoded frame capture
113  * @DP_MON_FILTER_LITE_MON_MODE:
114  * @DP_MON_FILTER_MAX_MODE: max filter mode
115  */
116 enum dp_mon_filter_mode {
117 #ifdef QCA_ENHANCED_STATS_SUPPORT
118 	DP_MON_FILTER_ENHACHED_STATS_MODE,
119 #endif /* QCA_ENHANCED_STATS_SUPPORT */
120 #ifdef QCA_MCOPY_SUPPORT
121 	DP_MON_FILTER_MCOPY_MODE,
122 #endif /* QCA_MCOPY_SUPPORT */
123 #if defined(ATH_SUPPORT_NAC_RSSI) || defined(ATH_SUPPORT_NAC)
124 	DP_MON_FILTER_SMART_MONITOR_MODE,
125 #endif /* ATH_SUPPORT_NAC_RSSI || ATH_SUPPORT_NAC */
126 	DP_MON_FILTER_MONITOR_MODE,
127 #ifdef	WLAN_RX_PKT_CAPTURE_ENH
128 	DP_MON_FILTER_RX_CAPTURE_MODE,
129 #endif /* WLAN_RX_PKT_CAPTURE_ENH */
130 
131 #ifdef WDI_EVENT_ENABLE
132 	DP_MON_FILTER_PKT_LOG_FULL_MODE,
133 	DP_MON_FILTER_PKT_LOG_LITE_MODE,
134 	DP_MON_FILTER_PKT_LOG_CBF_MODE,
135 #ifdef BE_PKTLOG_SUPPORT
136 	DP_MON_FILTER_PKT_LOG_HYBRID_MODE,
137 #endif
138 #endif /* WDI_EVENT_ENABLE */
139 #ifdef QCA_UNDECODED_METADATA_SUPPORT
140 	DP_MON_FILTER_UNDECODED_METADATA_CAPTURE_MODE,
141 #endif
142 #ifdef QCA_SUPPORT_LITE_MONITOR
143 	DP_MON_FILTER_LITE_MON_MODE,
144 #endif /*QCA_SUPPORT_LITE_MONITOR*/
145 	DP_MON_FILTER_MAX_MODE
146 };
147 
148 /**
149  * enum dp_mon_filter_srng_type - Srng types dynamic mode filter
150  * settings.
151  * @DP_MON_FILTER_SRNG_TYPE_RXDMA_BUF: RXDMA srng type
152  * @DP_MON_FILTER_SRNG_TYPE_RXDMA_MONITOR_STATUS: RxDMA monitor status srng
153  * @DP_MON_FILTER_SRNG_TYPE_RXDMA_MON_BUF: RxDMA destination srng
154  * @DP_MON_FILTER_SRNG_TYPE_RXMON_DEST: RxMON destination srng
155  * @DP_MON_FILTER_SRNG_TYPE_TXMON_DEST: TxMON destination srng
156  * @DP_MON_FILTER_SRNG_TYPE_MAX: Srng max type
157  */
158 enum dp_mon_filter_srng_type {
159 	DP_MON_FILTER_SRNG_TYPE_RXDMA_BUF,
160 	DP_MON_FILTER_SRNG_TYPE_RXDMA_MONITOR_STATUS,
161 	DP_MON_FILTER_SRNG_TYPE_RXDMA_MON_BUF,
162 	DP_MON_FILTER_SRNG_TYPE_RXMON_DEST,
163 	DP_MON_FILTER_SRNG_TYPE_TXMON_DEST,
164 	DP_MON_FILTER_SRNG_TYPE_MAX
165 };
166 
167 /**
168  * enum dp_mon_filter_action - Action for storing the filters
169  * into the radio structure.
170  * @DP_MON_FILTER_CLEAR: Clears the filter for a mode
171  * @DP_MON_FILTER_SET: Set the filtes for a mode
172  */
173 enum dp_mon_filter_action {
174 	DP_MON_FILTER_CLEAR,
175 	DP_MON_FILTER_SET,
176 };
177 
178 #ifdef QCA_UNDECODED_METADATA_SUPPORT
179 /**
180  * enum dp_mon_fp_phy_err_buf_source - fp_phy_err_buf_src indicates the source
181  * ring selection for the FP PHY ERR status tlv.
182  * @WBM2RXDMA_BUF_SOURCE_RING: 0 - wbm2rxdma_buf_source_ring
183  * @FW2RXDMA_BUF_SOURCE_RING: 1 - fw2rxdma_buf_source_ring
184  * @SW2RXDMA_BUF_SOURCE_RING: 2 - sw2rxdma_buf_source_ring
185  * @NO_BUFFER_RING: 3 - no_buffer_ring
186  */
187 enum dp_mon_fp_phy_err_buf_source {
188 	WBM2RXDMA_BUF_SOURCE_RING,
189 	FW2RXDMA_BUF_SOURCE_RING,
190 	SW2RXDMA_BUF_SOURCE_RING,
191 	NO_BUFFER_RING
192 };
193 
194 /**
195  * enum dp_mon_fp_phy_err_buf_dest - fp_phy_err_buf_dest indicates the
196  * destination ring selection for the FP PHY ERR status tlv.
197  * @RXDMA_RELEASING_RING: 0 - rxdma_release_ring
198  * @RXDMA2FW_RING: 1 - rxdma2fw_ring
199  * @RXDMA2SW_RING: 2 - rxdma2sw_ring
200  * @RXDMA2REO_RING: 3 - rxdma2reo_ring
201  */
202 enum dp_mon_fp_phy_err_buf_dest {
203 	RXDMA_RELEASING_RING,
204 	RXDMA2FW_RING,
205 	RXDMA2SW_RING,
206 	RXDMA2REO_RING
207 };
208 #endif
209 
210 /**
211  * dp_mon_filters_reset() - reset all filters
212  * @pdev: DP pdev handle
213  */
214 void dp_mon_filters_reset(struct dp_pdev *pdev);
215 
216 #ifdef QCA_ENHANCED_STATS_SUPPORT
217 /**
218  * dp_mon_filter_setup_enhanced_stats() - Setup the enhanced stats filter
219  * @pdev: DP pdev handle
220  */
221 void dp_mon_filter_setup_enhanced_stats(struct dp_pdev *pdev);
222 
223 /***
224  * dp_mon_filter_reset_enhanced_stats() - Reset the enhanced stats filter
225  * @pdev: DP pdev handle
226  */
227 void dp_mon_filter_reset_enhanced_stats(struct dp_pdev *pdev);
228 #endif /* QCA_ENHANCED_STATS_SUPPORT */
229 
230 #ifdef QCA_MCOPY_SUPPORT
231 /**
232  * dp_mon_filter_setup_mcopy_mode() - Setup the m_copy mode filter
233  * @pdev: DP pdev handle
234  */
235 void dp_mon_filter_setup_mcopy_mode(struct dp_pdev *pdev);
236 
237 /**
238  * dp_mon_filter_reset_mcopy_mode() - Reset the m_copy mode filter
239  * @pdev: DP pdev handle
240  */
241 void dp_mon_filter_reset_mcopy_mode(struct dp_pdev *pdev);
242 #endif /* QCA_MCOPY_SUPPORT */
243 
244 #ifdef QCA_UNDECODED_METADATA_SUPPORT
245 /**
246  * dp_mon_filter_setup_undecoded_metadata_mode() - Setup the undecoded
247  *  metadata capture mode filter
248  * @pdev: DP pdev handle
249  */
250 void dp_mon_filter_setup_undecoded_metadata_mode(struct dp_pdev *pdev);
251 
252 /**
253  * dp_mon_filter_reset_undecoded_metadata_mode() - Reset the undecoded
254  * metadata capture mode filter
255  * @pdev: DP pdev handle
256  */
257 void dp_mon_filter_reset_undecoded_metadata_mode(struct dp_pdev *pdev);
258 #endif /* QCA_UNDECODED_METADATA_SUPPORT */
259 
260 #if defined(ATH_SUPPORT_NAC_RSSI) || defined(ATH_SUPPORT_NAC)
261 /**
262  * dp_mon_filter_setup_smart_monitor() - Setup the smart monitor mode filter
263  * @pdev: DP pdev handle
264  */
265 void dp_mon_filter_setup_smart_monitor(struct dp_pdev *pdev);
266 
267 /**
268  * dp_mon_filter_reset_smart_monitor() - Reset the smart monitor mode filter
269  * @pdev: DP pdev handle
270  */
271 void dp_mon_filter_reset_smart_monitor(struct dp_pdev *pdev);
272 #endif /* ATH_SUPPORT_NAC_RSSI || ATH_SUPPORT_NAC */
273 
274 /**
275  * dp_mon_filter_set_reset_mon_mac_filter() - Setup the monitor mac filter
276  * @pdev: DP pdev handle
277  * @val: indicating set/reset
278  */
279 void dp_mon_filter_set_reset_mon_mac_filter(struct dp_pdev *pdev, bool val);
280 
281 #ifdef  WLAN_RX_PKT_CAPTURE_ENH
282 /**
283  * dp_mon_filter_setup_rx_enh_capture() - Setup the Rx capture mode filters
284  * @pdev: DP pdev handle
285  */
286 void dp_mon_filter_setup_rx_enh_capture(struct dp_pdev *pdev);
287 
288 /**
289  * dp_mon_filter_reset_rx_enh_capture() - Reset the Rx capture mode filters
290  * @pdev: DP pdev handle
291  */
292 void dp_mon_filter_reset_rx_enh_capture(struct dp_pdev *pdev);
293 #endif /* WLAN_RX_PKT_CAPTURE_ENH */
294 
295 /**
296  * dp_mon_filter_setup_mon_mode() - Setup the Rx and Tx monitor mode filter
297  * @pdev: DP pdev handle
298  */
299 void dp_mon_filter_setup_mon_mode(struct dp_pdev *pdev);
300 
301 /**
302  * dp_mon_filter_setup_tx_mon_mode() - Setup the Tx monitor mode filter
303  * @pdev: DP pdev handle
304  */
305 void dp_mon_filter_setup_tx_mon_mode(struct dp_pdev *pdev);
306 
307 /**
308  * dp_mon_filter_reset_mon_mode() - Reset the Rx monitor mode filter
309  * @pdev: DP pdev handle
310  */
311 void dp_mon_filter_reset_mon_mode(struct dp_pdev *pdev);
312 
313 #ifdef WDI_EVENT_ENABLE
314 /**
315  * dp_mon_filter_setup_rx_pkt_log_full() - Setup the Rx pktlog full mode filter
316  * @pdev: DP pdev handle
317  */
318 void dp_mon_filter_setup_rx_pkt_log_full(struct dp_pdev *pdev);
319 
320 /**
321  * dp_mon_filter_reset_rx_pkt_log_full() - Reset the Rx pktlog full mode filter
322  * @pdev: DP pdev handle
323  */
324 void dp_mon_filter_reset_rx_pkt_log_full(struct dp_pdev *pdev);
325 
326 /**
327  * dp_mon_filter_setup_rx_pkt_log_lite() - Setup the Rx pktlog lite mode filter
328  * in the radio object.
329  * @pdev: DP pdev handle
330  */
331 void dp_mon_filter_setup_rx_pkt_log_lite(struct dp_pdev *pdev);
332 
333 /**
334  * dp_mon_filter_reset_rx_pkt_log_lite() - Reset the Rx pktlog lite mode filter
335  * @pdev: DP pdev handle
336  */
337 void dp_mon_filter_reset_rx_pkt_log_lite(struct dp_pdev *pdev);
338 
339 /**
340  * dp_mon_filter_setup_rx_pkt_log_cbf() - Setup the Rx pktlog cbf mode filter
341  * in the radio object.
342  * @pdev: DP pdev handle
343  */
344 void dp_mon_filter_setup_rx_pkt_log_cbf(struct dp_pdev *pdev);
345 
346 /**
347  * dp_mon_filter_reset_rx_pktlog_cbf() - Reset the Rx pktlog cbf mode filter
348  * @pdev: DP pdev handle
349  */
350 void dp_mon_filter_reset_rx_pktlog_cbf(struct dp_pdev *pdev);
351 
352 #ifdef BE_PKTLOG_SUPPORT
353 /**
354  * dp_mon_filter_setup_pktlog_hybrid() - Setup the pktlog hybrid mode filter
355  * in the radio object.
356  * @pdev: DP pdev handle
357  */
358 void dp_mon_filter_setup_pktlog_hybrid(struct dp_pdev *pdev);
359 
360 /**
361  * dp_mon_filter_reset_pktlog_hybrid() - Reset the pktlog hybrid mode filter
362  * @pdev: DP pdev handle
363  */
364 void dp_mon_filter_reset_pktlog_hybrid(struct dp_pdev *pdev);
365 #endif
366 #endif /* WDI_EVENT_ENABLE */
367 
368 /**
369  * dp_mon_filter_set_status_cbf() - Set the cbf status filters
370  * @pdev: DP pdev handle
371  * @filter: Dp mon filters
372  *
373  * Return: void
374  */
375 void dp_mon_filter_set_status_cbf(struct dp_pdev *pdev,
376 				  struct dp_mon_filter *filter);
377 
378 /**
379  * dp_mon_filter_update() - Setup the RX & Tx monitor filter setting for a srng
380  * type
381  * @pdev: DP pdev handle
382  *
383  * Return: QDF_STATUS
384  */
385 QDF_STATUS dp_mon_filter_update(struct dp_pdev *pdev);
386 
387 /**
388  * dp_mon_filter_dealloc() - Deallocate the filter objects to be stored in
389  * the radio object.
390  * @mon_pdev: monitor pdev handle
391  */
392 void dp_mon_filter_dealloc(struct dp_mon_pdev *mon_pdev);
393 
394 /**
395  * dp_mon_filter_alloc() - Allocate the filter objects to be stored in
396  * the radio object.
397  * @mon_pdev: monitor pdev handle
398  */
399 struct dp_mon_filter  **dp_mon_filter_alloc(struct dp_mon_pdev *mon_pdev);
400 
401 /**
402  * dp_mon_filter_show_filter() - Show the set filters
403  * @mon_pdev: DP pdev handle
404  * @mode: The filter modes
405  * @filter: tlv filter
406  */
407 void dp_mon_filter_show_filter(struct dp_mon_pdev *mon_pdev,
408 			       enum dp_mon_filter_mode mode,
409 			       struct dp_mon_filter *filter);
410 
411 /**
412  * dp_mon_ht2_rx_ring_cfg() - Send the tlv config to fw for a srng_type
413  * based on target
414  * @soc: DP soc handle
415  * @pdev: DP pdev handle
416  * @srng_type: The srng type for which filter will be set
417  * @tlv_filter: tlv filter
418  */
419 QDF_STATUS
420 dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc,
421 		       struct dp_pdev *pdev,
422 		       enum dp_mon_filter_srng_type srng_type,
423 		       struct htt_rx_ring_tlv_filter *tlv_filter);
424 
425 /**
426  * dp_mon_filter_reset_mon_srng()
427  * @soc: DP SoC handle
428  * @pdev: DP pdev handle
429  * @mon_srng_type: Monitor srng type
430  */
431 void
432 dp_mon_filter_reset_mon_srng(struct dp_soc *soc, struct dp_pdev *pdev,
433 			     enum dp_mon_filter_srng_type mon_srng_type);
434 
435 /**
436  * dp_mon_filter_set_mon_cmn() - Setp the common mon filters
437  * @mon_pdev: DP pdev handle
438  * @filter: DP mon filter
439  *
440  * Return: QDF_STATUS
441  */
442 void dp_mon_filter_set_mon_cmn(struct dp_mon_pdev *mon_pdev,
443 			       struct dp_mon_filter *filter);
444 
445 /**
446  * dp_mon_filter_set_status_cmn() - Setp the common status filters
447  * @mon_pdev: DP pdev handle
448  * @filter: Dp mon filters
449  *
450  * Return: QDF_STATUS
451  */
452 void dp_mon_filter_set_status_cmn(struct dp_mon_pdev *mon_pdev,
453 				  struct dp_mon_filter *filter);
454 
455 /**
456  * dp_mon_filter_setup_mon_mode() - Setup the Rx monitor mode filter
457  * @pdev: DP pdev handle
458  */
459 void dp_mon_filter_setup_mon_mode(struct dp_pdev *pdev);
460 
461 /**
462  * dp_mon_filter_setup_tx_mon_mode() - Setup the Tx monitor mode filter
463  * @pdev: DP pdev handle
464  */
465 void dp_mon_filter_setup_tx_mon_mode(struct dp_pdev *pdev);
466 
467 /**
468  * dp_mon_filter_reset_mon_mode() - Reset the Rx monitor mode filter
469  * @pdev: DP pdev handle
470  */
471 void dp_mon_filter_reset_mon_mode(struct dp_pdev *pdev);
472 
473 /**
474  * dp_mon_filter_set_cbf_cmn() - Set the common cbf mode filters
475  * @pdev: DP pdev handle
476  * @filter: Dp mon filters
477  *
478  * Return: void
479  */
480 void dp_mon_filter_set_cbf_cmn(struct dp_pdev *pdev,
481 			       struct dp_mon_filter *filter);
482 
483 /**
484  * dp_tx_mon_filter_update() - Setup the tx monitor filter setting for a srng
485  * type
486  * @pdev: DP pdev handle
487  *
488  * Return: QDF_STATUS
489  */
490 QDF_STATUS dp_tx_mon_filter_update(struct dp_pdev *pdev);
491 
492 /**
493  * dp_mon_filter_dealloc() - Deallocate the filter objects to be stored in
494  * the radio object.
495  * @mon_pdev: DP pdev handle
496  */
497 void dp_mon_filter_dealloc(struct dp_mon_pdev *mon_pdev);
498 
499 /**
500  * dp_mon_filter_alloc() - Allocate the filter objects to be stored in
501  * the radio object.
502  * @mon_pdev: DP pdev handle
503  */
504 struct dp_mon_filter **dp_mon_filter_alloc(struct dp_mon_pdev *mon_pdev);
505 
506 /**
507  * dp_mon_filter_h2t_setup() - Setup filter
508  * @soc: Dp soc handle
509  * @pdev: pdev handle
510  * @srng_type: srng type
511  * @filter: filter
512  */
513 void dp_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
514 			     enum dp_mon_filter_srng_type srng_type,
515 			     struct dp_mon_filter *filter);
516 
517 /**
518  * dp_mon_ht2_rx_ring_cfg() - Configure filter to HW
519  * @soc: Dp soc handle
520  * @pdev: Dp pdev handle
521  * @srng_type: SRNG type
522  * @tlv_filter: filter
523  */
524 QDF_STATUS
525 dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc,
526 		       struct dp_pdev *pdev,
527 		       enum dp_mon_filter_srng_type srng_type,
528 		       struct htt_rx_ring_tlv_filter *tlv_filter);
529 #endif /* #ifndef _DP_MON_FILTER_H_ */
530