xref: /wlan-dirver/qca-wifi-host-cmn/dp/wifi3.0/monitor/dp_mon_filter.h (revision 901120c066e139c7f8a2c8e4820561fdd83c67ef)
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 #ifdef  WLAN_RX_PKT_CAPTURE_ENH
271 /**
272  * dp_mon_filter_setup_rx_enh_capture() - Setup the Rx capture mode filters
273  * @pdev: DP pdev handle
274  */
275 void dp_mon_filter_setup_rx_enh_capture(struct dp_pdev *pdev);
276 
277 /**
278  * dp_mon_filter_reset_rx_enh_capture() - Reset the Rx capture mode filters
279  * @pdev: DP pdev handle
280  */
281 void dp_mon_filter_reset_rx_enh_capture(struct dp_pdev *pdev);
282 #endif /* WLAN_RX_PKT_CAPTURE_ENH */
283 
284 /**
285  * dp_mon_filter_setup_mon_mode() - Setup the Rx and Tx monitor mode filter
286  * @pdev: DP pdev handle
287  */
288 void dp_mon_filter_setup_mon_mode(struct dp_pdev *pdev);
289 
290 /**
291  * dp_mon_filter_setup_tx_mon_mode() - Setup the Tx monitor mode filter
292  * @pdev: DP pdev handle
293  */
294 void dp_mon_filter_setup_tx_mon_mode(struct dp_pdev *pdev);
295 
296 /**
297  * dp_mon_filter_reset_mon_mode() - Reset the Rx monitor mode filter
298  * @pdev: DP pdev handle
299  */
300 void dp_mon_filter_reset_mon_mode(struct dp_pdev *pdev);
301 
302 #ifdef WDI_EVENT_ENABLE
303 /**
304  * dp_mon_filter_setup_rx_pkt_log_full() - Setup the Rx pktlog full mode filter
305  * @pdev: DP pdev handle
306  */
307 void dp_mon_filter_setup_rx_pkt_log_full(struct dp_pdev *pdev);
308 
309 /**
310  * dp_mon_filter_reset_rx_pkt_log_full() - Reset the Rx pktlog full mode filter
311  * @pdev: DP pdev handle
312  */
313 void dp_mon_filter_reset_rx_pkt_log_full(struct dp_pdev *pdev);
314 
315 /**
316  * dp_mon_filter_setup_rx_pkt_log_lite() - Setup the Rx pktlog lite mode filter
317  * in the radio object.
318  * @pdev: DP pdev handle
319  */
320 void dp_mon_filter_setup_rx_pkt_log_lite(struct dp_pdev *pdev);
321 
322 /**
323  * dp_mon_filter_reset_rx_pkt_log_lite() - Reset the Rx pktlog lite mode filter
324  * @pdev: DP pdev handle
325  */
326 void dp_mon_filter_reset_rx_pkt_log_lite(struct dp_pdev *pdev);
327 
328 /**
329  * dp_mon_filter_setup_rx_pkt_log_cbf() - Setup the Rx pktlog cbf mode filter
330  * in the radio object.
331  * @pdev: DP pdev handle
332  */
333 void dp_mon_filter_setup_rx_pkt_log_cbf(struct dp_pdev *pdev);
334 
335 /**
336  * dp_mon_filter_reset_rx_pktlog_cbf() - Reset the Rx pktlog cbf mode filter
337  * @pdev: DP pdev handle
338  */
339 void dp_mon_filter_reset_rx_pktlog_cbf(struct dp_pdev *pdev);
340 
341 #ifdef BE_PKTLOG_SUPPORT
342 /**
343  * dp_mon_filter_setup_pktlog_hybrid() - Setup the pktlog hybrid mode filter
344  * in the radio object.
345  * @pdev: DP pdev handle
346  */
347 void dp_mon_filter_setup_pktlog_hybrid(struct dp_pdev *pdev);
348 
349 /**
350  * dp_mon_filter_reset_pktlog_hybrid() - Reset the pktlog hybrid mode filter
351  * @pdev: DP pdev handle
352  */
353 void dp_mon_filter_reset_pktlog_hybrid(struct dp_pdev *pdev);
354 #endif
355 #endif /* WDI_EVENT_ENABLE */
356 
357 /**
358  * dp_mon_filter_set_status_cbf() - Set the cbf status filters
359  * @pdev: DP pdev handle
360  * @filter: Dp mon filters
361  *
362  * Return: void
363  */
364 void dp_mon_filter_set_status_cbf(struct dp_pdev *pdev,
365 				  struct dp_mon_filter *filter);
366 
367 /**
368  * dp_mon_filter_update() - Setup the RX & Tx monitor filter setting for a srng
369  * type
370  * @pdev: DP pdev handle
371  *
372  * Return: QDF_STATUS
373  */
374 QDF_STATUS dp_mon_filter_update(struct dp_pdev *pdev);
375 
376 /**
377  * dp_mon_filter_dealloc() - Deallocate the filter objects to be stored in
378  * the radio object.
379  * @mon_pdev: monitor pdev handle
380  */
381 void dp_mon_filter_dealloc(struct dp_mon_pdev *mon_pdev);
382 
383 /**
384  * dp_mon_filter_alloc() - Allocate the filter objects to be stored in
385  * the radio object.
386  * @mon_pdev: monitor pdev handle
387  */
388 struct dp_mon_filter  **dp_mon_filter_alloc(struct dp_mon_pdev *mon_pdev);
389 
390 /**
391  * dp_mon_filter_show_filter() - Show the set filters
392  * @pdev: DP pdev handle
393  * @mode: The filter modes
394  * @tlv_filter: tlv filter
395  */
396 void dp_mon_filter_show_filter(struct dp_mon_pdev *mon_pdev,
397 			       enum dp_mon_filter_mode mode,
398 			       struct dp_mon_filter *filter);
399 
400 /**
401  * dp_mon_ht2_rx_ring_cfg() - Send the tlv config to fw for a srng_type
402  * based on target
403  * @soc: DP soc handle
404  * @pdev: DP pdev handle
405  * @srng_type: The srng type for which filter will be set
406  * @tlv_filter: tlv filter
407  */
408 QDF_STATUS
409 dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc,
410 		       struct dp_pdev *pdev,
411 		       enum dp_mon_filter_srng_type srng_type,
412 		       struct htt_rx_ring_tlv_filter *tlv_filter);
413 
414 /**
415  * dp_mon_filter_reset_mon_srng()
416  * @soc: DP SoC handle
417  * @pdev: DP pdev handle
418  * @mon_srng_type: Monitor srng type
419  */
420 void
421 dp_mon_filter_reset_mon_srng(struct dp_soc *soc, struct dp_pdev *pdev,
422 			     enum dp_mon_filter_srng_type mon_srng_type);
423 
424 /**
425  * dp_mon_filter_set_mon_cmn() - Setp the common mon filters
426  * @pdev: DP pdev handle
427  * @filter: DP mon filter
428  *
429  * Return: QDF_STATUS
430  */
431 void dp_mon_filter_set_mon_cmn(struct dp_mon_pdev *mon_pdev,
432 			       struct dp_mon_filter *filter);
433 
434 /**
435  * dp_mon_filter_set_status_cmn() - Setp the common status filters
436  * @pdev: DP pdev handle
437  * @filter: Dp mon filters
438  *
439  * Return: QDF_STATUS
440  */
441 void dp_mon_filter_set_status_cmn(struct dp_mon_pdev *mon_pdev,
442 				  struct dp_mon_filter *filter);
443 
444 /**
445  * dp_mon_filter_setup_mon_mode() - Setup the Rx monitor mode filter
446  * @pdev: DP pdev handle
447  */
448 void dp_mon_filter_setup_mon_mode(struct dp_pdev *pdev);
449 
450 /**
451  * dp_mon_filter_setup_tx_mon_mode() - Setup the Tx monitor mode filter
452  * @pdev: DP pdev handle
453  */
454 void dp_mon_filter_setup_tx_mon_mode(struct dp_pdev *pdev);
455 
456 /**
457  * dp_mon_filter_reset_mon_mode() - Reset the Rx monitor mode filter
458  * @pdev: DP pdev handle
459  */
460 void dp_mon_filter_reset_mon_mode(struct dp_pdev *pdev);
461 
462 /**
463  * dp_mon_filter_set_cbf_cmn() - Set the common cbf mode filters
464  * @pdev: DP pdev handle
465  * @filter: Dp mon filters
466  *
467  * Return: void
468  */
469 void dp_mon_filter_set_cbf_cmn(struct dp_pdev *pdev,
470 			       struct dp_mon_filter *filter);
471 
472 /**
473  * dp_tx_mon_filter_update() - Setup the tx monitor filter setting for a srng
474  * type
475  * @pdev: DP pdev handle
476  *
477  * Return: QDF_STATUS
478  */
479 QDF_STATUS dp_tx_mon_filter_update(struct dp_pdev *pdev);
480 
481 /**
482  * dp_mon_filter_dealloc() - Deallocate the filter objects to be stored in
483  * the radio object.
484  * @pdev: DP pdev handle
485  */
486 void dp_mon_filter_dealloc(struct dp_mon_pdev *mon_pdev);
487 
488 /**
489  * dp_mon_filter_alloc() - Allocate the filter objects to be stored in
490  * the radio object.
491  * @mon_pdev: DP pdev handle
492  */
493 struct dp_mon_filter **dp_mon_filter_alloc(struct dp_mon_pdev *mon_pdev);
494 
495 /*
496  * dp_mon_filter_h2t_setup () - Setup filter
497  * @soc: Dp soc handle
498  * @pdev: pdev handle
499  * @srng_type: srng type
500  * @filter: filter
501  */
502 void dp_mon_filter_h2t_setup(struct dp_soc *soc, struct dp_pdev *pdev,
503 			     enum dp_mon_filter_srng_type srng_type,
504 			     struct dp_mon_filter *filter);
505 
506 /**
507  * dp_mon_ht2_rx_ring_cfg () - Configure filter to HW
508  * @soc: Dp soc handle
509  * @pdev: Dp pdev handle
510  * @srng_type: SRNG type
511  * @tlv_filter: filter
512  */
513 QDF_STATUS
514 dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc,
515 		       struct dp_pdev *pdev,
516 		       enum dp_mon_filter_srng_type srng_type,
517 		       struct htt_rx_ring_tlv_filter *tlv_filter);
518 #endif /* #ifndef _DP_MON_FILTER_H_ */
519