xref: /wlan-dirver/qca-wifi-host-cmn/dp/wifi3.0/monitor/dp_mon_filter.h (revision 70a19e16789e308182f63b15c75decec7bf0b342)
1 /*
2  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2022 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  * enum dp_mon_filter_mode - Different modes for SRNG filters
101  * @DP_MON_FILTER_ENHACHED_STATS_MODE: PPDU enhanced stats mode
102  * @DP_MON_FILTER_SMART_MONITOR_MODE: Smart monitor mode
103  * @DP_MON_FILTER_MCOPY_MODE: AM copy mode
104  * @DP_MON_FILTER_MONITOR_MODE: Monitor mode
105  * @DP_MON_FILTER_RX_CAPTURE_MODE: Rx Capture mode
106  * @DP_MON_FILTER_PKT_LOG_FULL_MODE: Packet log full mode
107  * @DP_MON_FILTER_PKT_LOG_LITE_MODE: Packet log lite mode
108  * @DP_MON_FILTER_PKT_LOG_CBF_MODE: Packet log cbf mode
109  * @DP_MON_FILTER_PKT_LOG_HYBRID_MODE: Packet log hybrid mode
110  * @DP_MON_FILTER_RX_UNDECODED_METADATA_CAPTURE_MODE: Undecoded frame capture
111  */
112 enum dp_mon_filter_mode {
113 #ifdef QCA_ENHANCED_STATS_SUPPORT
114 	DP_MON_FILTER_ENHACHED_STATS_MODE,
115 #endif /* QCA_ENHANCED_STATS_SUPPORT */
116 #ifdef QCA_MCOPY_SUPPORT
117 	DP_MON_FILTER_MCOPY_MODE,
118 #endif /* QCA_MCOPY_SUPPORT */
119 #if defined(ATH_SUPPORT_NAC_RSSI) || defined(ATH_SUPPORT_NAC)
120 	DP_MON_FILTER_SMART_MONITOR_MODE,
121 #endif /* ATH_SUPPORT_NAC_RSSI || ATH_SUPPORT_NAC */
122 	DP_MON_FILTER_MONITOR_MODE,
123 #ifdef	WLAN_RX_PKT_CAPTURE_ENH
124 	DP_MON_FILTER_RX_CAPTURE_MODE,
125 #endif /* WLAN_RX_PKT_CAPTURE_ENH */
126 
127 #ifdef WDI_EVENT_ENABLE
128 	DP_MON_FILTER_PKT_LOG_FULL_MODE,
129 	DP_MON_FILTER_PKT_LOG_LITE_MODE,
130 	DP_MON_FILTER_PKT_LOG_CBF_MODE,
131 #ifdef BE_PKTLOG_SUPPORT
132 	DP_MON_FILTER_PKT_LOG_HYBRID_MODE,
133 #endif
134 #endif /* WDI_EVENT_ENABLE */
135 #ifdef QCA_UNDECODED_METADATA_SUPPORT
136 	DP_MON_FILTER_UNDECODED_METADATA_CAPTURE_MODE,
137 #endif
138 #ifdef QCA_SUPPORT_LITE_MONITOR
139 	DP_MON_FILTER_LITE_MON_MODE,
140 #endif /*QCA_SUPPORT_LITE_MONITOR*/
141 	DP_MON_FILTER_MAX_MODE
142 };
143 
144 /**
145  * enum dp_mon_filter_srng_type - Srng types dynamic mode filter
146  * settings.
147  * @DP_MON_FILTER_SRNG_TYPE_RXDMA_BUF: RXDMA srng type
148  * @DP_MON_FILTER_SRNG_TYPE_RXDMA_MONITOR_STATUS: RxDMA monitor status srng
149  * @DP_MON_FILTER_SRNG_TYPE_RXDMA_MON_BUF: RxDMA destination srng
150  * @DP_MON_FILTER_SRNG_TYPE_RXMON_DEST: RxMON destination srng
151  * @DP_MON_FILTER_SRNG_TYPE_TXMON_DEST: TxMON destination srng
152  * @DP_MON_FILTER_SRNG_TYPE_MAX: Srng max type
153  */
154 enum dp_mon_filter_srng_type {
155 	DP_MON_FILTER_SRNG_TYPE_RXDMA_BUF,
156 	DP_MON_FILTER_SRNG_TYPE_RXDMA_MONITOR_STATUS,
157 	DP_MON_FILTER_SRNG_TYPE_RXDMA_MON_BUF,
158 	DP_MON_FILTER_SRNG_TYPE_RXMON_DEST,
159 	DP_MON_FILTER_SRNG_TYPE_TXMON_DEST,
160 	DP_MON_FILTER_SRNG_TYPE_MAX
161 };
162 
163 /**
164  * enum dp_mon_filter_action - Action for storing the filters
165  * into the radio structure.
166  * @DP_MON_FILTER_CLEAR - Clears the filter for a mode
167  * @DP_MON_FILTER_SET - Set the filtes for a mode
168  */
169 enum dp_mon_filter_action {
170 	DP_MON_FILTER_CLEAR,
171 	DP_MON_FILTER_SET,
172 };
173 
174 #ifdef QCA_UNDECODED_METADATA_SUPPORT
175 /**
176  * enum dp_mon_fp_phy_err_buf_source - fp_phy_err_buf_src indicates the source
177  * ring selection for the FP PHY ERR status tlv.
178  * @WBM2RXDMA_BUF_SOURCE_RING: 0 - wbm2rxdma_buf_source_ring
179  * @FW2RXDMA_BUF_SOURCE_RING: 1 - fw2rxdma_buf_source_ring
180  * @SW2RXDMA_BUF_SOURCE_RING: 2 - sw2rxdma_buf_source_ring
181  * @NO_BUFFER_RING: 3 - no_buffer_ring
182  */
183 enum dp_mon_fp_phy_err_buf_source {
184 	WBM2RXDMA_BUF_SOURCE_RING,
185 	FW2RXDMA_BUF_SOURCE_RING,
186 	SW2RXDMA_BUF_SOURCE_RING,
187 	NO_BUFFER_RING
188 };
189 
190 /**
191  * enum dp_mon_fp_phy_err_buf_dest - fp_phy_err_buf_dest indicates the
192  * destination ring selection for the FP PHY ERR status tlv.
193  * @RXDMA_RELEASING_RING: 0 - rxdma_release_ring
194  * @RXDMA2FW_RING: 1 - rxdma2fw_ring
195  * @RXDMA2SW_RING: 2 - rxdma2sw_ring
196  * @RXDMA2REO_RING: 3 - rxdma2reo_ring
197  */
198 enum dp_mon_fp_phy_err_buf_dest {
199 	RXDMA_RELEASING_RING,
200 	RXDMA2FW_RING,
201 	RXDMA2SW_RING,
202 	RXDMA2REO_RING
203 };
204 #endif
205 
206 /**
207  * dp_mon_filters_reset() - reset all filters
208  * @pdev: DP pdev handle
209  */
210 void dp_mon_filters_reset(struct dp_pdev *pdev);
211 
212 #ifdef QCA_ENHANCED_STATS_SUPPORT
213 /**
214  * dp_mon_filter_setup_enhanced_stats() - Setup the enhanced stats filter
215  * @pdev: DP pdev handle
216  */
217 void dp_mon_filter_setup_enhanced_stats(struct dp_pdev *pdev);
218 
219 /***
220  * dp_mon_filter_reset_enhanced_stats() - Reset the enhanced stats filter
221  * @pdev: DP pdev handle
222  */
223 void dp_mon_filter_reset_enhanced_stats(struct dp_pdev *pdev);
224 #endif /* QCA_ENHANCED_STATS_SUPPORT */
225 
226 #ifdef QCA_MCOPY_SUPPORT
227 /**
228  * dp_mon_filter_setup_mcopy_mode() - Setup the m_copy mode filter
229  * @pdev: DP pdev handle
230  */
231 void dp_mon_filter_setup_mcopy_mode(struct dp_pdev *pdev);
232 
233 /**
234  * dp_mon_filter_reset_mcopy_mode() - Reset the m_copy mode filter
235  * @pdev: DP pdev handle
236  */
237 void dp_mon_filter_reset_mcopy_mode(struct dp_pdev *pdev);
238 #endif /* QCA_MCOPY_SUPPORT */
239 
240 #ifdef QCA_UNDECODED_METADATA_SUPPORT
241 /**
242  * dp_mon_filter_setup_undecoded_metadata_mode() - Setup the undecoded
243  *  metadata capture mode filter
244  * @pdev: DP pdev handle
245  */
246 void dp_mon_filter_setup_undecoded_metadata_mode(struct dp_pdev *pdev);
247 
248 /**
249  * dp_mon_filter_reset_undecoded_metadata_mode() - Reset the undecoded
250  * metadata capture mode filter
251  * @pdev: DP pdev handle
252  */
253 void dp_mon_filter_reset_undecoded_metadata_mode(struct dp_pdev *pdev);
254 #endif /* QCA_UNDECODED_METADATA_SUPPORT */
255 
256 #if defined(ATH_SUPPORT_NAC_RSSI) || defined(ATH_SUPPORT_NAC)
257 /**
258  * dp_mon_filter_setup_smart_monitor() - Setup the smart monitor mode filter
259  * @pdev: DP pdev handle
260  */
261 void dp_mon_filter_setup_smart_monitor(struct dp_pdev *pdev);
262 
263 /**
264  * dp_mon_filter_reset_smart_monitor() - Reset the smart monitor mode filter
265  * @pdev: DP pdev handle
266  */
267 void dp_mon_filter_reset_smart_monitor(struct dp_pdev *pdev);
268 #endif /* ATH_SUPPORT_NAC_RSSI || ATH_SUPPORT_NAC */
269 
270 /**
271  * dp_mon_filter_set_reset_mon_mac_filter() - Setup the monitor mac filter
272  * @pdev: DP pdev handle
273  * @val: indicating set/reset
274  */
275 void dp_mon_filter_set_reset_mon_mac_filter(struct dp_pdev *pdev, bool val);
276 
277 #ifdef  WLAN_RX_PKT_CAPTURE_ENH
278 /**
279  * dp_mon_filter_setup_rx_enh_capture() - Setup the Rx capture mode filters
280  * @pdev: DP pdev handle
281  */
282 void dp_mon_filter_setup_rx_enh_capture(struct dp_pdev *pdev);
283 
284 /**
285  * dp_mon_filter_reset_rx_enh_capture() - Reset the Rx capture mode filters
286  * @pdev: DP pdev handle
287  */
288 void dp_mon_filter_reset_rx_enh_capture(struct dp_pdev *pdev);
289 #endif /* WLAN_RX_PKT_CAPTURE_ENH */
290 
291 /**
292  * dp_mon_filter_setup_mon_mode() - Setup the Rx and Tx monitor mode filter
293  * @pdev: DP pdev handle
294  */
295 void dp_mon_filter_setup_mon_mode(struct dp_pdev *pdev);
296 
297 /**
298  * dp_mon_filter_setup_tx_mon_mode() - Setup the Tx monitor mode filter
299  * @pdev: DP pdev handle
300  */
301 void dp_mon_filter_setup_tx_mon_mode(struct dp_pdev *pdev);
302 
303 /**
304  * dp_mon_filter_reset_mon_mode() - Reset the Rx monitor mode filter
305  * @pdev: DP pdev handle
306  */
307 void dp_mon_filter_reset_mon_mode(struct dp_pdev *pdev);
308 
309 #ifdef WDI_EVENT_ENABLE
310 /**
311  * dp_mon_filter_setup_rx_pkt_log_full() - Setup the Rx pktlog full mode filter
312  * @pdev: DP pdev handle
313  */
314 void dp_mon_filter_setup_rx_pkt_log_full(struct dp_pdev *pdev);
315 
316 /**
317  * dp_mon_filter_reset_rx_pkt_log_full() - Reset the Rx pktlog full mode filter
318  * @pdev: DP pdev handle
319  */
320 void dp_mon_filter_reset_rx_pkt_log_full(struct dp_pdev *pdev);
321 
322 /**
323  * dp_mon_filter_setup_rx_pkt_log_lite() - Setup the Rx pktlog lite mode filter
324  * in the radio object.
325  * @pdev: DP pdev handle
326  */
327 void dp_mon_filter_setup_rx_pkt_log_lite(struct dp_pdev *pdev);
328 
329 /**
330  * dp_mon_filter_reset_rx_pkt_log_lite() - Reset the Rx pktlog lite mode filter
331  * @pdev: DP pdev handle
332  */
333 void dp_mon_filter_reset_rx_pkt_log_lite(struct dp_pdev *pdev);
334 
335 /**
336  * dp_mon_filter_setup_rx_pkt_log_cbf() - Setup the Rx pktlog cbf mode filter
337  * in the radio object.
338  * @pdev: DP pdev handle
339  */
340 void dp_mon_filter_setup_rx_pkt_log_cbf(struct dp_pdev *pdev);
341 
342 /**
343  * dp_mon_filter_reset_rx_pktlog_cbf() - Reset the Rx pktlog cbf mode filter
344  * @pdev: DP pdev handle
345  */
346 void dp_mon_filter_reset_rx_pktlog_cbf(struct dp_pdev *pdev);
347 
348 #ifdef BE_PKTLOG_SUPPORT
349 /**
350  * dp_mon_filter_setup_pktlog_hybrid() - Setup the pktlog hybrid mode filter
351  * in the radio object.
352  * @pdev: DP pdev handle
353  */
354 void dp_mon_filter_setup_pktlog_hybrid(struct dp_pdev *pdev);
355 
356 /**
357  * dp_mon_filter_reset_pktlog_hybrid() - Reset the pktlog hybrid mode filter
358  * @pdev: DP pdev handle
359  */
360 void dp_mon_filter_reset_pktlog_hybrid(struct dp_pdev *pdev);
361 #endif
362 #endif /* WDI_EVENT_ENABLE */
363 
364 /**
365  * dp_mon_filter_set_status_cbf() - Set the cbf status filters
366  * @pdev: DP pdev handle
367  * @filter: Dp mon filters
368  *
369  * Return: void
370  */
371 void dp_mon_filter_set_status_cbf(struct dp_pdev *pdev,
372 				  struct dp_mon_filter *filter);
373 
374 /**
375  * dp_mon_filter_update() - Setup the RX & Tx monitor filter setting for a srng
376  * type
377  * @pdev: DP pdev handle
378  *
379  * Return: QDF_STATUS
380  */
381 QDF_STATUS dp_mon_filter_update(struct dp_pdev *pdev);
382 
383 /**
384  * dp_mon_filter_dealloc() - Deallocate the filter objects to be stored in
385  * the radio object.
386  * @mon_pdev: monitor pdev handle
387  */
388 void dp_mon_filter_dealloc(struct dp_mon_pdev *mon_pdev);
389 
390 /**
391  * dp_mon_filter_alloc() - Allocate the filter objects to be stored in
392  * the radio object.
393  * @mon_pdev: monitor pdev handle
394  */
395 struct dp_mon_filter  **dp_mon_filter_alloc(struct dp_mon_pdev *mon_pdev);
396 
397 /**
398  * dp_mon_filter_show_filter() - Show the set filters
399  * @pdev: DP pdev handle
400  * @mode: The filter modes
401  * @tlv_filter: tlv filter
402  */
403 void dp_mon_filter_show_filter(struct dp_mon_pdev *mon_pdev,
404 			       enum dp_mon_filter_mode mode,
405 			       struct dp_mon_filter *filter);
406 
407 /**
408  * dp_mon_ht2_rx_ring_cfg() - Send the tlv config to fw for a srng_type
409  * based on target
410  * @soc: DP soc handle
411  * @pdev: DP pdev handle
412  * @srng_type: The srng type for which filter will be set
413  * @tlv_filter: tlv filter
414  */
415 QDF_STATUS
416 dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc,
417 		       struct dp_pdev *pdev,
418 		       enum dp_mon_filter_srng_type srng_type,
419 		       struct htt_rx_ring_tlv_filter *tlv_filter);
420 
421 /**
422  * dp_mon_filter_reset_mon_srng()
423  * @soc: DP SoC handle
424  * @pdev: DP pdev handle
425  * @mon_srng_type: Monitor srng type
426  */
427 void
428 dp_mon_filter_reset_mon_srng(struct dp_soc *soc, struct dp_pdev *pdev,
429 			     enum dp_mon_filter_srng_type mon_srng_type);
430 
431 /**
432  * dp_mon_filter_set_mon_cmn() - Setp the common mon filters
433  * @pdev: DP pdev handle
434  * @filter: DP mon filter
435  *
436  * Return: QDF_STATUS
437  */
438 void dp_mon_filter_set_mon_cmn(struct dp_mon_pdev *mon_pdev,
439 			       struct dp_mon_filter *filter);
440 
441 /**
442  * dp_mon_filter_set_status_cmn() - Setp the common status filters
443  * @pdev: DP pdev handle
444  * @filter: Dp mon filters
445  *
446  * Return: QDF_STATUS
447  */
448 void dp_mon_filter_set_status_cmn(struct dp_mon_pdev *mon_pdev,
449 				  struct dp_mon_filter *filter);
450 
451 /**
452  * dp_mon_filter_setup_mon_mode() - Setup the Rx monitor mode filter
453  * @pdev: DP pdev handle
454  */
455 void dp_mon_filter_setup_mon_mode(struct dp_pdev *pdev);
456 
457 /**
458  * dp_mon_filter_setup_tx_mon_mode() - Setup the Tx monitor mode filter
459  * @pdev: DP pdev handle
460  */
461 void dp_mon_filter_setup_tx_mon_mode(struct dp_pdev *pdev);
462 
463 /**
464  * dp_mon_filter_reset_mon_mode() - Reset the Rx monitor mode filter
465  * @pdev: DP pdev handle
466  */
467 void dp_mon_filter_reset_mon_mode(struct dp_pdev *pdev);
468 
469 /**
470  * dp_mon_filter_set_cbf_cmn() - Set the common cbf mode filters
471  * @pdev: DP pdev handle
472  * @filter: Dp mon filters
473  *
474  * Return: void
475  */
476 void dp_mon_filter_set_cbf_cmn(struct dp_pdev *pdev,
477 			       struct dp_mon_filter *filter);
478 
479 /**
480  * dp_tx_mon_filter_update() - Setup the tx monitor filter setting for a srng
481  * type
482  * @pdev: DP pdev handle
483  *
484  * Return: QDF_STATUS
485  */
486 QDF_STATUS dp_tx_mon_filter_update(struct dp_pdev *pdev);
487 
488 /**
489  * dp_mon_filter_dealloc() - Deallocate the filter objects to be stored in
490  * the radio object.
491  * @pdev: DP pdev handle
492  */
493 void dp_mon_filter_dealloc(struct dp_mon_pdev *mon_pdev);
494 
495 /**
496  * dp_mon_filter_alloc() - Allocate the filter objects to be stored in
497  * the radio object.
498  * @mon_pdev: DP pdev handle
499  */
500 struct dp_mon_filter **dp_mon_filter_alloc(struct dp_mon_pdev *mon_pdev);
501 
502 /*
503  * dp_mon_filter_h2t_setup () - Setup filter
504  * @soc: Dp soc handle
505  * @pdev: pdev handle
506  * @srng_type: srng type
507  * @filter: filter
508  */
509 void dp_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
510 			     enum dp_mon_filter_srng_type srng_type,
511 			     struct dp_mon_filter *filter);
512 
513 /**
514  * dp_mon_ht2_rx_ring_cfg () - Configure filter to HW
515  * @soc: Dp soc handle
516  * @pdev: Dp pdev handle
517  * @srng_type: SRNG type
518  * @tlv_filter: filter
519  */
520 QDF_STATUS
521 dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc,
522 		       struct dp_pdev *pdev,
523 		       enum dp_mon_filter_srng_type srng_type,
524 		       struct htt_rx_ring_tlv_filter *tlv_filter);
525 #endif /* #ifndef _DP_MON_FILTER_H_ */
526