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